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;
}