From e5b7380c874745c989d1816b8f552504f038e1bc Mon Sep 17 00:00:00 2001 From: lresende Date: Thu, 26 Sep 2013 20:33:20 +0000 Subject: 2.0 branch for possible maintenance release git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1526672 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca/common/xml/xpath/XPathHelperTestCase.java | 147 +++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 sca-java-2.x/branches/2.0/modules/common-xml/src/test/java/org/apache/tuscany/sca/common/xml/xpath/XPathHelperTestCase.java (limited to 'sca-java-2.x/branches/2.0/modules/common-xml/src/test/java/org/apache/tuscany/sca/common/xml/xpath/XPathHelperTestCase.java') diff --git a/sca-java-2.x/branches/2.0/modules/common-xml/src/test/java/org/apache/tuscany/sca/common/xml/xpath/XPathHelperTestCase.java b/sca-java-2.x/branches/2.0/modules/common-xml/src/test/java/org/apache/tuscany/sca/common/xml/xpath/XPathHelperTestCase.java new file mode 100644 index 0000000000..3b1f7b52f0 --- /dev/null +++ b/sca-java-2.x/branches/2.0/modules/common-xml/src/test/java/org/apache/tuscany/sca/common/xml/xpath/XPathHelperTestCase.java @@ -0,0 +1,147 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.common.xml.xpath; + +import javax.xml.namespace.NamespaceContext; +import javax.xml.stream.XMLStreamReader; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpression; + +import org.apache.tuscany.sca.common.xml.dom.DOMHelper; +import org.apache.tuscany.sca.common.xml.stax.StAXHelper; +import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +/** + * + */ +public class XPathHelperTestCase { + private static XPathHelper xpathHelper; + private static StAXHelper staxHelper; + private static DOMHelper domHelper; + + private static String XML = + "" + "" + + "" + + "" + + ""; + + private static String XML2 = ""; + + private static String XPATH = + "" + ""; + + /** + * @throws java.lang.Exception + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + ExtensionPointRegistry registry = new DefaultExtensionPointRegistry(); + xpathHelper = XPathHelper.getInstance(registry); + domHelper = DOMHelper.getInstance(registry); + staxHelper = StAXHelper.getInstance(registry); + } + + @Test + public void testNewXPath() { + XPath path = xpathHelper.newXPath(); + Assert.assertNotNull(path); + } + + @Test + public void testCompile() throws Exception { + XMLStreamReader reader = staxHelper.createXMLStreamReader(XPATH); + reader.nextTag(); + String xpath = reader.getAttributeValue(null, "attachTo"); + XPathExpression expression = xpathHelper.compile(reader.getNamespaceContext(), xpath); + // Advance the reader so that the namespace context changes its prefix/namespace mapping + reader.nextTag(); + reader.close(); + + Document doc = domHelper.load(XML); + NodeList nodes = (NodeList)expression.evaluate(doc, XPathConstants.NODESET); + Assert.assertEquals(1, nodes.getLength()); + Node node = nodes.item(0); + Assert.assertTrue(node instanceof Element); + Assert.assertEquals(node.getNodeName(), "c:child1"); + } + + @Test + public void testCompile2() throws Exception { + XMLStreamReader reader = staxHelper.createXMLStreamReader(XPATH); + reader.nextTag(); + String xpathExp = reader.getAttributeValue(null, "attachTo"); + XPath xpath = xpathHelper.newXPath(); + // Compile the expression without taking a snapshot of the namespace context + XPathExpression expression = xpathHelper.compile(xpath, reader.getNamespaceContext(), xpathExp); + // Advance the reader so that the namespace context changes its prefix/namespace mapping + reader.nextTag(); + reader.close(); + + Document doc = domHelper.load(XML); + NodeList nodes = (NodeList)expression.evaluate(doc, XPathConstants.NODESET); + Assert.assertEquals(1, nodes.getLength()); + Node node = nodes.item(0); + Assert.assertTrue(node instanceof Element); + Assert.assertEquals(node.getNodeName(), "c:child1"); + } + + @Test + public void testGetPrefixes() throws Exception { + XMLStreamReader reader = staxHelper.createXMLStreamReader(XML2); + reader.nextTag(); + NamespaceContext ctx = xpathHelper.getNamespaceContext("//sca:reference[IntentRefs('test:foo')]", + reader.getNamespaceContext()); + Assert.assertNotNull(ctx.getNamespaceURI("sca")); + Assert.assertNotNull(ctx.getNamespaceURI("test")); + + } + + @Test + public void testGetPrefixes2() throws Exception { + XMLStreamReader reader = staxHelper.createXMLStreamReader(XML2); + reader.nextTag(); + NamespaceContext ctx = xpathHelper.getNamespaceContext("//sca:implementation.java[ IntentRefs( 'test:foo' ) ]", + reader.getNamespaceContext()); + Assert.assertNotNull(ctx.getNamespaceURI("sca")); + Assert.assertNotNull(ctx.getNamespaceURI("test")); + } + + /** + * @throws java.lang.Exception + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + xpathHelper = null; + } + +} -- cgit v1.2.3