summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew John Hughes <gnu_andrew@member.fsf.org>2008-06-22 22:33:21 +0000
committerAndrew John Hughes <gnu_andrew@member.fsf.org>2008-06-22 22:33:21 +0000
commit6e42b91908c1d8dc42dc0207368ecdf4a3a20999 (patch)
tree44630df1e19e835171e91b21f8fd24cd917ee566
parentf45d5a527fc7518f35bfbff62eda4efd360b1e88 (diff)
downloadclasspath-6e42b91908c1d8dc42dc0207368ecdf4a3a20999.tar.gz
Complete generification of gnu.xml.xpath.*
2008-06-22 Andrew John Hughes <gnu_andrew@member.fsf.org> * 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.
-rw-r--r--ChangeLog12
-rw-r--r--gnu/xml/xpath/ContainsFunction.java5
-rw-r--r--gnu/xml/xpath/CountFunction.java7
-rw-r--r--gnu/xml/xpath/EqualityExpr.java28
-rw-r--r--gnu/xml/xpath/Expr.java47
-rw-r--r--gnu/xml/xpath/IdFunction.java3
-rw-r--r--gnu/xml/xpath/LocalNameFunction.java8
-rw-r--r--gnu/xml/xpath/NameFunction.java4
-rw-r--r--gnu/xml/xpath/ParenthesizedExpr.java2
9 files changed, 67 insertions, 49 deletions
diff --git a/ChangeLog b/ChangeLog
index 88e448409..d67661666 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2008-06-22 Andrew John Hughes <gnu_andrew@member.fsf.org>
+ * 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.
+
+2008-06-22 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
* gnu/xml/xpath/Expr.java,
* gnu/xml/xpath/FloorFunction.java,
* gnu/xml/xpath/Function.java,
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<Expr> 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<Expr> 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<Node>) 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<Node> lns = (Collection<Node>) left;
+ Collection<Node> rns = (Collection<Node>) 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<Node> ns = flns ? (Collection<Node>) left : (Collection<Node>) 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<Node> ns = flns ? (Collection<Node>) left : (Collection<Node>) 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<Node> ns = flns ? (Collection<Node>) left : (Collection<Node>) 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<Node> list;
- ExprNodeSet(Collection collection)
+ ExprNodeSet(Collection<Node> collection)
{
if (collection instanceof ArrayList)
- list = (ArrayList) collection;
+ list = (ArrayList<Node>) collection;
else
- list = new ArrayList(collection);
+ list = new ArrayList<Node>(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<Node> ns = (Collection<Node>) 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<Node>) 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<Node> _id(Node context, Object object)
{
- Set ret = new HashSet();
+ Set<Node> ret = new HashSet<Node>();
if (object instanceof Collection)
{
- Collection nodeSet = (Collection) object;
- for (Iterator i = nodeSet.iterator(); i.hasNext(); )
+ Collection<Node> nodeSet = (Collection<Node>) object;
+ for (Iterator<Node> 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<Node> 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<Node> nodeSet)
{
if (nodeSet == null || nodeSet.isEmpty())
return "";
@@ -341,6 +343,7 @@ public abstract class Expr
/**
* Implementation of the XPath <code>string</code> 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<Node> nodeSet = (Collection<Node>) object;
if (nodeSet.isEmpty())
{
return "";
@@ -405,6 +408,7 @@ public abstract class Expr
/**
* Implementation of the XPath <code>boolean</code> 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<Node>) object).size() != 0;
}
return false; // TODO user defined types
}
@@ -434,6 +438,7 @@ public abstract class Expr
/**
* Implementation of the XPath <code>number</code> 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<Node>) 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<Node> nodeSet)
{
CPStringBuilder buf = new CPStringBuilder();
- for (Iterator i = nodeSet.iterator(); i.hasNext(); )
+ for (Iterator<Node> 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<Node>) 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<Node> val = (arg == null) ? Collections.singleton(context) :
+ (Collection<Node>) 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<Node>) 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);