Author: dkulp
Date: Fri May 7 14:23:40 2010
New Revision: 942081
URL: http://svn.apache.org/viewvc?rev=942081&view=rev
Log:
Work around an J2EE TCK regression
Modified:
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultInInterceptor.java
Modified:
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultInInterceptor.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultInInterceptor.java?rev=942081&r1=942080&r2=942081&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultInInterceptor.java
(original)
+++
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultInInterceptor.java
Fri May 7 14:23:40 2010
@@ -34,6 +34,7 @@ import javax.xml.ws.handler.Handler;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
+import org.apache.cxf.binding.soap.HeaderUtil;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.interceptor.SoapInterceptor;
import org.apache.cxf.helpers.CastUtils;
@@ -77,6 +78,7 @@ public class SOAPHandlerFaultInIntercept
return;
}
+ checkUnderstoodHeaders(message);
MessageContext context = createProtocolMessageContext(message);
HandlerChainInvoker invoker = getInvoker(message);
invoker.setProtocolMessageContext(context);
@@ -93,6 +95,18 @@ public class SOAPHandlerFaultInIntercept
}
+ private void checkUnderstoodHeaders(SoapMessage soapMessage) {
+ Set<QName> paramHeaders =
HeaderUtil.getHeaderQNameInOperationParam(soapMessage);
+ if (soapMessage.getHeaders().isEmpty() && paramHeaders.isEmpty()) {
+ //the TCK expects the getHeaders method to always be
+ //called. If there aren't any headers in the message,
+ //THe MustUnderstandInterceptor quickly returns without
+ //trying to calculate the understood headers. Thus,
+ //we need to call it here.
+ getUnderstoodHeaders();
+ }
+ }
+
private void handleAbort(SoapMessage message, MessageContext context) {
if (isRequestor(message)) {