Author: thomas.diesler(a)jboss.com
Date: 2006-12-15 05:05:17 -0500 (Fri, 15 Dec 2006)
New Revision: 1655
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/jaxrpc/SOAP11BindingJAXRPC.java
trunk/src/main/java/org/jboss/ws/core/jaxrpc/SOAP12BindingJAXRPC.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/jaxws/binding/SOAP11BindingJAXWS.java
trunk/src/main/java/org/jboss/ws/core/jaxws/binding/SOAP12BindingJAXWS.java
trunk/src/main/java/org/jboss/ws/core/server/AbstractServiceEndpointInvoker.java
trunk/src/main/java/org/jboss/ws/core/server/ServiceEndpoint.java
trunk/src/main/java/org/jboss/ws/core/soap/JAXWSPayloadBuilder.java
trunk/src/main/java/org/jboss/ws/core/soap/SOAPBodyImpl.java
trunk/src/test/build.xml
Log:
Fix fault message for Provider
Use DOMSource instead of StreamSource
Modified: trunk/src/main/java/org/jboss/ws/core/CommonBinding.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/CommonBinding.java 2006-12-14 18:49:44 UTC (rev
1654)
+++ trunk/src/main/java/org/jboss/ws/core/CommonBinding.java 2006-12-15 10:05:17 UTC (rev
1655)
@@ -37,7 +37,7 @@
* @author Thomas.Diesler(a)jboss.com
* @since 04-Jul-2006
*/
-public interface CommonBinding
+public interface CommonBinding
{
/** On the client side, generate the Object from IN parameters. */
Object bindRequestMessage(OperationMetaData opMetaData, EndpointInvocation epInv,
Map<QName, UnboundHeader> unboundHeaders) throws BindingException;
@@ -50,4 +50,7 @@
/** On the client side, extract the OUT parameters from the Object and return them to
the client. */
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);
}
Modified: trunk/src/main/java/org/jboss/ws/core/CommonSOAPBinding.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/CommonSOAPBinding.java 2006-12-14 18:49:44 UTC
(rev 1654)
+++ trunk/src/main/java/org/jboss/ws/core/CommonSOAPBinding.java 2006-12-15 10:05:17 UTC
(rev 1655)
@@ -52,6 +52,7 @@
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;
@@ -85,32 +86,19 @@
public abstract class CommonSOAPBinding implements CommonBinding
{
// provide logging
- private static Logger log = Logger.getLogger(CommonSOAPBinding.class);
+ protected Logger log = Logger.getLogger(getClass());
private boolean mtomEnabled;
- /**
- * A constant representing the identity of the SOAP 1.1 over HTTP binding.
- */
+ /** A constant representing the identity of the SOAP 1.1 over HTTP binding. */
public static final String SOAP11HTTP_BINDING =
"http://schemas.xmlsoap.org/wsdl/soap/http";
-
- /**
- * A constant representing the identity of the SOAP 1.2 over HTTP binding.
- */
+ /** A constant representing the identity of the SOAP 1.2 over HTTP binding. */
public static final String SOAP12HTTP_BINDING =
"http://www.w3.org/2003/05/soap/bindings/HTTP/";
-
- /**
- * A constant representing the identity of the SOAP 1.1 over HTTP binding
- * with MTOM enabled by default.
- */
+ /** A constant representing the identity of the SOAP 1.1 over HTTP binding with MTOM
enabled by default. */
public static final String SOAP11HTTP_MTOM_BINDING =
"http://schemas.xmlsoap.org/wsdl/soap/http?mtom=true";
-
- /**
- * A constant representing the identity of the SOAP 1.2 over HTTP binding
- * with MTOM enabled by default.
- */
+ /** A constant representing the identity of the SOAP 1.2 over HTTP binding with MTOM
enabled by default. */
public static final String SOAP12HTTP_MTOM_BINDING =
"http://www.w3.org/2003/05/soap/bindings/HTTP/?mtom=true";
-
+ /** The SOAP encoded Array name */
private static final Name SOAP_ARRAY_NAME = new NameImpl("Array",
Constants.PREFIX_SOAP11_ENC, Constants.URI_SOAP11_ENC);
public CommonSOAPBinding()
@@ -544,8 +532,22 @@
handleException(e);
}
}
+
+ public void bindFaultMessage(Exception ex)
+ {
+ SOAPMessage faultMessage = createFaultMessageFromException(ex);
+ CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+ if (msgContext != null)
+ {
+ msgContext.setSOAPMessage(faultMessage);
+ }
+ else
+ {
+ log.warn("Cannot set fault message in message context");
+ }
+ }
- public abstract SOAPMessage exceptionToFaultMessage(Exception ex);
+ protected abstract SOAPMessage createFaultMessageFromException(Exception ex);
private void verifySOAPVersion(OperationMetaData opMetaData, SOAPEnvelope
soapEnvelope)
{
Modified: trunk/src/main/java/org/jboss/ws/core/jaxrpc/SOAP11BindingJAXRPC.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/jaxrpc/SOAP11BindingJAXRPC.java 2006-12-14
18:49:44 UTC (rev 1654)
+++ trunk/src/main/java/org/jboss/ws/core/jaxrpc/SOAP11BindingJAXRPC.java 2006-12-15
10:05:17 UTC (rev 1655)
@@ -50,15 +50,13 @@
delegate.setSOAPActionHeader(opMetaData, reqMessage);
}
- @Override
+ public SOAPMessage createFaultMessageFromException(Exception ex)
+ {
+ return SOAPFaultHelperJAXRPC.exceptionToFaultMessage(ex);
+ }
+
protected void throwFaultException(SOAPFaultImpl fault) throws Exception
{
throw SOAPFaultHelperJAXRPC.getSOAPFaultException(fault);
}
-
- @Override
- public SOAPMessage exceptionToFaultMessage(Exception ex)
- {
- return SOAPFaultHelperJAXRPC.exceptionToFaultMessage(ex);
- }
}
Modified: trunk/src/main/java/org/jboss/ws/core/jaxrpc/SOAP12BindingJAXRPC.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/jaxrpc/SOAP12BindingJAXRPC.java 2006-12-14
18:49:44 UTC (rev 1654)
+++ trunk/src/main/java/org/jboss/ws/core/jaxrpc/SOAP12BindingJAXRPC.java 2006-12-15
10:05:17 UTC (rev 1655)
@@ -25,7 +25,9 @@
import javax.xml.soap.SOAPMessage;
+import org.jboss.ws.core.CommonMessageContext;
import org.jboss.ws.core.CommonSOAP12Binding;
+import org.jboss.ws.core.soap.MessageContextAssociation;
import org.jboss.ws.core.soap.SOAPFaultImpl;
import org.jboss.ws.metadata.umdm.OperationMetaData;
@@ -50,15 +52,13 @@
delegate.setSOAPActionHeader(opMetaData, reqMessage);
}
- @Override
+ public SOAPMessage createFaultMessageFromException(Exception ex)
+ {
+ return SOAPFaultHelperJAXRPC.exceptionToFaultMessage(ex);
+ }
+
protected void throwFaultException(SOAPFaultImpl fault) throws Exception
{
throw SOAPFaultHelperJAXRPC.getSOAPFaultException(fault);
}
-
- @Override
- public SOAPMessage exceptionToFaultMessage(Exception ex)
- {
- return SOAPFaultHelperJAXRPC.exceptionToFaultMessage(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-14
18:49:44 UTC (rev 1654)
+++ trunk/src/main/java/org/jboss/ws/core/jaxws/binding/HTTPBindingJAXWS.java 2006-12-15
10:05:17 UTC (rev 1655)
@@ -68,6 +68,11 @@
throw new NotImplementedException();
}
+ public void bindFaultMessage(Exception ex)
+ {
+ throw new NotImplementedException();
+ }
+
public List<Handler> getHandlerChain()
{
return delegate.getHandlerChain();
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-14
18:49:44 UTC (rev 1654)
+++ trunk/src/main/java/org/jboss/ws/core/jaxws/binding/MessageBinding.java 2006-12-15
10:05:17 UTC (rev 1655)
@@ -34,8 +34,10 @@
import org.jboss.util.NotImplementedException;
import org.jboss.ws.WSException;
import org.jboss.ws.core.CommonBinding;
+import org.jboss.ws.core.CommonMessageContext;
import org.jboss.ws.core.EndpointInvocation;
import org.jboss.ws.core.jaxrpc.binding.BindingException;
+import org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS;
import org.jboss.ws.core.jaxws.handler.SOAPMessageContextJAXWS;
import org.jboss.ws.core.soap.MessageContextAssociation;
import org.jboss.ws.core.soap.UnboundHeader;
@@ -120,6 +122,20 @@
throw new NotImplementedException();
}
+ public void bindFaultMessage(Exception ex)
+ {
+ SOAPMessage faultMessage = SOAPFaultHelperJAXWS.exceptionToFaultMessage(ex);
+ CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+ if (msgContext != null)
+ {
+ msgContext.setSOAPMessage(faultMessage);
+ }
+ else
+ {
+ log.warn("Cannot set fault message in message context");
+ }
+ }
+
public List<Handler> getHandlerChain()
{
return delegate.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-14
18:49:44 UTC (rev 1654)
+++ trunk/src/main/java/org/jboss/ws/core/jaxws/binding/PayloadBinding.java 2006-12-15
10:05:17 UTC (rev 1655)
@@ -36,8 +36,10 @@
import org.jboss.ws.Constants;
import org.jboss.ws.WSException;
import org.jboss.ws.core.CommonBinding;
+import org.jboss.ws.core.CommonMessageContext;
import org.jboss.ws.core.EndpointInvocation;
import org.jboss.ws.core.jaxrpc.binding.BindingException;
+import org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS;
import org.jboss.ws.core.jaxws.handler.SOAPMessageContextJAXWS;
import org.jboss.ws.core.soap.MessageContextAssociation;
import org.jboss.ws.core.soap.MessageFactoryImpl;
@@ -135,6 +137,20 @@
throw new NotImplementedException();
}
+ public void bindFaultMessage(Exception ex)
+ {
+ SOAPMessage faultMessage = SOAPFaultHelperJAXWS.exceptionToFaultMessage(ex);
+ CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+ if (msgContext != null)
+ {
+ msgContext.setSOAPMessage(faultMessage);
+ }
+ else
+ {
+ log.warn("Cannot set fault message in message context");
+ }
+ }
+
public List<Handler> getHandlerChain()
{
return delegate.getHandlerChain();
Modified: trunk/src/main/java/org/jboss/ws/core/jaxws/binding/SOAP11BindingJAXWS.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/jaxws/binding/SOAP11BindingJAXWS.java 2006-12-14
18:49:44 UTC (rev 1654)
+++ trunk/src/main/java/org/jboss/ws/core/jaxws/binding/SOAP11BindingJAXWS.java 2006-12-15
10:05:17 UTC (rev 1655)
@@ -96,18 +96,16 @@
delegate.setHandlerChain(handlerChain);
}
- @Override
+ public SOAPMessage createFaultMessageFromException(Exception ex)
+ {
+ return SOAPFaultHelperJAXWS.exceptionToFaultMessage(ex);
+ }
+
protected void throwFaultException(SOAPFaultImpl fault) throws Exception
{
throw SOAPFaultHelperJAXWS.getSOAPFaultException(fault);
}
- @Override
- public SOAPMessage exceptionToFaultMessage(Exception ex)
- {
- return SOAPFaultHelperJAXWS.exceptionToFaultMessage(ex);
- }
-
public String getBindingID()
{
throw new NotImplementedException();
Modified: trunk/src/main/java/org/jboss/ws/core/jaxws/binding/SOAP12BindingJAXWS.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/jaxws/binding/SOAP12BindingJAXWS.java 2006-12-14
18:49:44 UTC (rev 1654)
+++ trunk/src/main/java/org/jboss/ws/core/jaxws/binding/SOAP12BindingJAXWS.java 2006-12-15
10:05:17 UTC (rev 1655)
@@ -34,8 +34,10 @@
import javax.xml.ws.soap.SOAPBinding;
import org.jboss.util.NotImplementedException;
+import org.jboss.ws.core.CommonMessageContext;
import org.jboss.ws.core.CommonSOAP12Binding;
import org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS;
+import org.jboss.ws.core.soap.MessageContextAssociation;
import org.jboss.ws.core.soap.SOAPFaultImpl;
import org.jboss.ws.metadata.umdm.OperationMetaData;
import org.jboss.ws.metadata.umdm.HandlerMetaData.HandlerType;
@@ -103,18 +105,16 @@
delegate.setHandlerChain(handlerChain);
}
- @Override
+ public SOAPMessage createFaultMessageFromException(Exception ex)
+ {
+ return SOAPFaultHelperJAXWS.exceptionToFaultMessage(ex);
+ }
+
protected void throwFaultException(SOAPFaultImpl fault) throws Exception
{
throw SOAPFaultHelperJAXWS.getSOAPFaultException(fault);
}
- @Override
- public SOAPMessage exceptionToFaultMessage(Exception ex)
- {
- return SOAPFaultHelperJAXWS.exceptionToFaultMessage(ex);
- }
-
public String getBindingID()
{
throw new NotImplementedException();
Modified:
trunk/src/main/java/org/jboss/ws/core/server/AbstractServiceEndpointInvoker.java
===================================================================
---
trunk/src/main/java/org/jboss/ws/core/server/AbstractServiceEndpointInvoker.java 2006-12-14
18:49:44 UTC (rev 1654)
+++
trunk/src/main/java/org/jboss/ws/core/server/AbstractServiceEndpointInvoker.java 2006-12-15
10:05:17 UTC (rev 1655)
@@ -197,10 +197,9 @@
{
try
{
- CommonSOAPBinding soapBinding =
(CommonSOAPBinding)bindingProvider.getCommonBinding();
- SOAPMessage faultMessage = soapBinding.exceptionToFaultMessage(ex);
- msgContext.setSOAPMessage(faultMessage);
-
+ CommonBinding binding = bindingProvider.getCommonBinding();
+ binding.bindFaultMessage(ex);
+
// call the handler chain
boolean handlersPass = callFaultHandlerChain(seInfo, HandlerType.POST, ex);
handlersPass = handlersPass && callFaultHandlerChain(seInfo,
HandlerType.ENDPOINT, ex);
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-14 18:49:44
UTC (rev 1654)
+++ trunk/src/main/java/org/jboss/ws/core/server/ServiceEndpoint.java 2006-12-15 10:05:17
UTC (rev 1655)
@@ -38,9 +38,9 @@
import org.jboss.logging.Logger;
import org.jboss.ws.Constants;
+import org.jboss.ws.core.CommonBinding;
import org.jboss.ws.core.CommonBindingProvider;
import org.jboss.ws.core.CommonMessageContext;
-import org.jboss.ws.core.CommonSOAPBinding;
import org.jboss.ws.core.jaxrpc.binding.BindingException;
import org.jboss.ws.core.soap.MessageContextAssociation;
import org.jboss.ws.core.soap.MessageFactoryImpl;
@@ -215,10 +215,8 @@
if (resMessage == null || ((SOAPMessageImpl)resMessage).isFaultMessage() ==
false)
{
CommonBindingProvider bindingProvider = getCommonBindingProvider();
- CommonSOAPBinding soapBinding =
(CommonSOAPBinding)bindingProvider.getCommonBinding();
-
- resMessage = soapBinding.exceptionToFaultMessage(ex);
- msgContext.setSOAPMessage(resMessage);
+ CommonBinding binding = bindingProvider.getCommonBinding();
+ binding.bindFaultMessage(ex);
}
postProcessResponse(headerSource, resMessage);
Modified: trunk/src/main/java/org/jboss/ws/core/soap/JAXWSPayloadBuilder.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/soap/JAXWSPayloadBuilder.java 2006-12-14
18:49:44 UTC (rev 1654)
+++ trunk/src/main/java/org/jboss/ws/core/soap/JAXWSPayloadBuilder.java 2006-12-15
10:05:17 UTC (rev 1655)
@@ -23,7 +23,6 @@
//$Id$
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
@@ -32,7 +31,7 @@
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
-import javax.xml.transform.stream.StreamSource;
+import javax.xml.transform.dom.DOMSource;
import org.jboss.ws.core.utils.DOMUtils;
import org.jboss.ws.core.utils.DOMWriter;
@@ -105,8 +104,7 @@
if (itBody.hasNext())
{
Element domBodyElement = (Element)itBody.next();
- String xmlStr = DOMWriter.printNode(domBodyElement, false);
- soapBody.setPayload(new StreamSource(new
ByteArrayInputStream(xmlStr.getBytes())));
+ soapBody.setPayload(new DOMSource(domBodyElement));
}
}
}
Modified: trunk/src/main/java/org/jboss/ws/core/soap/SOAPBodyImpl.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/soap/SOAPBodyImpl.java 2006-12-14 18:49:44 UTC
(rev 1654)
+++ trunk/src/main/java/org/jboss/ws/core/soap/SOAPBodyImpl.java 2006-12-15 10:05:17 UTC
(rev 1655)
@@ -433,7 +433,7 @@
{
Element child = getBodyElementFromSource();
String xmlPayload = DOMWriter.printNode(child, false);
- log.debug("Content from payload: " + xmlPayload);
+ log.debug("writeElementContent from payload: " + xmlPayload);
writer.write(xmlPayload);
}
else
Modified: trunk/src/test/build.xml
===================================================================
--- trunk/src/test/build.xml 2006-12-14 18:49:44 UTC (rev 1654)
+++ trunk/src/test/build.xml 2006-12-15 10:05:17 UTC (rev 1655)
@@ -156,8 +156,6 @@
<pathelement location="${jboss.client}/jaxb-api.jar"/>
<pathelement location="${jboss.client}/jaxb-impl.jar"/>
<pathelement location="${jboss.client}/jbossall-client.jar"/>
- <pathelement location="${jboss.client}/jbossretro-rt.jar"/>
- <pathelement
location="${jboss.client}/jboss-backport-concurrent.jar"/>
<pathelement location="${jboss.client}/jboss-common-core.jar"/>
<pathelement location="${jboss.client}/jboss-xml-binding.jar"/>
<pathelement location="${jboss.client}/jboss-logging-spi.jar"/>
@@ -168,6 +166,7 @@
<pathelement location="${jboss.client}/jboss-saaj.jar"/>
<pathelement location="${jboss.client}/log4j.jar"/>
<pathelement location="${jboss.client}/mail.jar"/>
+ <pathelement location="${jboss.lib}/jboss-container.jar"/>
<pathelement location="${jboss.server.lib}/jbosssx.jar"/>
</path>