From 2799793789d5b66c90efbd1a3eb56e0c1ec57f88 Mon Sep 17 00:00:00 2001 From: Andrew John Hughes Date: Thu, 5 Oct 2006 02:44:18 +0000 Subject: 2006-10-05 Andrew John Hughes * Merge of HEAD-->generics for 2006/09/03-2006/10/04. --- gnu/xml/xpath/Expr.java | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'gnu/xml/xpath/Expr.java') diff --git a/gnu/xml/xpath/Expr.java b/gnu/xml/xpath/Expr.java index 76fd49eef..cafc83b0d 100644 --- a/gnu/xml/xpath/Expr.java +++ b/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; -- cgit v1.2.1