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