Author: ruchithf
Date: Wed Feb 28 07:45:34 2007
New Revision: 512816

URL: http://svn.apache.org/viewvc?view=rev&rev=512816
Log:
Enable picking up message level policies at the client side

Modified:
    
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
    
webservices/rampart/trunk/java/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java
    
webservices/rampart/trunk/java/modules/rampart-tests/src/test/java/org/apache/rampart/MessageBuilderTestBase.java

Modified: 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java?view=diff&rev=512816&r1=512815&r2=512816
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
 Wed Feb 28 07:45:34 2007
@@ -160,7 +160,24 @@
                 this.secConvVersion = 
TrustUtil.getWSTVersion((String)msgCtx.getProperty(KEY_WSSC_VERSION));
             }
             
+            Parameter clientSideParam = 
msgCtx.getAxisService().getParameter(PARAM_CLIENT_SIDE);
+            if(clientSideParam != null) {
+                this.isInitiator = true;
+            } else {
+                this.isInitiator = !msgCtx.isServerSide();
+                if(this.isInitiator) {
+                    clientSideParam = new Parameter();
+                    clientSideParam.setName(PARAM_CLIENT_SIDE);
+                    clientSideParam.setLocked(true);
+                    msgCtx.getAxisService().addParameter(clientSideParam);
+                }
+            }
+            
             //If the policy is already available in the service, then use it
+            String msgPolicyKey = getMessagePolicyKey(msgCtx);
+            if(msgCtx.getProperty(msgPolicyKey) != null) {
+                this.servicePolicy = (Policy)msgCtx.getProperty(msgPolicyKey);
+            } 
             
             String operationPolicyKey = getOperationPolicyKey(msgCtx);
             if(msgCtx.getProperty(operationPolicyKey) != null) {
@@ -176,18 +193,6 @@
                 this.servicePolicy = 
(Policy)msgCtx.getProperty(KEY_RAMPART_POLICY);
             }
             
-            Parameter clientSideParam = 
msgCtx.getAxisService().getParameter(PARAM_CLIENT_SIDE);
-            if(clientSideParam != null) {
-                this.isInitiator = true;
-            } else {
-                this.isInitiator = !msgCtx.isServerSide();
-                if(this.isInitiator) {
-                    clientSideParam = new Parameter();
-                    clientSideParam.setName(PARAM_CLIENT_SIDE);
-                    clientSideParam.setLocked(true);
-                    msgCtx.getAxisService().addParameter(clientSideParam);
-                }
-            }
             
             /*
              * Init policy:
@@ -195,21 +200,21 @@
              * extract the service policy is set in the msgCtx.
              * If it is missing then try to obtain from the configuration 
files.
              */
+            
             if(this.servicePolicy == null) {
-                if(!this.isInitiator) {
-                    this.servicePolicy = msgCtx.getEffectivePolicy();
-                } else {
-                    Parameter param = 
msgCtx.getParameter(RampartMessageData.KEY_RAMPART_POLICY);
-                    if(param != null) {
-                        OMElement policyElem = 
param.getParameterElement().getFirstElement();
-                        this.servicePolicy = 
PolicyEngine.getPolicy(policyElem);
-                    }
-
-                    //Set the policy in the config ctx
-                    msgCtx.getConfigurationContext().setProperty(
-                            RampartMessageData.getOperationPolicyKey(msgCtx), 
this.servicePolicy);
+                this.servicePolicy = msgCtx.getEffectivePolicy();
+            }
+            
+            if(this.servicePolicy == null) {
+                Parameter param = 
msgCtx.getParameter(RampartMessageData.KEY_RAMPART_POLICY);
+                if(param != null) {
+                    OMElement policyElem = 
param.getParameterElement().getFirstElement();
+                    this.servicePolicy = PolicyEngine.getPolicy(policyElem);
                 }
-                
+
+                //Set the policy in the config ctx
+                msgCtx.getConfigurationContext().setProperty(
+                        RampartMessageData.getServicePolicyKey(msgCtx), 
this.servicePolicy);
             }
             
             if(this.isInitiator && this.servicePolicy != null) {
@@ -581,6 +586,16 @@
         this.servicePolicy = servicePolicy;
     }
     
+    
+    public static String getMessagePolicyKey(MessageContext msgCtx) {
+        if(msgCtx.getAxisOperation() != null) {
+            return createPolicyKey(msgCtx.getAxisService().getName(), 
+                                msgCtx.getAxisOperation().getName(),
+                                msgCtx.getAxisMessage().getName());
+        }
+        return null;
+    }
+    
     /**
      * @param msgCtx
      * @return The key to store/pickup policy of an operation
@@ -588,21 +603,27 @@
     public static String getOperationPolicyKey(MessageContext msgCtx) {
         if(msgCtx.getAxisOperation() != null) {
             return createPolicyKey(msgCtx.getAxisService().getName(), 
-                                msgCtx.getAxisOperation().getName());
+                                msgCtx.getAxisOperation().getName(), null);
             
         }
         return null;
     }
 
     public static String getServicePolicyKey(MessageContext msgCtx) {
-        return  createPolicyKey(msgCtx.getAxisService().getName(), null);
+        return  createPolicyKey(msgCtx.getAxisService().getName(), null, null);
     }
     
-    public static String createPolicyKey(String service, QName operation) {
+    public static String createPolicyKey(String service, QName operation, 
String msg) {
         if(operation != null) {
-            return RampartMessageData.KEY_RAMPART_POLICY + service
+            if(msg != null) {
+                return RampartMessageData.KEY_RAMPART_POLICY + service
+                + "{" + operation.getNamespaceURI() + "}"
+                + operation.getLocalPart() + ":" + msg;
+            } else {
+                return RampartMessageData.KEY_RAMPART_POLICY + service
                     + "{" + operation.getNamespaceURI() + "}"
                     + operation.getLocalPart();
+            }
         } else {
             return RampartMessageData.KEY_RAMPART_POLICY + service;
         }

Modified: 
webservices/rampart/trunk/java/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java?view=diff&rev=512816&r1=512815&r2=512816
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java
 Wed Feb 28 07:45:34 2007
@@ -89,7 +89,7 @@
                 options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, 
                         loadPolicy("/rampart/policy/" + i + ".xml"));
                 serviceClient.setOptions(options);
-
+                
                 //Blocking invocation
                 serviceClient.sendReceive(getEchoElement());
             }

Modified: 
webservices/rampart/trunk/java/modules/rampart-tests/src/test/java/org/apache/rampart/MessageBuilderTestBase.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-tests/src/test/java/org/apache/rampart/MessageBuilderTestBase.java?view=diff&rev=512816&r1=512815&r2=512816
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-tests/src/test/java/org/apache/rampart/MessageBuilderTestBase.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-tests/src/test/java/org/apache/rampart/MessageBuilderTestBase.java
 Wed Feb 28 07:45:34 2007
@@ -26,9 +26,11 @@
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.description.AxisMessage;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.OutInAxisOperation;
 import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyEngine;
 import org.apache.ws.security.WSConstants;
@@ -68,7 +70,12 @@
                 new ServiceGroupContext(null, null));
         ctx.setServiceContext(serviceContext);
         ctx.setAxisService(axisService);
-        ctx.setAxisOperation(new OutInAxisOperation(new 
QName("http://rampart.org";, "test")));
+        OutInAxisOperation outInAxisOperation = new OutInAxisOperation(new 
QName("http://rampart.org";, "test"));
+        AxisMessage msg = new AxisMessage();
+        
outInAxisOperation.addMessage(msg,WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+        
outInAxisOperation.addMessage(msg,WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+        ctx.setAxisOperation(outInAxisOperation);
+        ctx.setAxisMessage(msg);
         Options options = new Options();
         options.setAction("urn:testOperation");
         ctx.setOptions(options);


Reply via email to