You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by jl...@apache.org on 2007/06/27 12:01:08 UTC

svn commit: r551112 - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/phase/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/ rt/frontend/jaxws/src/main/java/org/apach...

Author: jliu
Date: Wed Jun 27 03:01:07 2007
New Revision: 551112

URL: http://svn.apache.org/viewvc?view=rev&rev=551112
Log:
Refactor Dispatch inbound/outbound chain to use same logical/soap handler interceptor, easier to read.

Added:
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerInterceptor.java
      - copied, changed from r551017, incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerOutInterceptor.java
Removed:
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerOutInterceptor.java
Modified:
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/DispatchSOAPHandlerInterceptor.java

Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java?view=diff&rev=551112&r1=551111&r2=551112
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java Wed Jun 27 03:01:07 2007
@@ -73,10 +73,10 @@
         return phase;
     }
 
-    /**
-     * @deprecated Pass the phase into the constructor.  This method will 
-     * be removed shortly
-     * @param p
+    /*
+     * REVISIT: Not sure why this was deprecated, need to reset Phase especially
+     * when same interceptor is added into inbound and outbound chain, thus need
+     * different Phases.
      */
     public void setPhase(String p) {
         this.phase = p;

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java?view=diff&rev=551112&r1=551111&r2=551112
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java Wed Jun 27 03:01:07 2007
@@ -59,10 +59,8 @@
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.interceptor.Interceptor;
 import org.apache.cxf.interceptor.MessageSenderInterceptor;
-import org.apache.cxf.jaxws.handler.logical.DispatchLogicalHandlerOutInterceptor;
-import org.apache.cxf.jaxws.handler.logical.LogicalHandlerInInterceptor;
+import org.apache.cxf.jaxws.handler.logical.DispatchLogicalHandlerInterceptor;
 import org.apache.cxf.jaxws.handler.soap.DispatchSOAPHandlerInterceptor;
-import org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor;
 import org.apache.cxf.jaxws.interceptors.DispatchInInterceptor;
 import org.apache.cxf.jaxws.interceptors.DispatchOutInterceptor;
 import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
@@ -70,6 +68,7 @@
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.ExchangeImpl;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.Phase;
 import org.apache.cxf.phase.PhaseInterceptorChain;
 import org.apache.cxf.phase.PhaseManager;
 import org.apache.cxf.transport.MessageObserver;
@@ -242,7 +241,7 @@
             } else {
                 // TODO: what for non soap bindings?
             }       
-            chain.add(new DispatchLogicalHandlerOutInterceptor(jaxwsBinding));
+            chain.add(new DispatchLogicalHandlerInterceptor(jaxwsBinding));
         }   
         
         chain.add(new MessageSenderInterceptor());
@@ -270,9 +269,11 @@
         if (endpoint instanceof JaxWsEndpointImpl) {
             Binding jaxwsBinding = ((JaxWsEndpointImpl)endpoint).getJaxwsBinding();
             if (endpoint.getBinding() instanceof SoapBinding) {
-                chain.add(new SOAPHandlerInterceptor(jaxwsBinding));
+                chain.add(new DispatchSOAPHandlerInterceptor(jaxwsBinding));
             }      
-            chain.add(new LogicalHandlerInInterceptor(jaxwsBinding));
+            DispatchLogicalHandlerInterceptor slhi = new DispatchLogicalHandlerInterceptor(jaxwsBinding);
+            slhi.setPhase(Phase.USER_LOGICAL);            
+            chain.add(slhi);
         }           
 
         List<Interceptor> inInterceptors = new ArrayList<Interceptor>();

Copied: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerInterceptor.java (from r551017, incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerOutInterceptor.java)
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerInterceptor.java?view=diff&rev=551112&p1=incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerOutInterceptor.java&r1=551017&p2=incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerInterceptor.java&r2=551112
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerOutInterceptor.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerInterceptor.java Wed Jun 27 03:01:07 2007
@@ -32,10 +32,10 @@
 import org.apache.cxf.transport.MessageObserver;
 
 
-public class DispatchLogicalHandlerOutInterceptor<T extends Message> 
+public class DispatchLogicalHandlerInterceptor<T extends Message> 
     extends AbstractJAXWSHandlerInterceptor<T> {
      
-    public DispatchLogicalHandlerOutInterceptor(Binding binding) {
+    public DispatchLogicalHandlerInterceptor(Binding binding) {
         super(binding, Phase.PRE_MARSHAL);
     }
     
@@ -52,22 +52,31 @@
         ContextPropertiesMapping.mapCxf2Jaxws(message.getExchange(), lctx, requestor);          
         
         if (!invoker.invokeLogicalHandlers(requestor, lctx) && requestor) {
-            // client side - abort
-            message.getInterceptorChain().abort();
-            Endpoint e = message.getExchange().get(Endpoint.class);
-            Message responseMsg = e.getBinding().createMessage();
+            if (isOutbound(message)) {
+                // client side outbound - the request message becomes the
+                // response message
+                message.getInterceptorChain().abort();
+                Endpoint e = message.getExchange().get(Endpoint.class);
+                Message responseMsg = e.getBinding().createMessage();
 
-            MessageObserver observer = (MessageObserver)message.getExchange().get(MessageObserver.class);
-            if (observer != null) {
-                //client side outbound, the request message becomes the response message
-                responseMsg.setContent(XMLStreamReader.class, message.getContent(XMLStreamReader.class));
+                MessageObserver observer = (MessageObserver)message.getExchange().get(MessageObserver.class);
+                if (observer != null) {
+                    responseMsg.setContent(XMLStreamReader.class, message.getContent(XMLStreamReader.class));
 
-                message.getExchange().setInMessage(responseMsg);
-                responseMsg.put(PhaseInterceptorChain.STARTING_AT_INTERCEPTOR_ID,
-                                LogicalHandlerInInterceptor.class.getName());
-                observer.onMessage(responseMsg);
+                    message.getExchange().setInMessage(responseMsg);
+                    responseMsg.put(PhaseInterceptorChain.STARTING_AT_INTERCEPTOR_ID,
+                                    LogicalHandlerInInterceptor.class.getName());
+                    observer.onMessage(responseMsg);
+                }
+            } else {
+                //Client side inbound, thus no response expected, do nothing, the close will  
+                //be handled by MEPComplete later
             }
-
+        }
+        
+        //If this is the inbound and end of MEP, call MEP completion
+        if (!isOutbound(message) && isMEPComlete(message)) {
+            onCompletion(message);
         }
     }
 }

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/DispatchSOAPHandlerInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/DispatchSOAPHandlerInterceptor.java?view=diff&rev=551112&r1=551111&r2=551112
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/DispatchSOAPHandlerInterceptor.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/DispatchSOAPHandlerInterceptor.java Wed Jun 27 03:01:07 2007
@@ -119,7 +119,6 @@
                 // stops, but the inbound interceptor chain still continues, dispatch the message
                 //By onCompletion here, we can skip following Logical handlers 
                 onCompletion(message);
-                //System.out.println("SOAP Handler handleMessage returns false on client inbound, aborting");
             }
         }
     }