You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by gd...@apache.org on 2007/03/28 06:20:04 UTC
svn commit: r523160 - in /webservices/axis2/trunk/java: etc/
modules/addressing/src/org/apache/axis2/handlers/addressing/
modules/addressing/test/org/apache/axis2/handlers/addressing/
modules/integration/test/org/apache/axis2/addressing/ modules/kernel...
Author: gdaniels
Date: Tue Mar 27 21:19:56 2007
New Revision: 523160
URL: http://svn.apache.org/viewvc?view=rev&rev=523160
Log:
* Switch to SNAPSHOT Axiom for the time being to deal with recent changes
* Clean up code in AddressingInFaultHandler, improve tests.
* Namespace qualify some addressing Constants
* Various improvements to AxisFault - keep sub-elements around in fields instead of a Map, keep list of subcodes, etc.
* Fix a few SAAJ bugs. Utilize OM's natural abilities with QName text values instead of hacking our own version (which did some terribly wrong things like setting the namespace of the <Value> element itself), improve logic for getting subcodes, etc.
* Don't swallow exceptions in SAAJ tests - bubble them up.
Modified:
webservices/axis2/trunk/java/etc/project.properties
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInFaultHandler.java
webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInFaultHandlerTest.java
webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/addressing/AddressingFinalServiceTest.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/AxisFault.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java
webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java
webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SAAJDetailTest.java
webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java
Modified: webservices/axis2/trunk/java/etc/project.properties
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/etc/project.properties?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/etc/project.properties (original)
+++ webservices/axis2/trunk/java/etc/project.properties Tue Mar 27 21:19:56 2007
@@ -100,7 +100,8 @@
activation.version=1.1
annogen.version=0.1.0
ant.version=1.6.5
-axiom.version=1.2.3-RC1
+#axiom.version=1.2.3-RC1
+axiom.version=SNAPSHOT
backport_util_concurrent.version=2.2
bcel.version=5.2
bcprov.version=jdk13-133
Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInFaultHandler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInFaultHandler.java?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInFaultHandler.java (original)
+++ webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInFaultHandler.java Tue Mar 27 21:19:56 2007
@@ -22,6 +22,9 @@
import org.apache.axiom.soap.SOAPFaultReason;
import org.apache.axiom.soap.SOAPFaultText;
import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPFaultDetail;
+import org.apache.axiom.soap.SOAPFaultCode;
+import org.apache.axiom.soap.SOAPFaultSubCode;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.AddressingConstants;
@@ -29,7 +32,7 @@
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.handlers.AbstractHandler;
-import javax.xml.namespace.QName;
+import java.util.Iterator;
/**
* This class is used to extract WS-Addressing Spec defined Faults and FaultDetail and convert them
@@ -43,94 +46,72 @@
if (Final.WSA_FAULT_ACTION.equals(action)
|| Final.WSA_SOAP_FAULT_ACTION.equals(action)
|| Submission.WSA_FAULT_ACTION.equals(action)) {
- String faultLocalName = getFaultLocalName(msgContext);
- String faultDetailString = getWSAFaultDetailString(msgContext);
+ SOAPEnvelope envelope = msgContext.getEnvelope();
+ SOAPFault fault = envelope.getBody().getFault();
- if (faultLocalName != null) {
- String newReason = AddressingFaultsHelper
- .getMessageForAxisFault(faultLocalName, faultDetailString);
-
- if (newReason != null) {
- SOAPEnvelope envelope = msgContext.getEnvelope();
- SOAPFault fault = envelope.getBody().getFault();
-
- SOAPFactory sf = ((SOAPFactory) envelope.getOMFactory());
- SOAPFaultReason sfr = sf.createSOAPFaultReason();
- if (envelope.getNamespace().getNamespaceURI()
- .equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
- sfr.setText(newReason);
- } else {
- SOAPFaultText sft = sf.createSOAPFaultText();
- sft.setText(newReason);
- sfr.addSOAPText(sft);
- }
- if (fault != null) {
- // else call the on error method with the fault
- AxisFault axisFault = new AxisFault(fault.getCode(), sfr,
- fault.getNode(), fault.getRole(),
- fault.getDetail());
- msgContext.setProperty(Constants.INBOUND_FAULT_OVERRIDE, axisFault);
- }
- }
+ if (fault == null) {
+ throw new AxisFault("Problem");
}
- }
- return InvocationResponse.CONTINUE;
- }
+ SOAPFactory sf = ((SOAPFactory) envelope.getOMFactory());
+ SOAPFaultDetail detail = null;
- private String getFaultLocalName(MessageContext msgContext) {
- SOAPEnvelope envelope = msgContext.getEnvelope();
- SOAPFault fault = envelope.getBody().getFault();
- QName faultCodeQName = null;
- String result = null;
- if (fault != null) {
- if (envelope.getNamespace().getNamespaceURI()
- .equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
- faultCodeQName = fault.getCode().getTextAsQName();
+ if (msgContext.isSOAP11()) {
+ SOAPHeader header = envelope.getHeader();
+ OMElement element = header.getFirstChildWithName(Final.QNAME_WSA_HEADER_DETAIL);
+ if (element != null) {
+ detail = sf.createSOAPFaultDetail(fault);
+ Iterator i = element.getChildElements();
+ while (i.hasNext()) {
+ OMElement detailElement = (OMElement)i.next();
+ detail.addDetailEntry(detailElement);
+ }
+ }
} else {
- faultCodeQName = fault.getCode().getValue().getTextAsQName();
+ detail = fault.getDetail();
}
- if (fault.getCode().getSubCode() != null) {
- faultCodeQName = fault.getCode().getSubCode().getValue().getTextAsQName();
- if (fault.getCode().getSubCode().getSubCode() != null) {
- faultCodeQName =
- fault.getCode().getSubCode().getSubCode().getValue().getTextAsQName();
+
+ String faultDetailString = null;
+ if (detail != null) {
+ OMElement element = detail.getFirstElement();
+ if (element != null) {
+ faultDetailString = element.getText();
}
}
- }
- if (faultCodeQName != null) {
- result = faultCodeQName.getLocalPart();
- }
- return result;
- }
- private String getWSAFaultDetailString(MessageContext msgContext) {
- SOAPEnvelope envelope = msgContext.getEnvelope();
- OMElement faultDetailElement = null;
- String result = null;
-
- if (msgContext.isSOAP11()) {
- SOAPHeader header = envelope.getHeader();
- faultDetailElement = header.getFirstChildWithName(new QName(Final.FAULT_HEADER_DETAIL));
- if (faultDetailElement != null) {
- result = faultDetailElement.getFirstElement().getText();
- }
- } else {
- SOAPFault fault = envelope.getBody().getFault();
- if (fault != null) {
- if (fault.getDetail() != null) {
- faultDetailElement = fault.getDetail()
- .getFirstChildWithName(new QName(Final.FAULT_PROBLEM_ACTION_NAME));
- if (faultDetailElement == null) {
- faultDetailElement = fault.getDetail().getFirstChildWithName(
- new QName(Final.FAULT_HEADER_PROB_HEADER_QNAME));
- }
+ String faultLocalName;
+ SOAPFaultCode code = fault.getCode();
+ SOAPFaultSubCode subCode = code.getSubCode();
+ if (subCode == null) {
+ faultLocalName = code.getTextAsQName().getLocalPart();
+ } else {
+ while (subCode.getSubCode() != null) {
+ subCode = subCode.getSubCode();
}
+ faultLocalName = subCode.getValue().getTextAsQName().getLocalPart();
}
- if (faultDetailElement != null) {
- result = faultDetailElement.getText();
+
+ String newReason = AddressingFaultsHelper
+ .getMessageForAxisFault(faultLocalName, faultDetailString);
+
+ if (newReason != null) {
+ SOAPFaultReason sfr = sf.createSOAPFaultReason();
+ if (envelope.getNamespace().getNamespaceURI()
+ .equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
+ sfr.setText(newReason);
+ } else {
+ SOAPFaultText sft = sf.createSOAPFaultText();
+ sft.setText(newReason);
+ sfr.addSOAPText(sft);
+ }
+ // else call the on error method with the fault
+ AxisFault axisFault = new AxisFault(fault.getCode(), sfr,
+ fault.getNode(), fault.getRole(),
+ detail);
+ msgContext.setProperty(Constants.INBOUND_FAULT_OVERRIDE, axisFault);
}
}
- return result;
+
+ return InvocationResponse.CONTINUE;
}
}
Modified: webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInFaultHandlerTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInFaultHandlerTest.java?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInFaultHandlerTest.java (original)
+++ webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInFaultHandlerTest.java Tue Mar 27 21:19:56 2007
@@ -16,12 +16,19 @@
import junit.framework.TestCase;
import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.handlers.util.TestUtil;
+import javax.xml.namespace.QName;
+import java.util.List;
+
public class AddressingInFaultHandlerTest extends TestCase {
TestUtil testUtil = new TestUtil();
@@ -34,9 +41,14 @@
public void testInvalidAddressingHeaderWsaToSOAP11() throws Exception {
AxisFault af = getFaultForTest("InvalidAddressingHeader", true);
assertNotNull(af);
- assertEquals("The server failed to process the WS-Addressing header: " + "wsa:To" +
- " [Reason]: A header representing a Message Addressing Property is not valid and the message cannot be processed",
- af.getMessage());
+ assertEquals("Wrong fault code!",
+ AddressingConstants.Final.QNAME_INVALID_HEADER,
+ af.getFaultCode());
+ OMElement probHeaderDetail = af.getFaultDetailElement().getFirstChildWithName(
+ AddressingConstants.Final.QNAME_PROBLEM_HEADER);
+ assertNotNull(probHeaderDetail);
+ assertEquals(AddressingConstants.Final.QNAME_WSA_TO,
+ probHeaderDetail.getTextAsQName());
}
public void testMissingActionSOAP11() throws Exception {
@@ -47,9 +59,14 @@
public void testInvalidAddressingHeaderWsaToSOAP12() throws Exception {
AxisFault af = getFaultForTest("InvalidAddressingHeader", false);
assertNotNull(af);
- assertEquals("The server failed to process the WS-Addressing header: " + "wsa:To" +
- " [Reason]: A header representing a Message Addressing Property is not valid and the message cannot be processed",
- af.getMessage());
+ assertEquals("Wrong fault code", SOAP12Constants.QNAME_SENDER_FAULTCODE, af.getFaultCode());
+ List subCodes = af.getFaultSubCodes();
+ assertNotNull(subCodes);
+ assertEquals(1, subCodes.size());
+ assertEquals("Wrong fault subcode",
+ new QName(AddressingConstants.Final.WSA_NAMESPACE,
+ AddressingConstants.Final.FAULT_INVALID_HEADER),
+ subCodes.get(0));
}
public void testMissingActionSOAP12() throws Exception {
Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/addressing/AddressingFinalServiceTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/addressing/AddressingFinalServiceTest.java?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/addressing/AddressingFinalServiceTest.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/addressing/AddressingFinalServiceTest.java Tue Mar 27 21:19:56 2007
@@ -101,6 +101,30 @@
return service;
}
+ private ServiceClient createServiceClient() throws AxisFault {
+ AxisService service =
+ createSimpleOneWayServiceforClient(serviceName,
+ Echo.class.getName(),
+ operationName);
+
+ ConfigurationContext configcontext = UtilServer.createClientConfigurationContext();
+
+ ServiceClient sender;
+
+ Options options = new Options();
+ options.setTo(targetEPR);
+ options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+ options.setAction(operationName.getLocalPart());
+ options.setReplyTo(replyTo);
+ options.setFaultTo(faultTo);
+
+ sender = new ServiceClient(configcontext, service);
+ sender.setOptions(options);
+ sender.engageModule("addressing");
+
+ return sender;
+ }
+
protected void tearDown() throws Exception {
UtilServer.unDeployService(serviceName);
UtilServer.unDeployService(new QName("RedirectReceiverService"));
@@ -125,6 +149,61 @@
return service;
}
+ private OMElement createEchoOMElement(String text) {
+ OMFactory fac = OMAbstractFactory.getOMFactory();
+
+ OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
+ OMElement method = fac.createOMElement("echoOMElement", omNs);
+ OMElement value = fac.createOMElement("myValue", omNs);
+ value.setText(text);
+ method.addChild(value);
+
+ return method;
+ }
+
+ private ServiceClient createNoAddressingServiceClient() throws AxisFault {
+ AxisService service =
+ Utils.createSimpleServiceforClient(serviceName,
+ Echo.class.getName(),
+ operationName);
+
+ ConfigurationContext configcontext = UtilServer.createClientConfigurationContext();
+ ServiceClient sender;
+
+ Options options = new Options();
+ options.setTo(targetEPR);
+ options.setAction(operationName.getLocalPart());
+ options.setProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);
+ options.setProperty(Constants.Configuration.DISABLE_SOAP_ACTION, Boolean.TRUE);
+
+ sender = new ServiceClient(configcontext, service);
+ sender.setOptions(options);
+
+ return sender;
+ }
+
+ private ServiceClient createSyncResponseServiceClient() throws AxisFault {
+ AxisService service =
+ Utils.createSimpleServiceforClient(serviceName,
+ Echo.class.getName(),
+ operationName);
+
+ ConfigurationContext configcontext = UtilServer.createClientConfigurationContext();
+ ServiceClient sender;
+
+ Options options = new Options();
+ options.setTo(targetEPR);
+ options.setAction(operationName.getLocalPart());
+
+ sender = new ServiceClient(configcontext, service);
+ sender.setOptions(options);
+ sender.engageModule("addressing");
+
+ return sender;
+ }
+
+ // Tests
+
public void testEchoToReplyTo() throws Exception {
OMElement method = createEchoOMElement("this message should not cause a fault.");
ServiceClient sender = null;
@@ -132,10 +211,10 @@
try {
sender = createServiceClient();
sender.fireAndForget(operationName, method);
- System.out.println("send the reqest");
+ System.out.println("sent the request");
int index = 0;
while (!RedirectReceiver.hasReceivedResponse()) {
- Thread.sleep(100);
+ Thread.sleep(1000);
index++;
if (index > 45) {
throw new AxisFault(
@@ -155,10 +234,10 @@
try {
sender = createServiceClient();
sender.fireAndForget(operationName, method);
- System.out.println("send the reqest");
+ System.out.println("sent the request");
int index = 0;
while (!RedirectReceiver.hasReceivedFault()) {
- Thread.sleep(100);
+ Thread.sleep(1000);
index++;
if (index > 45) {
throw new AxisFault(
@@ -171,42 +250,6 @@
}
}
- private OMElement createEchoOMElement(String text) {
- OMFactory fac = OMAbstractFactory.getOMFactory();
-
- OMNamespace omNs = fac.createOMNamespace("http://localhost/my", "my");
- OMElement method = fac.createOMElement("echoOMElement", omNs);
- OMElement value = fac.createOMElement("myValue", omNs);
- value.setText(text);
- method.addChild(value);
-
- return method;
- }
-
- private ServiceClient createServiceClient() throws AxisFault {
- AxisService service =
- createSimpleOneWayServiceforClient(serviceName,
- Echo.class.getName(),
- operationName);
-
- ConfigurationContext configcontext = UtilServer.createClientConfigurationContext();
-
- ServiceClient sender;
-
- Options options = new Options();
- options.setTo(targetEPR);
- options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
- options.setAction(operationName.getLocalPart());
- options.setReplyTo(replyTo);
- options.setFaultTo(faultTo);
-
- sender = new ServiceClient(configcontext, service);
- sender.setOptions(options);
- sender.engageModule("addressing");
-
- return sender;
- }
-
public void testUsingAddressingRequired() throws Exception {
echoService.setWSAddressingFlag("required");
@@ -226,47 +269,6 @@
if (sender != null)
sender.cleanup();
}
- }
-
- private ServiceClient createNoAddressingServiceClient() throws AxisFault {
- AxisService service =
- Utils.createSimpleServiceforClient(serviceName,
- Echo.class.getName(),
- operationName);
-
- ConfigurationContext configcontext = UtilServer.createClientConfigurationContext();
- ServiceClient sender;
-
- Options options = new Options();
- options.setTo(targetEPR);
- options.setAction(operationName.getLocalPart());
- options.setProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);
- options.setProperty(Constants.Configuration.DISABLE_SOAP_ACTION, Boolean.TRUE);
-
- sender = new ServiceClient(configcontext, service);
- sender.setOptions(options);
-
- return sender;
- }
-
- private ServiceClient createSyncResponseServiceClient() throws AxisFault {
- AxisService service =
- Utils.createSimpleServiceforClient(serviceName,
- Echo.class.getName(),
- operationName);
-
- ConfigurationContext configcontext = UtilServer.createClientConfigurationContext();
- ServiceClient sender;
-
- Options options = new Options();
- options.setTo(targetEPR);
- options.setAction(operationName.getLocalPart());
-
- sender = new ServiceClient(configcontext, service);
- sender.setOptions(options);
- sender.engageModule("addressing");
-
- return sender;
}
public void testSyncResponseAddressing() throws Exception {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/AxisFault.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/AxisFault.java?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/AxisFault.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/AxisFault.java Tue Mar 27 21:19:56 2007
@@ -19,7 +19,6 @@
import org.apache.axiom.om.OMElement;
import org.apache.axiom.soap.SOAP12Constants;
-import org.apache.axiom.soap.SOAPConstants;
import org.apache.axiom.soap.SOAPFault;
import org.apache.axiom.soap.SOAPFaultCode;
import org.apache.axiom.soap.SOAPFaultDetail;
@@ -27,6 +26,7 @@
import org.apache.axiom.soap.SOAPFaultReason;
import org.apache.axiom.soap.SOAPFaultRole;
import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axiom.soap.SOAPFaultSubCode;
import org.apache.axis2.context.MessageContext;
import javax.xml.namespace.QName;
@@ -35,10 +35,8 @@
import java.lang.reflect.InvocationTargetException;
import java.rmi.RemoteException;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.ListIterator;
-import java.util.Map;
/**
* An exception which maps cleanly to a SOAP fault.
@@ -78,16 +76,20 @@
*/
private List headers = new ArrayList(0);
+ private String message;
+
private List faultReasonList = new ArrayList(1);
private QName faultCode;
+ private List faultSubCodes;
private String faultNode;
private String faultRole;
private OMElement detail;
- private Map faultElements;
-
- private String message;
- private Throwable cause;
+ private SOAPFaultCode soapFaultCode;
+ private SOAPFaultReason soapFaultReason;
+ private SOAPFaultNode soapFaultNode;
+ private SOAPFaultRole soapFaultRole;
+ private SOAPFaultDetail soapFaultDetail;
/**
* If not null, the messageContext represents the fault as it
@@ -116,7 +118,7 @@
* @param message
*/
public AxisFault(String message) {
- super(message);
+ this.message = message;
addReason(message);
}
@@ -178,52 +180,44 @@
SOAPFaultNode soapFaultNode,
SOAPFaultRole soapFaultRole,
SOAPFaultDetail soapFaultDetail) {
- if (faultElements == null) {
- // assuming that most of the times fault code, fault string and fault details are set
- faultElements = new HashMap(3);
- }
- setToElementsListIfNotNull(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME, soapFaultCode);
- setToElementsListIfNotNull(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME, soapFaultReason);
- setToElementsListIfNotNull(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME, soapFaultNode);
- setToElementsListIfNotNull(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME, soapFaultRole);
- setToElementsListIfNotNull(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, soapFaultDetail);
-
- if (soapFaultReason != null) {
- if(soapFaultReason.getNamespace() != null &&
- soapFaultReason.getNamespace().getNamespaceURI().equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
- message = soapFaultReason.getFirstSOAPText().getText();
- } else {
- message = soapFaultReason.getText();
- }
- }
+ this.soapFaultCode = soapFaultCode;
+ this.soapFaultReason = soapFaultReason;
+ this.soapFaultNode = soapFaultNode;
+ this.soapFaultRole = soapFaultRole;
+ this.soapFaultDetail = soapFaultDetail;
if (soapFaultDetail != null) {
- OMElement exceptionElement = soapFaultDetail.getFirstChildWithName(
- new QName(SOAPConstants.SOAP_FAULT_DETAIL_EXCEPTION_ENTRY));
- if (exceptionElement != null && exceptionElement.getText() != null) {
- cause = new Exception(exceptionElement.getText());
- }
+// OMElement exceptionElement = soapFaultDetail.getFirstChildWithName(
+// new QName(SOAPConstants.SOAP_FAULT_DETAIL_EXCEPTION_ENTRY));
+// if (exceptionElement != null && exceptionElement.getText() != null) {
+// cause = new Exception(exceptionElement.getText());
+// }
// setting the first child element of the fault detail as this.detail
this.detail = soapFaultDetail.getFirstElement();
}
- if (soapFaultCode != null && soapFaultCode.getValue() != null) {
+ if (soapFaultReason != null) {
+ message = soapFaultReason.getText();
+ }
+
+ if (soapFaultCode != null) {
if(soapFaultReason.getNamespace() != null &&
soapFaultReason.getNamespace().getNamespaceURI().equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
faultCode = soapFaultCode.getValue().getTextAsQName();
} else {
faultCode = soapFaultCode.getTextAsQName();
}
-
- }
- }
- private void setToElementsListIfNotNull(String soapFaultElementName,
- OMElement soapFaultElement) {
- if (soapFaultElement != null) {
- faultElements.put(soapFaultElementName, soapFaultElement);
+ SOAPFaultSubCode subCode = soapFaultCode.getSubCode();
+ if (subCode != null) {
+ if (faultSubCodes == null) faultSubCodes = new ArrayList();
+ while (subCode != null) {
+ faultSubCodes.add(subCode.getValue().getTextAsQName());
+ subCode = subCode.getSubCode();
+ }
+ }
}
}
@@ -266,6 +260,7 @@
if (message != null) {
addReason(message);
+ this.message = message;
}
}
@@ -297,7 +292,7 @@
* @param faultMessageContext
*/
public AxisFault(String message, MessageContext faultMessageContext) {
- super(message);
+ this(message);
this.faultMessageContext = faultMessageContext;
}
@@ -399,13 +394,16 @@
return faultCode;
}
+ public List getFaultSubCodes() {
+ return faultSubCodes;
+ }
+
/**
* @return SOAPFaultCode if, user has set a {@link SOAPFaultCode} element when constructing the
* {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
*/
public SOAPFaultCode getFaultCodeElement() {
- return (SOAPFaultCode) (faultElements != null ?
- faultElements.get(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME) : null);
+ return soapFaultCode;
}
/**
@@ -413,8 +411,7 @@
* {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
*/
public SOAPFaultReason getFaultReasonElement() {
- return (SOAPFaultReason) (faultElements != null ?
- faultElements.get(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME) : null);
+ return soapFaultReason;
}
/**
@@ -422,8 +419,7 @@
* {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
*/
public SOAPFaultNode getFaultNodeElement() {
- return (SOAPFaultNode) (faultElements != null ?
- faultElements.get(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME) : null);
+ return soapFaultNode;
}
/**
@@ -431,8 +427,7 @@
* {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
*/
public SOAPFaultRole getFaultRoleElement() {
- return (SOAPFaultRole) (faultElements != null ?
- faultElements.get(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME) : null);
+ return soapFaultRole;
}
/**
@@ -440,8 +435,7 @@
* {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
*/
public SOAPFaultDetail getFaultDetailElement() {
- return (SOAPFaultDetail) (faultElements != null ?
- faultElements.get(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME) : null);
+ return soapFaultDetail;
}
/**
@@ -480,11 +474,6 @@
this.nodeURI = nodeURI;
}
-
- public Map getFaultElements() {
- return faultElements;
- }
-
public String getFaultNode() {
return faultNode;
}
@@ -493,14 +482,6 @@
return faultRole;
}
- public String getMessage() {
- return message != null ? message : super.getMessage();
- }
-
- public Throwable getCause() {
- return cause != null ? cause : super.getCause();
- }
-
/**
* Returns the MessageContext representation of the fault if the fault
* was created by providing that.
@@ -573,4 +554,13 @@
public void setFaultAction(String faultAction) {
this.faultAction = faultAction;
}
+
+ /**
+ * Returns the detail message, including the message from the cause, if any, of this exception.
+ *
+ * @return the detail message
+ */
+ public String getMessage() {
+ return message;
+ }
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java Tue Mar 27 21:19:56 2007
@@ -171,6 +171,9 @@
final QName QNAME_WSA_REPLY_TO = new QName(WSA_NAMESPACE, WSA_REPLY_TO);
final QName QNAME_WSA_RELATES_TO = new QName(WSA_NAMESPACE, WSA_RELATES_TO);
final QName QNAME_WSA_MESSAGE_ID = new QName(WSA_NAMESPACE, WSA_MESSAGE_ID);
+ final QName QNAME_WSA_HEADER_DETAIL = new QName(WSA_NAMESPACE, FAULT_HEADER_DETAIL);
+ final QName QNAME_PROBLEM_HEADER = new QName(WSA_NAMESPACE, FAULT_HEADER_PROB_HEADER_QNAME);
+ final QName QNAME_INVALID_HEADER = new QName(WSA_NAMESPACE, FAULT_INVALID_HEADER);
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java Tue Mar 27 21:19:56 2007
@@ -371,6 +371,9 @@
HttpServletResponse response =
(HttpServletResponse) msgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETRESPONSE);
if (response != null) {
+
+ //TODO : Check for SOAP 1.2!
+
SOAPFaultCode code = faultContext.getEnvelope().getBody().getFault().getCode();
OMElement valueElement = null;
if (code != null) {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java Tue Mar 27 21:19:56 2007
@@ -169,7 +169,7 @@
}
if (value != null && JavaUtils.isTrueExplicitly(value)) {
- if (msgContext.isSOAP11() != true) {
+ if (!msgContext.isSOAP11()) {
msgContext.setProperty(Constants.Configuration.DISABLE_SOAP_ACTION,
Boolean.TRUE);
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java Tue Mar 27 21:19:56 2007
@@ -166,6 +166,7 @@
if (AddressingHelper.isFaultRedirected(this.msgContext)) {
response.setStatusLine(new BasicStatusLine(ver, 202, "Accepted"));
} else {
+ // TODO: Why isn't this a SOAP fault?
response.setStatusLine(new BasicStatusLine(ver, 500, "Internal server error"));
String msg = ex.getMessage();
StringEntity entity;
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java Tue Mar 27 21:19:56 2007
@@ -27,9 +27,7 @@
import org.apache.axiom.soap.SOAPFault;
import org.apache.axiom.soap.SOAPFaultCode;
import org.apache.axiom.soap.SOAPFaultDetail;
-import org.apache.axiom.soap.SOAPFaultNode;
import org.apache.axiom.soap.SOAPFaultReason;
-import org.apache.axiom.soap.SOAPFaultRole;
import org.apache.axiom.soap.SOAPHeader;
import org.apache.axiom.soap.SOAPHeaderBlock;
import org.apache.axiom.soap.SOAPProcessingException;
@@ -59,7 +57,6 @@
import java.net.URISyntaxException;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
public class MessageContextBuilder {
@@ -179,7 +176,8 @@
newmsgCtx.setWSAAction(inMessageContext.getWSAAction());
}
- newmsgCtx.setAxisMessage(ao.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE));
+ if (ao != null)
+ newmsgCtx.setAxisMessage(ao.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE));
newmsgCtx.setDoingMTOM(inMessageContext.isDoingMTOM());
newmsgCtx.setServiceGroupContextId(inMessageContext.getServiceGroupContextId());
@@ -442,12 +440,8 @@
} else if (soapException != null) {
soapFaultCode = soapException.getFaultCode();
} else if (axisFault != null) {
-
- Map faultElementsMap = axisFault.getFaultElements();
- if (faultElementsMap != null &&
- faultElementsMap.get(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME) != null) {
- fault.setCode((SOAPFaultCode) faultElementsMap
- .get(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME));
+ if (axisFault.getFaultCodeElement() != null) {
+ fault.setCode(axisFault.getFaultCodeElement());
} else {
QName faultCodeQName = axisFault.getFaultCode();
if (faultCodeQName != null) {
@@ -492,11 +486,8 @@
} else if (soapException != null) {
message = soapException.getMessage();
} else if (axisFault != null) {
- Map faultElementsMap = axisFault.getFaultElements();
- if (faultElementsMap != null &&
- faultElementsMap.get(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME) != null) {
- fault.setReason((SOAPFaultReason) faultElementsMap
- .get(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME));
+ if (axisFault.getFaultReasonElement() != null) {
+ fault.setReason(axisFault.getFaultReasonElement());
} else {
message = axisFault.getReason();
if (message == null || "".equals(message)) {
@@ -523,11 +514,8 @@
if (faultRole != null) {
fault.getRole().setText((String) faultRole);
} else if (axisFault != null) {
- Map faultElementsMap = axisFault.getFaultElements();
- if (faultElementsMap != null &&
- faultElementsMap.get(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME) != null) {
- fault.setRole((SOAPFaultRole) faultElementsMap
- .get(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME));
+ if (axisFault.getFaultRoleElement() != null) {
+ fault.setRole(axisFault.getFaultRoleElement());
}
}
@@ -535,11 +523,8 @@
if (faultNode != null) {
fault.getNode().setText((String) faultNode);
} else if (axisFault != null) {
- Map faultElementsMap = axisFault.getFaultElements();
- if (faultElementsMap != null &&
- faultElementsMap.get(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME) != null) {
- fault.setNode((SOAPFaultNode) faultElementsMap
- .get(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME));
+ if (axisFault.getFaultNodeElement() != null) {
+ fault.setNode(axisFault.getFaultNodeElement());
}
}
@@ -566,11 +551,8 @@
if (faultDetail != null) {
fault.setDetail((SOAPFaultDetail) faultDetail);
} else if (axisFault != null) {
- Map faultElementsMap = axisFault.getFaultElements();
- if (faultElementsMap != null &&
- faultElementsMap.get(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME) != null) {
- fault.setDetail((SOAPFaultDetail) faultElementsMap
- .get(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME));
+ if (axisFault.getFaultDetailElement() != null) {
+ fault.setDetail(axisFault.getFaultDetailElement());
} else {
OMElement detail = axisFault.getDetail();
if (detail != null) {
Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPFaultImpl.java Tue Mar 27 21:19:56 2007
@@ -485,9 +485,7 @@
if(soapFaultSubCode != null){
SOAPFaultValueImpl soapFaultValueimpl = new SOAP12FaultValueImpl(soapFaultSubCode,soapFactory);
soapFaultValueimpl.setText(subcode.getPrefix() +":" + subcode.getLocalPart());
- OMNamespace omNamespace = new OMNamespaceImpl(subcode.getNamespaceURI()
- ,this.element.getPrefix());
- soapFaultValueimpl.setNamespace(omNamespace);
+ soapFaultValueimpl.declareNamespace(subcode.getNamespaceURI(), subcode.getPrefix());
}
}
@@ -506,36 +504,13 @@
public QName getFaultCodeAsQName() {
SOAPFaultCode soapFaultCode = this.fault.getCode();
if (soapFaultCode != null) {
- String prefix = "";
- String localPart = "";
- String uri = "";
- String text = "";
- if(this.element.getOMFactory() instanceof SOAP11Factory) {
- text = soapFaultCode.getText();
- } else if(this.element.getOMFactory() instanceof SOAP12Factory){
- text = soapFaultCode.getValue().getText();
+ if (this.element.getOMFactory() instanceof SOAP11Factory) {
+ return soapFaultCode.getTextAsQName();
+ } else {
+ return soapFaultCode.getValue().getTextAsQName();
}
-
- if(text.indexOf(":") > 0) {
- prefix = text.substring(0, text.indexOf(":"));
- localPart = text.substring(text.indexOf(":") + 1);
-
- if(this.element.getOMFactory() instanceof SOAP11Factory){
- uri = soapFaultCode.findNamespaceURI(prefix).getNamespaceURI();
- } else if(this.element.getOMFactory() instanceof SOAP12Factory){
- OMNamespace namespace = soapFaultCode.getValue().getNamespace();
- if (namespace != null) {
- uri = soapFaultCode.getValue().getNamespace().getNamespaceURI();
- } else {
- uri = this.fault.getNamespace().getNamespaceURI();
- }
- }
- }
-
- QName qname = new QName(uri, localPart, prefix);
- return qname;
- }
- return null;
+ }
+ return null;
}
/**
@@ -692,36 +667,15 @@
throw new UnsupportedOperationException();
}
ArrayList faultSubcodes = new ArrayList();
- SOAPFaultSubCode firstSubCodeElement = this.fault.getCode().getSubCode();
- if(firstSubCodeElement != null){
- String text = firstSubCodeElement.getValue().getText();
- String prefix = text.substring(0,text.indexOf(":"));
- String localPart = text.substring(text.indexOf(":")+1);
- String uri = firstSubCodeElement.getValue().getNamespace().getNamespaceURI();
-
- QName qname = new QName(uri,localPart,prefix);
+ SOAPFaultSubCode subCodeElement = this.fault.getCode().getSubCode();
+ while (subCodeElement != null){
+ QName qname = subCodeElement.getValue().getTextAsQName();
faultSubcodes.add(qname);
- faultSubcodes = getChildSubCodes(firstSubCodeElement,faultSubcodes);
+ subCodeElement = subCodeElement.getSubCode();
}
return faultSubcodes.iterator();
}
- private ArrayList getChildSubCodes(SOAPFaultSubCode firstSubCodeElement
- ,ArrayList faultSubCodes){
- SOAPFaultSubCode soapFaultSubCode = firstSubCodeElement.getSubCode();
- if( soapFaultSubCode != null){
- String text = soapFaultSubCode.getValue().getText();
- String prefix = text.substring(0,text.indexOf(":"));
- String localPart = text.substring(text.indexOf(":")+1);
- String uri = soapFaultSubCode.getValue().getNamespace().getNamespaceURI();
-
- QName qname = new QName(uri,localPart,prefix);
- faultSubCodes.add(qname);
- }
- return faultSubCodes;
- }
-
-
/**
* Returns true if this SOAPFault has a Detail subelement and false otherwise.
*/
@@ -791,7 +745,6 @@
soapFaultCode.setText(prefix + ":" + qname.getLocalPart());
OMNamespace omNamespace = new OMNamespaceImpl(qname.getNamespaceURI(),
qname.getPrefix());
- soapFaultCode.setNamespace(omNamespace);
soapFaultCode.declareNamespace(omNamespace);
} else if (this.element.getOMFactory() instanceof SOAP12Factory) {
SOAPFaultValue soapFaultValue = soapFactory.createSOAPFaultValue(soapFaultCode);
@@ -799,7 +752,7 @@
soapFaultValue.setText(prefix + ":" + qname.getLocalPart());
OMNamespace omNamespace = new OMNamespaceImpl(qname.getNamespaceURI(),
qname.getPrefix());
- soapFaultValue.setNamespace(omNamespace);
+ soapFaultValue.declareNamespace(omNamespace);
}
}
Modified: webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SAAJDetailTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SAAJDetailTest.java?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SAAJDetailTest.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SAAJDetailTest.java Tue Mar 27 21:19:56 2007
@@ -55,50 +55,38 @@
/*
* for soap version 1.1
*/
- public void testAddDetailEntry() {
- try
- {
- //Add a SOAPFault object to the SOAPBody
- SOAPFault sf = body.addFault();
- //Add a Detail object to the SOAPFault object
- Detail d = sf.addDetail();
- QName name = new QName("http://www.wombat.org/trader",
- "GetLastTradePrice", "WOMBAT");
- //Add a DetailEntry object to the Detail object
- DetailEntry de = d.addDetailEntry(name);
- assertNotNull(de);
- assertTrue(de instanceof DetailEntry);
- } catch (Exception e) {
- fail("Exception: " + e);
- }
+ public void testAddDetailEntry() throws Exception {
+ //Add a SOAPFault object to the SOAPBody
+ SOAPFault sf = body.addFault();
+ //Add a Detail object to the SOAPFault object
+ Detail d = sf.addDetail();
+ QName name = new QName("http://www.wombat.org/trader",
+ "GetLastTradePrice", "WOMBAT");
+ //Add a DetailEntry object to the Detail object
+ DetailEntry de = d.addDetailEntry(name);
+ assertNotNull(de);
+ assertTrue(de instanceof DetailEntry);
}
/*
* for soap version 1.2
*/
- public void testAddDetailEntry2() {
- try
- {
- msg = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL).createMessage();
- sp = msg.getSOAPPart();
- envelope = sp.getEnvelope();
- body = envelope.getBody();
+ public void testAddDetailEntry2() throws Exception {
+ msg = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL).createMessage();
+ sp = msg.getSOAPPart();
+ envelope = sp.getEnvelope();
+ body = envelope.getBody();
- //Add a SOAPFault object to the SOAPBody
- SOAPFault sf = body.addFault();
- //Add a Detail object to the SOAPFault object
- Detail d = sf.addDetail();
- QName name = new QName("http://www.wombat.org/trader",
- "GetLastTradePrice", "WOMBAT");
- //Add a DetailEntry object to the Detail object
- DetailEntry de = d.addDetailEntry(name);
- //Successfully created DetailEntry object
- assertNotNull(de);
- assertTrue(de instanceof DetailEntry);
- } catch (Exception e) {
- fail("Exception: " + e);
- }
+ //Add a SOAPFault object to the SOAPBody
+ SOAPFault sf = body.addFault();
+ //Add a Detail object to the SOAPFault object
+ Detail d = sf.addDetail();
+ QName name = new QName("http://www.wombat.org/trader",
+ "GetLastTradePrice", "WOMBAT");
+ //Add a DetailEntry object to the Detail object
+ DetailEntry de = d.addDetailEntry(name);
+ //Successfully created DetailEntry object
+ assertNotNull(de);
+ assertTrue(de instanceof DetailEntry);
}
-
-
}
Modified: webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java?view=diff&rev=523160&r1=523159&r2=523160
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/SOAPFaultTest.java Tue Mar 27 21:19:56 2007
@@ -289,98 +289,86 @@
fail("Unexpected Exception : " + e);
}
}
-
- public void testAppendSubCode() {
- try
- {
- MessageFactory fac = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
- SOAPMessage soapMessage = fac.createMessage();
- SOAPPart soapPart = soapMessage.getSOAPPart();
- SOAPEnvelope envelope = soapPart.getEnvelope();
- envelope.addNamespaceDeclaration("cwmp", "http://cwmp.com");
- SOAPBody body = envelope.getBody();
- SOAPFault soapFault = body.addFault();
- QName qname = new QName("http://example.com", "myfault1", "flt1");
- soapFault.appendFaultSubcode(qname);
- QName qname2 = new QName("http://example2.com", "myfault2", "flt2");
- soapFault.appendFaultSubcode(qname2);
-
- QName qname3 = new QName("http://example3.com", "myfault3", "flt3");
- soapFault.appendFaultSubcode(qname3);
-
- soapMessage.saveChanges();
-
- Iterator faultSubCodes = soapFault.getFaultSubcodes();
- assertNotNull(faultSubCodes);
-
- } catch (SOAPException e) {
- fail("Unexpected Exception Occurred : " + e);
+ public void testAppendSubCode() throws Exception {
+ MessageFactory fac = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
+ SOAPMessage soapMessage = fac.createMessage();
+ SOAPPart soapPart = soapMessage.getSOAPPart();
+ SOAPEnvelope envelope = soapPart.getEnvelope();
+ envelope.addNamespaceDeclaration("cwmp", "http://cwmp.com");
+ SOAPBody body = envelope.getBody();
+ SOAPFault soapFault = body.addFault();
+ QName qname = new QName("http://example.com", "myfault1", "flt1");
+ soapFault.appendFaultSubcode(qname);
+
+ QName qname2 = new QName("http://example2.com", "myfault2", "flt2");
+ soapFault.appendFaultSubcode(qname2);
+
+ QName qname3 = new QName("http://example3.com", "myfault3", "flt3");
+ soapFault.appendFaultSubcode(qname3);
+
+ soapMessage.saveChanges();
+
+ Iterator faultSubCodes = soapFault.getFaultSubcodes();
+ assertNotNull(faultSubCodes);
+ }
+
+ public void testAppendFaultSubCode() throws Exception {
+ MessageFactory fac = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
+ SOAPMessage soapMessage = fac.createMessage();
+ SOAPPart soapPart = soapMessage.getSOAPPart();
+ SOAPEnvelope envelope = soapPart.getEnvelope();
+ envelope.addNamespaceDeclaration("cwmp", "http://cwmp.com");
+ SOAPBody body = envelope.getBody();
+ SOAPFault sf = body.addFault();
+
+ QName expected1 = new QName("http://example.com", "myfault1", "flt1");
+ QName expected2 = new QName("http://example.com", "myfault2", "flt2");
+ boolean found1 = false;
+ boolean found2 = false;
+
+ //Appending fault Subcode
+ sf.appendFaultSubcode(expected1);
+ //Appending a second fault Subcode
+ sf.appendFaultSubcode(expected2);
+
+ //Getting FaultSubCodes from SOAPFault
+ Iterator i = sf.getFaultSubcodes();
+ int j = 0;
+ while (i.hasNext()){
+ Object o = i.next();
+ if (o != null && o instanceof QName){
+ QName actual = (QName)o;
+ if (actual.equals(expected1)){
+ if (!found1){
+ found1=true;
+ //System.out.println("Subcode= '"+actual+"'");
+ } else {
+ //System.out.println("Received a duplicate Subcode :'"+actual+"'");
+ }
+ } else if (actual.equals(expected2)){
+ if (!found2){
+ found2=true;
+ //System.out.println("Subcode= '"+actual+"'");
+ } else {
+ //System.out.println("Received a duplicate Subcode :'"+actual+"'");
+ }
+ }
+ }
+ j++;
+ }
+ if (j<1){
+ fail("No Subcode was returned");
+ }
+ if (j>2){
+ fail("More than two Subcodes were returned");
+ }
+ if (!found1){
+ fail("The following Subcode was not received: '"+expected1+"'");
+ }
+ if (!found2){
+ fail("The following Subcode was not received: '"+expected2+"'");
}
- }
-
- public void testAppendFaultSubCode(){
- try {
- MessageFactory fac = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
- SOAPMessage soapMessage = fac.createMessage();
- SOAPPart soapPart = soapMessage.getSOAPPart();
- SOAPEnvelope envelope = soapPart.getEnvelope();
- envelope.addNamespaceDeclaration("cwmp", "http://cwmp.com");
- SOAPBody body = envelope.getBody();
- SOAPFault sf = body.addFault();
-
- QName expected1 = new QName("http://example.com", "myfault1", "flt1");
- QName expected2 = new QName("http://example.com", "myfault2", "flt2");
- boolean found1 = false;
- boolean found2 = false;
-
- //Appending fault Subcode
- sf.appendFaultSubcode(expected1);
- //Appending a second fault Subcode
- sf.appendFaultSubcode(expected2);
-
- //Getting FaultSubCodes from SOAPFault
- Iterator i = sf.getFaultSubcodes();
- int j = 0;
- while (i.hasNext()){
- Object o = i.next();
- if (o instanceof QName){
- QName actual = (QName)o;
- if(actual != null){
- if (actual.equals(expected1)){
- if (!found1){
- found1=true;
- //System.out.println("Subcode= '"+actual+"'");
- } else {
- //System.out.println("Received a duplicate Subcode :'"+actual+"'");
- }
- } else if (actual.equals(expected2)){
- if (!found2){
- found2=true;
- //System.out.println("Subcode= '"+actual+"'");
- } else {
- //System.out.println("Received a duplicate Subcode :'"+actual+"'");
- }
- }
- }
- }
- j++;
- }
- if (j<1){
- fail("No Subcode was returned");
- }
- if (j>2){
- fail("More than two Subcodes were returned");
- }
- if (!found1){
- fail("The following Subcode was not received: '"+expected1+"'");
- }
- if (!found2){
- fail("The following Subcode was not received: '"+expected2+"'");
- }
- } catch(Exception e) {
- fail("Exception: " + e);
- }
}
public void _testGetFaultReasonTexts() {
@@ -464,16 +452,14 @@
int j = 0;
while (i.hasNext()){
Object o = i.next();
- if (o instanceof String){
- String actual = (String)o;
- if(actual != null){
- if (actual.equals(expected)){
- if (!found){
- found=true;
- }
- }
- }
- }
+ if (o != null && o instanceof String){
+ String actual = (String)o;
+ if (actual.equals(expected)){
+ if (!found){
+ found=true;
+ }
+ }
+ }
j++;
}
if (j<1){
@@ -491,57 +477,51 @@
}
- public void testAddFaultReasonText4() {
- try {
- MessageFactory fac = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
- SOAPMessage soapMessage = fac.createMessage();
- SOAPPart soapPart = soapMessage.getSOAPPart();
- SOAPEnvelope envelope = soapPart.getEnvelope();
- SOAPBody body = envelope.getBody();
- SOAPFault sf = body.addFault();
-
-
- String expected1 = "Its my fault";
- String expected2 = "Its my fault again";
- boolean found1 = false;
- boolean found2 = false;
- sf.addFaultReasonText(expected1, Locale.UK);
- sf.addFaultReasonText(expected2, Locale.ENGLISH);
- Iterator i = sf.getFaultReasonTexts();
- int j = 0;
- while (i.hasNext()){
- Object o = i.next();
- if (o instanceof String){
- String actual = (String)o;
- if(actual != null){
- if (actual.equals(expected1)){
- if (!found1){
- found1=true;
- }
- }else if (actual.equals(expected2)){
- if (!found2){
- found2=true;
- }
- }
- }
- }
- j++;
- }
- if (j<1){
- fail("No reason text was returned");
- }
- if (j>2){
- fail("More than two reason texts were returned");
- }
- if (!found1){
- fail("The following Reason text was not received: '"+expected1+"'");
- }
- if (!found2){
- fail("The following Reason text was not received: '"+expected2+"'");
- }
- } catch (SOAPException e) {
- fail("Unexpected Exception Occurred : " + e);
- }
+ public void testAddFaultReasonText4() throws Exception {
+ MessageFactory fac = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
+ SOAPMessage soapMessage = fac.createMessage();
+ SOAPPart soapPart = soapMessage.getSOAPPart();
+ SOAPEnvelope envelope = soapPart.getEnvelope();
+ SOAPBody body = envelope.getBody();
+ SOAPFault sf = body.addFault();
+
+
+ String expected1 = "Its my fault";
+ String expected2 = "Its my fault again";
+ boolean found1 = false;
+ boolean found2 = false;
+ sf.addFaultReasonText(expected1, Locale.UK);
+ sf.addFaultReasonText(expected2, Locale.ENGLISH);
+ Iterator i = sf.getFaultReasonTexts();
+ int j = 0;
+ while (i.hasNext()){
+ Object o = i.next();
+ if (o != null && o instanceof String){
+ String actual = (String)o;
+ if (actual.equals(expected1)){
+ if (!found1){
+ found1=true;
+ }
+ } else if (actual.equals(expected2)){
+ if (!found2){
+ found2=true;
+ }
+ }
+ }
+ j++;
+ }
+ if (j<1){
+ fail("No reason text was returned");
+ }
+ if (j>2){
+ fail("More than two reason texts were returned");
+ }
+ if (!found1){
+ fail("The following Reason text was not received: '"+expected1+"'");
+ }
+ if (!found2){
+ fail("The following Reason text was not received: '"+expected2+"'");
+ }
}
@@ -882,22 +862,18 @@
}
- public void testSetGetFaultCodeAsQName1() {
- try {
- SOAPFactory fac = SOAPFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
- SOAPFault sf = fac.createFault();
-
- QName name = new QName("http://example.com", "myfault", "flt");
- sf.setFaultCode(name);
- QName name2 = sf.getFaultCodeAsQName();
-
- assertNotNull(name2);
- assertEquals(name2.getLocalPart(), name.getLocalPart());
- assertEquals(name2.getPrefix(), name.getPrefix());
- assertEquals(name2.getNamespaceURI(), name.getNamespaceURI());
- }catch(Exception e){
- fail(e.getMessage());
- }
+ public void testSetGetFaultCodeAsQName1() throws Exception {
+ SOAPFactory fac = SOAPFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
+ SOAPFault sf = fac.createFault();
+
+ QName name = new QName("http://example.com", "myfault", "flt");
+ sf.setFaultCode(name);
+ QName name2 = sf.getFaultCodeAsQName();
+
+ assertNotNull(name2);
+ assertEquals(name2.getLocalPart(), name.getLocalPart());
+ assertEquals(name2.getPrefix(), name.getPrefix());
+ assertEquals(name2.getNamespaceURI(), name.getNamespaceURI());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org