[cp-patches] FYI: Final patches for genericising gnu.xml.xpath.*

Andrew John Hughes gnu_andrew at member.fsf.org
Sun Jun 22 22:32:44 UTC 2008


This patch completes the generification of gnu.xml.xpath.*.

ChangeLog:

2008-06-22  Andrew John Hughes  <gnu_andrew at 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.

-- 
Andrew :)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net
PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint = F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8
-------------- next part --------------
Index: gnu/xml/xpath/ContainsFunction.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/xml/xpath/ContainsFunction.java,v
retrieving revision 1.3
diff -u -u -r1.3 ContainsFunction.java
--- gnu/xml/xpath/ContainsFunction.java	9 Jul 2005 20:38:35 -0000	1.3
+++ gnu/xml/xpath/ContainsFunction.java	22 Jun 2008 22:19:14 -0000
@@ -54,9 +54,9 @@
   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 @@
     this.arg2 = arg2;
   }
 
+  @Override
   public Object evaluate(Node context, int pos, int len)
   {
     Object val1 = arg1.evaluate(context, pos, len);
Index: gnu/xml/xpath/CountFunction.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/xml/xpath/CountFunction.java,v
retrieving revision 1.3
diff -u -u -r1.3 CountFunction.java
--- gnu/xml/xpath/CountFunction.java	9 Jul 2005 20:38:35 -0000	1.3
+++ gnu/xml/xpath/CountFunction.java	22 Jun 2008 22:19:14 -0000
@@ -54,9 +54,9 @@
 
   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 @@
     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)
Index: gnu/xml/xpath/EqualityExpr.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/xml/xpath/EqualityExpr.java,v
retrieving revision 1.4
diff -u -u -r1.4 EqualityExpr.java
--- gnu/xml/xpath/EqualityExpr.java	9 Jul 2005 20:38:35 -0000	1.4
+++ gnu/xml/xpath/EqualityExpr.java	22 Jun 2008 22:19:15 -0000
@@ -62,6 +62,7 @@
     this.invert = invert;
   }
 
+  @Override
   public Object evaluate(Node context, int pos, int len)
   {
     boolean val = evaluateImpl(context, pos, len);
@@ -75,6 +76,7 @@
       }
   }
 
+  @SuppressWarnings("unchecked")
   private boolean evaluateImpl(Node context, int pos, int len)
   {
     Object left = lhs.evaluate(context, pos, len);
@@ -90,19 +92,17 @@
     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 @@
     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 @@
     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 @@
     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;
Index: gnu/xml/xpath/Expr.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/xml/xpath/Expr.java,v
retrieving revision 1.9
diff -u -u -r1.9 Expr.java
--- gnu/xml/xpath/Expr.java	22 Jun 2008 21:21:11 -0000	1.9
+++ gnu/xml/xpath/Expr.java	22 Jun 2008 22:19:15 -0000
@@ -86,14 +86,14 @@
   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 @@
     {
       try
         {
-          return (Node) list.get(index);
+          return list.get(index);
         }
       catch (ArrayIndexOutOfBoundsException e)
         {
@@ -115,6 +115,7 @@
     
   }
 
+  @SuppressWarnings("unchecked")
   public Object evaluate(Object item, QName returnType)
     throws XPathExpressionException
   {
@@ -143,14 +144,14 @@
           {
             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 @@
                 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 @@
    * 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 @@
    * 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 @@
    * 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 @@
   /**
    * 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 @@
       }
     if (object instanceof Collection)
       {
-        Collection nodeSet = (Collection) object;
+        Collection<Node> nodeSet = (Collection<Node>) object;
         if (nodeSet.isEmpty())
           {
             return "";
@@ -405,6 +408,7 @@
   /**
    * 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 @@
       }
     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 @@
   /**
    * 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 @@
     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 @@
   /**
    * 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();
   }
Index: gnu/xml/xpath/IdFunction.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/xml/xpath/IdFunction.java,v
retrieving revision 1.4
diff -u -u -r1.4 IdFunction.java
--- gnu/xml/xpath/IdFunction.java	22 Jun 2008 19:43:00 -0000	1.4
+++ gnu/xml/xpath/IdFunction.java	22 Jun 2008 22:19:15 -0000
@@ -72,10 +72,11 @@
     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
Index: gnu/xml/xpath/LocalNameFunction.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/xml/xpath/LocalNameFunction.java,v
retrieving revision 1.5
diff -u -u -r1.5 LocalNameFunction.java
--- gnu/xml/xpath/LocalNameFunction.java	22 Jun 2008 19:43:00 -0000	1.5
+++ gnu/xml/xpath/LocalNameFunction.java	22 Jun 2008 22:19:15 -0000
@@ -69,12 +69,12 @@
     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)
Index: gnu/xml/xpath/NameFunction.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/xml/xpath/NameFunction.java,v
retrieving revision 1.5
diff -u -u -r1.5 NameFunction.java
--- gnu/xml/xpath/NameFunction.java	22 Jun 2008 19:43:00 -0000	1.5
+++ gnu/xml/xpath/NameFunction.java	22 Jun 2008 22:19:15 -0000
@@ -77,12 +77,12 @@
     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)
Index: gnu/xml/xpath/ParenthesizedExpr.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/xml/xpath/ParenthesizedExpr.java,v
retrieving revision 1.4
diff -u -u -r1.4 ParenthesizedExpr.java
--- gnu/xml/xpath/ParenthesizedExpr.java	22 Jun 2008 21:21:11 -0000	1.4
+++ gnu/xml/xpath/ParenthesizedExpr.java	22 Jun 2008 22:19:15 -0000
@@ -60,7 +60,7 @@
     this.expr = expr;
   }
 
-  @Override
+  @Override @SuppressWarnings("unchecked")
   public Object evaluate(Node context, int pos, int len)
   {
     Object ret = expr.evaluate(context, pos, len);


More information about the Classpath-patches mailing list