Skip to content

Commit 5b601ae

Browse files
committed
SWS-226 in 1.0 branch
1 parent d01cba9 commit 5b601ae

File tree

3 files changed

+22
-17
lines changed

3 files changed

+22
-17
lines changed

core/src/main/java/org/springframework/ws/soap/server/endpoint/AbstractSoapFaultDefinitionExceptionResolver.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,27 +65,27 @@ protected final boolean resolveExceptionInternal(MessageContext messageContext,
6565
if (definition == null) {
6666
return false;
6767
}
68-
if (!StringUtils.hasLength(definition.getFaultStringOrReason())) {
69-
String faultString = StringUtils.hasLength(ex.getMessage()) ? ex.getMessage() : ex.toString();
70-
definition.setFaultStringOrReason(faultString);
68+
69+
String faultStringOrReason = definition.getFaultStringOrReason();
70+
if (!StringUtils.hasLength(faultStringOrReason)) {
71+
faultStringOrReason = StringUtils.hasLength(ex.getMessage()) ? ex.getMessage() : ex.toString();
7172
}
7273
SoapBody soapBody = ((SoapMessage) messageContext.getResponse()).getSoapBody();
7374
SoapFault fault = null;
7475

7576
if (SoapFaultDefinition.SERVER.equals(definition.getFaultCode()) ||
7677
SoapFaultDefinition.RECEIVER.equals(definition.getFaultCode())) {
77-
fault = soapBody.addServerOrReceiverFault(definition.getFaultStringOrReason(), definition.getLocale());
78+
fault = soapBody.addServerOrReceiverFault(faultStringOrReason, definition.getLocale());
7879
}
7980
else if (SoapFaultDefinition.CLIENT.equals(definition.getFaultCode()) ||
8081
SoapFaultDefinition.SENDER.equals(definition.getFaultCode())) {
81-
fault = soapBody.addClientOrSenderFault(definition.getFaultStringOrReason(), definition.getLocale());
82+
fault = soapBody.addClientOrSenderFault(faultStringOrReason, definition.getLocale());
8283
}
8384
else {
8485
// custom code, only supported for SOAP 1.1
8586
if (soapBody instanceof Soap11Body) {
8687
Soap11Body soap11Body = (Soap11Body) soapBody;
87-
fault = soap11Body.addFault(definition.getFaultCode(), definition.getFaultStringOrReason(),
88-
definition.getLocale());
88+
fault = soap11Body.addFault(definition.getFaultCode(), faultStringOrReason, definition.getLocale());
8989
}
9090
else {
9191
logger.warn("SOAP 1.2 does not allow custom FaultCodes, only SENDER or RECEIVER.");

core/src/test/java/org/springframework/ws/soap/server/endpoint/SoapFaultMappingExceptionResolverTest.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,6 @@ public void testResolveExceptionDefault() throws Exception {
149149
resolver.setExceptionMappings(mappings);
150150
SoapFaultDefinition defaultFault = new SoapFaultDefinition();
151151
defaultFault.setFaultCode(SoapFaultDefinition.CLIENT);
152-
defaultFault.setFaultStringOrReason("faultstring");
153152
resolver.setDefaultFault(defaultFault);
154153
MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
155154
SOAPMessage message = messageFactory.createMessage();
@@ -164,7 +163,20 @@ public void testResolveExceptionDefault() throws Exception {
164163
Soap11Fault fault = (Soap11Fault) response.getSoapBody().getFault();
165164
assertEquals("Invalid fault code on fault", SoapVersion.SOAP_11.getClientOrSenderFaultName(),
166165
fault.getFaultCode());
167-
assertEquals("Invalid fault string on fault", "faultstring", fault.getFaultStringOrReason());
166+
assertEquals("Invalid fault string on fault", "bla", fault.getFaultStringOrReason());
167+
assertNull("Detail on fault", fault.getFaultDetail());
168+
169+
// SWS-226
170+
result = resolver.resolveException(context, null, new IllegalArgumentException());
171+
assertTrue("resolveException returns false", result);
172+
assertTrue("Context has no response", context.hasResponse());
173+
response = (SoapMessage) context.getResponse();
174+
assertTrue("Response has no fault", response.getSoapBody().hasFault());
175+
fault = (Soap11Fault) response.getSoapBody().getFault();
176+
assertEquals("Invalid fault code on fault", SoapVersion.SOAP_11.getClientOrSenderFaultName(),
177+
fault.getFaultCode());
178+
assertEquals("Invalid fault string on fault", "java.lang.IllegalArgumentException",
179+
fault.getFaultStringOrReason());
168180
assertNull("Detail on fault", fault.getFaultDetail());
169181
}
170182

oxm/pom.xml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,6 @@
99
<packaging>jar</packaging>
1010
<name>Spring O/X Mapping</name>
1111
<description>Spring Object/XML Mapping abstraction</description>
12-
<repositories>
13-
<repository>
14-
<id>jibx</id>
15-
<name>JiBX Maven Repository</name>
16-
<url>http://jibx.sourceforge.net/maven2/</url>
17-
</repository>
18-
</repositories>
1912
<build>
2013
<plugins>
2114
<plugin>
@@ -243,4 +236,4 @@
243236
<scope>test</scope>
244237
</dependency>
245238
</dependencies>
246-
</project>
239+
</project>

0 commit comments

Comments
 (0)