Author: thomas.diesler(a)jboss.com
Date: 2006-12-18 05:52:44 -0500 (Mon, 18 Dec 2006)
New Revision: 1664
Modified:
trunk/src/main/java/org/jboss/ws/core/CommonBinding.java
trunk/src/main/java/org/jboss/ws/core/CommonSOAPBinding.java
trunk/src/main/java/org/jboss/ws/core/jaxws/binding/HTTPBindingJAXWS.java
trunk/src/main/java/org/jboss/ws/core/jaxws/binding/MessageBinding.java
trunk/src/main/java/org/jboss/ws/core/jaxws/binding/PayloadBinding.java
trunk/src/main/java/org/jboss/ws/core/server/ServiceEndpoint.java
Log:
Prevent NPE in post process message
Modified: trunk/src/main/java/org/jboss/ws/core/CommonBinding.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/CommonBinding.java 2006-12-17 22:04:17 UTC (rev
1663)
+++ trunk/src/main/java/org/jboss/ws/core/CommonBinding.java 2006-12-18 10:52:44 UTC (rev
1664)
@@ -52,5 +52,5 @@
void unbindResponseMessage(OperationMetaData opMetaData, Object resMessage,
EndpointInvocation epInv, Map<QName, UnboundHeader> unboundHeaders) throws
BindingException;
/** bind an exception to a fault message */
- void bindFaultMessage(Exception ex);
+ Object bindFaultMessage(Exception ex);
}
Modified: trunk/src/main/java/org/jboss/ws/core/CommonSOAPBinding.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/CommonSOAPBinding.java 2006-12-17 22:04:17 UTC
(rev 1663)
+++ trunk/src/main/java/org/jboss/ws/core/CommonSOAPBinding.java 2006-12-18 10:52:44 UTC
(rev 1664)
@@ -52,7 +52,6 @@
import org.jboss.ws.core.jaxrpc.StubExt;
import org.jboss.ws.core.jaxrpc.Style;
import org.jboss.ws.core.jaxrpc.binding.BindingException;
-import org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS;
import org.jboss.ws.core.soap.MessageContextAssociation;
import org.jboss.ws.core.soap.MessageFactoryImpl;
import org.jboss.ws.core.soap.NameImpl;
@@ -533,7 +532,7 @@
}
}
- public void bindFaultMessage(Exception ex)
+ public Object bindFaultMessage(Exception ex)
{
SOAPMessage faultMessage = createFaultMessageFromException(ex);
CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
@@ -545,6 +544,7 @@
{
log.warn("Cannot set fault message in message context");
}
+ return faultMessage;
}
protected abstract SOAPMessage createFaultMessageFromException(Exception ex);
Modified: trunk/src/main/java/org/jboss/ws/core/jaxws/binding/HTTPBindingJAXWS.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/jaxws/binding/HTTPBindingJAXWS.java 2006-12-17
22:04:17 UTC (rev 1663)
+++ trunk/src/main/java/org/jboss/ws/core/jaxws/binding/HTTPBindingJAXWS.java 2006-12-18
10:52:44 UTC (rev 1664)
@@ -27,6 +27,7 @@
import java.util.Map;
import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.Handler;
import javax.xml.ws.http.HTTPBinding;
@@ -68,7 +69,7 @@
throw new NotImplementedException();
}
- public void bindFaultMessage(Exception ex)
+ public Object bindFaultMessage(Exception ex)
{
throw new NotImplementedException();
}
Modified: trunk/src/main/java/org/jboss/ws/core/jaxws/binding/MessageBinding.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/jaxws/binding/MessageBinding.java 2006-12-17
22:04:17 UTC (rev 1663)
+++ trunk/src/main/java/org/jboss/ws/core/jaxws/binding/MessageBinding.java 2006-12-18
10:52:44 UTC (rev 1664)
@@ -122,7 +122,7 @@
throw new NotImplementedException();
}
- public void bindFaultMessage(Exception ex)
+ public Object bindFaultMessage(Exception ex)
{
SOAPMessage faultMessage = SOAPFaultHelperJAXWS.exceptionToFaultMessage(ex);
CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
@@ -134,6 +134,7 @@
{
log.warn("Cannot set fault message in message context");
}
+ return faultMessage;
}
public List<Handler> getHandlerChain()
Modified: trunk/src/main/java/org/jboss/ws/core/jaxws/binding/PayloadBinding.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/jaxws/binding/PayloadBinding.java 2006-12-17
22:04:17 UTC (rev 1663)
+++ trunk/src/main/java/org/jboss/ws/core/jaxws/binding/PayloadBinding.java 2006-12-18
10:52:44 UTC (rev 1664)
@@ -137,7 +137,7 @@
throw new NotImplementedException();
}
- public void bindFaultMessage(Exception ex)
+ public Object bindFaultMessage(Exception ex)
{
SOAPMessage faultMessage = SOAPFaultHelperJAXWS.exceptionToFaultMessage(ex);
CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
@@ -149,6 +149,7 @@
{
log.warn("Cannot set fault message in message context");
}
+ return faultMessage;
}
public List<Handler> getHandlerChain()
Modified: trunk/src/main/java/org/jboss/ws/core/server/ServiceEndpoint.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/server/ServiceEndpoint.java 2006-12-17 22:04:17
UTC (rev 1663)
+++ trunk/src/main/java/org/jboss/ws/core/server/ServiceEndpoint.java 2006-12-18 10:52:44
UTC (rev 1664)
@@ -201,9 +201,10 @@
// Invoke the service endpoint
ServiceEndpointInvoker seInvoker = seInfo.getInvoker();
SOAPMessage resMessage = seInvoker.invoke(seInfo, context);
+
+ if (resMessage != null)
+ postProcessResponse(headerSource, resMessage);
- postProcessResponse(headerSource, resMessage);
-
return resMessage;
}
catch (Exception ex)
@@ -216,10 +217,12 @@
{
CommonBindingProvider bindingProvider = getCommonBindingProvider();
CommonBinding binding = bindingProvider.getCommonBinding();
- binding.bindFaultMessage(ex);
+ resMessage = (SOAPMessage)binding.bindFaultMessage(ex);
}
- postProcessResponse(headerSource, resMessage);
+ if (resMessage != null)
+ postProcessResponse(headerSource, resMessage);
+
return resMessage;
}
finally
@@ -278,7 +281,7 @@
}
catch (Exception ex)
{
- throw new JAXRPCException("Cannot create or send response message",
ex);
+ throw new JAXRPCException("Faild to post process response message",
ex);
}
}