[kaffe] CVS kaffe (robilad): Resynced with GNU JAXP: improved xpath support
Kaffe CVS
cvs-commits at kaffe.org
Mon Oct 18 13:23:46 PDT 2004
PatchSet 5310
Date: 2004/10/18 20:19:38
Author: robilad
Branch: HEAD
Tag: (none)
Log:
Resynced with GNU JAXP: improved xpath support
2004-10-18 Dalibor Topic <robilad at kaffe.org>
* libraries/javalib/Makefile.am,
libraries/javalib/Makefile.in,
libraries/javalib/all.files:
Regenerated.
* libraries/javalib/gnu/xml/dom/DomXPathResult.java,
libraries/javalib/gnu/xml/xpath/AndExpr.java,
libraries/javalib/gnu/xml/xpath/ArithmeticExpr.java,
libraries/javalib/gnu/xml/xpath/Constant.java,
libraries/javalib/gnu/xml/xpath/EqualityExpr.java,
libraries/javalib/gnu/xml/xpath/Expr.java,
libraries/javalib/gnu/xml/xpath/ExpressionTest.java,
libraries/javalib/gnu/xml/xpath/FunctionCall.java,
libraries/javalib/gnu/xml/xpath/Index.java,
libraries/javalib/gnu/xml/xpath/NameTest.java,
libraries/javalib/gnu/xml/xpath/NegativeExpr.java,
libraries/javalib/gnu/xml/xpath/NodeTypeTest.java,
libraries/javalib/gnu/xml/xpath/OrExpr.java,
libraries/javalib/gnu/xml/xpath/ParenthesizedExpr.java,
libraries/javalib/gnu/xml/xpath/RelationalExpr.java,
libraries/javalib/gnu/xml/xpath/Root.java,
libraries/javalib/gnu/xml/xpath/Selector.java,
libraries/javalib/gnu/xml/xpath/Step.java,
libraries/javalib/gnu/xml/xpath/Test.java,
libraries/javalib/gnu/xml/xpath/UnionExpr.java,
libraries/javalib/gnu/xml/xpath/XPathParser.java,
libraries/javalib/gnu/xml/xpath/XPathTokenizer.java:
New files taken from GNU JAXP.
* libraries/javalib/META-INF/MANIFEST.MF,
libraries/javalib/gnu/xml/aelfred2/SAXDriver.java,
libraries/javalib/gnu/xml/dom/DomImpl.java,
libraries/javalib/gnu/xml/dom/DomXPathExpression.java,
libraries/javalib/org/xml/sax/SAXNotRecognizedException.java,
libraries/javalib/org/xml/sax/SAXNotSupportedException.java:
Resynced with GNU JAXP.
2004-10-13 Arnaud Vandyck <avdyk at gnu.org>
Reported by John Kristian <jk2004 at engineer.com>:
* manifest.mf: added Implementation Version field.
2004-10-17 Chris Burdess <dog at gnu.org>
* xpath: Added experimental XPath 1.0 engine.
Members:
ChangeLog:1.2862->1.2863
libraries/javalib/Makefile.am:1.251->1.252
libraries/javalib/Makefile.in:1.331->1.332
libraries/javalib/all.files:1.39->1.40
libraries/javalib/META-INF/MANIFEST.MF:1.1->1.2
libraries/javalib/gnu/xml/aelfred2/SAXDriver.java:1.11->1.12
libraries/javalib/gnu/xml/dom/DomImpl.java:1.5->1.6
libraries/javalib/gnu/xml/dom/DomXPathExpression.java:1.1->1.2
libraries/javalib/gnu/xml/dom/DomXPathResult.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/AndExpr.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/ArithmeticExpr.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/Constant.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/EqualityExpr.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/Expr.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/ExpressionTest.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/FunctionCall.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/Index.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/NameTest.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/NegativeExpr.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/NodeTypeTest.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/OrExpr.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/ParenthesizedExpr.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/RelationalExpr.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/Root.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/Selector.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/Step.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/Test.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/UnionExpr.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/XPathParser.java:INITIAL->1.1
libraries/javalib/gnu/xml/xpath/XPathTokenizer.java:INITIAL->1.1
libraries/javalib/org/xml/sax/SAXNotRecognizedException.java:1.2->1.3
libraries/javalib/org/xml/sax/SAXNotSupportedException.java:1.2->1.3
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2862 kaffe/ChangeLog:1.2863
--- kaffe/ChangeLog:1.2862 Mon Oct 18 13:38:52 2004
+++ kaffe/ChangeLog Mon Oct 18 20:19:38 2004
@@ -1,5 +1,53 @@
2004-10-18 Dalibor Topic <robilad at kaffe.org>
+ * libraries/javalib/Makefile.am,
+ libraries/javalib/Makefile.in,
+ libraries/javalib/all.files:
+ Regenerated.
+
+ * libraries/javalib/gnu/xml/dom/DomXPathResult.java,
+ libraries/javalib/gnu/xml/xpath/AndExpr.java,
+ libraries/javalib/gnu/xml/xpath/ArithmeticExpr.java,
+ libraries/javalib/gnu/xml/xpath/Constant.java,
+ libraries/javalib/gnu/xml/xpath/EqualityExpr.java,
+ libraries/javalib/gnu/xml/xpath/Expr.java,
+ libraries/javalib/gnu/xml/xpath/ExpressionTest.java,
+ libraries/javalib/gnu/xml/xpath/FunctionCall.java,
+ libraries/javalib/gnu/xml/xpath/Index.java,
+ libraries/javalib/gnu/xml/xpath/NameTest.java,
+ libraries/javalib/gnu/xml/xpath/NegativeExpr.java,
+ libraries/javalib/gnu/xml/xpath/NodeTypeTest.java,
+ libraries/javalib/gnu/xml/xpath/OrExpr.java,
+ libraries/javalib/gnu/xml/xpath/ParenthesizedExpr.java,
+ libraries/javalib/gnu/xml/xpath/RelationalExpr.java,
+ libraries/javalib/gnu/xml/xpath/Root.java,
+ libraries/javalib/gnu/xml/xpath/Selector.java,
+ libraries/javalib/gnu/xml/xpath/Step.java,
+ libraries/javalib/gnu/xml/xpath/Test.java,
+ libraries/javalib/gnu/xml/xpath/UnionExpr.java,
+ libraries/javalib/gnu/xml/xpath/XPathParser.java,
+ libraries/javalib/gnu/xml/xpath/XPathTokenizer.java:
+ New files taken from GNU JAXP.
+
+ * libraries/javalib/META-INF/MANIFEST.MF,
+ libraries/javalib/gnu/xml/aelfred2/SAXDriver.java,
+ libraries/javalib/gnu/xml/dom/DomImpl.java,
+ libraries/javalib/gnu/xml/dom/DomXPathExpression.java,
+ libraries/javalib/org/xml/sax/SAXNotRecognizedException.java,
+ libraries/javalib/org/xml/sax/SAXNotSupportedException.java:
+ Resynced with GNU JAXP.
+
+ 2004-10-13 Arnaud Vandyck <avdyk at gnu.org>
+
+ Reported by John Kristian <jk2004 at engineer.com>:
+ * manifest.mf: added Implementation Version field.
+
+ 2004-10-17 Chris Burdess <dog at gnu.org>
+
+ * xpath: Added experimental XPath 1.0 engine.
+
+2004-10-18 Dalibor Topic <robilad at kaffe.org>
+
* libraries/javalib/gnu/java/security/provider/DSAParameters.java:
Resynced with GNU Classpath.
Index: kaffe/libraries/javalib/Makefile.am
diff -u kaffe/libraries/javalib/Makefile.am:1.251 kaffe/libraries/javalib/Makefile.am:1.252
--- kaffe/libraries/javalib/Makefile.am:1.251 Sun Oct 17 19:06:49 2004
+++ kaffe/libraries/javalib/Makefile.am Mon Oct 18 20:19:41 2004
@@ -160,6 +160,7 @@
$(gnu_xml_libxmlj_util_SRCS) \
$(gnu_xml_pipeline_SRCS) \
$(gnu_xml_util_SRCS) \
+ $(gnu_xml_xpath_SRCS) \
$(java_applet_SRCS) \
$(java_awt_SRCS) \
$(java_awt_color_SRCS) \
@@ -1384,6 +1385,7 @@
gnu/xml/dom/DomText.java \
gnu/xml/dom/DomXPathExpression.java \
gnu/xml/dom/DomXPathNSResolver.java \
+ gnu/xml/dom/DomXPathResult.java \
gnu/xml/dom/ImplementationList.java \
gnu/xml/dom/ImplementationSource.java \
gnu/xml/dom/JAXPFactory.java
@@ -1460,6 +1462,28 @@
gnu/xml/util/XCat.java \
gnu/xml/util/XHTMLWriter.java \
gnu/xml/util/XMLWriter.java
+gnu_xml_xpath_SRCS = \
+ gnu/xml/xpath/AndExpr.java \
+ gnu/xml/xpath/ArithmeticExpr.java \
+ gnu/xml/xpath/Constant.java \
+ gnu/xml/xpath/EqualityExpr.java \
+ gnu/xml/xpath/Expr.java \
+ gnu/xml/xpath/ExpressionTest.java \
+ gnu/xml/xpath/FunctionCall.java \
+ gnu/xml/xpath/Index.java \
+ gnu/xml/xpath/NameTest.java \
+ gnu/xml/xpath/NegativeExpr.java \
+ gnu/xml/xpath/NodeTypeTest.java \
+ gnu/xml/xpath/OrExpr.java \
+ gnu/xml/xpath/ParenthesizedExpr.java \
+ gnu/xml/xpath/RelationalExpr.java \
+ gnu/xml/xpath/Root.java \
+ gnu/xml/xpath/Selector.java \
+ gnu/xml/xpath/Step.java \
+ gnu/xml/xpath/Test.java \
+ gnu/xml/xpath/UnionExpr.java \
+ gnu/xml/xpath/XPathParser.java \
+ gnu/xml/xpath/XPathTokenizer.java
java_applet_SRCS = \
java/applet/Applet.java \
java/applet/AppletContext.java \
Index: kaffe/libraries/javalib/Makefile.in
diff -u kaffe/libraries/javalib/Makefile.in:1.331 kaffe/libraries/javalib/Makefile.in:1.332
--- kaffe/libraries/javalib/Makefile.in:1.331 Sun Oct 17 19:06:50 2004
+++ kaffe/libraries/javalib/Makefile.in Mon Oct 18 20:19:43 2004
@@ -501,6 +501,7 @@
$(gnu_xml_libxmlj_util_SRCS) \
$(gnu_xml_pipeline_SRCS) \
$(gnu_xml_util_SRCS) \
+ $(gnu_xml_xpath_SRCS) \
$(java_applet_SRCS) \
$(java_awt_SRCS) \
$(java_awt_color_SRCS) \
@@ -1824,6 +1825,7 @@
gnu/xml/dom/DomText.java \
gnu/xml/dom/DomXPathExpression.java \
gnu/xml/dom/DomXPathNSResolver.java \
+ gnu/xml/dom/DomXPathResult.java \
gnu/xml/dom/ImplementationList.java \
gnu/xml/dom/ImplementationSource.java \
gnu/xml/dom/JAXPFactory.java
@@ -1907,6 +1909,29 @@
gnu/xml/util/XCat.java \
gnu/xml/util/XHTMLWriter.java \
gnu/xml/util/XMLWriter.java
+
+gnu_xml_xpath_SRCS = \
+ gnu/xml/xpath/AndExpr.java \
+ gnu/xml/xpath/ArithmeticExpr.java \
+ gnu/xml/xpath/Constant.java \
+ gnu/xml/xpath/EqualityExpr.java \
+ gnu/xml/xpath/Expr.java \
+ gnu/xml/xpath/ExpressionTest.java \
+ gnu/xml/xpath/FunctionCall.java \
+ gnu/xml/xpath/Index.java \
+ gnu/xml/xpath/NameTest.java \
+ gnu/xml/xpath/NegativeExpr.java \
+ gnu/xml/xpath/NodeTypeTest.java \
+ gnu/xml/xpath/OrExpr.java \
+ gnu/xml/xpath/ParenthesizedExpr.java \
+ gnu/xml/xpath/RelationalExpr.java \
+ gnu/xml/xpath/Root.java \
+ gnu/xml/xpath/Selector.java \
+ gnu/xml/xpath/Step.java \
+ gnu/xml/xpath/Test.java \
+ gnu/xml/xpath/UnionExpr.java \
+ gnu/xml/xpath/XPathParser.java \
+ gnu/xml/xpath/XPathTokenizer.java
java_applet_SRCS = \
java/applet/Applet.java \
Index: kaffe/libraries/javalib/all.files
diff -u kaffe/libraries/javalib/all.files:1.39 kaffe/libraries/javalib/all.files:1.40
--- kaffe/libraries/javalib/all.files:1.39 Sun Oct 17 19:06:50 2004
+++ kaffe/libraries/javalib/all.files Mon Oct 18 20:19:44 2004
@@ -966,6 +966,7 @@
gnu/xml/dom/DomText.java
gnu/xml/dom/DomXPathExpression.java
gnu/xml/dom/DomXPathNSResolver.java
+gnu/xml/dom/DomXPathResult.java
gnu/xml/dom/ImplementationList.java
gnu/xml/dom/ImplementationSource.java
gnu/xml/dom/JAXPFactory.java
@@ -1035,6 +1036,27 @@
gnu/xml/util/XCat.java
gnu/xml/util/XHTMLWriter.java
gnu/xml/util/XMLWriter.java
+gnu/xml/xpath/AndExpr.java
+gnu/xml/xpath/ArithmeticExpr.java
+gnu/xml/xpath/Constant.java
+gnu/xml/xpath/EqualityExpr.java
+gnu/xml/xpath/Expr.java
+gnu/xml/xpath/ExpressionTest.java
+gnu/xml/xpath/FunctionCall.java
+gnu/xml/xpath/Index.java
+gnu/xml/xpath/NameTest.java
+gnu/xml/xpath/NegativeExpr.java
+gnu/xml/xpath/NodeTypeTest.java
+gnu/xml/xpath/OrExpr.java
+gnu/xml/xpath/ParenthesizedExpr.java
+gnu/xml/xpath/RelationalExpr.java
+gnu/xml/xpath/Root.java
+gnu/xml/xpath/Selector.java
+gnu/xml/xpath/Step.java
+gnu/xml/xpath/Test.java
+gnu/xml/xpath/UnionExpr.java
+gnu/xml/xpath/XPathParser.java
+gnu/xml/xpath/XPathTokenizer.java
java/applet/Applet.java
java/applet/AppletContext.java
java/applet/AppletStub.java
Index: kaffe/libraries/javalib/META-INF/MANIFEST.MF
diff -u kaffe/libraries/javalib/META-INF/MANIFEST.MF:1.1 kaffe/libraries/javalib/META-INF/MANIFEST.MF:1.2
--- kaffe/libraries/javalib/META-INF/MANIFEST.MF:1.1 Wed Apr 14 19:40:35 2004
+++ kaffe/libraries/javalib/META-INF/MANIFEST.MF Mon Oct 18 20:19:45 2004
@@ -2,6 +2,7 @@
Implementation-Title: GNU JAXP
Implementation-URL: http://www.gnu.org/software/classpathx/jaxp
Implementation-Vendor: Free Software Foundation
+Implementation-Version: 1.1
Main-Class: gnu.xml.util.DoParse
Name: gnu/xml/aelfred2/
Index: kaffe/libraries/javalib/gnu/xml/aelfred2/SAXDriver.java
diff -u kaffe/libraries/javalib/gnu/xml/aelfred2/SAXDriver.java:1.11 kaffe/libraries/javalib/gnu/xml/aelfred2/SAXDriver.java:1.12
--- kaffe/libraries/javalib/gnu/xml/aelfred2/SAXDriver.java:1.11 Fri Sep 17 21:02:01 2004
+++ kaffe/libraries/javalib/gnu/xml/aelfred2/SAXDriver.java Mon Oct 18 20:19:45 2004
@@ -1361,5 +1361,6 @@
{
this.name = name;
this.value = value;
+ this.nameSpace = "";
}
}
Index: kaffe/libraries/javalib/gnu/xml/dom/DomImpl.java
diff -u kaffe/libraries/javalib/gnu/xml/dom/DomImpl.java:1.5 kaffe/libraries/javalib/gnu/xml/dom/DomImpl.java:1.6
--- kaffe/libraries/javalib/gnu/xml/dom/DomImpl.java:1.5 Fri Sep 17 21:02:02 2004
+++ kaffe/libraries/javalib/gnu/xml/dom/DomImpl.java Mon Oct 18 20:19:46 2004
@@ -114,7 +114,12 @@
return true;
if ("2.0".equals (version))
return true;
- }
+ } else if ("xpath".equals (name)) {
+ if (version == null || version.equals (""))
+ return true;
+ if ("1.0".equals (version))
+ return true;
+ }
// views
// stylesheets
Index: kaffe/libraries/javalib/gnu/xml/dom/DomXPathExpression.java
diff -u kaffe/libraries/javalib/gnu/xml/dom/DomXPathExpression.java:1.1 kaffe/libraries/javalib/gnu/xml/dom/DomXPathExpression.java:1.2
--- kaffe/libraries/javalib/gnu/xml/dom/DomXPathExpression.java:1.1 Sun Oct 10 18:43:17 2004
+++ kaffe/libraries/javalib/gnu/xml/dom/DomXPathExpression.java Mon Oct 18 20:19:46 2004
@@ -38,11 +38,17 @@
package gnu.xml.dom;
+import java.io.IOException;
+import java.util.Collection;
import org.w3c.dom.DOMException;
import org.w3c.dom.Node;
import org.w3c.dom.xpath.XPathException;
import org.w3c.dom.xpath.XPathExpression;
import org.w3c.dom.xpath.XPathNSResolver;
+import org.w3c.dom.xpath.XPathResult;
+import gnu.xml.xpath.Expr;
+import gnu.xml.xpath.XPathParser;
+import gnu.xml.xpath.XPathTokenizer;
/**
* An XPath expression.
@@ -53,23 +59,75 @@
implements XPathExpression
{
- DomDocument doc;
- String expression;
- XPathNSResolver resolver;
+ final DomDocument doc;
+ final Expr expression;
+ final XPathNSResolver resolver;
DomXPathExpression (DomDocument doc, String expression,
XPathNSResolver resolver)
+ throws XPathException
{
this.doc = doc;
- this.expression = expression;
this.resolver = resolver;
+
+ XPathParser parser = new XPathParser ();
+ XPathTokenizer tokenizer = new XPathTokenizer (expression);
+ try
+ {
+ this.expression = (Expr) parser.yyparse (tokenizer);
+ }
+ catch (IOException e)
+ {
+ throw new XPathException (XPathException.INVALID_EXPRESSION_ERR,
+ e.getMessage ());
+ }
+ catch (XPathParser.yyException e)
+ {
+ throw new XPathException (XPathException.INVALID_EXPRESSION_ERR,
+ e.getMessage ());
+ }
+ System.out.println("expression="+this.expression);
}
public Object evaluate (Node contextNode, short type, Object result)
throws XPathException, DOMException
{
- // TODO
- return null;
+ Object val = expression.evaluate (contextNode);
+ switch (type)
+ {
+ case XPathResult.BOOLEAN_TYPE:
+ if (!(val instanceof Boolean))
+ {
+ throw new XPathException (XPathException.TYPE_ERR, null);
+ }
+ break;
+ case XPathResult.NUMBER_TYPE:
+ if (!(val instanceof Double))
+ {
+ throw new XPathException (XPathException.TYPE_ERR, null);
+ }
+ break;
+ case XPathResult.STRING_TYPE:
+ if (!(val instanceof String))
+ {
+ throw new XPathException (XPathException.TYPE_ERR, null);
+ }
+ break;
+ case XPathResult.ANY_UNORDERED_NODE_TYPE:
+ case XPathResult.FIRST_ORDERED_NODE_TYPE:
+ case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
+ case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:
+ if (!(val instanceof Collection))
+ {
+ throw new XPathException (XPathException.TYPE_ERR, null);
+ }
+ break;
+ case XPathResult.ORDERED_NODE_ITERATOR_TYPE:
+ case XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:
+ /* We don't support ordered node-sets */
+ throw new XPathException (XPathException.TYPE_ERR, null);
+ }
+ return new DomXPathResult (val, type);
}
}
===================================================================
Checking out kaffe/libraries/javalib/gnu/xml/dom/DomXPathResult.java
RCS: /home/cvs/kaffe/kaffe/libraries/javalib/gnu/xml/dom/DomXPathResult.java,v
VERS: 1.1
***************
--- /dev/null Sun Aug 4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/xml/dom/DomXPathResult.java Mon Oct 18 20:23:46 2004
@@ -0,0 +1,205 @@
+/*
+ * DomXPathResult.java
+ * Copyright (C) 2004 The Free Software Foundation
+ *
+ * This file is part of GNU JAXP, a library.
+ *
+ * GNU JAXP is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GNU JAXP is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Linking this library statically or dynamically with other modules is
+ * making a combined work based on this library. Thus, the terms and
+ * conditions of the GNU General Public License cover the whole
+ * combination.
+ *
+ * As a special exception, the copyright holders of this library give you
+ * permission to link this library with independent modules to produce an
+ * executable, regardless of the license terms of these independent
+ * modules, and to copy and distribute the resulting executable under
+ * terms of your choice, provided that you also meet, for each linked
+ * independent module, the terms and conditions of the license of that
+ * module. An independent module is a module which is not derived from
+ * or based on this library. If you modify this library, you may extend
+ * this exception to your version of the library, but you are not
+ * obliged to do so. If you do not wish to do so, delete this
+ * exception statement from your version.
+ */
+
+package gnu.xml.dom;
+
+import java.util.Collection;
+import java.util.Iterator;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Node;
+import org.w3c.dom.xpath.XPathException;
+import org.w3c.dom.xpath.XPathNSResolver;
+import org.w3c.dom.xpath.XPathResult;
+
+/**
+ * An XPath result object.
+ *
+ * @author <a href='mailto:dog at gnu.org'>Chris Burdess</a>
+ */
+class DomXPathResult
+implements XPathResult
+{
+
+ final Object value;
+ final short type;
+ Iterator iterator;
+
+ DomXPathResult (Object value, short requestedType)
+ {
+ this.value = value;
+ if (value instanceof Boolean)
+ {
+ type = XPathResult.BOOLEAN_TYPE;
+ }
+ else if (value instanceof Double)
+ {
+ type = XPathResult.NUMBER_TYPE;
+ }
+ else if (value instanceof String)
+ {
+ type = XPathResult.STRING_TYPE;
+ }
+ else if (value instanceof Collection)
+ {
+ Collection ns = (Collection) value;
+ switch (requestedType)
+ {
+ case XPathResult.ANY_TYPE:
+ case XPathResult.ANY_UNORDERED_NODE_TYPE:
+ type = (ns.size () == 1) ? XPathResult.FIRST_ORDERED_NODE_TYPE :
+ XPathResult.UNORDERED_NODE_ITERATOR_TYPE;
+ break;
+ default:
+ type = requestedType;
+ }
+ iterator = ns.iterator ();
+ }
+ else
+ {
+ throw new IllegalArgumentException ();
+ }
+ }
+
+ public boolean getBooleanValue()
+ {
+ if (type == XPathResult.BOOLEAN_TYPE)
+ {
+ return ((Boolean) value).booleanValue ();
+ }
+ throw new XPathException (XPathException.TYPE_ERR, value.toString ());
+ }
+
+ public boolean getInvalidIteratorState()
+ {
+ return iterator == null;
+ }
+
+ public double getNumberValue()
+ {
+ if (type == XPathResult.NUMBER_TYPE)
+ {
+ return ((Double) value).doubleValue ();
+ }
+ throw new XPathException (XPathException.TYPE_ERR, value.toString ());
+ }
+
+ public short getResultType()
+ {
+ return type;
+ }
+
+ public Node getSingleNodeValue()
+ {
+ switch (type)
+ {
+ case XPathResult.FIRST_ORDERED_NODE_TYPE:
+ case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
+ case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:
+ Collection ns = (Collection) value;
+ if (ns.isEmpty ())
+ {
+ return null;
+ }
+ else
+ {
+ return (Node) ns.iterator ().next ();
+ }
+ }
+ throw new XPathException (XPathException.TYPE_ERR, value.toString ());
+ }
+
+ public int getSnapshotLength()
+ {
+ switch (type)
+ {
+ case XPathResult.FIRST_ORDERED_NODE_TYPE:
+ case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
+ case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:
+ return ((Collection) value).size ();
+ }
+ throw new XPathException (XPathException.TYPE_ERR, value.toString ());
+ }
+
+ public String getStringValue()
+ {
+ if (type == XPathResult.STRING_TYPE)
+ {
+ return (String) value;
+ }
+ throw new XPathException (XPathException.TYPE_ERR, value.toString ());
+ }
+
+ public Node iterateNext()
+ {
+ if (iterator != null)
+ {
+ if (iterator.hasNext ())
+ {
+ return (Node) iterator.next ();
+ }
+ else
+ {
+ iterator = null;
+ return null;
+ }
+ }
+ throw new XPathException (XPathException.TYPE_ERR, value.toString ());
+ }
+
+ public Node snapshotItem(int index)
+ {
+ switch (type)
+ {
+ case XPathResult.FIRST_ORDERED_NODE_TYPE:
+ case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
+ case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:
+ Collection ns = (Collection) value;
+ Node[] nodes = new Node[ns.size ()];
+ ns.toArray (nodes);
+ return nodes[index];
+ }
+ throw new XPathException (XPathException.TYPE_ERR, value.toString ());
+ }
+
+ public String toString ()
+ {
+ return getClass ().getName () + "[type=" + type + ",value=" +
+ value + ']';
+ }
+
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/xml/xpath/AndExpr.java
RCS: /home/cvs/kaffe/kaffe/libraries/javalib/gnu/xml/xpath/AndExpr.java,v
VERS: 1.1
***************
--- /dev/null Sun Aug 4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/xml/xpath/AndExpr.java Mon Oct 18 20:23:46 2004
@@ -0,0 +1,77 @@
+/*
+ * AndExpr.java
+ * Copyright (C) 2004 The Free Software Foundation
+ *
+ * This file is part of GNU JAXP, a library.
+ *
+ * GNU JAXP is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GNU JAXP is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Linking this library statically or dynamically with other modules is
+ * making a combined work based on this library. Thus, the terms and
+ * conditions of the GNU General Public License cover the whole
+ * combination.
+ *
+ * As a special exception, the copyright holders of this library give you
+ * permission to link this library with independent modules to produce an
+ * executable, regardless of the license terms of these independent
+ * modules, and to copy and distribute the resulting executable under
+ * terms of your choice, provided that you also meet, for each linked
+ * independent module, the terms and conditions of the license of that
+ * module. An independent module is a module which is not derived from
+ * or based on this library. If you modify this library, you may extend
+ * this exception to your version of the library, but you are not
+ * obliged to do so. If you do not wish to do so, delete this
+ * exception statement from your version.
+ */
+
+package gnu.xml.xpath;
+
+import org.w3c.dom.Node;
+
+/**
+ * Logical and.
+ *
+ * @author <a href='mailto:dog at gnu.org'>Chris Burdess</a>
+ */
+class AndExpr
+extends Expr
+{
+
+ final Expr lhs;
+ final Expr rhs;
+
+ AndExpr (Expr lhs, Expr rhs)
+ {
+ this.lhs = lhs;
+ this.rhs = rhs;
+ }
+
+ public Object evaluate (Node context)
+ {
+ Object left = lhs.evaluate (context);
+ if (!_boolean (context, left))
+ {
+ return Boolean.FALSE;
+ }
+ Object right = rhs.evaluate (context);
+ return _boolean (context, right) ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ public String toString ()
+ {
+ return lhs + " and " + rhs;
+ }
+
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/xml/xpath/ArithmeticExpr.java
RCS: /home/cvs/kaffe/kaffe/libraries/javalib/gnu/xml/xpath/ArithmeticExpr.java,v
VERS: 1.1
***************
--- /dev/null Sun Aug 4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/xml/xpath/ArithmeticExpr.java Mon Oct 18 20:23:46 2004
@@ -0,0 +1,121 @@
+/*
+ * ArithmeticExpr.java
+ * Copyright (C) 2004 The Free Software Foundation
+ *
+ * This file is part of GNU JAXP, a library.
+ *
+ * GNU JAXP is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GNU JAXP is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Linking this library statically or dynamically with other modules is
+ * making a combined work based on this library. Thus, the terms and
+ * conditions of the GNU General Public License cover the whole
+ * combination.
+ *
+ * As a special exception, the copyright holders of this library give you
+ * permission to link this library with independent modules to produce an
+ * executable, regardless of the license terms of these independent
+ * modules, and to copy and distribute the resulting executable under
+ * terms of your choice, provided that you also meet, for each linked
+ * independent module, the terms and conditions of the license of that
+ * module. An independent module is a module which is not derived from
+ * or based on this library. If you modify this library, you may extend
+ * this exception to your version of the library, but you are not
+ * obliged to do so. If you do not wish to do so, delete this
+ * exception statement from your version.
+ */
+
+package gnu.xml.xpath;
+
+import org.w3c.dom.Node;
+
+/**
+ * Binary arithmetic expression.
+ *
+ * @author <a href='mailto:dog at gnu.org'>Chris Burdess</a>
+ */
+class ArithmeticExpr
+extends Expr
+{
+
+ static final int ADD = 0;
+ static final int SUBTRACT = 1;
+ static final int MULTIPLY = 2;
+ static final int DIVIDE = 3;
+ static final int MODULO = 4;
+
+ final Expr lhs;
+ final Expr rhs;
+ final int op;
+
+ ArithmeticExpr (Expr lhs, Expr rhs, int op)
+ {
+ this.lhs = lhs;
+ this.rhs = rhs;
+ this.op = op;
+ }
+
+ public Object evaluate (Node context)
+ {
+ Object left = lhs.evaluate (context);
+ Object right = rhs.evaluate (context);
+
+ double ln = _number (context, left);
+ double rn = _number (context, right);
+ switch (op)
+ {
+ case ADD:
+ return new Double (ln + rn);
+ case SUBTRACT:
+ return new Double (ln - rn);
+ case MULTIPLY:
+ return new Double (ln * rn);
+ case DIVIDE:
+ return new Double (ln / rn);
+ case MODULO:
+ return new Double (ln % rn);
+ default:
+ throw new IllegalStateException ();
+ }
+ }
+
+ public String toString ()
+ {
+ StringBuffer buf = new StringBuffer ();
+ buf.append (lhs);
+ buf.append (' ');
+ switch (op)
+ {
+ case ADD:
+ buf.append ('+');
+ break;
+ case SUBTRACT:
+ buf.append ('-');
+ break;
+ case MULTIPLY:
+ buf.append ('*');
+ break;
+ case DIVIDE:
+ buf.append ("div");
+ break;
+ case MODULO:
+ buf.append ("mod");
+ break;
+ }
+ buf.append (' ');
+ buf.append (rhs);
+ return buf.toString ();
+ }
+
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/xml/xpath/Constant.java
RCS: /home/cvs/kaffe/kaffe/libraries/javalib/gnu/xml/xpath/Constant.java,v
VERS: 1.1
***************
--- /dev/null Sun Aug 4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/xml/xpath/Constant.java Mon Oct 18 20:23:46 2004
@@ -0,0 +1,88 @@
+/*
+ * Constant.java
+ * Copyright (C) 2004 The Free Software Foundation
+ *
+ * This file is part of GNU JAXP, a library.
+ *
+ * GNU JAXP is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GNU JAXP is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Linking this library statically or dynamically with other modules is
+ * making a combined work based on this library. Thus, the terms and
+ * conditions of the GNU General Public License cover the whole
+ * combination.
+ *
+ * As a special exception, the copyright holders of this library give you
+ * permission to link this library with independent modules to produce an
+ * executable, regardless of the license terms of these independent
+ * modules, and to copy and distribute the resulting executable under
+ * terms of your choice, provided that you also meet, for each linked
+ * independent module, the terms and conditions of the license of that
+ * module. An independent module is a module which is not derived from
+ * or based on this library. If you modify this library, you may extend
+ * this exception to your version of the library, but you are not
+ * obliged to do so. If you do not wish to do so, delete this
+ * exception statement from your version.
+ */
+
+package gnu.xml.xpath;
+
+import org.w3c.dom.Node;
+
+/**
+ * Constant value (string literal or number).
+ *
+ * @author <a href='mailto:dog at gnu.org'>Chris Burdess</a>
+ */
+class Constant
+extends Expr
+{
+
+ final Object value;
+
+ Constant (Object value)
+ {
+ this.value = value;
+ }
+
+ public Object evaluate (Node context)
+ {
+ return value;
+ }
+
+ public String toString ()
+ {
+ String ret = value.toString ();
+ if (value instanceof String)
+ {
+ if (ret.indexOf ('\'') == -1)
+ {
+ return '\'' + ret + '\'';
+ }
+ else
+ {
+ return '"' + ret + '"';
+ }
+ }
+ if (value instanceof Double)
+ {
+ if (ret.endsWith (".0"))
+ {
+ ret = ret.substring (0, ret.length () - 2);
+ }
+ }
+ return ret;
+ }
+
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/xml/xpath/EqualityExpr.java
RCS: /home/cvs/kaffe/kaffe/libraries/javalib/gnu/xml/xpath/EqualityExpr.java,v
VERS: 1.1
***************
--- /dev/null Sun Aug 4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/xml/xpath/EqualityExpr.java Mon Oct 18 20:23:46 2004
@@ -0,0 +1,220 @@
+/*
+ * EqualityExpr.java
+ * Copyright (C) 2004 The Free Software Foundation
+ *
+ * This file is part of GNU JAXP, a library.
+ *
+ * GNU JAXP is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GNU JAXP is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Linking this library statically or dynamically with other modules is
+ * making a combined work based on this library. Thus, the terms and
+ * conditions of the GNU General Public License cover the whole
+ * combination.
+ *
+ * As a special exception, the copyright holders of this library give you
+ * permission to link this library with independent modules to produce an
+ * executable, regardless of the license terms of these independent
+ * modules, and to copy and distribute the resulting executable under
+ * terms of your choice, provided that you also meet, for each linked
+ * independent module, the terms and conditions of the license of that
+ * module. An independent module is a module which is not derived from
+ * or based on this library. If you modify this library, you may extend
+ * this exception to your version of the library, but you are not
+ * obliged to do so. If you do not wish to do so, delete this
+ * exception statement from your version.
+ */
*** Patch too long, truncated ***
More information about the kaffe
mailing list