You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by ch...@apache.org on 2006/07/26 10:04:54 UTC

svn commit: r425660 - in /webservices/commons/trunk/modules/axiom: src/org/apache/axiom/om/xpath/DocumentNavigator.java test/org/apache/axiom/binary/ test/org/apache/axiom/binary/fastinfoset/ test/org/apache/axiom/xpath/XPathAppliedToSOAPEnvelopeTest.java

Author: chinthaka
Date: Wed Jul 26 01:04:53 2006
New Revision: 425660

URL: http://svn.apache.org/viewvc?rev=425660&view=rev
Log:
Fix for http://issues.apache.org/jira/browse/WSCOMMONS-40 with a test case. Thanks Chamikara for the test case, I got it from the issue you created in JIRA.

Added:
    webservices/commons/trunk/modules/axiom/test/org/apache/axiom/binary/
    webservices/commons/trunk/modules/axiom/test/org/apache/axiom/binary/fastinfoset/
    webservices/commons/trunk/modules/axiom/test/org/apache/axiom/xpath/XPathAppliedToSOAPEnvelopeTest.java
Modified:
    webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/xpath/DocumentNavigator.java

Modified: webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/xpath/DocumentNavigator.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/xpath/DocumentNavigator.java?rev=425660&r1=425659&r2=425660&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/xpath/DocumentNavigator.java (original)
+++ webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/xpath/DocumentNavigator.java Wed Jul 26 01:04:53 2006
@@ -600,7 +600,13 @@
         if (contextNode instanceof OMDocument) {
             return contextNode;
         }
-        return getDocumentNode(((OMNode) contextNode).getParent());
+        OMContainer parent = ((OMNode) contextNode).getParent();
+        if (parent == null) {
+            // this node doesn't have a parent Document. So return the document element itself
+            return contextNode;
+        } else {
+            return getDocumentNode(parent);
+        }
     }
 
     /**

Added: webservices/commons/trunk/modules/axiom/test/org/apache/axiom/xpath/XPathAppliedToSOAPEnvelopeTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/test/org/apache/axiom/xpath/XPathAppliedToSOAPEnvelopeTest.java?rev=425660&view=auto
==============================================================================
--- webservices/commons/trunk/modules/axiom/test/org/apache/axiom/xpath/XPathAppliedToSOAPEnvelopeTest.java (added)
+++ webservices/commons/trunk/modules/axiom/test/org/apache/axiom/xpath/XPathAppliedToSOAPEnvelopeTest.java Wed Jul 26 01:04:53 2006
@@ -0,0 +1,73 @@
+package org.apache.axiom.xpath;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.xpath.AXIOMXPath;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+public class XPathAppliedToSOAPEnvelopeTest extends TestCase {
+
+    public void testDocumentNotAdded () throws Exception {
+		SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+
+		OMElement elem1 = factory.createOMElement("elem1",null);
+		OMElement elem2 = factory.createOMElement("elem2",null);
+		OMElement elem3 = factory.createOMElement("elem3",null);
+		elem2.addChild(elem3);
+		elem1.addChild(elem2);
+		SOAPEnvelope envelope = factory.getDefaultEnvelope();
+		envelope.getBody().addChild(elem1);
+
+		//The only difference of the two test methods is the following line.
+//		factory.createOMDocument().addChild(envelope);
+
+		String XPathString = "//elem1";
+
+		AXIOMXPath XPath = new AXIOMXPath (XPathString);
+		OMNode node = (OMNode) XPath.selectSingleNode(envelope);
+
+
+		assertNotNull(node);
+	}
+
+	public void testDocumentAdded () throws Exception {
+		SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
+
+		OMElement elem1 = factory.createOMElement("elem1",null);
+		OMElement elem2 = factory.createOMElement("elem2",null);
+		OMElement elem3 = factory.createOMElement("elem3",null);
+		elem2.addChild(elem3);
+		elem1.addChild(elem2);
+		SOAPEnvelope envelope = factory.getDefaultEnvelope();
+		envelope.getBody().addChild(elem1);
+
+		//The only difference of the two test methods is the following line.
+		factory.createOMDocument().addChild(envelope);
+
+		String XPathString = "//elem1";
+
+		AXIOMXPath XPath = new AXIOMXPath (XPathString);
+		OMNode node = (OMNode) XPath.selectSingleNode(envelope);
+
+
+		assertNotNull(node);
+	}
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org