From 6e42b91908c1d8dc42dc0207368ecdf4a3a20999 Mon Sep 17 00:00:00 2001 From: Andrew John Hughes Date: Sun, 22 Jun 2008 22:33:21 +0000 Subject: Complete generification of gnu.xml.xpath.* 2008-06-22 Andrew John Hughes * gnu/xml/xpath/ContainsFunction.java, * gnu/xml/xpath/CountFunction.java, * gnu/xml/xpath/EqualityExpr.java, * gnu/xml/xpath/Expr.java, * gnu/xml/xpath/IdFunction.java, * gnu/xml/xpath/LocalNameFunction.java, * gnu/xml/xpath/NameFunction.java, * gnu/xml/xpath/ParenthesizedExpr.java: Genericised. --- gnu/xml/xpath/ContainsFunction.java | 5 ++-- gnu/xml/xpath/CountFunction.java | 7 +++--- gnu/xml/xpath/EqualityExpr.java | 28 ++++++++++----------- gnu/xml/xpath/Expr.java | 47 ++++++++++++++++++++---------------- gnu/xml/xpath/IdFunction.java | 3 ++- gnu/xml/xpath/LocalNameFunction.java | 8 +++--- gnu/xml/xpath/NameFunction.java | 4 +-- gnu/xml/xpath/ParenthesizedExpr.java | 2 +- 8 files changed, 55 insertions(+), 49 deletions(-) (limited to 'gnu') diff --git a/gnu/xml/xpath/ContainsFunction.java b/gnu/xml/xpath/ContainsFunction.java index fc2f33faf..620606b3f 100644 --- a/gnu/xml/xpath/ContainsFunction.java +++ b/gnu/xml/xpath/ContainsFunction.java @@ -54,9 +54,9 @@ final class ContainsFunction final Expr arg1; final Expr arg2; - ContainsFunction(List args) + ContainsFunction(List args) { - this((Expr) args.get(0), (Expr) args.get(1)); + this(args.get(0), args.get(1)); } ContainsFunction(Expr arg1, Expr arg2) @@ -65,6 +65,7 @@ final class ContainsFunction this.arg2 = arg2; } + @Override public Object evaluate(Node context, int pos, int len) { Object val1 = arg1.evaluate(context, pos, len); diff --git a/gnu/xml/xpath/CountFunction.java b/gnu/xml/xpath/CountFunction.java index cb534bffc..25bbfa636 100644 --- a/gnu/xml/xpath/CountFunction.java +++ b/gnu/xml/xpath/CountFunction.java @@ -54,9 +54,9 @@ final class CountFunction final Expr arg; - CountFunction(List args) + CountFunction(List args) { - this((Expr) args.get(0)); + this(args.get(0)); } CountFunction(Expr arg) @@ -64,10 +64,11 @@ final class CountFunction this.arg = arg; } + @Override @SuppressWarnings("unchecked") public Object evaluate(Node context, int pos, int len) { Object val = arg.evaluate(context, pos, len); - return new Double((double) ((Collection) val).size()); + return new Double((double) ((Collection) val).size()); } public Expr clone(Object context) diff --git a/gnu/xml/xpath/EqualityExpr.java b/gnu/xml/xpath/EqualityExpr.java index 6d00cee89..0a8147d76 100644 --- a/gnu/xml/xpath/EqualityExpr.java +++ b/gnu/xml/xpath/EqualityExpr.java @@ -62,6 +62,7 @@ final class EqualityExpr this.invert = invert; } + @Override public Object evaluate(Node context, int pos, int len) { boolean val = evaluateImpl(context, pos, len); @@ -75,6 +76,7 @@ final class EqualityExpr } } + @SuppressWarnings("unchecked") private boolean evaluateImpl(Node context, int pos, int len) { Object left = lhs.evaluate(context, pos, len); @@ -90,19 +92,17 @@ final class EqualityExpr boolean frns = right instanceof Collection; if (flns && frns) { - Collection lns = (Collection) left; - Collection rns = (Collection) right; + Collection lns = (Collection) left; + Collection rns = (Collection) right; if (lns.isEmpty()) { return false; } boolean all = true; - for (Iterator i = lns.iterator(); i.hasNext(); ) - { - Node ltest = (Node) i.next(); - for (Iterator j = rns.iterator(); j.hasNext(); ) - { - Node rtest = (Node) j.next(); + for (Node ltest : lns) + { + for (Node rtest : rns) + { if (ltest == rtest || ltest.equals(rtest)) { // much shorter @@ -138,13 +138,12 @@ final class EqualityExpr boolean frn = right instanceof Double; if ((flns && frn) || (frns && fln)) { - Collection ns = flns ? (Collection) left : (Collection) right; + Collection ns = flns ? (Collection) left : (Collection) right; double n = fln ? ((Double) left).doubleValue() : ((Double) right).doubleValue(); boolean all = true; - for (Iterator i = ns.iterator(); i.hasNext(); ) + for (Node test : ns) { - Node test = (Node) i.next(); double nn = _number(context, stringValue(test)); if (nn == n) { @@ -171,12 +170,11 @@ final class EqualityExpr boolean frs = right instanceof String; if ((flns && frs) || (frns && fls)) { - Collection ns = flns ? (Collection) left : (Collection) right; + Collection ns = flns ? (Collection) left : (Collection) right; String s = fls ? (String) left : (String) right; boolean all = true; - for (Iterator i = ns.iterator(); i.hasNext(); ) + for (Node test : ns) { - Node test = (Node) i.next(); if (stringValue(test).equals(s)) { if (!invert) @@ -202,7 +200,7 @@ final class EqualityExpr boolean frb = right instanceof Boolean; if ((flns && frb) || (frns && flb)) { - Collection ns = flns ? (Collection) left : (Collection) right; + Collection ns = flns ? (Collection) left : (Collection) right; boolean b = flb ? ((Boolean) left).booleanValue() : ((Boolean) right).booleanValue(); return _boolean(context, ns) == b; diff --git a/gnu/xml/xpath/Expr.java b/gnu/xml/xpath/Expr.java index 1b44c7540..30d4baa5b 100644 --- a/gnu/xml/xpath/Expr.java +++ b/gnu/xml/xpath/Expr.java @@ -86,14 +86,14 @@ public abstract class Expr static class ExprNodeSet implements NodeList { - private ArrayList list; + private ArrayList list; - ExprNodeSet(Collection collection) + ExprNodeSet(Collection collection) { if (collection instanceof ArrayList) - list = (ArrayList) collection; + list = (ArrayList) collection; else - list = new ArrayList(collection); + list = new ArrayList(collection); } public int getLength() @@ -105,7 +105,7 @@ public abstract class Expr { try { - return (Node) list.get(index); + return list.get(index); } catch (ArrayIndexOutOfBoundsException e) { @@ -115,6 +115,7 @@ public abstract class Expr } + @SuppressWarnings("unchecked") public Object evaluate(Object item, QName returnType) throws XPathExpressionException { @@ -143,14 +144,14 @@ public abstract class Expr { if (ret instanceof Collection) { - Collection ns = (Collection) ret; + Collection ns = (Collection) ret; switch (ns.size()) { case 0: ret = null; break; case 1: - ret = (Node) ns.iterator().next(); + ret = ns.iterator().next(); break; default: throw new XPathExpressionException("multiple nodes in node-set"); @@ -168,7 +169,7 @@ public abstract class Expr throw new XPathExpressionException("return value is not a node-set"); } if (ret != null) - ret = new ExprNodeSet((Collection) ret); + ret = new ExprNodeSet((Collection) ret); } } return ret; @@ -231,15 +232,16 @@ public abstract class Expr * same document as the context node that have a unique ID equal to any of * the tokens in the list. */ - public static Collection _id(Node context, Object object) + @SuppressWarnings("unchecked") + public static Collection _id(Node context, Object object) { - Set ret = new HashSet(); + Set ret = new HashSet(); if (object instanceof Collection) { - Collection nodeSet = (Collection) object; - for (Iterator i = nodeSet.iterator(); i.hasNext(); ) + Collection nodeSet = (Collection) object; + for (Iterator i = nodeSet.iterator(); i.hasNext(); ) { - String string = stringValue((Node) i.next()); + String string = stringValue(i.next()); ret.addAll(_id (context, string)); } } @@ -268,7 +270,7 @@ public abstract class Expr * an empty string is returned. If the argument is omitted, it defaults to * a node-set with the context node as its only member. */ - public static String _local_name(Node context, Collection nodeSet) + public static String _local_name(Node context, Collection nodeSet) { if (nodeSet == null || nodeSet.isEmpty()) return ""; @@ -310,7 +312,7 @@ public abstract class Expr * string is returned. If the argument it omitted, it defaults to a * node-set with the context node as its only member. */ - public static String _name(Node context, Collection nodeSet) + public static String _name(Node context, Collection nodeSet) { if (nodeSet == null || nodeSet.isEmpty()) return ""; @@ -341,6 +343,7 @@ public abstract class Expr /** * Implementation of the XPath string function. */ + @SuppressWarnings("unchecked") public static String _string(Node context, Object object) { if (object == null) @@ -389,7 +392,7 @@ public abstract class Expr } if (object instanceof Collection) { - Collection nodeSet = (Collection) object; + Collection nodeSet = (Collection) object; if (nodeSet.isEmpty()) { return ""; @@ -405,6 +408,7 @@ public abstract class Expr /** * Implementation of the XPath boolean function. */ + @SuppressWarnings("unchecked") public static boolean _boolean(Node context, Object object) { if (object instanceof Boolean) @@ -424,7 +428,7 @@ public abstract class Expr } if (object instanceof Collection) { - return ((Collection) object).size() != 0; + return ((Collection) object).size() != 0; } return false; // TODO user defined types } @@ -434,6 +438,7 @@ public abstract class Expr /** * Implementation of the XPath number function. */ + @SuppressWarnings("unchecked") public static double _number(Node context, Object object) { if (object == null) @@ -451,7 +456,7 @@ public abstract class Expr if (object instanceof Collection) { // Convert node-set to string - object = stringValue((Collection) object); + object = stringValue((Collection) object); } if (object instanceof String) { @@ -471,12 +476,12 @@ public abstract class Expr /** * Computes the XPath string-value of the specified node-set. */ - public static String stringValue(Collection nodeSet) + public static String stringValue(Collection nodeSet) { CPStringBuilder buf = new CPStringBuilder(); - for (Iterator i = nodeSet.iterator(); i.hasNext(); ) + for (Iterator i = nodeSet.iterator(); i.hasNext(); ) { - buf.append(stringValue((Node) i.next())); + buf.append(stringValue(i.next())); } return buf.toString(); } diff --git a/gnu/xml/xpath/IdFunction.java b/gnu/xml/xpath/IdFunction.java index 98019ced7..de6d3e4ba 100644 --- a/gnu/xml/xpath/IdFunction.java +++ b/gnu/xml/xpath/IdFunction.java @@ -72,10 +72,11 @@ public final class IdFunction this.arg = arg; } + @SuppressWarnings("unchecked") public boolean matches(Node context) { Object ret = evaluate(context, 1, 1); - return !((Collection) ret).isEmpty(); + return !((Collection) ret).isEmpty(); } @Override diff --git a/gnu/xml/xpath/LocalNameFunction.java b/gnu/xml/xpath/LocalNameFunction.java index a7071fc2c..a08a3df5f 100644 --- a/gnu/xml/xpath/LocalNameFunction.java +++ b/gnu/xml/xpath/LocalNameFunction.java @@ -69,12 +69,12 @@ final class LocalNameFunction this.arg = arg; } - @Override + @Override @SuppressWarnings("unchecked") public Object evaluate(Node context, int pos, int len) { - Object val = (arg == null) ? Collections.singleton(context) : - arg.evaluate(context, pos, len); - return _local_name(context, (Collection) val); + Collection val = (arg == null) ? Collections.singleton(context) : + (Collection) arg.evaluate(context, pos, len); + return _local_name(context, val); } public Expr clone(Object context) diff --git a/gnu/xml/xpath/NameFunction.java b/gnu/xml/xpath/NameFunction.java index 2a089ef95..7eefbc25c 100644 --- a/gnu/xml/xpath/NameFunction.java +++ b/gnu/xml/xpath/NameFunction.java @@ -77,12 +77,12 @@ final class NameFunction this.arg = arg; } - @Override + @Override @SuppressWarnings("unchecked") public Object evaluate(Node context, int pos, int len) { Object val = (arg == null) ? Collections.singleton(context) : arg.evaluate(context, pos, len); - return _name(context, (Collection) val); + return _name(context, (Collection) val); } public Expr clone(Object context) diff --git a/gnu/xml/xpath/ParenthesizedExpr.java b/gnu/xml/xpath/ParenthesizedExpr.java index ac69b4235..5ec3d2938 100644 --- a/gnu/xml/xpath/ParenthesizedExpr.java +++ b/gnu/xml/xpath/ParenthesizedExpr.java @@ -60,7 +60,7 @@ final class ParenthesizedExpr this.expr = expr; } - @Override + @Override @SuppressWarnings("unchecked") public Object evaluate(Node context, int pos, int len) { Object ret = expr.evaluate(context, pos, len); -- cgit v1.2.1