diff options
author | Tom Tromey <tromey@gcc.gnu.org> | 2007-01-09 19:58:05 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2007-01-09 19:58:05 +0000 |
commit | 97b8365cafc3a344a22d3980b8ed885f5c6d8357 (patch) | |
tree | 996a5f57d4a68c53473382e45cb22f574cb3e4db /libjava/classpath/gnu/xml/xpath/Expr.java | |
parent | c648dedbde727ca3f883bb5fd773aa4af70d3369 (diff) | |
download | gcc-97b8365cafc3a344a22d3980b8ed885f5c6d8357.zip gcc-97b8365cafc3a344a22d3980b8ed885f5c6d8357.tar.gz gcc-97b8365cafc3a344a22d3980b8ed885f5c6d8357.tar.bz2 |
Merged gcj-eclipse branch to trunk.
From-SVN: r120621
Diffstat (limited to 'libjava/classpath/gnu/xml/xpath/Expr.java')
-rw-r--r-- | libjava/classpath/gnu/xml/xpath/Expr.java | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/libjava/classpath/gnu/xml/xpath/Expr.java b/libjava/classpath/gnu/xml/xpath/Expr.java index 76fd49ee..cafc83b 100644 --- a/libjava/classpath/gnu/xml/xpath/Expr.java +++ b/libjava/classpath/gnu/xml/xpath/Expr.java @@ -59,6 +59,7 @@ import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpressionException; import org.w3c.dom.Document; import org.w3c.dom.Node; +import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -80,6 +81,38 @@ public abstract class Expr ".####################################################", new DecimalFormatSymbols(Locale.US)); + static class ExprNodeSet implements NodeList + { + + private ArrayList list; + + ExprNodeSet(Collection collection) + { + if (collection instanceof ArrayList) + list = (ArrayList) collection; + else + list = new ArrayList(collection); + } + + public int getLength() + { + return list.size(); + } + + public Node item(int index) + { + try + { + return (Node) list.get(index); + } + catch (ArrayIndexOutOfBoundsException e) + { + return null; + } + } + + } + public Object evaluate(Object item, QName returnType) throws XPathExpressionException { @@ -132,6 +165,8 @@ public abstract class Expr { throw new XPathExpressionException("return value is not a node-set"); } + if (ret != null) + ret = new ExprNodeSet((Collection) ret); } } return ret; |