Author: isudana
Date: Sun May 22 17:16:52 2016
New Revision: 1745074

URL: http://svn.apache.org/viewvc?rev=1745074&view=rev
Log:
fix for SYNAPSE-1009 by buddhima, modified and with a test case

Modified:
    
synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
    
synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorTest.java

Modified: 
synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java?rev=1745074&r1=1745073&r2=1745074&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
 (original)
+++ 
synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
 Sun May 22 17:16:52 2016
@@ -19,6 +19,7 @@
 
 package org.apache.synapse.mediators.bsf;
 
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Set;
 import java.util.Stack;
@@ -42,7 +43,9 @@ import org.apache.synapse.FaultHandler;
 import org.apache.synapse.Mediator;
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.config.SynapseConfiguration;
+import org.apache.synapse.config.xml.XMLConfigConstants;
 import org.apache.synapse.core.SynapseEnvironment;
+import org.apache.synapse.core.axis2.Axis2MessageContext;
 import org.apache.synapse.endpoints.Endpoint;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -200,6 +203,40 @@ public class ScriptMessageContext implem
         }
     }
 
+    /**
+     * Set Property to the message context
+     *
+     * @param key   property name
+     * @param value property value
+     * @param scope scope of the property
+     */
+    public void setProperty(String key, Object value, String scope) {
+        if (scope == null || XMLConfigConstants.SCOPE_DEFAULT.equals(scope)) {
+            // Setting property into default scope
+            setProperty(key, value);
+        } else if (XMLConfigConstants.SCOPE_AXIS2.equals(scope)) {
+            // Setting property into the  Axis2 Message Context
+            Axis2MessageContext axis2smc = (Axis2MessageContext) mc;
+            org.apache.axis2.context.MessageContext axis2MessageCtx = 
axis2smc.getAxis2MessageContext();
+            axis2MessageCtx.setProperty(key, value);
+        } else if (XMLConfigConstants.SCOPE_TRANSPORT.equals(scope)) {
+            // Setting Transport Headers
+            Axis2MessageContext axis2smc = (Axis2MessageContext) mc;
+            org.apache.axis2.context.MessageContext axis2MessageCtx = 
axis2smc.getAxis2MessageContext();
+
+            Object headers = 
axis2MessageCtx.getProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS);
+            if (headers == null) {
+                Map headersMap = new HashMap();
+                headersMap.put(key, value);
+                
axis2MessageCtx.setProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS,
 headersMap);
+            } else if (headers instanceof Map) {
+                Map headersMap = (Map) headers;
+                headersMap.put(key, value);
+            }
+
+        }
+    }
+
     public Set getPropertyKeySet() {
         return mc.getPropertyKeySet();
     }

Modified: 
synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorTest.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorTest.java?rev=1745074&r1=1745073&r2=1745074&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorTest.java
 (original)
+++ 
synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorTest.java
 Sun May 22 17:16:52 2016
@@ -25,8 +25,10 @@ import junit.framework.TestSuite;
 import junit.extensions.RepeatedTest;
 
 import org.apache.synapse.MessageContext;
+import org.apache.synapse.core.axis2.Axis2MessageContext;
 import org.apache.synapse.mediators.TestUtils;
 
+import java.util.Map;
 import java.util.Random;
 
 public class ScriptMediatorTest extends TestCase {
@@ -53,12 +55,46 @@ public class ScriptMediatorTest extends
                 Integer.parseInt(randomno) * 2);
     }
 
+    public void testSetProperty() throws Exception {
+        MessageContext mc = TestUtils.getAxis2MessageContext("<empty/>", null);
+
+        // For default scope
+        String script = "mc.setProperty(\"PROP_DEFAULT\", 
\"PROP_DEFAULT_VAL\");";
+        ScriptMediator mediator = new ScriptMediator("js", script, null);
+        mediator.mediate(mc);
+        assertEquals("PROP_DEFAULT_VAL", 
mc.getProperty("PROP_DEFAULT").toString());
+
+        // For Axis2 scope
+        script = "mc.setProperty(\"PROP_AXIS2\", \"PROP_AXIS_VAL\", 
\"axis2\");";
+        mediator = new ScriptMediator("js", script, null);
+        mediator.mediate(mc);
+        Axis2MessageContext axis2smc = (Axis2MessageContext) mc;
+        org.apache.axis2.context.MessageContext axis2MessageCtx = 
axis2smc.getAxis2MessageContext();
+        assertEquals("PROP_AXIS_VAL", 
axis2MessageCtx.getProperty("PROP_AXIS2").toString());
+
+        // For Transport scope
+        script = "mc.setProperty(\"PROP_TRP\", \"PROP_TRP_VAL\", 
\"transport\");";
+        mediator = new ScriptMediator("js", script, null);
+        mediator.mediate(mc);
+        Object headers = axis2MessageCtx.getProperty(
+                org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS);
+
+        String trpHeader = null;
+        if (headers != null && headers instanceof Map) {
+            Map headersMap = (Map) headers;
+            trpHeader = (String) headersMap.get("PROP_TRP");
+        }
+        assertEquals("PROP_TRP_VAL", trpHeader);
+
+    }
 
     public static Test suite() {
         TestSuite suite = new TestSuite();
+        suite.addTest(new ScriptMediatorTest("testInlineMediator"));
         for (int i = 0; i < 10; i++) {
             suite.addTest(new RepeatedTest(new 
ScriptMediatorTest("testThreadSafety"), 10));
         }
+        suite.addTest(new ScriptMediatorTest("testSetProperty"));
         return suite;
     }
 


Reply via email to