[jbossws-commits] JBossWS SVN: r4357 - stack/native/trunk/src/main/java/org/jboss/ws/core/server.

jbossws-commits at lists.jboss.org jbossws-commits at lists.jboss.org
Tue Aug 14 06:18:48 EDT 2007


Author: thomas.diesler at jboss.com
Date: 2007-08-14 06:18:48 -0400 (Tue, 14 Aug 2007)
New Revision: 4357

Modified:
   stack/native/trunk/src/main/java/org/jboss/ws/core/server/ServiceEndpointInvoker.java
Log:
[JBWS-1670] SunRI client does not throw UserException. Do not unwrap InvocationTargetException

Modified: stack/native/trunk/src/main/java/org/jboss/ws/core/server/ServiceEndpointInvoker.java
===================================================================
--- stack/native/trunk/src/main/java/org/jboss/ws/core/server/ServiceEndpointInvoker.java	2007-08-14 10:09:19 UTC (rev 4356)
+++ stack/native/trunk/src/main/java/org/jboss/ws/core/server/ServiceEndpointInvoker.java	2007-08-14 10:18:48 UTC (rev 4357)
@@ -23,9 +23,33 @@
 
 // $Id$
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.UndeclaredThrowableException;
+import java.util.HashMap;
+
+import javax.activation.DataHandler;
+import javax.xml.namespace.QName;
+import javax.xml.rpc.server.ServiceLifecycle;
+import javax.xml.rpc.server.ServletEndpointContext;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPBodyElement;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.ws.WebServiceContext;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.http.HTTPBinding;
+
 import org.jboss.logging.Logger;
 import org.jboss.ws.Constants;
-import org.jboss.ws.core.*;
+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.CommonSOAPFaultException;
+import org.jboss.ws.core.DirectionHolder;
+import org.jboss.ws.core.EndpointInvocation;
+import org.jboss.ws.core.MessageAbstraction;
 import org.jboss.ws.core.DirectionHolder.Direction;
 import org.jboss.ws.core.jaxrpc.ServletEndpointContextImpl;
 import org.jboss.ws.core.jaxrpc.handler.HandlerDelegateJAXRPC;
@@ -45,25 +69,15 @@
 import org.jboss.wsf.common.JavaUtils;
 import org.jboss.wsf.spi.SPIProvider;
 import org.jboss.wsf.spi.SPIProviderResolver;
+import org.jboss.wsf.spi.deployment.Endpoint;
 import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
-import org.jboss.wsf.spi.deployment.Endpoint;
-import org.jboss.wsf.spi.invocation.*;
+import org.jboss.wsf.spi.invocation.Invocation;
+import org.jboss.wsf.spi.invocation.InvocationContext;
+import org.jboss.wsf.spi.invocation.InvocationHandler;
+import org.jboss.wsf.spi.invocation.InvocationType;
+import org.jboss.wsf.spi.invocation.WebServiceContextFactory;
 import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData.HandlerType;
 
-import javax.activation.DataHandler;
-import javax.xml.namespace.QName;
-import javax.xml.rpc.server.ServiceLifecycle;
-import javax.xml.rpc.server.ServletEndpointContext;
-import javax.xml.soap.Name;
-import javax.xml.soap.SOAPBodyElement;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPHeader;
-import javax.xml.ws.WebServiceContext;
-import javax.xml.ws.handler.MessageContext;
-import javax.xml.ws.http.HTTPBinding;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-
 /** An implementation handles invocations on the endpoint
  *
  * @author Thomas.Diesler at jboss.org
@@ -192,8 +206,18 @@
                // Invoke an instance of the SEI implementation bean 
                Invocation inv = setupInvocation(endpoint, sepInv, invContext);
                InvocationHandler invHandler = endpoint.getInvocationHandler();
-               invHandler.invoke(endpoint, inv);
 
+               try
+               {
+                  invHandler.invoke(endpoint, inv);
+               }
+               catch (InvocationTargetException th)
+               {
+                  // Unwrap the throwable raised by the service endpoint implementation
+                  Throwable targetEx = ((InvocationTargetException)th).getTargetException();
+                  throw (targetEx instanceof Exception ? (Exception)targetEx : new UndeclaredThrowableException(targetEx));
+               }
+
                // Handler processing might have replaced the endpoint invocation
                sepInv = inv.getInvocationContext().getAttachment(EndpointInvocation.class);
             }
@@ -279,16 +303,14 @@
             if (msgContext.get(MessageContext.SERVLET_REQUEST) != null)
             {
                SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
-               wsContext = spiProvider.getSPI(WebServiceContextFactory.class).newWebServiceContext(
-                 InvocationType.JAXWS_JSE, (SOAPMessageContextJAXWS)msgContext
-               );
+               wsContext = spiProvider.getSPI(WebServiceContextFactory.class).newWebServiceContext(InvocationType.JAXWS_JSE, (SOAPMessageContextJAXWS)msgContext);
             }
             else
             {
                // TODO: This is an ESB case, they require a custom MessageContext
                // that works independed of MessageContext.SERVLET_REQUEST
-               throw new IllegalArgumentException("JBOSS-ESB? The current WebServiceContext impl. relies on HTTP.ServletRequest"+
-               "You should provide a custom spi.invocation.InvocationHandlerFactory");
+               throw new IllegalArgumentException("JBOSS-ESB? The current WebServiceContext impl. relies on HTTP.ServletRequest"
+                     + "You should provide a custom spi.invocation.InvocationHandlerFactory");
             }
             invContext.addAttachment(WebServiceContext.class, wsContext);
          }




More information about the jbossws-commits mailing list