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 2012/07/04 19:16:05 UTC

svn commit: r1357340 - in /webservices/commons/trunk/modules/axiom/modules: axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/ axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/ axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/ axiom-...

Author: veithen
Date: Wed Jul  4 17:16:04 2012
New Revision: 1357340

URL: http://svn.apache.org/viewvc?rev=1357340&view=rev
Log:
Fixed a couple of potential NPEs in the hasFault and getFault methods of the SOAPBody implementations.

Added:
    webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestGetFaultNoFault.java   (with props)
    webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestHasFaultNoFault.java   (with props)
Modified:
    webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPBodyImpl.java
    webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java
    webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java
    webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/FirstElementNameWithParserTestCase.java

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPBodyImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPBodyImpl.java?rev=1357340&r1=1357339&r2=1357340&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPBodyImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPBodyImpl.java Wed Jul  4 17:16:04 2012
@@ -76,14 +76,16 @@ public abstract class SOAPBodyImpl exten
         } else {
             OMElement element = getFirstElement();
             if (element != null
-                    && SOAPConstants.SOAPFAULT_LOCAL_NAME.equals(element
-                    .getLocalName())
-                    && (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI
-                    .equals(element.getNamespace().getNamespaceURI()) ||
-                    SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI
-                            .equals(element.getNamespace().getNamespaceURI()))) { //added this line
-                hasSOAPFault = true;
-                return true;
+                    && SOAPConstants.SOAPFAULT_LOCAL_NAME.equals(element.getLocalName())) {
+                OMNamespace ns = element.getNamespace();
+                if (ns != null &&
+                        (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns.getNamespaceURI()) ||
+                         SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns.getNamespaceURI()))) {
+                    hasSOAPFault = true;
+                    return true;
+                } else {
+                    return false;
+                }
             } else {
                 return false;
             }
@@ -100,17 +102,19 @@ public abstract class SOAPBodyImpl exten
         if (hasSOAPFault) {
             return (SOAPFault) element;
         } else if (element != null
-                && SOAPConstants.SOAPFAULT_LOCAL_NAME.equals(element
-                .getLocalName())
-                && (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(element
-                .getNamespace().getNamespaceURI()) || SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI
-                .equals(element.getNamespace().getNamespaceURI()))) { //added this line
-            hasSOAPFault = true;
-            return (SOAPFault) element;
+                && SOAPConstants.SOAPFAULT_LOCAL_NAME.equals(element.getLocalName())) {
+            OMNamespace ns = element.getNamespace();
+            if (ns != null &&
+                    (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns.getNamespaceURI()) ||
+                     SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns.getNamespaceURI()))) {
+                hasSOAPFault = true;
+                return (SOAPFault) element;
+            } else {
+                return null;
+            }
         } else {
             return null;
         }
-
     }
 
     /**

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java?rev=1357340&r1=1357339&r2=1357340&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java Wed Jul  4 17:16:04 2012
@@ -125,21 +125,19 @@ public abstract class SOAPBodyImpl exten
         if (hasSOAPFault) {
             return (SOAPFault) element;
         } else if (element != null
-                &&
-                SOAPConstants.SOAPFAULT_LOCAL_NAME.equals(
-                        element.getLocalName())
-                &&
-                (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(
-                        element.getNamespace().getNamespaceURI())
-                        ||
-                        SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(
-                                element.getNamespace().getNamespaceURI()))) {     //added this line
-            hasSOAPFault = true;
-            return (SOAPFault) element;
+                && SOAPConstants.SOAPFAULT_LOCAL_NAME.equals(element.getLocalName())) {
+            OMNamespace ns = element.getNamespace();
+            if (ns != null &&
+                    (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns.getNamespaceURI()) ||
+                     SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns.getNamespaceURI()))) {
+                hasSOAPFault = true;
+                return (SOAPFault) element;
+            } else {
+                return null;
+            }
         } else {
             return null;
         }
-
     }
 
     /**

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java?rev=1357340&r1=1357339&r2=1357340&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java Wed Jul  4 17:16:04 2012
@@ -23,6 +23,9 @@ import javax.xml.namespace.QName;
 import org.apache.axiom.om.OMMetaFactory;
 import org.apache.axiom.om.OMSourcedElement;
 import org.apache.axiom.om.TestConstants;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPConstants;
 import org.apache.axiom.testutils.suite.TestSuiteBuilder;
 
 public class SOAPTestSuiteBuilder extends TestSuiteBuilder {
@@ -35,11 +38,20 @@ public class SOAPTestSuiteBuilder extend
         TestConstants.EMPTY_BODY_MESSAGE, "soap/soap11/soapfault.xml", "soap/soap11/bodyNotQualified.xml",
         "soap/soap11/faultstring-with-comment.xml"};
     
-    private static final QName[] qnames = {
+    private static final QName[] generalQNames = {
         new QName("root"),
         new QName("urn:test", "root", "p"),
         new QName("urn:test", "root") };
     
+    private static final QName[] noFaultQNames = {
+        new QName("root"),
+        new QName("urn:test", "root", "p"),
+        new QName("urn:test", "root"),
+        new QName("Fault"),
+        new QName("urn:test", "Fault", "p"),
+        new QName(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI, "NoFault", SOAPConstants.SOAP_DEFAULT_NAMESPACE_PREFIX),
+        new QName(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI, "NoFault", SOAPConstants.SOAP_DEFAULT_NAMESPACE_PREFIX) };
+    
     private final OMMetaFactory metaFactory;
     private final boolean supportsOMSourcedElement;
     private final boolean supportsBodyElementNameOptimization;
@@ -65,12 +77,17 @@ public class SOAPTestSuiteBuilder extend
         addTest(new org.apache.axiom.ts.soap.body.TestAddFault2(metaFactory, spec));
         addTest(new org.apache.axiom.ts.soap.body.TestGetFault(metaFactory, spec));
         addTest(new org.apache.axiom.ts.soap.body.TestGetFaultWithParser(metaFactory, spec));
-        for (int i=0; i<qnames.length; i++) {
-            QName qname = qnames[i];
+        for (int i=0; i<generalQNames.length; i++) {
+            QName qname = generalQNames[i];
             addTest(new org.apache.axiom.ts.soap.body.TestGetFirstElementLocalNameWithParser(metaFactory, spec,
                     qname, supportsBodyElementNameOptimization));
             addTest(new org.apache.axiom.ts.soap.body.TestGetFirstElementNSWithParser(metaFactory, spec,
                     qname, supportsBodyElementNameOptimization));
+        }
+        for (int i=0; i<noFaultQNames.length; i++) {
+            QName qname = noFaultQNames[i];
+            addTest(new org.apache.axiom.ts.soap.body.TestGetFaultNoFault(metaFactory, spec, qname));
+            addTest(new org.apache.axiom.ts.soap.body.TestHasFaultNoFault(metaFactory, spec, qname));
             addTest(new org.apache.axiom.ts.soap.body.TestHasFaultWithParserNoFault(metaFactory, spec,
                     qname, supportsBodyElementNameOptimization));
         }
@@ -98,8 +115,8 @@ public class SOAPTestSuiteBuilder extend
         addTest(new org.apache.axiom.ts.soap.envelope.TestGetBodyWithParser(metaFactory, spec));
         addTest(new org.apache.axiom.ts.soap.envelope.TestGetHeader(metaFactory, spec));
         addTest(new org.apache.axiom.ts.soap.envelope.TestGetHeaderWithParser(metaFactory, spec));
-        for (int i=0; i<qnames.length; i++) {
-            QName qname = qnames[i];
+        for (int i=0; i<generalQNames.length; i++) {
+            QName qname = generalQNames[i];
             addTest(new org.apache.axiom.ts.soap.envelope.TestGetSOAPBodyFirstElementLocalNameAndNS(metaFactory, spec, qname));
             addTest(new org.apache.axiom.ts.soap.envelope.TestGetSOAPBodyFirstElementLocalNameAndNSWithParser(metaFactory, spec, qname));
         }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/FirstElementNameWithParserTestCase.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/FirstElementNameWithParserTestCase.java?rev=1357340&r1=1357339&r2=1357340&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/FirstElementNameWithParserTestCase.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/FirstElementNameWithParserTestCase.java Wed Jul  4 17:16:04 2012
@@ -49,6 +49,7 @@ public abstract class FirstElementNameWi
         this.qname = qname;
         addTestProperty("prefix", qname.getPrefix());
         addTestProperty("uri", qname.getNamespaceURI());
+        addTestProperty("localName", qname.getLocalPart());
         this.supportsOptimization = supportsOptimization;
     }
 

Added: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestGetFaultNoFault.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestGetFaultNoFault.java?rev=1357340&view=auto
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestGetFaultNoFault.java (added)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestGetFaultNoFault.java Wed Jul  4 17:16:04 2012
@@ -0,0 +1,27 @@
+package org.apache.axiom.ts.soap.body;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.ts.soap.SOAPSpec;
+import org.apache.axiom.ts.soap.SOAPTestCase;
+
+public class TestGetFaultNoFault extends SOAPTestCase {
+    private final QName qname;
+    
+    public TestGetFaultNoFault(OMMetaFactory metaFactory, SOAPSpec spec, QName qname) {
+        super(metaFactory, spec);
+        this.qname = qname;
+        addTestProperty("prefix", qname.getPrefix());
+        addTestProperty("uri", qname.getNamespaceURI());
+        addTestProperty("localName", qname.getLocalPart());
+    }
+
+    protected void runTest() throws Throwable {
+        SOAPBody body = soapFactory.getDefaultEnvelope().getBody();
+        body.addChild(soapFactory.createOMElement(
+                qname.getLocalPart(), qname.getNamespaceURI(), qname.getPrefix()));
+        assertNull(body.getFault());
+    }
+}

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

Added: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestHasFaultNoFault.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestHasFaultNoFault.java?rev=1357340&view=auto
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestHasFaultNoFault.java (added)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestHasFaultNoFault.java Wed Jul  4 17:16:04 2012
@@ -0,0 +1,27 @@
+package org.apache.axiom.ts.soap.body;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.ts.soap.SOAPSpec;
+import org.apache.axiom.ts.soap.SOAPTestCase;
+
+public class TestHasFaultNoFault extends SOAPTestCase {
+    private final QName qname;
+    
+    public TestHasFaultNoFault(OMMetaFactory metaFactory, SOAPSpec spec, QName qname) {
+        super(metaFactory, spec);
+        this.qname = qname;
+        addTestProperty("prefix", qname.getPrefix());
+        addTestProperty("uri", qname.getNamespaceURI());
+        addTestProperty("localName", qname.getLocalPart());
+    }
+
+    protected void runTest() throws Throwable {
+        SOAPBody body = soapFactory.getDefaultEnvelope().getBody();
+        body.addChild(soapFactory.createOMElement(
+                qname.getLocalPart(), qname.getNamespaceURI(), qname.getPrefix()));
+        assertFalse(body.hasFault());
+    }
+}

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