fix for SYNAPSE-1060

git-svn-id: https://svn.apache.org/repos/asf/synapse/trunk@1768346 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorFactory.java b/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorFactory.java
index 7f0ffc8..e5df84a 100644
--- a/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorFactory.java
+++ b/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorFactory.java
@@ -81,7 +81,8 @@
         if (value != null) {
             propMediator.setValue(value.getAttributeValue(), dataType);
         } else if (valueElement != null) {
-            propMediator.setValueElement(valueElement);
+            propMediator.setValueElement(valueElement.cloneOMElement()); // Need to clone,
+            // otherwise same reference getting modified at the message flow
         } else if (expression != null) {
             try {
                 propMediator.setExpression(SynapseXPathFactory.getSynapseXPath(elem, ATT_EXPRN),
diff --git a/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java b/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java
index 02c3f97..110af76 100644
--- a/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java
+++ b/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java
@@ -288,7 +288,8 @@
         if (value != null) {
             return value;
         } else if (valueElement != null) {
-            return valueElement;
+            // Need to take a clone of the element, otherwise same reference is shared across all the requests
+            return valueElement.cloneOMElement();
         } else {
             return convertValue(expression.stringValueOf(synCtx), type);
         }
diff --git a/java/modules/core/src/test/java/org/apache/synapse/mediators/builtin/PropertyMediatorTest.java b/java/modules/core/src/test/java/org/apache/synapse/mediators/builtin/PropertyMediatorTest.java
index addb01a..227db57 100644
--- a/java/modules/core/src/test/java/org/apache/synapse/mediators/builtin/PropertyMediatorTest.java
+++ b/java/modules/core/src/test/java/org/apache/synapse/mediators/builtin/PropertyMediatorTest.java
@@ -140,7 +140,7 @@
         MessageContext synCtx = TestUtils.getTestContext("<getQuote><symbol>IBM</symbol></getQuote>");
         propMediatorOne.mediate(synCtx);
         Object prop = synCtx.getProperty("nameOne");
-        assertEquals(valueOne, prop);
+        assertEquals(valueOne.toString(), prop.toString()); // Objects are not equal, so need to compare the content
 
         // Test XML property retrieval
         String exprValue = new SynapseXPath("synapse:get-property('nameOne')").stringValueOf(synCtx);