Skip to content

Commit 58fceaa

Browse files
committed
SWS-227 in 1.0 branch
1 parent 5b601ae commit 58fceaa

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

core/src/main/java/org/springframework/ws/soap/server/SoapMessageDispatcher.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,9 @@ private boolean handleHeaders(EndpointInvocationChain mappedEndpoint,
147147
*/
148148
private boolean headerUnderstood(EndpointInvocationChain mappedEndpoint, SoapHeaderElement headerElement) {
149149
EndpointInterceptor[] interceptors = mappedEndpoint.getInterceptors();
150+
if (ObjectUtils.isEmpty(interceptors)) {
151+
return false;
152+
}
150153
for (int i = 0; i < interceptors.length; i++) {
151154
EndpointInterceptor interceptor = interceptors[i];
152155
if (interceptor instanceof SoapEndpointInterceptor &&

core/src/test/java/org/springframework/ws/soap/server/SoapMessageDispatcherTest.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424
import javax.xml.soap.SOAPHeaderElement;
2525
import javax.xml.soap.SOAPMessage;
2626

27-
import junit.framework.TestCase;
28-
import org.easymock.MockControl;
2927
import org.springframework.ws.context.DefaultMessageContext;
3028
import org.springframework.ws.context.MessageContext;
3129
import org.springframework.ws.soap.SoapBody;
@@ -38,6 +36,9 @@
3836
import org.springframework.ws.soap.soap11.Soap11Fault;
3937
import org.springframework.ws.soap.soap12.Soap12Fault;
4038

39+
import junit.framework.TestCase;
40+
import org.easymock.MockControl;
41+
4142
public class SoapMessageDispatcherTest extends TestCase {
4243

4344
private SoapMessageDispatcher dispatcher;
@@ -225,4 +226,23 @@ public void testProcessNoHeader() throws Exception {
225226
assertTrue("Invalid result", result);
226227
interceptorControl.verify();
227228
}
229+
230+
public void testProcessMustUnderstandHeadersNoInterceptors() throws Exception {
231+
MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
232+
SOAPMessage request = messageFactory.createMessage();
233+
SOAPHeaderElement header =
234+
request.getSOAPHeader().addHeaderElement(new QName("http://www.springframework.org", "Header"));
235+
header.setActor(SOAPConstants.URI_SOAP_ACTOR_NEXT);
236+
header.setMustUnderstand(true);
237+
SoapMessageFactory factory = new SaajSoapMessageFactory(messageFactory);
238+
MessageContext context = new DefaultMessageContext(new SaajSoapMessage(request), factory);
239+
interceptorControl.replay();
240+
241+
SoapEndpointInvocationChain chain = new SoapEndpointInvocationChain(new Object(), null);
242+
243+
boolean result = dispatcher.handleRequest(chain, context);
244+
assertFalse("Header understood", result);
245+
interceptorControl.verify();
246+
}
247+
228248
}

0 commit comments

Comments
 (0)