You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by su...@apache.org on 2011/03/14 07:04:54 UTC

svn commit: r1081266 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: config/xml/CloneMediatorFactory.java config/xml/CloneMediatorSerializer.java mediators/eip/splitter/CloneMediator.java

Author: supun
Date: Mon Mar 14 06:04:54 2011
New Revision: 1081266

URL: http://svn.apache.org/viewvc?rev=1081266&view=rev
Log:
adding sequential attribute to clone mediator as well

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorFactory.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorSerializer.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/eip/splitter/CloneMediator.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorFactory.java?rev=1081266&r1=1081265&r2=1081266&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorFactory.java Mon Mar 14 06:04:54 2011
@@ -23,6 +23,7 @@ import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
 import org.apache.axis2.util.JavaUtils;
 import org.apache.synapse.Mediator;
+import org.apache.synapse.mediators.eip.Target;
 import org.apache.synapse.mediators.eip.splitter.CloneMediator;
 
 import javax.xml.namespace.QName;
@@ -60,6 +61,7 @@ public class CloneMediatorFactory extend
 
     private static final QName ID_Q
             = new QName(XMLConfigConstants.NULL_NAMESPACE, "id");
+    private static final QName SEQUENTIAL_Q = new QName("sequential");
 
     /**
      * This method implements the createMediator method of the MediatorFactory interface
@@ -70,8 +72,10 @@ public class CloneMediatorFactory extend
      * @return Mediator of the type CloneMediator built from the config element
      */
     public Mediator createSpecificMediator(OMElement elem, Properties properties) {
-
-        CloneMediator mediator = new CloneMediator();
+    	
+    	boolean asynchronousExe = true;
+        
+    	CloneMediator mediator = new CloneMediator();
         processAuditStatus(mediator, elem);
 
         OMAttribute id = elem.getAttribute(ID_Q);
@@ -86,12 +90,20 @@ public class CloneMediatorFactory extend
                     continueParent.getAttributeValue()));
         }
 
+        OMAttribute synchronousExeAttr= elem.getAttribute(SEQUENTIAL_Q);
+        if (synchronousExeAttr != null && synchronousExeAttr.getAttributeValue().equals("true")) {
+        	asynchronousExe = false;
+        }
+
+        mediator.setSequential(!asynchronousExe);
+        
         Iterator targetElements = elem.getChildrenWithName(TARGET_Q);
         while (targetElements.hasNext()) {
-            mediator.addTarget(TargetFactory.createTarget(
-                    (OMElement) targetElements.next(), properties));
+        	Target target = TargetFactory.createTarget((OMElement)targetElements.next(), properties);
+        	target.setAsynchronous(asynchronousExe);
+            mediator.addTarget(target);
         }
-
+    
         return mediator;
     }
 

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorSerializer.java?rev=1081266&r1=1081265&r2=1081266&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CloneMediatorSerializer.java Mon Mar 14 06:04:54 2011
@@ -66,13 +66,15 @@ public class CloneMediatorSerializer ext
             cloneElem.addAttribute("id", clone.getId(), nullNS);
         }
 
-        for (Iterator itr = clone.getTargets().iterator(); itr.hasNext();) {
-            Object o = itr.next();
+        if (clone.isSequential()) {
+            cloneElem.addAttribute("sequential", "true", nullNS);
+        }
+
+        for (Object o : clone.getTargets()) {
             if (o instanceof Target) {
                 cloneElem.addChild(TargetSerializer.serializeTarget((Target) o));
             }
         }
-
         return cloneElem;
     }
 

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/eip/splitter/CloneMediator.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/eip/splitter/CloneMediator.java?rev=1081266&r1=1081265&r2=1081266&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/eip/splitter/CloneMediator.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/eip/splitter/CloneMediator.java Mon Mar 14 06:04:54 2011
@@ -56,6 +56,8 @@ public class CloneMediator extends Abstr
 
     private String id = null;
 
+    private boolean sequential = false;
+
     /**
      * This will implement the mediate method of the Mediator interface and will provide the
      * functionality of cloning message into the specified targets and mediation
@@ -174,6 +176,14 @@ public class CloneMediator extends Abstr
         this.id = id;
     }
 
+    public boolean isSequential() {
+        return sequential;
+    }
+
+    public void setSequential(boolean sequential) {
+        this.sequential = sequential;
+    }
+
     public void init(SynapseEnvironment se) {
 
         for (Target target : targets) {