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 {