Author: supun
Date: Wed May 12 08:06:03 2010
New Revision: 943403

URL: http://svn.apache.org/viewvc?rev=943403&view=rev
Log:
Improving ConditionaRouterMediator factories and serializers

Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConditionalRouterMediatorFactory.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConditionalRouterMediatorSerializer.java

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConditionalRouterMediatorFactory.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConditionalRouterMediatorFactory.java?rev=943403&r1=943402&r2=943403&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConditionalRouterMediatorFactory.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConditionalRouterMediatorFactory.java
 Wed May 12 08:06:03 2010
@@ -99,12 +99,18 @@ public class ConditionalRouterMediatorFa
                 }
 
                 OMElement conditionElem = 
routeElem.getFirstChildWithName(CONDITION_Q);
+                
+                if (conditionElem == null) {
+                    handleException("Couldn't find the condition of the 
conditional router");
+                    return null;
+                }
+
                 try {
                     Evaluator evaluator = 
EvaluatorFactoryFinder.getInstance().getEvaluator(
                             conditionElem.getFirstElement());
                     route.setEvaluator(evaluator);
-                } catch (EvaluatorException ee) {
-                    throw new SynapseException("Couldn't build the condition 
of the conditional router");
+                } catch (EvaluatorException ee) {                    
+                    handleException("Couldn't build the condition of the 
conditional router", ee);
                 }
                 OMElement targetElem = 
routeElem.getFirstChildWithName(TARGET_Q);
                 Target target = TargetFactory.createTarget(targetElem);

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConditionalRouterMediatorSerializer.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConditionalRouterMediatorSerializer.java?rev=943403&r1=943402&r2=943403&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConditionalRouterMediatorSerializer.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConditionalRouterMediatorSerializer.java
 Wed May 12 08:06:03 2010
@@ -21,6 +21,9 @@ package org.apache.synapse.config.xml;
 
 import org.apache.axiom.om.OMElement;
 import org.apache.synapse.Mediator;
+import org.apache.synapse.commons.evaluators.config.EvaluatorSerializerFinder;
+import org.apache.synapse.commons.evaluators.config.EvaluatorSerializer;
+import org.apache.synapse.commons.evaluators.EvaluatorException;
 import org.apache.synapse.mediators.filters.router.ConditionalRouterMediator;
 import org.apache.synapse.mediators.filters.router.Route;
 
@@ -52,6 +55,22 @@ public class ConditionalRouterMediatorSe
             if (route.isBreakRouteExplicitlySet()) {
                 routeElem.addAttribute("breakRoute", 
Boolean.toString(route.isBreakRoute()), nullNS);
             }
+            
+            if (route.getEvaluator() != null) {
+                EvaluatorSerializer evaluatorSerializer =
+                        EvaluatorSerializerFinder.getInstance().getSerializer(
+                                route.getEvaluator().getName());
+                if (evaluatorSerializer != null) {
+                    OMElement conditionElement = 
fac.createOMElement("condition", synNS);
+                    try {
+                        evaluatorSerializer.serialize(conditionElement, 
route.getEvaluator());
+                    } catch (EvaluatorException e) {
+                        handleException("Cannot serialize the Evaluator", e);
+                    }
+
+                    routeElem.addChild(conditionElement);
+                }
+            }
 
             if (route.getTarget() != null) {
                 
routeElem.addChild(TargetSerializer.serializeTarget(route.getTarget()));
@@ -59,9 +78,6 @@ public class ConditionalRouterMediatorSe
                 handleException("Route in a conditional router has to have a 
target");
             }
 
-            if (route.getEvaluator() != null) {
-                // todo serialize the route evaluator
-            }
             conditionalRouterElem.addChild(routeElem);
         }
 


Reply via email to