You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by na...@apache.org on 2008/11/04 16:28:03 UTC

svn commit: r711272 - /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java

Author: nandana
Date: Tue Nov  4 07:28:03 2008
New Revision: 711272

URL: http://svn.apache.org/viewvc?rev=711272&view=rev
Log:
AXIS2-4114 Applying the patch. Thanks Dobri.

Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java?rev=711272&r1=711271&r2=711272&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java Tue Nov  4 07:28:03 2008
@@ -38,7 +38,10 @@
 import org.apache.axis2.context.externalize.SafeObjectInputStream;
 import org.apache.axis2.context.externalize.SafeObjectOutputStream;
 import org.apache.axis2.context.externalize.SafeSerializable;
+import org.apache.axis2.description.AxisBinding;
 import org.apache.axis2.description.AxisBindingMessage;
+import org.apache.axis2.description.AxisBindingOperation;
+import org.apache.axis2.description.AxisEndpoint;
 import org.apache.axis2.description.AxisMessage;
 import org.apache.axis2.description.AxisModule;
 import org.apache.axis2.description.AxisOperation;
@@ -57,6 +60,8 @@
 import org.apache.axis2.util.LoggingControl;
 import org.apache.axis2.util.MetaDataEntry;
 import org.apache.axis2.util.SelfManagedDataHolder;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.axis2.wsdl.WSDLUtil;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.neethi.Policy;
@@ -1571,16 +1576,56 @@
         AxisBindingMessage bindingMessage = 
         	(AxisBindingMessage) getProperty(Constants.AXIS_BINDING_MESSAGE);
         
+        // If AxisBindingMessage is not set, try to find the binding message from the AxisService
+        if (bindingMessage == null) {
+        	bindingMessage = findBindingMessage();
+        } 
+        
         if (bindingMessage != null) {
-        	return bindingMessage.getEffectivePolicy();
-        } else {
-        	if (axisMessage != null) {
+            return bindingMessage.getEffectivePolicy();
+        // If we can't find the AxisBindingMessage, then try the AxisMessage   
+        } else if (axisMessage != null) {
         		return axisMessage.getEffectivePolicy();        		
-        	} else {
+        } else {
         		return null;
-        	}
         }
     }
+ 
+    private AxisBindingMessage findBindingMessage() {
+    	if (axisService != null) {
+			if (axisService.getEndpointName() != null) {
+				AxisEndpoint axisEndpoint = axisService
+						.getEndpoint(axisService.getEndpointName());
+				if (axisEndpoint != null) {
+					AxisBinding axisBinding = axisEndpoint.getBinding();
+					AxisBindingOperation axisBindingOperation = (AxisBindingOperation) axisBinding
+							.getChild(axisOperation.getName());
+					String direction = axisMessage.getDirection();
+					AxisBindingMessage axisBindingMessage = null;
+					if (WSDLConstants.WSDL_MESSAGE_DIRECTION_IN
+							.equals(direction)
+							&& WSDLUtil
+									.isInputPresentForMEP(axisOperation
+											.getMessageExchangePattern())) {
+						axisBindingMessage = (AxisBindingMessage) axisBindingOperation
+								.getChild(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+						return axisBindingMessage;
+						
+					} else if (WSDLConstants.WSDL_MESSAGE_DIRECTION_OUT
+							.equals(direction)
+							&& WSDLUtil
+									.isOutputPresentForMEP(axisOperation
+											.getMessageExchangePattern())) {
+						axisBindingMessage = (AxisBindingMessage) axisBindingOperation
+								.getChild(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+						return axisBindingMessage;
+					}
+				}
+
+			}
+		}
+    	return null;
+    }
 
 
     public boolean isEngaged(String moduleName) {