This commit is contained in:
Arjen Poutsma
2007-11-14 18:18:43 +00:00
parent e4b3e847cf
commit f40e62df03
2 changed files with 25 additions and 2 deletions

View File

@@ -147,6 +147,9 @@ public class SoapMessageDispatcher extends MessageDispatcher {
*/
private boolean headerUnderstood(EndpointInvocationChain mappedEndpoint, SoapHeaderElement headerElement) {
EndpointInterceptor[] interceptors = mappedEndpoint.getInterceptors();
if (ObjectUtils.isEmpty(interceptors)) {
return false;
}
for (int i = 0; i < interceptors.length; i++) {
EndpointInterceptor interceptor = interceptors[i];
if (interceptor instanceof SoapEndpointInterceptor &&

View File

@@ -24,8 +24,6 @@ import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.soap.SOAPMessage;
import junit.framework.TestCase;
import org.easymock.MockControl;
import org.springframework.ws.context.DefaultMessageContext;
import org.springframework.ws.context.MessageContext;
import org.springframework.ws.soap.SoapBody;
@@ -38,6 +36,9 @@ import org.springframework.ws.soap.saaj.SaajSoapMessageFactory;
import org.springframework.ws.soap.soap11.Soap11Fault;
import org.springframework.ws.soap.soap12.Soap12Fault;
import junit.framework.TestCase;
import org.easymock.MockControl;
public class SoapMessageDispatcherTest extends TestCase {
private SoapMessageDispatcher dispatcher;
@@ -225,4 +226,23 @@ public class SoapMessageDispatcherTest extends TestCase {
assertTrue("Invalid result", result);
interceptorControl.verify();
}
public void testProcessMustUnderstandHeadersNoInterceptors() throws Exception {
MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
SOAPMessage request = messageFactory.createMessage();
SOAPHeaderElement header =
request.getSOAPHeader().addHeaderElement(new QName("http://www.springframework.org", "Header"));
header.setActor(SOAPConstants.URI_SOAP_ACTOR_NEXT);
header.setMustUnderstand(true);
SoapMessageFactory factory = new SaajSoapMessageFactory(messageFactory);
MessageContext context = new DefaultMessageContext(new SaajSoapMessage(request), factory);
interceptorControl.replay();
SoapEndpointInvocationChain chain = new SoapEndpointInvocationChain(new Object(), null);
boolean result = dispatcher.handleRequest(chain, context);
assertFalse("Header understood", result);
interceptorControl.verify();
}
}