vgritsenko 2004/02/26 05:50:15
Modified: java/src/org/apache/xindice/core/query QueryUtil.java
java/tests/src/org/apache/xindice/integration/client/services
XPathQueryTest.java
Log:
Convert boolean, string, number xpath results to <query:result> elements.
There is no source meta data passed yet.
Revision Changes Path
1.6 +12 -4
xml-xindice/java/src/org/apache/xindice/core/query/QueryUtil.java
Index: QueryUtil.java
===================================================================
RCS file:
/home/cvs/xml-xindice/java/src/org/apache/xindice/core/query/QueryUtil.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- QueryUtil.java 25 Feb 2004 13:06:12 -0000 1.5
+++ QueryUtil.java 26 Feb 2004 13:50:15 -0000 1.6
@@ -116,9 +116,17 @@
root.appendChild(doc.importNode(n, true));
} else if (element instanceof Boolean || element instanceof
Double) {
- root.appendChild(doc.createTextNode(element.toString()));
+ Element holder =
doc.createElementNS(XindiceCollection.QUERY_NS, "xq:result");
+ holder.setAttribute(NodeImpl.XMLNS_PREFIX + ":xq",
XindiceCollection.QUERY_NS);
+ holder.appendChild(doc.createTextNode(element.toString()));
+ // FIXME: Meta Data
+ root.appendChild(holder);
} else if (element instanceof String) {
- root.appendChild(doc.createTextNode((String) element));
+ Element holder =
doc.createElementNS(XindiceCollection.QUERY_NS, "xq:result");
+ holder.setAttribute(NodeImpl.XMLNS_PREFIX + ":xq",
XindiceCollection.QUERY_NS);
+ holder.appendChild(doc.createTextNode((String) element));
+ // FIXME: Meta Data
+ root.appendChild(holder);
} else {
throw new XindiceRuntimeException("Unknown result type (" +
element.getClass().getName() + ") in nodeset");
}
1.16 +22 -23
xml-xindice/java/tests/src/org/apache/xindice/integration/client/services/XPathQueryTest.java
Index: XPathQueryTest.java
===================================================================
RCS file:
/home/cvs/xml-xindice/java/tests/src/org/apache/xindice/integration/client/services/XPathQueryTest.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- XPathQueryTest.java 25 Feb 2004 13:06:13 -0000 1.15
+++ XPathQueryTest.java 26 Feb 2004 13:50:15 -0000 1.16
@@ -22,11 +22,10 @@
import org.apache.xindice.xml.TextWriter;
import org.custommonkey.xmlunit.XMLAssert;
-import org.w3c.dom.Node;
import org.w3c.dom.Document;
+import org.w3c.dom.Node;
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.ResourceSet;
-import org.xmldb.api.base.XMLDBException;
import org.xmldb.api.modules.XMLResource;
import org.xmldb.api.modules.XPathQueryService;
@@ -278,7 +277,7 @@
assertEquals(1L, resultSet.getSize());
Node result = ((XMLResource)
resultSet.getResource(0)).getContentAsDOM();
- assertEquals("foo",
result.getChildNodes().item(0).getAttributes().item(1).getNodeValue());
+ assertEquals("foo",
result.getChildNodes().item(0).getAttributes().getNamedItem("bar").getNodeValue());
} finally {
client.removeDocument(TEST_COLLECTION_PATH, "doc3");
}
@@ -296,8 +295,8 @@
Node result0 = ((XMLResource)
resultSet.getResource(0)).getContentAsDOM();
Node result1 = ((XMLResource)
resultSet.getResource(1)).getContentAsDOM();
- assertEquals("foo",
result0.getChildNodes().item(0).getAttributes().item(1).getNodeValue());
- assertEquals("bar",
result1.getChildNodes().item(0).getAttributes().item(1).getNodeValue());
+ assertEquals("foo",
result0.getChildNodes().item(0).getAttributes().getNamedItem("bar").getNodeValue());
+ assertEquals("bar",
result1.getChildNodes().item(0).getAttributes().getNamedItem("bar").getNodeValue());
} finally {
client.removeDocument(TEST_COLLECTION_PATH, "doc3");
}
@@ -331,34 +330,34 @@
ResourceSet resultSet = xpathservice.query(query);
assertEquals(2L, resultSet.getSize());
- String result0 = (String)resultSet.getResource(0).getContent();
- String result1 = (String)resultSet.getResource(1).getContent();
- assertEquals("true", result0);
- assertEquals("true", result1);
+ Node result0 = ((XMLResource)
resultSet.getResource(0)).getContentAsDOM();
+ Node result1 = ((XMLResource)
resultSet.getResource(1)).getContentAsDOM();
+ assertEquals("true",
result0.getChildNodes().item(0).getChildNodes().item(0).getNodeValue());
+ assertEquals("true",
result1.getChildNodes().item(0).getChildNodes().item(0).getNodeValue());
}
public void testFetchString() throws Exception {
String query = "string(//person[first='John' and
last='Smith']/first)";
- try {
- ResourceSet resultSet = xpathservice.query(query);
+ ResourceSet resultSet = xpathservice.query(query);
+ assertEquals(2L, resultSet.getSize());
- assertEquals(2L, resultSet.getSize());
- } catch (XMLDBException e) {
- fail(e.getMessage());
- }
+ Node result0 = ((XMLResource)
resultSet.getResource(0)).getContentAsDOM();
+ Node result1 = ((XMLResource)
resultSet.getResource(1)).getContentAsDOM();
+ assertEquals("John",
result0.getChildNodes().item(0).getChildNodes().item(0).getNodeValue());
+ assertEquals(0,
result1.getChildNodes().item(0).getChildNodes().getLength());
}
public void testFetchNumber() throws Exception {
String query = "count(//person[first='John' and last='Smith'])";
- try {
- ResourceSet resultSet = xpathservice.query(query);
+ ResourceSet resultSet = xpathservice.query(query);
+ assertEquals(2L, resultSet.getSize());
- assertEquals(2L, resultSet.getSize());
- } catch (XMLDBException e) {
- fail(e.getMessage());
- }
+ Node result0 = ((XMLResource)
resultSet.getResource(0)).getContentAsDOM();
+ Node result1 = ((XMLResource)
resultSet.getResource(1)).getContentAsDOM();
+ assertEquals("1.0",
result0.getChildNodes().item(0).getChildNodes().item(0).getNodeValue());
+ assertEquals("0.0",
result1.getChildNodes().item(0).getChildNodes().item(0).getNodeValue());
}
public void testSrcAddedToRootOnly() throws Exception {