diff --git a/core/src/main/java/org/springframework/ws/soap/server/endpoint/AbstractSoapFaultDefinitionExceptionResolver.java b/core/src/main/java/org/springframework/ws/soap/server/endpoint/AbstractSoapFaultDefinitionExceptionResolver.java
index 7c2705c7..4bedc201 100644
--- a/core/src/main/java/org/springframework/ws/soap/server/endpoint/AbstractSoapFaultDefinitionExceptionResolver.java
+++ b/core/src/main/java/org/springframework/ws/soap/server/endpoint/AbstractSoapFaultDefinitionExceptionResolver.java
@@ -65,27 +65,27 @@ public abstract class AbstractSoapFaultDefinitionExceptionResolver extends Abstr
if (definition == null) {
return false;
}
- if (!StringUtils.hasLength(definition.getFaultStringOrReason())) {
- String faultString = StringUtils.hasLength(ex.getMessage()) ? ex.getMessage() : ex.toString();
- definition.setFaultStringOrReason(faultString);
+
+ String faultStringOrReason = definition.getFaultStringOrReason();
+ if (!StringUtils.hasLength(faultStringOrReason)) {
+ faultStringOrReason = StringUtils.hasLength(ex.getMessage()) ? ex.getMessage() : ex.toString();
}
SoapBody soapBody = ((SoapMessage) messageContext.getResponse()).getSoapBody();
SoapFault fault = null;
if (SoapFaultDefinition.SERVER.equals(definition.getFaultCode()) ||
SoapFaultDefinition.RECEIVER.equals(definition.getFaultCode())) {
- fault = soapBody.addServerOrReceiverFault(definition.getFaultStringOrReason(), definition.getLocale());
+ fault = soapBody.addServerOrReceiverFault(faultStringOrReason, definition.getLocale());
}
else if (SoapFaultDefinition.CLIENT.equals(definition.getFaultCode()) ||
SoapFaultDefinition.SENDER.equals(definition.getFaultCode())) {
- fault = soapBody.addClientOrSenderFault(definition.getFaultStringOrReason(), definition.getLocale());
+ fault = soapBody.addClientOrSenderFault(faultStringOrReason, definition.getLocale());
}
else {
// custom code, only supported for SOAP 1.1
if (soapBody instanceof Soap11Body) {
Soap11Body soap11Body = (Soap11Body) soapBody;
- fault = soap11Body.addFault(definition.getFaultCode(), definition.getFaultStringOrReason(),
- definition.getLocale());
+ fault = soap11Body.addFault(definition.getFaultCode(), faultStringOrReason, definition.getLocale());
}
else {
logger.warn("SOAP 1.2 does not allow custom FaultCodes, only SENDER or RECEIVER.");
diff --git a/core/src/test/java/org/springframework/ws/soap/server/endpoint/SoapFaultMappingExceptionResolverTest.java b/core/src/test/java/org/springframework/ws/soap/server/endpoint/SoapFaultMappingExceptionResolverTest.java
index 92ab39b1..68f63c9d 100644
--- a/core/src/test/java/org/springframework/ws/soap/server/endpoint/SoapFaultMappingExceptionResolverTest.java
+++ b/core/src/test/java/org/springframework/ws/soap/server/endpoint/SoapFaultMappingExceptionResolverTest.java
@@ -149,7 +149,6 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase {
resolver.setExceptionMappings(mappings);
SoapFaultDefinition defaultFault = new SoapFaultDefinition();
defaultFault.setFaultCode(SoapFaultDefinition.CLIENT);
- defaultFault.setFaultStringOrReason("faultstring");
resolver.setDefaultFault(defaultFault);
MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
SOAPMessage message = messageFactory.createMessage();
@@ -164,7 +163,20 @@ public class SoapFaultMappingExceptionResolverTest extends XMLTestCase {
Soap11Fault fault = (Soap11Fault) response.getSoapBody().getFault();
assertEquals("Invalid fault code on fault", SoapVersion.SOAP_11.getClientOrSenderFaultName(),
fault.getFaultCode());
- assertEquals("Invalid fault string on fault", "faultstring", fault.getFaultStringOrReason());
+ assertEquals("Invalid fault string on fault", "bla", fault.getFaultStringOrReason());
+ assertNull("Detail on fault", fault.getFaultDetail());
+
+ // SWS-226
+ result = resolver.resolveException(context, null, new IllegalArgumentException());
+ assertTrue("resolveException returns false", result);
+ assertTrue("Context has no response", context.hasResponse());
+ response = (SoapMessage) context.getResponse();
+ assertTrue("Response has no fault", response.getSoapBody().hasFault());
+ fault = (Soap11Fault) response.getSoapBody().getFault();
+ assertEquals("Invalid fault code on fault", SoapVersion.SOAP_11.getClientOrSenderFaultName(),
+ fault.getFaultCode());
+ assertEquals("Invalid fault string on fault", "java.lang.IllegalArgumentException",
+ fault.getFaultStringOrReason());
assertNull("Detail on fault", fault.getFaultDetail());
}
diff --git a/oxm/pom.xml b/oxm/pom.xml
index 77def18c..60bedd01 100644
--- a/oxm/pom.xml
+++ b/oxm/pom.xml
@@ -9,13 +9,6 @@
jar
Spring O/X Mapping
Spring Object/XML Mapping abstraction
-
-
- jibx
- JiBX Maven Repository
- http://jibx.sourceforge.net/maven2/
-
-
@@ -243,4 +236,4 @@
test
-
\ No newline at end of file
+