Author: scheu
Date: Mon Nov  1 19:20:54 2010
New Revision: 1029796

URL: http://svn.apache.org/viewvc?rev=1029796&view=rev
Log:
AXIS2-4844
Contributor: Rich Scheuerle & Doug Larson
Summary:
Reshuffled some of the DispatchPhase logic to reduce the number of map accesses.

Modified:
    
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java

Modified: 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java?rev=1029796&r1=1029795&r2=1029796&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
 Mon Nov  1 19:20:54 2010
@@ -57,6 +57,19 @@ public class DispatchPhase extends Phase
     public DispatchPhase(String phaseName) {
         super(phaseName);
     }
+    
+    
+    private Boolean getDisableAck(MessageContext msgContext) throws AxisFault {
+    
+       // We should send an early ack to the transport whever possible, but 
some modules need
+       // to use the backchannel, so we need to check if they have disabled 
this code.
+       Boolean disableAck = (Boolean) 
msgContext.getProperty(Constants.Configuration.DISABLE_RESPONSE_ACK);
+       if(disableAck == null) {
+          disableAck = (Boolean) (msgContext.getAxisService() != null ? 
msgContext.getAxisService().getParameterValue(Constants.Configuration.DISABLE_RESPONSE_ACK)
 : null);
+       }    
+       
+       return disableAck;
+    }
 
     public void checkPostConditions(MessageContext msgContext) throws 
AxisFault {
         EndpointReference toEPR = msgContext.getTo();
@@ -118,33 +131,39 @@ public class DispatchPhase extends Phase
 
         // We should send an early ack to the transport whever possible, but 
some modules need
         // to use the backchannel, so we need to check if they have disabled 
this code.
-        Boolean disableAck = (Boolean) 
msgContext.getProperty(Constants.Configuration.DISABLE_RESPONSE_ACK);
-        if(disableAck == null) {
-            disableAck = (Boolean) (msgContext.getAxisService() != null ? 
-                    
msgContext.getAxisService().getParameterValue(Constants.Configuration.DISABLE_RESPONSE_ACK)
 : null);
-        }
-        
-        if(disableAck == null || disableAck.booleanValue() == false) {
-               String mepString = 
msgContext.getAxisOperation().getMessageExchangePattern();
-               if (isOneway(mepString)) {
-                   Object requestResponseTransport =
-                           
msgContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
-                   if (requestResponseTransport != null) {
-                       ((RequestResponseTransport) 
requestResponseTransport).acknowledgeMessage(msgContext);
-                   }
-               } else if (mepString.equals(WSDL20_2006Constants.MEP_URI_IN_OUT)
-                       || 
mepString.equals(WSDL20_2004_Constants.MEP_URI_IN_OUT)
-                       || mepString.equals(WSDL2Constants.MEP_URI_IN_OUT)) { 
// OR, if 2 way operation but the response is intended to not use the response 
channel of a 2-way transport
-                   // then we don't need to keep the transport waiting.
-                   Object requestResponseTransport =
-                           
msgContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
-                   if (requestResponseTransport != null) {
-                       if (AddressingHelper.isReplyRedirected(msgContext)
-                               && 
AddressingHelper.isFaultRedirected(msgContext)) {
-                           ((RequestResponseTransport) 
requestResponseTransport).acknowledgeMessage(msgContext);
-                       }
-                   }
-               }        
+        String mepString = 
msgContext.getAxisOperation().getMessageExchangePattern();
+
+        if (isOneway(mepString)) {
+            Object requestResponseTransport = 
msgContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
+            if (requestResponseTransport != null) {
+
+                Boolean disableAck = getDisableAck(msgContext);                
    
+                if (disableAck == null || disableAck.booleanValue() == false) {
+                    ((RequestResponseTransport) 
requestResponseTransport).acknowledgeMessage(msgContext);
+                }
+            }
+        } else if (AddressingHelper.isReplyRedirected(msgContext) && 
AddressingHelper.isFaultRedirected(msgContext)) {
+
+
+            if (mepString.equals(WSDL20_2006Constants.MEP_URI_IN_OUT)
+                    || mepString.equals(WSDL20_2004_Constants.MEP_URI_IN_OUT)
+                    || mepString.equals(WSDL2Constants.MEP_URI_IN_OUT)) { 
+                // OR, if 2 way operation but the response is intended to not 
use the response channel of a 2-way transport
+                // then we don't need to keep the transport waiting.
+
+                Object requestResponseTransport = 
msgContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
+                if (requestResponseTransport != null) {
+
+                    // We should send an early ack to the transport whever 
possible, but some modules need
+                    // to use the backchannel, so we need to check if they 
have disabled this code.
+                    Boolean disableAck = getDisableAck(msgContext);
+
+                    if (disableAck == null || disableAck.booleanValue() == 
false) {
+                        ((RequestResponseTransport) 
requestResponseTransport).acknowledgeMessage(msgContext);
+                    }
+                    
+                }
+            }        
         }
         
 
@@ -244,47 +263,49 @@ public class DispatchPhase extends Phase
      */
     private void validateBindings(MessageContext msgctx) throws AxisFault {
         
-        AxisService service = msgctx.getAxisService();
-        
-        boolean disableREST = false;
-        Parameter disableRESTParameter = service
-                        
.getParameter(org.apache.axis2.Constants.Configuration.DISABLE_REST);
-        if (disableRESTParameter != null
-                        && 
JavaUtils.isTrueExplicitly(disableRESTParameter.getValue())) {
-                disableREST = true;
-        }
-        
-        boolean disableSOAP11 = false;
-        Parameter disableSOAP11Parameter = service
-                        
.getParameter(org.apache.axis2.Constants.Configuration.DISABLE_SOAP11);
-        if (disableSOAP11Parameter != null
-                        && 
JavaUtils.isTrueExplicitly(disableSOAP11Parameter.getValue())) {
-                disableSOAP11 = true;
-        }
-
-        boolean disableSOAP12 = false;
-        Parameter disableSOAP12Parameter = service
-                        
.getParameter(org.apache.axis2.Constants.Configuration.DISABLE_SOAP12);
-        if (disableSOAP12Parameter != null
-                        && JavaUtils
-                                        
.isTrueExplicitly(disableSOAP12Parameter.getValue())) {
-                disableSOAP12 = true;
-        }
-        
+        AxisService service = msgctx.getAxisService();        
+   
         if (msgctx.isDoingREST()) {
+            
+            boolean disableREST = false;
+            Parameter disableRESTParameter = service
+                            
.getParameter(org.apache.axis2.Constants.Configuration.DISABLE_REST);
+            if (disableRESTParameter != null
+                            && 
JavaUtils.isTrueExplicitly(disableRESTParameter.getValue())) {
+                    disableREST = true;
+            }         
+            
             if (disableREST) {
                 throw new 
AxisFault(Messages.getMessage("bindingDisabled","Http"));
             }
         } else if (msgctx.isSOAP11()) {
+
+            boolean disableSOAP11 = false;
+            Parameter disableSOAP11Parameter = service
+                            
.getParameter(org.apache.axis2.Constants.Configuration.DISABLE_SOAP11);
+            if (disableSOAP11Parameter != null
+                            && 
JavaUtils.isTrueExplicitly(disableSOAP11Parameter.getValue())) {
+                    disableSOAP11 = true;
+            }         
+         
             if (disableSOAP11) {
                 throw new 
AxisFault(Messages.getMessage("bindingDisabled","SOAP11"));
             }
         } else {
+         
+            boolean disableSOAP12 = false;
+            Parameter disableSOAP12Parameter = service
+                            
.getParameter(org.apache.axis2.Constants.Configuration.DISABLE_SOAP12);
+            if (disableSOAP12Parameter != null
+                            && JavaUtils
+                                            
.isTrueExplicitly(disableSOAP12Parameter.getValue())) {
+                    disableSOAP12 = true;
+            }         
+         
             if(disableSOAP12) {
                 throw new 
AxisFault(Messages.getMessage("bindingDisabled","SOAP12"));  
             }
         }
-        
     }
 
     private void fillContextsFromSessionContext(MessageContext msgContext) 
throws AxisFault {
@@ -361,4 +382,4 @@ public class DispatchPhase extends Phase
                 || mepString.equals(WSDL2Constants.MEP_URI_IN_ONLY));
     }
 
-}
+}
\ No newline at end of file


Reply via email to