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;
     }
 


Reply via email to