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]