You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2008/09/30 01:57:49 UTC

svn commit: r700309 - /geronimo/server/trunk/plugins/cxf/geronimo-cxf-ejb/src/main/java/org/apache/geronimo/cxf/ejb/EJBMethodInvoker.java

Author: gawor
Date: Mon Sep 29 16:57:48 2008
New Revision: 700309

URL: http://svn.apache.org/viewvc?rev=700309&view=rev
Log:
switch to AbstractJAXWSMethodInvoker to reuse more code

Modified:
    geronimo/server/trunk/plugins/cxf/geronimo-cxf-ejb/src/main/java/org/apache/geronimo/cxf/ejb/EJBMethodInvoker.java

Modified: geronimo/server/trunk/plugins/cxf/geronimo-cxf-ejb/src/main/java/org/apache/geronimo/cxf/ejb/EJBMethodInvoker.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/cxf/geronimo-cxf-ejb/src/main/java/org/apache/geronimo/cxf/ejb/EJBMethodInvoker.java?rev=700309&r1=700308&r2=700309&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/cxf/geronimo-cxf-ejb/src/main/java/org/apache/geronimo/cxf/ejb/EJBMethodInvoker.java (original)
+++ geronimo/server/trunk/plugins/cxf/geronimo-cxf-ejb/src/main/java/org/apache/geronimo/cxf/ejb/EJBMethodInvoker.java Mon Sep 29 16:57:48 2008
@@ -21,34 +21,37 @@
 
 import java.lang.reflect.Method;
 import java.util.List;
+import java.util.Map;
 
 import javax.interceptor.InvocationContext;
-import javax.xml.ws.handler.MessageContext;
 import javax.xml.ws.handler.MessageContext.Scope;
-import javax.xml.ws.soap.SOAPFaultException;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.cxf.Bus;
-import org.apache.cxf.binding.soap.SoapFault;
 import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker;
 import org.apache.cxf.jaxws.context.WebServiceContextImpl;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.FaultMode;
 import org.apache.cxf.message.MessageContentsList;
-import org.apache.cxf.service.invoker.AbstractInvoker;
+import org.apache.cxf.service.invoker.Factory;
 import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.RpcContainer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-public class EJBMethodInvoker extends AbstractInvoker {
+public class EJBMethodInvoker extends AbstractJAXWSMethodInvoker {
 
     private static final Logger LOG = LoggerFactory.getLogger(EJBMethodInvoker.class);
     
+    private static final String HANDLER_PROPERTIES = 
+            "HandlerProperties";
+    
     private DeploymentInfo deploymentInfo;
     private Bus bus;
     private EJBEndpoint endpoint;
 
     public EJBMethodInvoker(EJBEndpoint endpoint, Bus bus, DeploymentInfo deploymentInfo) {
+        super((Factory)null);
         this.endpoint = endpoint;
         this.bus = bus;
         this.deploymentInfo = deploymentInfo;
@@ -63,32 +66,6 @@
     public void releaseServiceObject(Exchange ex, Object obj) {
         // do nothing
     }
-
-    private SOAPFaultException findSoapFaultException(Throwable ex) {
-        if (ex instanceof SOAPFaultException) {
-            return (SOAPFaultException)ex;
-        }
-        if (ex.getCause() != null) {
-            return findSoapFaultException(ex.getCause());
-        }
-        return null;
-    }
-    
-    @Override
-    protected Fault createFault(Throwable ex, Method m, List<Object> params, boolean checked) {
-        //map the JAX-WS faults
-        SOAPFaultException sfe = findSoapFaultException(ex);
-        if (sfe != null) {
-            SoapFault fault = new SoapFault(sfe.getFault().getFaultString(),
-                                            ex,
-                                            sfe.getFault().getFaultCodeAsQName());
-            fault.setRole(sfe.getFault().getFaultActor());
-            fault.setDetail(sfe.getFault().getDetail());
-            
-            return fault;
-        }
-        return super.createFault(ex, m, params, checked);
-    }
     
     @Override
     protected Object invoke(Exchange exchange, 
@@ -118,9 +95,13 @@
         invContext.setParameters(paramArray);
         Object res = invContext.proceed();
         
-//        ContextPropertiesMapping.updateWebServiceContext(exchange, 
-//                                                         (MessageContext)invContext.getContextData());
-                
+        EJBMessageContext ctx = (EJBMessageContext)invContext.getContextData();
+        
+        Map<String, Object> handlerProperties = (Map<String, Object>)exchange.get(HANDLER_PROPERTIES);
+        addHandlerProperties(ctx, handlerProperties);
+        
+        updateWebServiceContext(exchange, ctx);
+                      
         return res;
     }
     
@@ -129,9 +110,12 @@
                                 Method method, 
                                 List<Object> params) {           
         
-        MessageContext ctx = new EJBMessageContext(exchange.getInMessage(), Scope.APPLICATION);
+        EJBMessageContext ctx = new EJBMessageContext(exchange.getInMessage(), Scope.APPLICATION);
         WebServiceContextImpl.setMessageContext(ctx);
 
+        Map<String, Object> handlerProperties = removeHandlerProperties(ctx);
+        exchange.put(HANDLER_PROPERTIES, handlerProperties);
+        
         try {           
             EJBInterceptor interceptor = new EJBInterceptor(params, method, this.endpoint, this.bus, exchange);
             Object[] arguments = { ctx, interceptor, ctx };