Author: jliu
Date: Wed Aug  1 00:00:47 2007
New Revision: 561680

URL: http://svn.apache.org/viewvc?view=rev&rev=561680
Log:
Move the invocation of actually object to a separate method, this makes it 
easier to override the invocation while still be able to reuse other 
functionalities in AbstractInvoker and JAXWSMethodInvoker. Below is the comment 
from Bharath: "In a J2EE container model, when the Endpoint has no SEI(no 
interface), the container would like to give some crude object, which might be 
like an InvocationHandler, this crude object's invoke method would have the 
logic to the actual invocation on the POJO. So this Object would not contain 
the actual which CXF is supposed to invoke, instead it would act like a 
dispatcher, which would have an invoke() method, which internally takes care of 
maintaining the POJO Instance and performing the invocation"

Modified:
    
incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/invoker/AbstractInvoker.java

Modified: 
incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/invoker/AbstractInvoker.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/invoker/AbstractInvoker.java?view=diff&rev=561680&r1=561679&r2=561680
==============================================================================
--- 
incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/invoker/AbstractInvoker.java
 (original)
+++ 
incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/invoker/AbstractInvoker.java
 Wed Aug  1 00:00:47 2007
@@ -70,9 +70,8 @@
                 paramArray = params.toArray();
             }
             
-            paramArray = insertExchange(m, paramArray, exchange);
+            res = performInvocation(exchange, serviceObject, m, paramArray);
             
-            res = m.invoke(serviceObject, paramArray);
             if (exchange.isOneWay()) {
                 return null;
             }
@@ -92,6 +91,12 @@
             exchange.getInMessage().put(FaultMode.class, 
FaultMode.UNCHECKED_APPLICATION_FAULT);
             throw new Fault(e);
         }
+    }
+    
+    protected Object performInvocation(Exchange exchange, final Object 
serviceObject, Method m,
+                                       Object[] paramArray) throws Exception {
+        paramArray = insertExchange(m, paramArray, exchange);
+        return m.invoke(serviceObject, paramArray);
     }
 
     public Object[] insertExchange(Method method, Object[] params, Exchange 
context) {


Reply via email to