Author: supun
Date: Tue Feb 8 08:04:41 2011
New Revision: 1068287
URL: http://svn.apache.org/viewvc?rev=1068287&view=rev
Log:
adding dynamic key support for sequence mediator, thanks Ranga for the
contribution
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SequenceMediatorFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SequenceMediatorSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SequenceMediatorFactory.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SequenceMediatorFactory.java?rev=1068287&r1=1068286&r2=1068287&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SequenceMediatorFactory.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SequenceMediatorFactory.java
Tue Feb 8 08:04:41 2011
@@ -23,6 +23,7 @@ import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
import org.apache.synapse.Mediator;
import org.apache.synapse.SynapseException;
+import org.apache.synapse.mediators.Key;
import org.apache.synapse.mediators.base.SequenceMediator;
import javax.xml.namespace.QName;
@@ -86,7 +87,12 @@ public class SequenceMediatorFactory ext
} else {
n = elem.getAttribute(ATT_KEY);
if (n != null) {
- seqMediator.setKey(n.getAttributeValue());
+ // KeyFactory for creating dynamic or static Key
+ KeyFactory keyFac = new KeyFactory();
+ // create dynamic or static key based on OMElement
+ Key generatedKey = keyFac.createKey(elem);
+ // setKey
+ seqMediator.setKey(generatedKey);
if (e != null) {
String msg = "A sequence mediator with a reference to
another " +
"sequence can not have 'ErrorHandler'";
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SequenceMediatorSerializer.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SequenceMediatorSerializer.java?rev=1068287&r1=1068286&r2=1068287&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SequenceMediatorSerializer.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SequenceMediatorSerializer.java
Tue Feb 8 08:04:41 2011
@@ -70,8 +70,10 @@ public class SequenceMediatorSerializer
} else {
if (mediator.getKey() != null) {
- sequence.addAttribute(fac.createOMAttribute(
- "key", nullNS, mediator.getKey()));
+ // Serialize Key using KeySerializer
+ KeySerializer keySerializer = new KeySerializer();
+ keySerializer.serializeKey(mediator.getKey(), sequence);
+
} else if (mediator.getName() != null) {
sequence.addAttribute(fac.createOMAttribute(
"name", nullNS, mediator.getName()));
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java?rev=1068287&r1=1068286&r2=1068287&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java
Tue Feb 8 08:04:41 2011
@@ -24,6 +24,7 @@ import org.apache.synapse.aspects.Compon
import org.apache.synapse.aspects.statistics.StatisticsReporter;
import org.apache.synapse.core.SynapseEnvironment;
import org.apache.synapse.mediators.AbstractListMediator;
+import org.apache.synapse.mediators.Key;
import org.apache.synapse.mediators.MediatorFaultHandler;
import java.util.Stack;
@@ -42,7 +43,7 @@ public class SequenceMediator extends Ab
/** The name of the this sequence */
private String name = null;
/** The local registry key which is used to pick a sequence definition*/
- private String key = null;
+ private Key key = null;
/** The name of the error handler which is used to handle error during the
mediation */
private String errorHandler = null;
/** is this definition dynamic */
@@ -155,8 +156,9 @@ public class SequenceMediator extends Ab
}
} else {
-
- Mediator m = synCtx.getSequence(key);
+ String sequenceKey = key.evaluateKey(synCtx);
+ //Mediator m = synCtx.getSequence(key);
+ Mediator m = synCtx.getSequence(sequenceKey);
if (m == null) {
handleException("Sequence named " + key + " cannot be found",
synCtx);
@@ -217,7 +219,7 @@ public class SequenceMediator extends Ab
* To get the key which is used to pick the sequence definition from the
local registry
* @return return the key which is used to pick the sequence definition
from the local registry
*/
- public String getKey() {
+ public Key getKey() {
return key;
}
@@ -225,7 +227,7 @@ public class SequenceMediator extends Ab
* To set the local registry key in order to pick the sequence definition
* @param key the local registry key
*/
- public void setKey(String key) {
+ public void setKey(Key key) {
this.key = key;
}