summaryrefslogtreecommitdiffstats
path: root/libjava/classpath/gnu/xml/xpath
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/gnu/xml/xpath')
-rw-r--r--libjava/classpath/gnu/xml/xpath/ArithmeticExpr.java4
-rw-r--r--libjava/classpath/gnu/xml/xpath/BooleanFunction.java4
-rw-r--r--libjava/classpath/gnu/xml/xpath/CeilingFunction.java4
-rw-r--r--libjava/classpath/gnu/xml/xpath/ConcatFunction.java22
-rw-r--r--libjava/classpath/gnu/xml/xpath/ContainsFunction.java5
-rw-r--r--libjava/classpath/gnu/xml/xpath/CountFunction.java7
-rw-r--r--libjava/classpath/gnu/xml/xpath/DocumentOrderComparator.java12
-rw-r--r--libjava/classpath/gnu/xml/xpath/EqualityExpr.java36
-rw-r--r--libjava/classpath/gnu/xml/xpath/Expr.java75
-rw-r--r--libjava/classpath/gnu/xml/xpath/FloorFunction.java5
-rw-r--r--libjava/classpath/gnu/xml/xpath/Function.java2
-rw-r--r--libjava/classpath/gnu/xml/xpath/FunctionCall.java26
-rw-r--r--libjava/classpath/gnu/xml/xpath/IdFunction.java7
-rw-r--r--libjava/classpath/gnu/xml/xpath/LangFunction.java5
-rw-r--r--libjava/classpath/gnu/xml/xpath/LocalNameFunction.java13
-rw-r--r--libjava/classpath/gnu/xml/xpath/NameFunction.java18
-rw-r--r--libjava/classpath/gnu/xml/xpath/NamespaceUriFunction.java13
-rw-r--r--libjava/classpath/gnu/xml/xpath/NormalizeSpaceFunction.java9
-rw-r--r--libjava/classpath/gnu/xml/xpath/NotFunction.java5
-rw-r--r--libjava/classpath/gnu/xml/xpath/NumberFunction.java5
-rw-r--r--libjava/classpath/gnu/xml/xpath/ParenthesizedExpr.java7
-rw-r--r--libjava/classpath/gnu/xml/xpath/Path.java2
-rw-r--r--libjava/classpath/gnu/xml/xpath/Root.java10
-rw-r--r--libjava/classpath/gnu/xml/xpath/RoundFunction.java5
-rw-r--r--libjava/classpath/gnu/xml/xpath/Selector.java48
-rw-r--r--libjava/classpath/gnu/xml/xpath/StartsWithFunction.java4
-rw-r--r--libjava/classpath/gnu/xml/xpath/Steps.java61
-rw-r--r--libjava/classpath/gnu/xml/xpath/StringFunction.java4
-rw-r--r--libjava/classpath/gnu/xml/xpath/StringLengthFunction.java3
-rw-r--r--libjava/classpath/gnu/xml/xpath/SubstringAfterFunction.java4
-rw-r--r--libjava/classpath/gnu/xml/xpath/SubstringBeforeFunction.java4
-rw-r--r--libjava/classpath/gnu/xml/xpath/SubstringFunction.java7
-rw-r--r--libjava/classpath/gnu/xml/xpath/SumFunction.java12
-rw-r--r--libjava/classpath/gnu/xml/xpath/TranslateFunction.java10
-rw-r--r--libjava/classpath/gnu/xml/xpath/UnionExpr.java21
-rw-r--r--libjava/classpath/gnu/xml/xpath/VariableReference.java4
-rw-r--r--libjava/classpath/gnu/xml/xpath/XPathParser.java88
-rw-r--r--libjava/classpath/gnu/xml/xpath/XPathParser.y62
-rw-r--r--libjava/classpath/gnu/xml/xpath/XPathTokenizer.java10
39 files changed, 379 insertions, 264 deletions
diff --git a/libjava/classpath/gnu/xml/xpath/ArithmeticExpr.java b/libjava/classpath/gnu/xml/xpath/ArithmeticExpr.java
index cbc1ee0648b..61098d6e4f2 100644
--- a/libjava/classpath/gnu/xml/xpath/ArithmeticExpr.java
+++ b/libjava/classpath/gnu/xml/xpath/ArithmeticExpr.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package gnu.xml.xpath;
+import gnu.java.lang.CPStringBuilder;
+
import javax.xml.namespace.QName;
import org.w3c.dom.Node;
@@ -139,7 +141,7 @@ final class ArithmeticExpr
public String toString()
{
- StringBuffer buf = new StringBuffer();
+ CPStringBuilder buf = new CPStringBuilder();
buf.append(lhs);
buf.append(' ');
switch (op)
diff --git a/libjava/classpath/gnu/xml/xpath/BooleanFunction.java b/libjava/classpath/gnu/xml/xpath/BooleanFunction.java
index 256de0382a8..f661b2ac285 100644
--- a/libjava/classpath/gnu/xml/xpath/BooleanFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/BooleanFunction.java
@@ -61,9 +61,9 @@ final class BooleanFunction
final Expr arg;
- BooleanFunction(List args)
+ BooleanFunction(List<Expr> args)
{
- this((Expr) args.get(0));
+ this(args.get(0));
}
BooleanFunction(Expr arg)
diff --git a/libjava/classpath/gnu/xml/xpath/CeilingFunction.java b/libjava/classpath/gnu/xml/xpath/CeilingFunction.java
index 7db08fc5d61..15398842248 100644
--- a/libjava/classpath/gnu/xml/xpath/CeilingFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/CeilingFunction.java
@@ -54,9 +54,9 @@ final class CeilingFunction
final Expr arg;
- CeilingFunction(List args)
+ CeilingFunction(List<Expr> args)
{
- this((Expr) args.get(0));
+ this(args.get(0));
}
CeilingFunction(Expr arg)
diff --git a/libjava/classpath/gnu/xml/xpath/ConcatFunction.java b/libjava/classpath/gnu/xml/xpath/ConcatFunction.java
index fddd7ae2520..a61a45477b1 100644
--- a/libjava/classpath/gnu/xml/xpath/ConcatFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/ConcatFunction.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package gnu.xml.xpath;
+import gnu.java.lang.CPStringBuilder;
+
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -52,19 +54,19 @@ final class ConcatFunction
extends Expr
{
- final List args;
+ final List<Expr> args;
- ConcatFunction(List args)
+ ConcatFunction(List<Expr> args)
{
this.args = args;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
- StringBuffer buf = new StringBuffer();
- for (Iterator i = args.iterator(); i.hasNext(); )
+ CPStringBuilder buf = new CPStringBuilder();
+ for (Expr arg : args)
{
- Expr arg = (Expr) i.next();
Object val = arg.evaluate(context, pos, len);
buf.append(_string(context, val));
}
@@ -74,19 +76,19 @@ final class ConcatFunction
public Expr clone(Object context)
{
int len = args.size();
- List args2 = new ArrayList(len);
+ List<Expr> args2 = new ArrayList<Expr>(len);
for (int i = 0; i < len; i++)
{
- args2.add(((Expr) args.get(i)).clone(context));
+ args2.add(args.get(i).clone(context));
}
return new ConcatFunction(args2);
}
public boolean references(QName var)
{
- for (Iterator i = args.iterator(); i.hasNext(); )
+ for (Iterator<Expr> i = args.iterator(); i.hasNext(); )
{
- if (((Expr) i.next()).references(var))
+ if (i.next().references(var))
{
return true;
}
@@ -96,7 +98,7 @@ final class ConcatFunction
public String toString()
{
- StringBuffer buf = new StringBuffer("concat(");
+ CPStringBuilder buf = new CPStringBuilder("concat(");
int len = args.size();
for (int i = 0; i < len; i++)
{
diff --git a/libjava/classpath/gnu/xml/xpath/ContainsFunction.java b/libjava/classpath/gnu/xml/xpath/ContainsFunction.java
index fc2f33faf52..620606b3f20 100644
--- a/libjava/classpath/gnu/xml/xpath/ContainsFunction.java
+++ b/libjava/classpath/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/libjava/classpath/gnu/xml/xpath/CountFunction.java b/libjava/classpath/gnu/xml/xpath/CountFunction.java
index cb534bffc9e..f29d833106d 100644
--- a/libjava/classpath/gnu/xml/xpath/CountFunction.java
+++ b/libjava/classpath/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
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/libjava/classpath/gnu/xml/xpath/DocumentOrderComparator.java b/libjava/classpath/gnu/xml/xpath/DocumentOrderComparator.java
index c7d7de9f7c7..605749d09d7 100644
--- a/libjava/classpath/gnu/xml/xpath/DocumentOrderComparator.java
+++ b/libjava/classpath/gnu/xml/xpath/DocumentOrderComparator.java
@@ -46,18 +46,12 @@ import org.w3c.dom.Node;
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DocumentOrderComparator
- implements Comparator
+ implements Comparator<Node>
{
- public int compare(Object o1, Object o2)
+ public int compare(Node n1, Node n2)
{
- if (o1 instanceof Node && o2 instanceof Node)
- {
- Node n1 = (Node)o1;
- Node n2 = (Node)o2;
- return (int) n1.compareDocumentPosition(n2);
- }
- return 0;
+ return (int) n1.compareDocumentPosition(n2);
}
}
diff --git a/libjava/classpath/gnu/xml/xpath/EqualityExpr.java b/libjava/classpath/gnu/xml/xpath/EqualityExpr.java
index 6d00cee89a9..3b6fd568a86 100644
--- a/libjava/classpath/gnu/xml/xpath/EqualityExpr.java
+++ b/libjava/classpath/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);
@@ -90,19 +91,20 @@ final class EqualityExpr
boolean frns = right instanceof Collection;
if (flns && frns)
{
- Collection lns = (Collection) left;
- Collection rns = (Collection) right;
+ /* Suppression is safe, as we know context produces Collection<Node> */
+ @SuppressWarnings("unchecked")
+ Collection<Node> lns = (Collection<Node>) left;
+ @SuppressWarnings("unchecked")
+ 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 +140,14 @@ final class EqualityExpr
boolean frn = right instanceof Double;
if ((flns && frn) || (frns && fln))
{
- Collection ns = flns ? (Collection) left : (Collection) right;
+ /* Suppression is safe, as we know context produces Collection<Node> */
+ @SuppressWarnings("unchecked")
+ 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 +174,13 @@ final class EqualityExpr
boolean frs = right instanceof String;
if ((flns && frs) || (frns && fls))
{
- Collection ns = flns ? (Collection) left : (Collection) right;
+ /* Suppression is safe, as we know context produces Collection<Node> */
+ @SuppressWarnings("unchecked")
+ 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 +206,9 @@ final class EqualityExpr
boolean frb = right instanceof Boolean;
if ((flns && frb) || (frns && flb))
{
- Collection ns = flns ? (Collection) left : (Collection) right;
+ /* Suppression is safe, as we know context produces Collection<Node> */
+ @SuppressWarnings("unchecked")
+ 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/libjava/classpath/gnu/xml/xpath/Expr.java b/libjava/classpath/gnu/xml/xpath/Expr.java
index cafc83b0d37..87ce3dfb63c 100644
--- a/libjava/classpath/gnu/xml/xpath/Expr.java
+++ b/libjava/classpath/gnu/xml/xpath/Expr.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package gnu.xml.xpath;
+import gnu.java.lang.CPStringBuilder;
+
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
@@ -73,7 +75,7 @@ public abstract class Expr
implements XPathExpression
{
- protected static final Comparator documentOrderComparator =
+ protected static final Comparator<Node> documentOrderComparator =
new DocumentOrderComparator();
protected static final DecimalFormat decimalFormat =
@@ -84,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()
@@ -103,7 +105,7 @@ public abstract class Expr
{
try
{
- return (Node) list.get(index);
+ return list.get(index);
}
catch (ArrayIndexOutOfBoundsException e)
{
@@ -141,14 +143,17 @@ public abstract class Expr
{
if (ret instanceof Collection)
{
- Collection ns = (Collection) ret;
+ /* Suppression is safe, as we know context
+ produces Collection<Node> */
+ @SuppressWarnings("unchecked")
+ 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");
@@ -166,7 +171,12 @@ public abstract class Expr
throw new XPathExpressionException("return value is not a node-set");
}
if (ret != null)
- ret = new ExprNodeSet((Collection) ret);
+ {
+ /* Suppression is safe, as we know context produces Collection<Node> */
+ @SuppressWarnings("unchecked")
+ Collection<Node> nodes = (Collection<Node>) ret;
+ ret = new ExprNodeSet(nodes);
+ }
}
}
return ret;
@@ -229,15 +239,17 @@ 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)
+ 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(); )
+ /* Suppression is safe, as the iteration will check each value is a Node */
+ @SuppressWarnings("unchecked")
+ 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));
}
}
@@ -266,7 +278,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 "";
@@ -283,7 +295,7 @@ public abstract class Expr
* 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 _namespace_uri(Node context, Collection nodeSet)
+ public static String _namespace_uri(Node context, Collection<Node> nodeSet)
{
if (nodeSet == null || nodeSet.isEmpty())
return "";
@@ -308,7 +320,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 "";
@@ -327,11 +339,11 @@ public abstract class Expr
/**
* Returns the first node in the set in document order.
*/
- static Node firstNode(Collection nodeSet)
+ static Node firstNode(Collection<Node> nodeSet)
{
- List list = new ArrayList(nodeSet);
+ List<Node> list = new ArrayList<Node>(nodeSet);
Collections.sort(list, documentOrderComparator);
- return (Node) list.get(0);
+ return list.get(0);
}
/* -- 4.2 String Functions -- */
@@ -387,7 +399,10 @@ public abstract class Expr
}
if (object instanceof Collection)
{
- Collection nodeSet = (Collection) object;
+ /* Suppression is safe, as we fail immediately if the
+ * first element is not a Node and don't use the rest */
+ @SuppressWarnings("unchecked")
+ Collection<Node> nodeSet = (Collection<Node>) object;
if (nodeSet.isEmpty())
{
return "";
@@ -422,7 +437,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
}
@@ -448,8 +463,12 @@ public abstract class Expr
}
if (object instanceof Collection)
{
+ /* Suppression is safe, as we fail immediately if one
+ * of the elements is not a Node */
+ @SuppressWarnings("unchecked")
+ Collection<Node> nodeSet = (Collection<Node>) object;
// Convert node-set to string
- object = stringValue((Collection) object);
+ object = stringValue(nodeSet);
}
if (object instanceof String)
{
@@ -469,12 +488,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)
{
- StringBuffer buf = new StringBuffer();
- for (Iterator i = nodeSet.iterator(); i.hasNext(); )
+ CPStringBuilder buf = new CPStringBuilder();
+ for (Iterator<Node> i = nodeSet.iterator(); i.hasNext(); )
{
- buf.append(stringValue((Node) i.next()));
+ buf.append(stringValue(i.next()));
}
return buf.toString();
}
@@ -494,7 +513,7 @@ public abstract class Expr
case Node.DOCUMENT_NODE: // 5.1 Root Node
case Node.DOCUMENT_FRAGMENT_NODE:
case Node.ELEMENT_NODE: // 5.2 Element Nodes
- StringBuffer buf = new StringBuffer();
+ CPStringBuilder buf = new CPStringBuilder();
for (Node ctx = node.getFirstChild(); ctx != null;
ctx = ctx.getNextSibling())
{
diff --git a/libjava/classpath/gnu/xml/xpath/FloorFunction.java b/libjava/classpath/gnu/xml/xpath/FloorFunction.java
index c03c0e7edaf..bbf56c91178 100644
--- a/libjava/classpath/gnu/xml/xpath/FloorFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/FloorFunction.java
@@ -54,9 +54,9 @@ final class FloorFunction
final Expr arg;
- FloorFunction(List args)
+ FloorFunction(List<Expr> args)
{
- this((Expr) args.get(0));
+ this(args.get(0));
}
FloorFunction(Expr arg)
@@ -64,6 +64,7 @@ final class FloorFunction
this.arg = arg;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
Object val = arg.evaluate(context, pos, len);
diff --git a/libjava/classpath/gnu/xml/xpath/Function.java b/libjava/classpath/gnu/xml/xpath/Function.java
index aecd49d9c73..12e2e1141fd 100644
--- a/libjava/classpath/gnu/xml/xpath/Function.java
+++ b/libjava/classpath/gnu/xml/xpath/Function.java
@@ -51,7 +51,7 @@ public interface Function
/**
* Sets the list of expressions to evaluate as parameter values.
*/
- void setArguments(List args);
+ void setArguments(List<Expr> args);
}
diff --git a/libjava/classpath/gnu/xml/xpath/FunctionCall.java b/libjava/classpath/gnu/xml/xpath/FunctionCall.java
index 669efbf1866..e811f53a2ab 100644
--- a/libjava/classpath/gnu/xml/xpath/FunctionCall.java
+++ b/libjava/classpath/gnu/xml/xpath/FunctionCall.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package gnu.xml.xpath;
+import gnu.java.lang.CPStringBuilder;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
@@ -58,20 +60,24 @@ public final class FunctionCall
final XPathFunctionResolver resolver;
final String name;
- final List args;
+ final List<Expr> args;
public FunctionCall(XPathFunctionResolver resolver, String name)
{
- this(resolver, name, Collections.EMPTY_LIST);
+ this(resolver, name, null);
}
- public FunctionCall(XPathFunctionResolver resolver, String name, List args)
+ public FunctionCall(XPathFunctionResolver resolver, String name, List<Expr> args)
{
this.resolver = resolver;
this.name = name;
- this.args = args;
+ if (args == null)
+ this.args = Collections.emptyList();
+ else
+ this.args = args;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
if (resolver != null)
@@ -92,7 +98,7 @@ public final class FunctionCall
}
else
{
- List values = new ArrayList(arity);
+ List<Object> values = new ArrayList<Object>(arity);
for (int i = 0; i < arity; i++)
{
Expr arg = (Expr) args.get(i);
@@ -117,10 +123,10 @@ public final class FunctionCall
public Expr clone(Object context)
{
int len = args.size();
- List args2 = new ArrayList(len);
+ List<Expr> args2 = new ArrayList<Expr>(len);
for (int i = 0; i < len; i++)
{
- args2.add(((Expr) args.get(i)).clone(context));
+ args2.add(args.get(i).clone(context));
}
XPathFunctionResolver r = resolver;
if (context instanceof XPathFunctionResolver)
@@ -132,9 +138,9 @@ public final class FunctionCall
public boolean references(QName var)
{
- for (Iterator i = args.iterator(); i.hasNext(); )
+ for (Iterator<Expr> i = args.iterator(); i.hasNext(); )
{
- if (((Expr) i.next()).references(var))
+ if (i.next().references(var))
{
return true;
}
@@ -144,7 +150,7 @@ public final class FunctionCall
public String toString()
{
- StringBuffer buf = new StringBuffer();
+ CPStringBuilder buf = new CPStringBuilder();
buf.append(name);
buf.append('(');
int len = args.size();
diff --git a/libjava/classpath/gnu/xml/xpath/IdFunction.java b/libjava/classpath/gnu/xml/xpath/IdFunction.java
index 74979541957..b3d2208c8e4 100644
--- a/libjava/classpath/gnu/xml/xpath/IdFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/IdFunction.java
@@ -62,9 +62,9 @@ public final class IdFunction
final Expr arg;
- IdFunction(List args)
+ IdFunction(List<Expr> args)
{
- this((Expr) args.get(0));
+ this(args.get(0));
}
public IdFunction(Expr arg)
@@ -75,9 +75,10 @@ public final class IdFunction
public boolean matches(Node context)
{
Object ret = evaluate(context, 1, 1);
- return !((Collection) ret).isEmpty();
+ return !((Collection<?>) ret).isEmpty();
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
Object val = arg.evaluate(context, pos, len);
diff --git a/libjava/classpath/gnu/xml/xpath/LangFunction.java b/libjava/classpath/gnu/xml/xpath/LangFunction.java
index 584787efbf7..33cf8b0a2ab 100644
--- a/libjava/classpath/gnu/xml/xpath/LangFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/LangFunction.java
@@ -64,9 +64,9 @@ final class LangFunction
final Expr arg;
- LangFunction(List args)
+ LangFunction(List<Expr> args)
{
- this((Expr) args.get(0));
+ this(args.get(0));
}
LangFunction(Expr arg)
@@ -74,6 +74,7 @@ final class LangFunction
this.arg = arg;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
Object val = arg.evaluate(context, pos, len);
diff --git a/libjava/classpath/gnu/xml/xpath/LocalNameFunction.java b/libjava/classpath/gnu/xml/xpath/LocalNameFunction.java
index 84fb6d48288..dbad9d3b42a 100644
--- a/libjava/classpath/gnu/xml/xpath/LocalNameFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/LocalNameFunction.java
@@ -59,9 +59,9 @@ final class LocalNameFunction
final Expr arg;
- LocalNameFunction(List args)
+ LocalNameFunction(List<Expr> args)
{
- this(args.size() > 0 ? (Expr) args.get(0) : null);
+ this(args.size() > 0 ? args.get(0) : null);
}
LocalNameFunction(Expr arg)
@@ -69,11 +69,14 @@ final class LocalNameFunction
this.arg = arg;
}
+ @Override
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);
+ /* Suppression is safe, as we know context produces Collection<Node> */
+ @SuppressWarnings("unchecked")
+ 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/libjava/classpath/gnu/xml/xpath/NameFunction.java b/libjava/classpath/gnu/xml/xpath/NameFunction.java
index ea49741fa57..239a53453be 100644
--- a/libjava/classpath/gnu/xml/xpath/NameFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/NameFunction.java
@@ -67,9 +67,9 @@ final class NameFunction
final Expr arg;
- NameFunction(List args)
+ NameFunction(List<Expr> args)
{
- this(args.size() > 0 ? (Expr) args.get(0) : null);
+ this(args.size() > 0 ? args.get(0) : null);
}
NameFunction(Expr arg)
@@ -77,24 +77,30 @@ final class NameFunction
this.arg = arg;
}
+ @Override
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);
+ /* Suppression is safe, as we know context produces Collection<Node> */
+ @SuppressWarnings("unchecked")
+ Collection<Node> val = (arg == null) ? Collections.singleton(context) :
+ (Collection<Node>) arg.evaluate(context, pos, len);
+ return _name(context, val);
}
+ @Override
public Expr clone(Object context)
{
return new NameFunction((arg == null) ? null :
arg.clone(context));
}
-
+
+ @Override
public boolean references(QName var)
{
return (arg == null) ? false : arg.references(var);
}
+ @Override
public String toString()
{
return (arg == null) ? "name()" : "name(" + arg + ")";
diff --git a/libjava/classpath/gnu/xml/xpath/NamespaceUriFunction.java b/libjava/classpath/gnu/xml/xpath/NamespaceUriFunction.java
index 3ae46f7ee71..56da90f8c0a 100644
--- a/libjava/classpath/gnu/xml/xpath/NamespaceUriFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/NamespaceUriFunction.java
@@ -59,9 +59,9 @@ final class NamespaceUriFunction
final Expr arg;
- NamespaceUriFunction(List args)
+ NamespaceUriFunction(List<Expr> args)
{
- this(args.size() > 0 ? (Expr) args.get(0) : null);
+ this(args.size() > 0 ? args.get(0) : null);
}
NamespaceUriFunction(Expr arg)
@@ -69,11 +69,14 @@ final class NamespaceUriFunction
this.arg = arg;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
- Object val = (arg == null) ? Collections.singleton(context) :
- arg.evaluate(context, pos, len);
- return _namespace_uri(context, (Collection) val);
+ /* Suppression is safe, as we know context produces Collection<Node> */
+ @SuppressWarnings("unchecked")
+ Collection<Node> val = (arg == null) ? Collections.singleton(context) :
+ (Collection<Node>) arg.evaluate(context, pos, len);
+ return _namespace_uri(context, val);
}
public Expr clone(Object context)
diff --git a/libjava/classpath/gnu/xml/xpath/NormalizeSpaceFunction.java b/libjava/classpath/gnu/xml/xpath/NormalizeSpaceFunction.java
index b7358e8d8e4..30069acdc43 100644
--- a/libjava/classpath/gnu/xml/xpath/NormalizeSpaceFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/NormalizeSpaceFunction.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package gnu.xml.xpath;
+import gnu.java.lang.CPStringBuilder;
+
import java.util.List;
import java.util.StringTokenizer;
import javax.xml.namespace.QName;
@@ -59,9 +61,9 @@ final class NormalizeSpaceFunction
final Expr arg;
- NormalizeSpaceFunction(List args)
+ NormalizeSpaceFunction(List<Expr> args)
{
- this((Expr) args.get(0));
+ this(args.get(0));
}
NormalizeSpaceFunction(Expr arg)
@@ -69,12 +71,13 @@ final class NormalizeSpaceFunction
this.arg = arg;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
Object val = (arg == null) ? null : arg.evaluate(context, pos, len);
String s = _string(context, val);
StringTokenizer st = new StringTokenizer(s, " \t\r\n");
- StringBuffer buf = new StringBuffer();
+ CPStringBuilder buf = new CPStringBuilder();
if (st.hasMoreTokens())
{
buf.append(st.nextToken());
diff --git a/libjava/classpath/gnu/xml/xpath/NotFunction.java b/libjava/classpath/gnu/xml/xpath/NotFunction.java
index bbed66a7311..188b3dbc40e 100644
--- a/libjava/classpath/gnu/xml/xpath/NotFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/NotFunction.java
@@ -53,9 +53,9 @@ final class NotFunction
final Expr arg;
- NotFunction(List args)
+ NotFunction(List<Expr> args)
{
- this((Expr) args.get(0));
+ this(args.get(0));
}
NotFunction(Expr arg)
@@ -63,6 +63,7 @@ final class NotFunction
this.arg = arg;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
Object val = arg.evaluate(context, pos, len);
diff --git a/libjava/classpath/gnu/xml/xpath/NumberFunction.java b/libjava/classpath/gnu/xml/xpath/NumberFunction.java
index 79553ce81fb..8804a788670 100644
--- a/libjava/classpath/gnu/xml/xpath/NumberFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/NumberFunction.java
@@ -68,9 +68,9 @@ final class NumberFunction
final Expr arg;
- NumberFunction(List args)
+ NumberFunction(List<Expr> args)
{
- this(args.size() > 0 ? (Expr) args.get(0) : null);
+ this(args.size() > 0 ? args.get(0) : null);
}
NumberFunction(Expr arg)
@@ -78,6 +78,7 @@ final class NumberFunction
this.arg = arg;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
Object val = (arg == null) ? null : arg.evaluate(context, pos, len);
diff --git a/libjava/classpath/gnu/xml/xpath/ParenthesizedExpr.java b/libjava/classpath/gnu/xml/xpath/ParenthesizedExpr.java
index f343857c313..adadd6745c4 100644
--- a/libjava/classpath/gnu/xml/xpath/ParenthesizedExpr.java
+++ b/libjava/classpath/gnu/xml/xpath/ParenthesizedExpr.java
@@ -60,12 +60,17 @@ final class ParenthesizedExpr
this.expr = expr;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
Object ret = expr.evaluate(context, pos, len);
if (ret instanceof Collection)
{
- List list = new ArrayList((Collection) ret);
+ /* Suppression is safe, as we know context produces
+ Collection<Node> */
+ @SuppressWarnings("unchecked")
+ Collection<Node> nodes = (Collection<Node>) ret;
+ List<Node> list = new ArrayList<Node>(nodes);
Collections.sort(list, documentOrderComparator);
ret = list;
}
diff --git a/libjava/classpath/gnu/xml/xpath/Path.java b/libjava/classpath/gnu/xml/xpath/Path.java
index 4b01f0918ab..809f965ccef 100644
--- a/libjava/classpath/gnu/xml/xpath/Path.java
+++ b/libjava/classpath/gnu/xml/xpath/Path.java
@@ -49,6 +49,6 @@ abstract class Path
extends Pattern
{
- abstract Collection evaluate(Node context, Collection nodeSet);
+ abstract Collection<Node> evaluate(Node context, Collection<Node> nodeSet);
}
diff --git a/libjava/classpath/gnu/xml/xpath/Root.java b/libjava/classpath/gnu/xml/xpath/Root.java
index 1f79b395812..cbcb24999bc 100644
--- a/libjava/classpath/gnu/xml/xpath/Root.java
+++ b/libjava/classpath/gnu/xml/xpath/Root.java
@@ -39,6 +39,8 @@ package gnu.xml.xpath;
import java.util.Collection;
import java.util.Collections;
+import java.util.Set;
+
import javax.xml.namespace.QName;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
@@ -59,12 +61,14 @@ public final class Root
public Object evaluate(Node context, int pos, int len)
{
- return evaluate(context, Collections.EMPTY_SET);
+ Set<Node> emptySet = Collections.emptySet();
+ return evaluate(context, emptySet);
}
- Collection evaluate(Node context, Collection ns)
+ @Override
+ Collection<Node> evaluate(Node context, Collection<Node> ns)
{
- Document doc = (context instanceof Document) ? (Document) context :
+ Node doc = (context instanceof Document) ? context :
context.getOwnerDocument();
return Collections.singleton(doc);
}
diff --git a/libjava/classpath/gnu/xml/xpath/RoundFunction.java b/libjava/classpath/gnu/xml/xpath/RoundFunction.java
index bfbfd357da8..2d1bd544722 100644
--- a/libjava/classpath/gnu/xml/xpath/RoundFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/RoundFunction.java
@@ -60,9 +60,9 @@ final class RoundFunction
final Expr arg;
- RoundFunction(List args)
+ RoundFunction(List<Expr> args)
{
- this((Expr) args.get(0));
+ this(args.get(0));
}
RoundFunction(Expr arg)
@@ -70,6 +70,7 @@ final class RoundFunction
this.arg = arg;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
Object val = arg.evaluate(context, pos, len);
diff --git a/libjava/classpath/gnu/xml/xpath/Selector.java b/libjava/classpath/gnu/xml/xpath/Selector.java
index c7abb33e2ff..429b3f7e20b 100644
--- a/libjava/classpath/gnu/xml/xpath/Selector.java
+++ b/libjava/classpath/gnu/xml/xpath/Selector.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package gnu.xml.xpath;
+import gnu.java.lang.CPStringBuilder;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
@@ -82,7 +84,7 @@ public final class Selector
*/
final Test[] tests;
- public Selector(int axis, List tests)
+ public Selector(int axis, List<? extends Test> tests)
{
this.axis = axis;
int len = tests.size();
@@ -177,29 +179,31 @@ public final class Selector
return count;
}
+
+ @Override
public Object evaluate(Node context, int pos, int len)
{
- Set acc = new LinkedHashSet();
+ Set<Node> acc = new LinkedHashSet<Node>();
addCandidates(context, acc);
- List candidates = new ArrayList(acc);
- List ret = filterCandidates(candidates, false);
+ List<Node> candidates = new ArrayList<Node>(acc);
+ List<Node> ret = filterCandidates(candidates, false);
return ret;
}
- Collection evaluate(Node context, Collection ns)
+ Collection<Node> evaluate(Node context, Collection<Node> ns)
{
- Set acc = new LinkedHashSet();
- for (Iterator i = ns.iterator(); i.hasNext(); )
- addCandidates((Node) i.next(), acc);
- List candidates = new ArrayList(acc);
- List ret = filterCandidates(candidates, true);
+ Set<Node> acc = new LinkedHashSet<Node>();
+ for (Iterator<Node> i = ns.iterator(); i.hasNext(); )
+ addCandidates(i.next(), acc);
+ List<Node> candidates = new ArrayList<Node>(acc);
+ List<Node> ret = filterCandidates(candidates, true);
return ret;
}
/**
* Filter the given list of candidates according to the node tests.
*/
- List filterCandidates(List candidates, boolean cascade)
+ List<Node> filterCandidates(List<Node> candidates, boolean cascade)
{
int len = candidates.size();
int tlen = tests.length;
@@ -209,10 +213,10 @@ public final class Selector
for (int j = 0; j < tlen && len > 0; j++)
{
Test test = tests[j];
- List successful = new ArrayList(len);
+ List<Node> successful = new ArrayList<Node>(len);
for (int i = 0; i < len; i++)
{
- Node node = (Node) candidates.get(i);
+ Node node = candidates.get(i);
if (cascade)
{
// Documents and DocumentFragments should be considered
@@ -242,7 +246,7 @@ public final class Selector
return candidates;
}
- void addCandidates(Node context, Collection candidates)
+ void addCandidates(Node context, Collection<Node> candidates)
{
// Build list of candidates
switch (axis)
@@ -291,7 +295,7 @@ public final class Selector
}
}
- void addChildNodes(Node context, Collection acc, boolean recurse)
+ void addChildNodes(Node context, Collection<Node> acc, boolean recurse)
{
Node child = context.getFirstChild();
while (child != null)
@@ -303,7 +307,7 @@ public final class Selector
}
}
- void addParentNode(Node context, Collection acc, boolean recurse)
+ void addParentNode(Node context, Collection<Node> acc, boolean recurse)
{
Node parent = (context.getNodeType() == Node.ATTRIBUTE_NODE) ?
((Attr) context).getOwnerElement() : context.getParentNode();
@@ -315,7 +319,7 @@ public final class Selector
}
}
- void addFollowingNodes(Node context, Collection acc, boolean recurse)
+ void addFollowingNodes(Node context, Collection<Node> acc, boolean recurse)
{
if (context != null && recurse)
addChildNodes(context, acc, true);
@@ -349,7 +353,7 @@ public final class Selector
}
}
- void addPrecedingNodes(Node context, Collection acc, boolean recurse)
+ void addPrecedingNodes(Node context, Collection<Node> acc, boolean recurse)
{
Node cur = (context.getNodeType() == Node.ATTRIBUTE_NODE) ? null :
context.getPreviousSibling();
@@ -370,7 +374,7 @@ public final class Selector
}
}
- void addAttributes(Node context, Collection acc)
+ void addAttributes(Node context, Collection<Node> acc)
{
NamedNodeMap attrs = context.getAttributes();
if (attrs != null)
@@ -387,7 +391,7 @@ public final class Selector
}
}
- void addNamespaceAttributes(Node context, Collection acc)
+ void addNamespaceAttributes(Node context, Collection<Node> acc)
{
NamedNodeMap attrs = context.getAttributes();
if (attrs != null)
@@ -413,7 +417,7 @@ public final class Selector
public Expr clone(Object context)
{
int len = tests.length;
- List tests2 = new ArrayList(len);
+ List<Test> tests2 = new ArrayList<Test>(len);
for (int i = 0; i < len; i++)
tests2.add(tests[i].clone(context));
return new Selector(axis, tests2);
@@ -431,7 +435,7 @@ public final class Selector
public String toString()
{
- StringBuffer buf = new StringBuffer();
+ CPStringBuilder buf = new CPStringBuilder();
switch (axis)
{
case ANCESTOR:
diff --git a/libjava/classpath/gnu/xml/xpath/StartsWithFunction.java b/libjava/classpath/gnu/xml/xpath/StartsWithFunction.java
index ec021551e76..2dc2c409d8d 100644
--- a/libjava/classpath/gnu/xml/xpath/StartsWithFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/StartsWithFunction.java
@@ -54,9 +54,9 @@ final class StartsWithFunction
final Expr arg1;
final Expr arg2;
- StartsWithFunction(List args)
+ StartsWithFunction(List<Expr> args)
{
- this((Expr) args.get(0), (Expr) args.get(1));
+ this(args.get(0), args.get(1));
}
StartsWithFunction(Expr arg1, Expr arg2)
diff --git a/libjava/classpath/gnu/xml/xpath/Steps.java b/libjava/classpath/gnu/xml/xpath/Steps.java
index 9ef6cd35f3d..427fbe20138 100644
--- a/libjava/classpath/gnu/xml/xpath/Steps.java
+++ b/libjava/classpath/gnu/xml/xpath/Steps.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package gnu.xml.xpath;
+import gnu.java.lang.CPStringBuilder;
+
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
@@ -56,14 +58,14 @@ public final class Steps
extends Path
{
- final LinkedList path;
+ final LinkedList<Expr> path;
public Steps()
{
- this(new LinkedList());
+ this(new LinkedList<Expr>());
}
- Steps(LinkedList path)
+ Steps(LinkedList<Expr> path)
{
this.path = path;
}
@@ -84,10 +86,8 @@ public final class Steps
if (pos > 0)
{
Pattern left = (Pattern) path.get(pos - 1);
- Iterator j = possibleContexts(right, context).iterator();
- while (j.hasNext())
+ for (Node candidate : possibleContexts(right, context))
{
- Node candidate = (Node) j.next();
if (left.matches(candidate) &&
matches(candidate, pos - 1))
{
@@ -104,12 +104,12 @@ public final class Steps
* Essentially the reverse of Selector.addCandidates.
* The idea is to determine possible context nodes for a match.
*/
- Collection possibleContexts(Pattern pattern, Node context)
+ Collection<Node> possibleContexts(Pattern pattern, Node context)
{
if (pattern instanceof Selector)
{
Selector s = (Selector) pattern;
- Collection candidates = new LinkedHashSet();
+ Collection<Node> candidates = new LinkedHashSet<Node>();
switch (s.axis)
{
case Selector.PARENT:
@@ -157,46 +157,53 @@ public final class Steps
}
return candidates;
}
- return Collections.EMPTY_SET;
+ return Collections.emptySet();
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
//System.err.println(toString()+" evaluate");
// Left to right
- Iterator i = path.iterator();
- Expr lhs = (Expr) i.next();
+ Iterator<Expr> i = path.iterator();
+ Expr lhs = i.next();
Object val = lhs.evaluate(context, pos, len);
//System.err.println("\tevaluate "+lhs+" = "+val);
while (val instanceof Collection && i.hasNext())
{
Path rhs = (Path) i.next();
- val = rhs.evaluate(context, (Collection) val);
+ /* Suppression is safe, as we know context produces Collection<Node> */
+ @SuppressWarnings("unchecked")
+ Collection<Node> nodes = (Collection<Node>) val;
+ val = rhs.evaluate(context, nodes);
//System.err.println("\tevaluate "+rhs+" = "+val);
}
return val;
}
- Collection evaluate(Node context, Collection ns)
+ @Override
+ Collection<Node> evaluate(Node context, Collection<Node> ns)
{
// Left to right
- Iterator i = path.iterator();
- Expr lhs = (Expr) i.next();
+ Iterator<Expr> i = path.iterator();
+ Expr lhs = i.next();
if (lhs instanceof Path)
{
ns = ((Path) lhs).evaluate(context, ns);
}
else
{
- Set acc = new LinkedHashSet();
+ Set<Node> acc = new LinkedHashSet<Node>();
int pos = 1, len = ns.size();
- for (Iterator j = ns.iterator(); j.hasNext(); )
+ for (Node node : ns)
{
- Node node = (Node) j.next();
Object ret = lhs.evaluate(node, pos++, len);
if (ret instanceof Collection)
{
- acc.addAll((Collection) ret);
+ /* Suppression is safe, as we know context produces Collection<Node> */
+ @SuppressWarnings("unchecked")
+ Collection<Node> nodes = (Collection<Node>) ret;
+ acc.addAll(nodes);
}
}
ns = acc;
@@ -212,19 +219,19 @@ public final class Steps
public Expr clone(Object context)
{
int len = path.size();
- LinkedList path2 = new LinkedList();
+ LinkedList<Expr> path2 = new LinkedList<Expr>();
for (int i = 0; i < len; i++)
{
- path2.add(((Expr) path.get(i)).clone(context));
+ path2.add(path.get(i).clone(context));
}
return new Steps(path2);
}
public boolean references(QName var)
{
- for (Iterator i = path.iterator(); i.hasNext(); )
+ for (Iterator<Expr> i = path.iterator(); i.hasNext(); )
{
- if (((Expr) i.next()).references(var))
+ if (i.next().references(var))
{
return true;
}
@@ -234,16 +241,16 @@ public final class Steps
public String toString()
{
- StringBuffer buf = new StringBuffer();
- Iterator i = path.iterator();
- Expr expr = (Expr) i.next();
+ CPStringBuilder buf = new CPStringBuilder();
+ Iterator<Expr> i = path.iterator();
+ Expr expr = i.next();
if (!(expr instanceof Root))
{
buf.append(expr);
}
while (i.hasNext())
{
- expr = (Expr) i.next();
+ expr = i.next();
buf.append('/');
buf.append(expr);
}
diff --git a/libjava/classpath/gnu/xml/xpath/StringFunction.java b/libjava/classpath/gnu/xml/xpath/StringFunction.java
index 0a4c681d16b..b8cba3798de 100644
--- a/libjava/classpath/gnu/xml/xpath/StringFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/StringFunction.java
@@ -84,9 +84,9 @@ final class StringFunction
final Expr arg;
- StringFunction(List args)
+ StringFunction(List<Expr> args)
{
- this(args.size() > 0 ? (Expr) args.get(0) : null);
+ this(args.size() > 0 ? args.get(0) : null);
}
StringFunction(Expr arg)
diff --git a/libjava/classpath/gnu/xml/xpath/StringLengthFunction.java b/libjava/classpath/gnu/xml/xpath/StringLengthFunction.java
index 7f5ceafeef5..561537e99ba 100644
--- a/libjava/classpath/gnu/xml/xpath/StringLengthFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/StringLengthFunction.java
@@ -55,7 +55,7 @@ final class StringLengthFunction
final Expr arg;
- StringLengthFunction(List args)
+ StringLengthFunction(List<Expr> args)
{
this(args.isEmpty() ? null : (Expr) args.get(0));
}
@@ -65,6 +65,7 @@ final class StringLengthFunction
this.arg = arg;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
Object val = (arg == null) ? null : arg.evaluate(context, pos, len);
diff --git a/libjava/classpath/gnu/xml/xpath/SubstringAfterFunction.java b/libjava/classpath/gnu/xml/xpath/SubstringAfterFunction.java
index 8144cf84433..ad75f2e3c67 100644
--- a/libjava/classpath/gnu/xml/xpath/SubstringAfterFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/SubstringAfterFunction.java
@@ -58,9 +58,9 @@ final class SubstringAfterFunction
final Expr arg1;
final Expr arg2;
- SubstringAfterFunction(List args)
+ SubstringAfterFunction(List<Expr> args)
{
- this((Expr) args.get(0), (Expr) args.get(1));
+ this(args.get(0), args.get(1));
}
SubstringAfterFunction(Expr arg1, Expr arg2)
diff --git a/libjava/classpath/gnu/xml/xpath/SubstringBeforeFunction.java b/libjava/classpath/gnu/xml/xpath/SubstringBeforeFunction.java
index 2d92a3e0349..1bf165777d0 100644
--- a/libjava/classpath/gnu/xml/xpath/SubstringBeforeFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/SubstringBeforeFunction.java
@@ -57,9 +57,9 @@ final class SubstringBeforeFunction
final Expr arg1;
final Expr arg2;
- SubstringBeforeFunction(List args)
+ SubstringBeforeFunction(List<Expr> args)
{
- this((Expr) args.get(0), (Expr) args.get(1));
+ this(args.get(0), args.get(1));
}
SubstringBeforeFunction(Expr arg1, Expr arg2)
diff --git a/libjava/classpath/gnu/xml/xpath/SubstringFunction.java b/libjava/classpath/gnu/xml/xpath/SubstringFunction.java
index e926f6c7aeb..33bcade0c2d 100644
--- a/libjava/classpath/gnu/xml/xpath/SubstringFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/SubstringFunction.java
@@ -60,10 +60,10 @@ final class SubstringFunction
final Expr arg2;
final Expr arg3;
- SubstringFunction(List args)
+ SubstringFunction(List<Expr> args)
{
- this((Expr) args.get(0), (Expr) args.get(1),
- (args.size() > 2) ? (Expr) args.get(2) : null);
+ this(args.get(0), args.get(1),
+ (args.size() > 2) ? args.get(2) : null);
}
SubstringFunction(Expr arg1, Expr arg2, Expr arg3)
@@ -73,6 +73,7 @@ final class SubstringFunction
this.arg3 = arg3;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
Object val1 = arg1.evaluate(context, pos, len);
diff --git a/libjava/classpath/gnu/xml/xpath/SumFunction.java b/libjava/classpath/gnu/xml/xpath/SumFunction.java
index 93c2e806d48..73db2a91dc6 100644
--- a/libjava/classpath/gnu/xml/xpath/SumFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/SumFunction.java
@@ -56,9 +56,9 @@ final class SumFunction
final Expr arg;
- SumFunction(List args)
+ SumFunction(List<Expr> args)
{
- this((Expr) args.get(0));
+ this(args.get(0));
}
SumFunction(Expr arg)
@@ -66,15 +66,19 @@ final class SumFunction
this.arg = arg;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
Object val = arg.evaluate(context, pos, len);
double sum = 0.0d;
if (val instanceof Collection)
{
- for (Iterator i = ((Collection) val).iterator(); i.hasNext(); )
+ /* Suppression is safe, as we know context produces
+ Collection<Node> */
+ @SuppressWarnings("unchecked")
+ Collection<Node> nodes = (Collection<Node>) val;
+ for (Node node : nodes)
{
- Node node = (Node) i.next();
String s = stringValue(node);
sum += _number(context, s);
}
diff --git a/libjava/classpath/gnu/xml/xpath/TranslateFunction.java b/libjava/classpath/gnu/xml/xpath/TranslateFunction.java
index 54e8b9c37f5..8b4b8b2338c 100644
--- a/libjava/classpath/gnu/xml/xpath/TranslateFunction.java
+++ b/libjava/classpath/gnu/xml/xpath/TranslateFunction.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package gnu.xml.xpath;
+import gnu.java.lang.CPStringBuilder;
+
import java.util.List;
import javax.xml.namespace.QName;
import org.w3c.dom.Node;
@@ -66,9 +68,9 @@ final class TranslateFunction
final Expr arg2;
final Expr arg3;
- TranslateFunction(List args)
+ TranslateFunction(List<Expr> args)
{
- this((Expr) args.get(0), (Expr) args.get(1), (Expr) args.get(2));
+ this(args.get(0), args.get(1), args.get(2));
}
TranslateFunction(Expr arg1, Expr arg2, Expr arg3)
@@ -86,7 +88,7 @@ final class TranslateFunction
String string = _string(context, val1);
String search = _string(context, val2);
String replace = _string(context, val3);
- StringBuffer buf = new StringBuffer();
+ CPStringBuilder buf = new CPStringBuilder();
int l1 = string.length();
int l2 = search.length();
int l3 = replace.length();
@@ -110,7 +112,7 @@ final class TranslateFunction
buf.append(c);
}
}
- return new String(buf);
+ return buf.toString();
}
public Expr clone(Object context)
diff --git a/libjava/classpath/gnu/xml/xpath/UnionExpr.java b/libjava/classpath/gnu/xml/xpath/UnionExpr.java
index 5078713b693..03ae5c06d70 100644
--- a/libjava/classpath/gnu/xml/xpath/UnionExpr.java
+++ b/libjava/classpath/gnu/xml/xpath/UnionExpr.java
@@ -74,20 +74,29 @@ public final class UnionExpr
return false;
}
+ @Override
public Object evaluate(Node context, int pos, int len)
{
Object left = lhs.evaluate(context, pos, len);
Object right = rhs.evaluate(context, pos, len);
+ List<Node> list;
if (left instanceof Collection && right instanceof Collection)
{
- Set set = new HashSet();
- set.addAll ((Collection) left);
- set.addAll ((Collection) right);
- List list = new ArrayList(set);
+ Set<Node> set = new HashSet<Node>();
+ /* Suppression is safe as addAll will check the types
+ of the elements and throw a ClassCastException as necessary */
+ @SuppressWarnings("unchecked")
+ Collection<Node> l = (Collection<Node>) left;
+ @SuppressWarnings("unchecked")
+ Collection<Node> r = (Collection<Node>) right;
+ set.addAll (l);
+ set.addAll (r);
+ list = new ArrayList<Node>(set);
Collections.sort(list, documentOrderComparator);
- return list;
}
- return Collections.EMPTY_SET;
+ else
+ list = Collections.emptyList();
+ return list;
}
public Expr clone(Object context)
diff --git a/libjava/classpath/gnu/xml/xpath/VariableReference.java b/libjava/classpath/gnu/xml/xpath/VariableReference.java
index 813a37f96eb..9ef6f160ff8 100644
--- a/libjava/classpath/gnu/xml/xpath/VariableReference.java
+++ b/libjava/classpath/gnu/xml/xpath/VariableReference.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package gnu.xml.xpath;
+import gnu.java.lang.CPStringBuilder;
+
import javax.xml.namespace.QName;
import javax.xml.xpath.XPathVariableResolver;
import org.w3c.dom.Node;
@@ -86,7 +88,7 @@ public class VariableReference
public String toString()
{
- StringBuffer buf = new StringBuffer("$");
+ CPStringBuilder buf = new CPStringBuilder("$");
String prefix = name.getPrefix();
if (prefix != null && !"".equals(prefix))
{
diff --git a/libjava/classpath/gnu/xml/xpath/XPathParser.java b/libjava/classpath/gnu/xml/xpath/XPathParser.java
index 9b7540a4a40..e8c8e94da79 100644
--- a/libjava/classpath/gnu/xml/xpath/XPathParser.java
+++ b/libjava/classpath/gnu/xml/xpath/XPathParser.java
@@ -79,7 +79,7 @@ public class XPathParser
return qName;
}
- Expr lookupFunction(String name, List args)
+ Expr lookupFunction(String name, List<Expr> args)
{
int arity = args.size();
if ("position".equals(name) && arity == 0)
@@ -491,7 +491,7 @@ case 5:
else
{
steps = new Steps();
- steps.path.addFirst(yyVals[0+yyTop]);
+ steps.path.addFirst((Expr) yyVals[0+yyTop]);
}
steps.path.addFirst(new Root());
yyVal = steps;
@@ -512,7 +512,7 @@ case 6:
else
{
steps = new Steps();
- steps.path.addFirst(yyVals[0+yyTop]);
+ steps.path.addFirst((Expr) yyVals[0+yyTop]);
}
steps.path.addFirst(s);
steps.path.addFirst(new Root());
@@ -532,9 +532,9 @@ case 8:
else
{
steps = new Steps();
- steps.path.addFirst(yyVals[-2+yyTop]);
+ steps.path.addFirst((Expr) yyVals[-2+yyTop]);
}
- steps.path.addLast(yyVals[0+yyTop]);
+ steps.path.addLast((Expr) yyVals[0+yyTop]);
yyVal = steps;
/*$$ = new Step((Expr) $1, (Path) $3);*/
}
@@ -553,10 +553,10 @@ case 9:
else
{
steps = new Steps();
- steps.path.addFirst(yyVals[-2+yyTop]);
+ steps.path.addFirst((Expr) yyVals[-2+yyTop]);
}
steps.path.addLast(s);
- steps.path.addLast(yyVals[0+yyTop]);
+ steps.path.addLast((Expr) yyVals[0+yyTop]);
yyVal = steps;
/*Step step = new Step(s, (Path) $3);*/
/*$$ = new Step((Expr) $1, step);*/
@@ -565,48 +565,56 @@ case 9:
case 10:
// line 362 "XPathParser.y"
{
- yyVal = new Selector (Selector.CHILD, (List) yyVals[0+yyTop]);
- }
+ @SuppressWarnings("unchecked") List<Test> tests = (List<Test>) yyVals[0+yyTop];
+ yyVal = new Selector (Selector.CHILD, tests);
+ }
break;
case 11:
// line 366 "XPathParser.y"
{
- yyVal = new Selector (Selector.ATTRIBUTE, (List) yyVals[0+yyTop]);
- }
+ /* This is safe as we create this in one of the other cases */
+ @SuppressWarnings("unchecked") List<Test> tests = (List<Test>) yyVals[0+yyTop];
+ yyVal = new Selector (Selector.ATTRIBUTE, tests);
+ }
break;
case 12:
// line 370 "XPathParser.y"
{
- yyVal = new Selector (((Integer) yyVals[-2+yyTop]).intValue (), (List) yyVals[0+yyTop]);
- }
+ /* This is safe as we create this in one of the other cases */
+ @SuppressWarnings("unchecked") List<Test> tests = (List<Test>) yyVals[0+yyTop];
+ yyVal = new Selector (((Integer) yyVals[-2+yyTop]).intValue (), tests);
+ }
break;
case 13:
// line 374 "XPathParser.y"
{
- yyVal = new Selector (Selector.SELF, Collections.EMPTY_LIST);
- }
+ List<Test> emptyList = Collections.emptyList();
+ yyVal = new Selector (Selector.SELF, emptyList);
+ }
break;
case 14:
// line 378 "XPathParser.y"
{
- yyVal = new Selector (Selector.PARENT, Collections.EMPTY_LIST);
- }
+ List<Test> emptyList = Collections.emptyList();
+ yyVal = new Selector (Selector.PARENT, emptyList);
+ }
break;
case 15:
// line 385 "XPathParser.y"
{
- List list = new ArrayList();
- list.add(yyVals[0+yyTop]);
+ List<Test> list = new ArrayList<Test>();
+ list.add((Test) yyVals[0+yyTop]);
yyVal = list;
}
break;
case 16:
// line 391 "XPathParser.y"
{
- List list = (List)yyVals[-1+yyTop];
- list.add(yyVals[0+yyTop]);
- yyVal = list;
- }
+ /* This is safe as we create this in one of the other cases */
+ @SuppressWarnings("unchecked") List<Test> tests = (List<Test>)yyVals[-1+yyTop];
+ tests.add((Test) yyVals[0+yyTop]);
+ yyVal = tests;
+ }
break;
case 17:
// line 415 "XPathParser.y"
@@ -725,30 +733,34 @@ case 37:
case 39:
// line 508 "XPathParser.y"
{
- yyVal = lookupFunction((String) yyVals[-2+yyTop], Collections.EMPTY_LIST);
- }
+ List<Expr> emptyList = Collections.emptyList();
+ yyVal = lookupFunction((String) yyVals[-2+yyTop], emptyList);
+ }
break;
case 40:
// line 512 "XPathParser.y"
{
- yyVal = lookupFunction((String) yyVals[-3+yyTop], (List) yyVals[-1+yyTop]);
- }
+ /* This is safe as we create this below */
+ @SuppressWarnings("unchecked") List<Expr> exprs = (List<Expr>) yyVals[-1+yyTop];
+ yyVal = lookupFunction((String) yyVals[-3+yyTop], exprs);
+ }
break;
case 41:
// line 519 "XPathParser.y"
{
- List list = new ArrayList();
- list.add(yyVals[0+yyTop]);
+ List<Expr> list = new ArrayList<Expr>();
+ list.add((Expr) yyVals[0+yyTop]);
yyVal = list;
}
break;
case 42:
// line 525 "XPathParser.y"
{
- List list = (List) yyVals[0+yyTop];
- list.add(0, yyVals[-2+yyTop]);
- yyVal = list;
- }
+ /* This is safe as we create this above */
+ @SuppressWarnings("unchecked") List<Expr> list = (List<Expr>) yyVals[0+yyTop];
+ list.add(0, (Expr) yyVals[-2+yyTop]);
+ yyVal = list;
+ }
break;
case 44:
// line 535 "XPathParser.y"
@@ -767,9 +779,9 @@ case 47:
else
{
steps = new Steps();
- steps.path.addFirst(yyVals[0+yyTop]);
+ steps.path.addFirst((Expr) yyVals[0+yyTop]);
}
- steps.path.addFirst(yyVals[-2+yyTop]);
+ steps.path.addFirst((Expr) yyVals[-2+yyTop]);
yyVal = steps;
/*$$ = new Step ((Expr) $1, (Path) $3);*/
}
@@ -788,10 +800,10 @@ case 48:
else
{
steps = new Steps();
- steps.path.addFirst(yyVals[0+yyTop]);
+ steps.path.addFirst((Expr) yyVals[0+yyTop]);
}
steps.path.addFirst(s);
- steps.path.addFirst(yyVals[-2+yyTop]);
+ steps.path.addFirst((Expr) yyVals[-2+yyTop]);
yyVal = steps;
/*Step step = new Step (s, (Path) $3);*/
/*$$ = new Step ((Expr) $1, step);*/
@@ -811,7 +823,7 @@ case 50:
else
{
steps = new Steps();
- steps.path.addFirst(yyVals[-1+yyTop]);
+ steps.path.addFirst((Expr) yyVals[-1+yyTop]);
}
steps.path.addLast(s);
yyVal = steps;
diff --git a/libjava/classpath/gnu/xml/xpath/XPathParser.y b/libjava/classpath/gnu/xml/xpath/XPathParser.y
index 55015138655..a6d3fd130b0 100644
--- a/libjava/classpath/gnu/xml/xpath/XPathParser.y
+++ b/libjava/classpath/gnu/xml/xpath/XPathParser.y
@@ -78,7 +78,7 @@ public class XPathParser
return qName;
}
- Expr lookupFunction(String name, List args)
+ Expr lookupFunction(String name, List<Expr> args)
{
int arity = args.size();
if ("position".equals(name) && arity == 0)
@@ -287,7 +287,7 @@ absolute_location_path:
else
{
steps = new Steps();
- steps.path.addFirst($2);
+ steps.path.addFirst((Expr) $2);
}
steps.path.addFirst(new Root());
$$ = steps;
@@ -306,7 +306,7 @@ absolute_location_path:
else
{
steps = new Steps();
- steps.path.addFirst($2);
+ steps.path.addFirst((Expr) $2);
}
steps.path.addFirst(s);
steps.path.addFirst(new Root());
@@ -328,9 +328,9 @@ relative_location_path:
else
{
steps = new Steps();
- steps.path.addFirst($1);
+ steps.path.addFirst((Expr) $1);
}
- steps.path.addLast($3);
+ steps.path.addLast((Expr) $3);
$$ = steps;
//$$ = new Step((Expr) $1, (Path) $3);
}
@@ -347,10 +347,10 @@ relative_location_path:
else
{
steps = new Steps();
- steps.path.addFirst($1);
+ steps.path.addFirst((Expr) $1);
}
steps.path.addLast(s);
- steps.path.addLast($3);
+ steps.path.addLast((Expr) $3);
$$ = steps;
//Step step = new Step(s, (Path) $3);
//$$ = new Step((Expr) $1, step);
@@ -360,37 +360,43 @@ relative_location_path:
step:
step_node_test
{
- $$ = new Selector (Selector.CHILD, (List) $1);
+ @SuppressWarnings("unchecked") List<Test> tests = (List<Test>) $1;
+ $$ = new Selector (Selector.CHILD, tests);
}
| AT step_node_test
{
- $$ = new Selector (Selector.ATTRIBUTE, (List) $2);
+ @SuppressWarnings("unchecked") List<Test> tests = (List<Test>) $2;
+ $$ = new Selector (Selector.ATTRIBUTE, tests);
}
| axis_name DOUBLE_COLON step_node_test
{
- $$ = new Selector (((Integer) $1).intValue (), (List) $3);
+ @SuppressWarnings("unchecked") List<Test> tests = (List<Test>) $3;
+ $$ = new Selector (((Integer) $1).intValue (), tests);
}
| DOT
{
- $$ = new Selector (Selector.SELF, Collections.EMPTY_LIST);
+ List<Test> emptyList = Collections.emptyList();
+ $$ = new Selector (Selector.SELF, emptyList);
}
| DOUBLE_DOT
{
- $$ = new Selector (Selector.PARENT, Collections.EMPTY_LIST);
+ List<Test> emptyList = Collections.emptyList();
+ $$ = new Selector (Selector.PARENT, emptyList);
}
;
step_node_test:
node_test
{
- List list = new ArrayList();
- list.add($1);
+ List<Test> list = new ArrayList<Test>();
+ list.add((Test) $1);
$$ = list;
}
| step_node_test predicate
{
- List list = (List)$1;
- list.add($2);
+ /* This is safe as we create this in one of the other cases */
+ @SuppressWarnings("unchecked") List<Test> tests = (List<Test>)$1;
+ tests.add((Test) $2);
$$ = list;
}
;
@@ -506,25 +512,29 @@ primary_expr:
function_call:
function_name LP RP
{
- $$ = lookupFunction((String) $1, Collections.EMPTY_LIST);
+ List<Expr> emptyList = Collections.emptyList();
+ $$ = lookupFunction((String) $1, emptyList);
}
| function_name LP argument_list RP
{
- $$ = lookupFunction((String) $1, (List) $3);
+ /* This is safe as we create this below */
+ @SuppressWarnings("unchecked") List<Expr> exprs = (List<Expr>) $3;
+ $$ = lookupFunction((String) $1, (List) exprs);
}
;
argument_list:
expr
{
- List list = new ArrayList();
- list.add($1);
+ List<Expr> list = new ArrayList<Expr>();
+ list.add((Expr) $1);
$$ = list;
}
| expr COMMA argument_list
{
- List list = (List) $3;
- list.add(0, $1);
+ /* This is safe as we create this above */
+ @SuppressWarnings("unchecked") List<Expr> list = (List<Expr>) $3;
+ list.add(0, (Expr) $1);
$$ = list;
}
;
@@ -550,9 +560,9 @@ path_expr:
else
{
steps = new Steps();
- steps.path.addFirst($3);
+ steps.path.addFirst((Expr) $3);
}
- steps.path.addFirst($1);
+ steps.path.addFirst((Expr) $1);
$$ = steps;
//$$ = new Step ((Expr) $1, (Path) $3);
}
@@ -572,7 +582,7 @@ path_expr:
steps.path.addFirst($3);
}
steps.path.addFirst(s);
- steps.path.addFirst($1);
+ steps.path.addFirst((Expr) $1);
$$ = steps;
//Step step = new Step (s, (Path) $3);
//$$ = new Step ((Expr) $1, step);
@@ -594,7 +604,7 @@ filter_expr:
else
{
steps = new Steps();
- steps.path.addFirst($1);
+ steps.path.addFirst((Expr) $1);
}
steps.path.addLast(s);
$$ = steps;
diff --git a/libjava/classpath/gnu/xml/xpath/XPathTokenizer.java b/libjava/classpath/gnu/xml/xpath/XPathTokenizer.java
index a287137827b..bf4516afae7 100644
--- a/libjava/classpath/gnu/xml/xpath/XPathTokenizer.java
+++ b/libjava/classpath/gnu/xml/xpath/XPathTokenizer.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package gnu.xml.xpath;
+import gnu.java.lang.CPStringBuilder;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
@@ -90,7 +92,7 @@ implements XPathParser.yyInput
}
- static final Map keywords = new TreeMap ();
+ static final Map<String,Integer> keywords = new TreeMap<String,Integer> ();
static
{
keywords.put ("ancestor", new Integer (XPathParser.ANCESTOR));
@@ -314,7 +316,7 @@ implements XPathParser.yyInput
XPathToken consume_literal (int delimiter)
throws IOException
{
- StringBuffer buf = new StringBuffer ();
+ CPStringBuilder buf = new CPStringBuilder ();
while (true)
{
int c = in.read ();
@@ -336,7 +338,7 @@ implements XPathParser.yyInput
XPathToken consume_digits (int c)
throws IOException
{
- StringBuffer buf = new StringBuffer ();
+ CPStringBuilder buf = new CPStringBuilder ();
buf.append ((char) c);
while (true)
{
@@ -357,7 +359,7 @@ implements XPathParser.yyInput
XPathToken consume_name (int c)
throws IOException
{
- StringBuffer buf = new StringBuffer ();
+ CPStringBuilder buf = new CPStringBuilder ();
buf.append ((char) c);
while (true)
{
OpenPOWER on IntegriCloud