Author: asankha
Date: Tue Dec 19 00:44:24 2006
New Revision: 488581

URL: http://svn.apache.org/viewvc?view=rev&rev=488581
Log:
commit for Tijs for http://issues.apache.org/jira/browse/SYNAPSE-47 with review 
and enhancements

Modified:
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Constants.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/MessageContext.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorFactory.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorSerializer.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/AsyncCallback.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java
    
incubator/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/TestMessageContext.java
    
incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
    
incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ThreadLocalMessageContext.java
    
incubator/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/TestMessageContext.java

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Constants.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Constants.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Constants.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Constants.java
 Tue Dec 19 00:44:24 2006
@@ -48,10 +48,17 @@
     String SYNAPSE_XML = "synapse.xml";
 
     // -- Synapse message context property keys --
-    /** Properties on an outgoing message context starting with this prefix
-     * would be copied over to the incoming reply for correlation
+    /**
+     * The scope for a set-property mediator, when the property should be 
copied over
+     * to the response message - if any, for correlation
      */
-    String CORRELATE = "correlate/";
+    String SCOPE_CORRELATE = "correlate";
+
+    /**
+     * The scope for a set-property mediator, when the property should be set
+     *  on the underlying Axis2 message context
+     */
+    String SCOPE_AXIS2 = "axis2";
 
     /** An string name which holds the out sequence property in the 
MessageContext */
     String OUT_SEQUENCE = "outSequence";

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/MessageContext.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/MessageContext.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/MessageContext.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/MessageContext.java
 Tue Dec 19 00:44:24 2006
@@ -74,6 +74,13 @@
     public Object getProperty(String key);
 
     /**
+     * Get the value of a correlation property set on the message instance
+     * @param key key to look up property
+     * @return value for the given key
+     */
+    public Object getCorrelationProperty(String key);
+
+    /**
      * Set a custom (local) property with the given name on the message 
instance
      * @param key key to be used
      * @param value value to be saved
@@ -81,10 +88,24 @@
     public void setProperty(String key, Object value);
 
     /**
+     * Set a local message property with the given name and value, and copy it 
over
+     * to any corresponding response messages for correlation
+     * @param key key to be used
+     * @param value value to be saved
+     */
+    public void setCorrelationProperty(String key, Object value);
+
+    /**
      * Returns the Set of keys over the properties on this message context
      * @return a Set of keys over message properties
      */
     public Set getPropertyKeySet();
+
+    /**
+     * Returns the Set of keys that should be correlated to a response
+     * @return a Set of keys that should be correlated with the response
+     */
+    public Set getCorrelationPropertyKeySet();
 
     /**
      * Get the SOAP envelope of this message

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java
 Tue Dec 19 00:44:24 2006
@@ -45,5 +45,10 @@
     public static final String TRACE_ENABLE ="enable";
     /** The Trace value 'disable' */
     public static final  String TRACE_DISABLE ="disable";
-
+    
+    // -- variables for the scoping of a property mediator --
+    /** The String value for a Synapse messagecontext property */
+    public static final String SCOPE_CORRELATE = 
org.apache.synapse.Constants.SCOPE_CORRELATE;
+    /** The String value for an Axis2 messagecontext property */
+    public static final String SCOPE_AXIS2 = 
org.apache.synapse.Constants.SCOPE_AXIS2;
 }

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorFactory.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorFactory.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorFactory.java
 Tue Dec 19 00:44:24 2006
@@ -19,18 +19,18 @@
 
 package org.apache.synapse.config.xml;
 
+import javax.xml.namespace.QName;
+
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.xpath.AXIOMXPath;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.synapse.SynapseException;
 import org.apache.synapse.Mediator;
+import org.apache.synapse.SynapseException;
 import org.apache.synapse.mediators.builtin.PropertyMediator;
 import org.jaxen.JaxenException;
 
-import javax.xml.namespace.QName;
-
 /**
  * Creates a set-property mediator through the supplied XML configuration
  *
@@ -50,6 +50,7 @@
         OMAttribute name = elem.getAttribute(new 
QName(Constants.NULL_NAMESPACE, "name"));
         OMAttribute value = elem.getAttribute(new 
QName(Constants.NULL_NAMESPACE, "value"));
         OMAttribute expression = elem.getAttribute(new 
QName(Constants.NULL_NAMESPACE, "expression"));
+        OMAttribute scope = elem.getAttribute(new 
QName(Constants.NULL_NAMESPACE, "scope"));
 
         if (name == null) {
             String msg = "The 'name' attribute is required for the 
configuration of a property mediator";
@@ -75,6 +76,18 @@
                 log.error(msg);
                 throw new SynapseException(msg);
             }
+        }
+
+        if (scope != null) {
+               if 
(!Constants.SCOPE_CORRELATE.equals(scope.getAttributeValue()) && 
+                    !Constants.SCOPE_AXIS2.equals(scope.getAttributeValue())) {
+                       String msg = "Only '" + Constants.SCOPE_CORRELATE + "' 
or '" + Constants.SCOPE_AXIS2
+                               + "' values are allowed for attribute scope for 
a property mediator"
+                        + ", Unsupported scope " + scope.getAttributeValue();
+                log.error(msg);
+                throw new SynapseException(msg);
+               }
+            propMediator.setScope(scope.getAttributeValue());
         }
         // after successfully creating the mediator
         // set its common attributes such as tracing etc

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorSerializer.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorSerializer.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorSerializer.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/PropertyMediatorSerializer.java
 Tue Dec 19 00:44:24 2006
@@ -65,6 +65,11 @@
         } else {
             handleException("Invalid property mediator. Value or expression is 
required");
         }
+        
+        if (mediator.getScope() != null) {
+            // if we have already built a mediator with scope, scope should be 
valid, now save it
+            property.addAttribute(fac.createOMAttribute("scope", nullNS, 
mediator.getScope()));
+        }
 
         if (parent != null) {
             parent.addChild(property);

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/AsyncCallback.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/AsyncCallback.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/AsyncCallback.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/AsyncCallback.java
 Tue Dec 19 00:44:24 2006
@@ -74,20 +74,13 @@
         synapseInMessageContext.setTo(null);
 
         // now set properties to co-relate to the request i.e. copy over
-        // correlate/* messgae properties from original message to response 
received
-        Iterator iter = synapseOutMsgCtx.getPropertyKeySet().iterator();
+        // correlation messgae properties from original message to response 
received
+        Iterator iter = 
synapseOutMsgCtx.getCorrelationPropertyKeySet().iterator();
 
         while (iter.hasNext()) {
             Object key = iter.next();
-
-            if (key instanceof String &&
-                ((String) key).startsWith(Constants.CORRELATE)) {
-
-                synapseInMessageContext.setProperty(
-                        (String) key,
-                        synapseOutMsgCtx.getProperty((String) key)
-                );
-            }
+            synapseInMessageContext.setProperty(
+                (String) key, synapseOutMsgCtx.getCorrelationProperty((String) 
key));
         }
 
         // sets the out sequence if present to the in MC to mediate the 
response

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
 Tue Dec 19 00:44:24 2006
@@ -48,6 +48,7 @@
     private SynapseConfiguration cfg = null;
     private SynapseEnvironment   env = null;
     private Map properties = new HashMap();
+    private Map correlationProperties = new HashMap();
 
     /** The Axis2 MessageContext reference */
     private org.apache.axis2.context.MessageContext axis2MessageContext = null;
@@ -85,12 +86,24 @@
         }
     }
 
+    public Object getCorrelationProperty(String key) {
+        return correlationProperties.get(key);
+    }
+
     public void setProperty(String key, Object value) {
         properties.put(key, value);
     }
 
+    public void setCorrelationProperty(String key, Object value) {
+        correlationProperties.put(key, value);
+    }
+
     public Set getPropertyKeySet() {
         return properties.keySet();
+    }
+
+    public Set getCorrelationPropertyKeySet() {
+        return correlationProperties.keySet();
     }
 
     //--------------------

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java
 Tue Dec 19 00:44:24 2006
@@ -93,20 +93,13 @@
                 synapseOutMessageContext.setResponse(true);
 
                 // now set properties to co-relate to the request i.e. copy 
over
-                // correlate/* messgae properties from original message to 
response received
-                Iterator iter = 
synapseInMessageContext.getPropertyKeySet().iterator();
+                // correlation messgae properties from original message to 
response received
+                Iterator iter = 
synapseInMessageContext.getCorrelationPropertyKeySet().iterator();
 
                 while (iter.hasNext()) {
                     Object key = iter.next();
-
-                    if (key instanceof String &&
-                        ((String) key).startsWith(Constants.CORRELATE)) {
-
-                        synapseOutMessageContext.setProperty(
-                                (String) key,
-                                synapseInMessageContext.getProperty((String) 
key)
-                        );
-                    }
+                    synapseOutMessageContext.setProperty(
+                        (String) key, 
synapseInMessageContext.getCorrelationProperty((String) key));
                 }
 
                 // if we have a SOAP Fault, log it - irrespective of the 
mediation logic

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java
 Tue Dec 19 00:44:24 2006
@@ -24,6 +24,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.Constants;
+import org.apache.synapse.SynapseException;
 import org.apache.synapse.core.axis2.Axis2MessageContext;
 import org.apache.synapse.mediators.AbstractMediator;
 
@@ -37,6 +38,7 @@
     private String name = null;
     private String value = null;
     private AXIOMXPath expression = null;
+    private String scope = null;
 
     private static final Log log = LogFactory.getLog(PropertyMediator.class);
     private static final Log trace = LogFactory.getLog(Constants.TRACE_LOGGER);
@@ -54,13 +56,32 @@
         }
 
         String value = (getValue() != null ? getValue() : 
Axis2MessageContext.getStringValue(getExpression(), smc));
-        log.debug("Setting property : " + getName() + " = " + value);
+        log.debug("Setting property : " + getName() +
+            " (scope:" + (scope == null ? "default" : scope) + ") = " + value);
         if (shouldTrace) {
-            trace.trace("Property Name : " + getName() + " set to " +
+            trace.trace("Property Name : " + getName() +
+                " (scope:" + (scope == null ? "default" : scope) + ") set to " 
+
                 (getValue() != null ? " value = " + getValue() :
                     " result of expression " + getExpression() + " = " + 
value));
         }
-        smc.setProperty(getName(), value);
+
+        if (scope == null) {
+            smc.setProperty(getName(), value);
+
+        } else if(Constants.SCOPE_CORRELATE.equals(getScope())) {
+            smc.setCorrelationProperty(getName(), value);
+
+        } else if (Constants.SCOPE_AXIS2.equals(getScope()) && smc instanceof 
Axis2MessageContext) {
+            Axis2MessageContext axis2smc = (Axis2MessageContext) smc;
+            org.apache.axis2.context.MessageContext axis2MessageCtx =
+                axis2smc.getAxis2MessageContext();
+            axis2MessageCtx.getConfigurationContext().setProperty(getName(), 
value);
+
+        } else {
+            String msg = "Unsupported scope : " + scope + " for set-property 
mediator";
+            log.error(msg);
+            throw new SynapseException(msg);
+        }
 
         if (shouldTrace) {
             trace.trace("End : Property mediator");
@@ -90,5 +111,13 @@
 
     public void setExpression(AXIOMXPath expression) {
         this.expression = expression;
+    }
+    
+    public String getScope() {
+       return scope;
+    }
+    
+    public void setScope(String scope) {
+       this.scope = scope;
     }
 }

Modified: 
incubator/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/TestMessageContext.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/TestMessageContext.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/TestMessageContext.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/TestMessageContext.java
 Tue Dec 19 00:44:24 2006
@@ -42,6 +42,16 @@
 
     private EndpointReference to = null;
 
+    private Map correlationProperties = new HashMap();
+
+    public void setCorrelationProperty(String key, Object value) {
+        correlationProperties.put(key, value);
+    }
+
+    public Set getCorrelationPropertyKeySet() {
+        return correlationProperties.keySet();
+    }
+    
     public SynapseConfiguration getConfiguration() {
         return synCfg;
     }
@@ -66,6 +76,10 @@
         } else {
             return null;
         }
+    }
+
+    public Object getCorrelationProperty(String key) {
+        return correlationProperties.get(key);
     }
 
     public void setProperty(String key, Object value) {

Modified: 
incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
 Tue Dec 19 00:44:24 2006
@@ -110,12 +110,24 @@
         return mc.getConfiguration();
     }
 
+    public Object getCorrelationProperty(String key) {
+        return mc.getCorrelationProperty(key);
+    }
+
     public void setProperty(String key, Object value) {
         mc.setProperty(key, value);
     }
 
     public Set getPropertyKeySet() {
         return mc.getPropertyKeySet();
+    }
+
+    public void setCorrelationProperty(String key, Object value) {
+        mc.setCorrelationProperty(key, value);
+    }
+
+    public Set getCorrelationPropertyKeySet() {
+        return mc.getCorrelationPropertyKeySet();
     }
 
     public SOAPEnvelope getEnvelope() {

Modified: 
incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ThreadLocalMessageContext.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ThreadLocalMessageContext.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ThreadLocalMessageContext.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ThreadLocalMessageContext.java
 Tue Dec 19 00:44:24 2006
@@ -113,6 +113,10 @@
         return getMC().getProperty(key);
     }
 
+    public Object getCorrelationProperty(String key) {
+        return getMC().getCorrelationProperty(key);
+    }
+
     public Set getPropertyKeySet() {
         return getMC().getPropertyKeySet();
     }
@@ -215,6 +219,14 @@
 
     public void setProperty(String key, Object value) {
         getMC().setProperty(key, value);
+    }
+
+    public void setCorrelationProperty(String key, Object value) {
+        getMC().setCorrelationProperty(key, value);
+    }
+
+    public Set getCorrelationPropertyKeySet() {
+        return getMC().getCorrelationPropertyKeySet();
     }
 
     public void setRelatesTo(RelatesTo[] reference) {

Modified: 
incubator/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/TestMessageContext.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/TestMessageContext.java?view=diff&rev=488581&r1=488580&r2=488581
==============================================================================
--- 
incubator/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/TestMessageContext.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/TestMessageContext.java
 Tue Dec 19 00:44:24 2006
@@ -42,6 +42,16 @@
 
     private EndpointReference to = null;
 
+    private Map correlationProperties = new HashMap();
+
+    public void setCorrelationProperty(String key, Object value) {
+        correlationProperties.put(key, value);
+    }
+
+    public Set getCorrelationPropertyKeySet() {
+        return correlationProperties.keySet();
+    }
+
     public SynapseConfiguration getConfiguration() {
         return synCfg;
     }
@@ -66,6 +76,10 @@
         } else {
             return null;
         }
+    }
+
+    public Object getCorrelationProperty(String key) {
+        return correlationProperties.get(key);
     }
 
     public void setProperty(String key, Object value) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to