fix for SYNAPSE-1010 by buddhima, modified and with a test case
git-svn-id: https://svn.apache.org/repos/asf/synapse/trunk@1745076 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java b/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
index 18d57b9..c81892c 100644
--- a/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
+++ b/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
@@ -237,6 +237,47 @@
}
}
+ /**
+ * Remove property from message context
+ * Scope: Default
+ *
+ * @param key Property name
+ */
+ public void removeProperty(String key) {
+ Set pros = mc.getPropertyKeySet();
+ if (pros != null) {
+ pros.remove(key);
+ }
+ }
+
+ /**
+ * Remove property from message context
+ *
+ * @param key Property name
+ * @param scope Property scope
+ */
+ public void removeProperty(String key, String scope) {
+ if (scope == null || XMLConfigConstants.SCOPE_DEFAULT.equals(scope)) {
+ // Removing property from default scope
+ removeProperty(key);
+ } else if (XMLConfigConstants.SCOPE_AXIS2.equals(scope)) {
+ // Removing property from the Axis2 Message Context
+ Axis2MessageContext axis2smc = (Axis2MessageContext) mc;
+ org.apache.axis2.context.MessageContext axis2MessageCtx = axis2smc.getAxis2MessageContext();
+ axis2MessageCtx.removeProperty(key);
+
+ } else if (XMLConfigConstants.SCOPE_TRANSPORT.equals(scope)) {
+ // Removing 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 && headers instanceof Map) {
+ Map headersMap = (Map) headers;
+ headersMap.remove(key);
+ }
+ }
+ }
+
public Set getPropertyKeySet() {
return mc.getPropertyKeySet();
}
diff --git a/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorTest.java b/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorTest.java
index cfa733c..ec5009f 100644
--- a/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorTest.java
+++ b/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/ScriptMediatorTest.java
@@ -28,6 +28,7 @@
import org.apache.synapse.core.axis2.Axis2MessageContext;
import org.apache.synapse.mediators.TestUtils;
+import java.util.HashMap;
import java.util.Map;
import java.util.Random;
@@ -88,6 +89,43 @@
}
+ public void testRemoveProperty() throws Exception {
+ MessageContext mc = TestUtils.getAxis2MessageContext("<empty/>", null);
+
+ // Setting properties
+ mc.setProperty("PROP_DEFAULT", "PROP_DEFAULT_VAL");
+
+ Axis2MessageContext axis2smc = (Axis2MessageContext) mc;
+ org.apache.axis2.context.MessageContext axis2MessageCtx = axis2smc.getAxis2MessageContext();
+ axis2MessageCtx.setProperty("PROP_AXIS2", "PROP_AXIS2_VAL");
+
+ Map headersMap = new HashMap();
+ headersMap.put("PROP_TRP", "PROP_TRP_VAL");
+ axis2MessageCtx.setProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS, headersMap);
+
+ // For default scope
+ String removalScript = "mc.removeProperty(\"PROP_DEFAULT\");";
+ ScriptMediator mediator = new ScriptMediator("js", removalScript, null);
+ mediator.mediate(mc);
+ assertNull(mc.getProperty("PROP_DEFAULT"));
+
+ // For Axis2 scope
+ removalScript = "mc.removeProperty(\"PROP_AXIS2\",\"axis2\");";
+ mediator = new ScriptMediator("js", removalScript, null);
+ mediator.mediate(mc);
+ assertNull(axis2MessageCtx.getProperty("PROP_AXIS2"));
+
+ // For Transport scope
+ removalScript = "mc.removeProperty(\"PROP_TRP\",\"transport\");";
+ mediator = new ScriptMediator("js", removalScript, null);
+ mediator.mediate(mc);
+ Object headers = axis2MessageCtx.getProperty(
+ org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS);
+
+ headersMap = (Map) headers;
+ assertNull(headersMap.get("PROP_TRP"));
+ }
+
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(new ScriptMediatorTest("testInlineMediator"));
@@ -95,6 +133,7 @@
suite.addTest(new RepeatedTest(new ScriptMediatorTest("testThreadSafety"), 10));
}
suite.addTest(new ScriptMediatorTest("testSetProperty"));
+ suite.addTest(new ScriptMediatorTest("testRemoveProperty"));
return suite;
}