You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2011/12/18 12:05:32 UTC

svn commit: r1220363 - in /webservices/commons/trunk/modules/axiom/modules: axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/ axiom-api/src/test/resources/soap/soap11/ axiom-api/src/test/resources/soap/soap12/ axiom-testsuite/src/main/java/or...

Author: veithen
Date: Sun Dec 18 11:05:32 2011
New Revision: 1220363

URL: http://svn.apache.org/viewvc?rev=1220363&view=rev
Log:
Solved another issue with default namespace processing.

Added:
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/soap/soap11/fault-detail-default-namespace.xml   (with props)
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/soap/soap12/fault-detail-default-namespace.xml   (with props)
    webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/faultdetail/TestDetailEntriesUsingDefaultNamespaceWithParser.java   (with props)
Modified:
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAPBuilderHelper.java
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java
    webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/SOAPTestSuiteBuilder.java

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAPBuilderHelper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAPBuilderHelper.java?rev=1220363&r1=1220362&r2=1220363&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAPBuilderHelper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAPBuilderHelper.java Sun Dec 18 11:05:32 2011
@@ -21,7 +21,6 @@ package org.apache.axiom.soap.impl.build
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.impl.OMElementEx;
 import org.apache.axiom.om.impl.exception.OMBuilderException;
 import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
@@ -42,27 +41,7 @@ public abstract class SOAPBuilderHelper 
                                           int elementLevel) throws SOAPProcessingException;
 
     protected void processNamespaceData(OMElement node, boolean checkSOAPNamespace) {
-        int namespaceCount = parser.getNamespaceCount();
-        for (int i = 0; i < namespaceCount; i++) {
-            ((OMElementEx)node).addNamespaceDeclaration(parser.getNamespaceURI(i), parser.getNamespacePrefix(i));
-        }
-
-        // set the own namespace
-        String namespaceURI = parser.getNamespaceURI();
-        String prefix = parser.getPrefix();
-        OMNamespace namespace = null;
-        if (namespaceURI != null && namespaceURI.length() > 0) {
-            if (prefix == null) {
-                // this means, this elements has a default namespace or it has inherited a default namespace from its parent
-                namespace = node.findNamespace(namespaceURI, "");
-                if (namespace == null) {
-                    namespace = node.declareNamespace(namespaceURI, "");
-                }
-            } else {
-                namespace = node.findNamespace(namespaceURI, prefix);
-            }
-            node.setNamespace(namespace);
-        }
+        builder.processNamespaceData(node);
 
         // TODO we got to have this to make sure OM reject mesagess that are not name space qualified
         // But got to comment this to interop with Axis.1.x

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java?rev=1220363&r1=1220362&r2=1220363&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java Sun Dec 18 11:05:32 2011
@@ -469,6 +469,11 @@ public class StAXSOAPModelBuilder extend
         return envelope != null ? envelope : getSOAPEnvelope();
     }
 
+    // Necessary to allow SOAPBuilderHelper to access this method
+    protected void processNamespaceData(OMElement node) {
+        super.processNamespaceData(node);
+    }
+
     /**
      * Method processNamespaceData.
      *

Added: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/soap/soap11/fault-detail-default-namespace.xml
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/soap/soap11/fault-detail-default-namespace.xml?rev=1220363&view=auto
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/soap/soap11/fault-detail-default-namespace.xml (added)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/soap/soap11/fault-detail-default-namespace.xml Sun Dec 18 11:05:32 2011
@@ -0,0 +1,14 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+    <soapenv:Body>
+        <soapenv:Fault>
+            <faultcode>soapenv:Server</faultcode>
+            <faultstring>overflow</faultstring>
+            <detail>
+                <AddNumbersHandlerFault xmlns="http://www.example.org/addnumbershandler">
+                    <faultInfo>overflow</faultInfo>
+                    <message>overflow</message>
+                </AddNumbersHandlerFault>
+            </detail>
+        </soapenv:Fault>
+    </soapenv:Body>
+</soapenv:Envelope>

Propchange: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/soap/soap11/fault-detail-default-namespace.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/soap/soap12/fault-detail-default-namespace.xml
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/soap/soap12/fault-detail-default-namespace.xml?rev=1220363&view=auto
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/soap/soap12/fault-detail-default-namespace.xml (added)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/soap/soap12/fault-detail-default-namespace.xml Sun Dec 18 11:05:32 2011
@@ -0,0 +1,18 @@
+<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
+    <soapenv:Body>
+        <soapenv:Fault>
+            <soapenv:Code>
+                <soapenv:Value>soapenv:Server</soapenv:Value>
+            </soapenv:Code>
+            <soapenv:Reason>
+                <soapenv:Text xml:lang="en">overflow</soapenv:Text>
+            </soapenv:Reason>
+            <soapenv:Detail>
+                <AddNumbersHandlerFault xmlns="http://www.example.org/addnumbershandler">
+                    <faultInfo>overflow</faultInfo>
+                    <message>overflow</message>
+                </AddNumbersHandlerFault>
+            </soapenv:Detail>
+        </soapenv:Fault>
+    </soapenv:Body>
+</soapenv:Envelope>

Propchange: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/resources/soap/soap12/fault-detail-default-namespace.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/SOAPTestSuiteBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/SOAPTestSuiteBuilder.java?rev=1220363&r1=1220362&r2=1220363&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/SOAPTestSuiteBuilder.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/SOAPTestSuiteBuilder.java Sun Dec 18 11:05:32 2011
@@ -70,6 +70,7 @@ public class SOAPTestSuiteBuilder extend
         addTest(new org.apache.axiom.ts.soap.fault.TestSetReason(metaFactory, spec));
         addTest(new org.apache.axiom.ts.soap.fault.TestSetRole(metaFactory, spec));
         addTest(new org.apache.axiom.ts.soap.faultdetail.TestAddDetailEntry(metaFactory, spec));
+        addTest(new org.apache.axiom.ts.soap.faultdetail.TestDetailEntriesUsingDefaultNamespaceWithParser(metaFactory, spec));
         addTest(new org.apache.axiom.ts.soap.faultdetail.TestGetAllDetailEntries(metaFactory, spec));
         addTest(new org.apache.axiom.ts.soap.faultdetail.TestGetAllDetailEntriesWithParser(metaFactory, spec));
         addTest(new org.apache.axiom.ts.soap.faultdetail.TestSerialization(metaFactory, spec));

Added: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/faultdetail/TestDetailEntriesUsingDefaultNamespaceWithParser.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/faultdetail/TestDetailEntriesUsingDefaultNamespaceWithParser.java?rev=1220363&view=auto
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/faultdetail/TestDetailEntriesUsingDefaultNamespaceWithParser.java (added)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/faultdetail/TestDetailEntriesUsingDefaultNamespaceWithParser.java Sun Dec 18 11:05:32 2011
@@ -0,0 +1,45 @@
+/*
+ * 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.axiom.ts.soap.faultdetail;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPFaultDetail;
+import org.apache.axiom.ts.soap.SOAPSpec;
+import org.apache.axiom.ts.soap.SOAPTestCase;
+
+/**
+ * Tests parsing of a SOAP fault that has detail entries that use a default namespace.
+ */
+public class TestDetailEntriesUsingDefaultNamespaceWithParser extends SOAPTestCase {
+    public TestDetailEntriesUsingDefaultNamespaceWithParser(OMMetaFactory metaFactory, SOAPSpec spec) {
+        super(metaFactory, spec);
+    }
+
+    protected void runTest() throws Throwable {
+        SOAPFaultDetail soapFaultDetail = getTestMessage("fault-detail-default-namespace.xml").getBody().getFault().getDetail();
+        OMElement detailElement = soapFaultDetail.getFirstElement();
+        assertEquals("AddNumbersHandlerFault", detailElement.getLocalName());
+        OMNamespace ns = detailElement.getNamespace();
+        // At some point, there was a bug in Axiom that caused the prefix to be null
+        assertEquals("", ns.getPrefix());
+        assertEquals("http://www.example.org/addnumbershandler", ns.getNamespaceURI());
+    }
+}

Propchange: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/faultdetail/TestDetailEntriesUsingDefaultNamespaceWithParser.java
------------------------------------------------------------------------------
    svn:eol-style = native