Author: hiranya
Date: Mon Sep 13 06:04:01 2010
New Revision: 996425

URL: http://svn.apache.org/viewvc?rev=996425&view=rev
Log:
Finalizing the work related to SYNAPSE-684. Now the conditional router mediator 
and the URL rewrite mediator can evaluate conditions on the SOAP envelope 
content and message context properties. Fixed the relevant test cases.


Modified:
    
synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/evaluators/EvaluatorContext.java
    
synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/evaluators/source/PropertyTextRetriever.java
    
synapse/trunk/java/modules/commons/src/test/java/org/apache/synapse/commons/evaluators/source/SourceTextRetrieverTest.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/MessageContextCreatorForAxis2.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/filters/router/ConditionalRouterMediator.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/url/RewriteRule.java
    
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/URLRewriteMediatorSerializationTest.java
    
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/base/SequenceMediatorTest.java
    
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/url/URLRewriteMediatorTest.java

Modified: 
synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/evaluators/EvaluatorContext.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/evaluators/EvaluatorContext.java?rev=996425&r1=996424&r2=996425&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/evaluators/EvaluatorContext.java
 (original)
+++ 
synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/evaluators/EvaluatorContext.java
 Mon Sep 13 06:04:01 2010
@@ -25,7 +25,6 @@ import org.apache.axis2.context.MessageC
 import java.io.UnsupportedEncodingException;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Properties;
 
 /**
  * Holds the information about the HTTP request. Created on per request basis 
and
@@ -37,7 +36,7 @@ public class EvaluatorContext {
     private Map<String, String> headers;
     private Map<String, String> params;
     private MessageContext messageContext;
-    private Properties properties;
+    private Map<String,Object> properties;
 
     /**
      * Creates the Evalutor context with the URL and the set of HTTP headers
@@ -131,9 +130,9 @@ public class EvaluatorContext {
      * @param name Name of the property
      * @return A string property value or null
      */
-    public String getProperty(String name) {
+    public Object getProperty(String name) {
         if (properties != null) {
-            return properties.getProperty(name);
+            return properties.get(name);
         }
         return null;
     }
@@ -176,7 +175,7 @@ public class EvaluatorContext {
      *
      * @param properties a Properties map
      */
-    public void setProperties(Properties properties) {
+    public void setProperties(Map<String,Object> properties) {
         this.properties = properties;
     }
 }

Modified: 
synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/evaluators/source/PropertyTextRetriever.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/evaluators/source/PropertyTextRetriever.java?rev=996425&r1=996424&r2=996425&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/evaluators/source/PropertyTextRetriever.java
 (original)
+++ 
synapse/trunk/java/modules/commons/src/main/java/org/apache/synapse/commons/evaluators/source/PropertyTextRetriever.java
 Mon Sep 13 06:04:01 2010
@@ -31,7 +31,11 @@ public class PropertyTextRetriever imple
     }
 
     public String getSourceText(EvaluatorContext context) throws 
EvaluatorException {
-        return context.getProperty(source);
+        Object value = context.getProperty(source);
+        if (value != null) {
+            return value.toString();
+        }
+        return null;
     }
 
     public String getSource() {

Modified: 
synapse/trunk/java/modules/commons/src/test/java/org/apache/synapse/commons/evaluators/source/SourceTextRetrieverTest.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/commons/src/test/java/org/apache/synapse/commons/evaluators/source/SourceTextRetrieverTest.java?rev=996425&r1=996424&r2=996425&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/commons/src/test/java/org/apache/synapse/commons/evaluators/source/SourceTextRetrieverTest.java
 (original)
+++ 
synapse/trunk/java/modules/commons/src/test/java/org/apache/synapse/commons/evaluators/source/SourceTextRetrieverTest.java
 Mon Sep 13 06:04:01 2010
@@ -34,7 +34,6 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.Map;
 import java.util.HashMap;
-import java.util.Properties;
 
 public class SourceTextRetrieverTest extends TestCase {
 
@@ -90,17 +89,17 @@ public class SourceTextRetrieverTest ext
     }
 
     public void testPropertyTextRetriver() throws EvaluatorException {
-        Properties props = new Properties();
-        props.setProperty("key1", "value1");
-        props.setProperty("key2", "value2");
+        Map<String,Object> props = new HashMap<String,Object>();
+        props.put("key1", "value1");
+        props.put("key2", "value2");
         EvaluatorContext context = new EvaluatorContext(null, null);
         context.setProperties(props);
 
         PropertyTextRetriever txtRtvr = new PropertyTextRetriever("key1");
-        assertEquals(props.getProperty("key1"), 
txtRtvr.getSourceText(context));
+        assertEquals(props.get("key1"), txtRtvr.getSourceText(context));
 
         txtRtvr = new PropertyTextRetriever("key2");
-        assertEquals(props.getProperty("key2"), 
txtRtvr.getSourceText(context));
+        assertEquals(props.get("key2"), txtRtvr.getSourceText(context));
 
         txtRtvr = new PropertyTextRetriever("bogusKey");
         assertNull(txtRtvr.getSourceText(context));

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java?rev=996425&r1=996424&r2=996425&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
 Mon Sep 13 06:04:01 2010
@@ -182,6 +182,16 @@ public class Axis2MessageContext impleme
         }
     }
 
+    /**
+     * Get a read-only view of all the properties currently set on this
+     * message context
+     *
+     * @return an unmodifiable map of message context properties
+     */
+    public Map<String,Object> getProperties() {
+        return Collections.unmodifiableMap(properties);
+    }
+
     public Object getProperty(String key) {
         return properties.get(key);
     }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/MessageContextCreatorForAxis2.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/MessageContextCreatorForAxis2.java?rev=996425&r1=996424&r2=996425&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/MessageContextCreatorForAxis2.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/MessageContextCreatorForAxis2.java
 Mon Sep 13 06:04:01 2010
@@ -20,6 +20,7 @@
 package org.apache.synapse.core.axis2;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.Parameter;
 import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -71,14 +72,20 @@ public class MessageContextCreatorForAxi
     private static SynapseConfiguration getSynapseConfiguration(
             org.apache.axis2.context.MessageContext axisMsgCtx) {
         AxisConfiguration axisCfg = 
axisMsgCtx.getConfigurationContext().getAxisConfiguration();
-        return (SynapseConfiguration) axisCfg.getParameter(
-                SynapseConstants.SYNAPSE_CONFIG).getValue();
+        Parameter param = 
axisCfg.getParameter(SynapseConstants.SYNAPSE_CONFIG);
+        if (param != null) {
+            return (SynapseConfiguration) param.getValue();
+        }
+        return null;
     }
 
     private static SynapseEnvironment getSynapseEnvironment(
             org.apache.axis2.context.MessageContext axisMsgCtx) {
         AxisConfiguration axisCfg = 
axisMsgCtx.getConfigurationContext().getAxisConfiguration();
-        return (SynapseEnvironment) axisCfg.getParameter(
-                SynapseConstants.SYNAPSE_ENV).getValue();
+        Parameter param = axisCfg.getParameter(SynapseConstants.SYNAPSE_ENV);
+        if (param != null) {
+            return (SynapseEnvironment) param.getValue();
+        }
+        return null;
     }
 }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/filters/router/ConditionalRouterMediator.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/filters/router/ConditionalRouterMediator.java?rev=996425&r1=996424&r2=996425&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/filters/router/ConditionalRouterMediator.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/filters/router/ConditionalRouterMediator.java
 Mon Sep 13 06:04:01 2010
@@ -65,6 +65,8 @@ public class ConditionalRouterMediator e
 
         String url = synCtx.getTo().getAddress() + (restParams != null ? 
restParams : ""); 
         EvaluatorContext context = new EvaluatorContext(url, evaluatorHeaders);
+        context.setProperties(((Axis2MessageContext) synCtx).getProperties());
+        context.setMessageContext(((Axis2MessageContext) 
synCtx).getAxis2MessageContext());
 
         try {
             for (Route route : routes) {

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/url/RewriteRule.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/url/RewriteRule.java?rev=996425&r1=996424&r2=996425&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/url/RewriteRule.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/url/RewriteRule.java
 Mon Sep 13 06:04:01 2010
@@ -56,6 +56,8 @@ public class RewriteRule {
             String uriString = fragments.toURIString();
             Map<String, String> headers = getHeaders(messageContext);
             EvaluatorContext ctx = new EvaluatorContext(uriString, headers);
+            ctx.setProperties(((Axis2MessageContext) 
messageContext).getProperties());
+            ctx.setMessageContext(((Axis2MessageContext) 
messageContext).getAxis2MessageContext());
             
             if (log.isTraceEnabled()) {
                 log.trace("Evaluating condition with URI: " + uriString);

Modified: 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/URLRewriteMediatorSerializationTest.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/URLRewriteMediatorSerializationTest.java?rev=996425&r1=996424&r2=996425&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/URLRewriteMediatorSerializationTest.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/URLRewriteMediatorSerializationTest.java
 Mon Sep 13 06:04:01 2010
@@ -40,7 +40,7 @@ public class URLRewriteMediatorSerializa
 
     public void testSerializationScenario2() {
         String xml = "<rewrite 
xmlns=\"http://synapse.apache.org/ns/2010/04/configuration\";>" +
-                "<rule><condition><match xmlns=\"\" type=\"url\" 
fragment=\"host\" regex=\"localhost\"/>" +
+                "<rule><condition><match xmlns=\"\" type=\"url\" 
source=\"host\" regex=\"localhost\"/>" +
                 "</condition><action fragment=\"protocol\" value=\"https\" 
type=\"set\"/>" +
                 "<action fragment=\"host\" value=\"www.test.com\" 
type=\"set\"/><action " +
                 "fragment=\"port\" value=\"9090\" type=\"set\"/><action 
fragment=\"path\" " +
@@ -52,13 +52,13 @@ public class URLRewriteMediatorSerializa
     public void testSerializationScenario3() {
         String xml = "<rewrite 
xmlns=\"http://synapse.apache.org/ns/2010/04/configuration\";><rule>" +
                 "<action fragment=\"full\" 
value=\"http://localhost:8080/synapse\"; type=\"set\"/></rule>" +
-                "<rule><condition><match xmlns=\"\" type=\"url\" 
fragment=\"host\" regex=\"localhost\"/>" +
+                "<rule><condition><match xmlns=\"\" type=\"url\" 
source=\"host\" regex=\"localhost\"/>" +
                 "</condition><action fragment=\"protocol\" value=\"https\" 
type=\"set\"/>" +
                 "<action fragment=\"host\" value=\"www.test.com\" 
type=\"set\"/>" +
                 "<action fragment=\"port\" xpath=\"get-property('port')\" 
type=\"set\"/>" +
                 "<action fragment=\"path\" value=\"/services\" 
type=\"prepend\"/></rule><rule>" +
-                "<condition><and xmlns=\"\"><match type=\"url\" 
fragment=\"host\" regex=\"www.test.com\"/>" +
-                "<equal type=\"url\" fragment=\"port\" 
value=\"9090\"/></and></condition>" +
+                "<condition><and xmlns=\"\"><match type=\"url\" 
source=\"host\" regex=\"www.test.com\"/>" +
+                "<equal type=\"url\" source=\"port\" 
value=\"9090\"/></and></condition>" +
                 "<action fragment=\"path\" regex=\".*/FooService\" 
type=\"replace\" " +
                 "value=\"/BarService\"/></rule>" +
                 "</rewrite>";

Modified: 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/base/SequenceMediatorTest.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/base/SequenceMediatorTest.java?rev=996425&r1=996424&r2=996425&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/base/SequenceMediatorTest.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/base/SequenceMediatorTest.java
 Mon Sep 13 06:04:01 2010
@@ -30,6 +30,8 @@ import org.apache.synapse.core.axis2.Axi
 import org.apache.synapse.mediators.TestMediateHandler;
 import org.apache.synapse.mediators.TestMediator;
 import org.apache.synapse.mediators.TestUtils;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.context.ConfigurationContext;
 
 public class SequenceMediatorTest extends TestCase {
 
@@ -123,6 +125,13 @@ public class SequenceMediatorTest extend
         MessageContextCreatorForAxis2.setSynEnv(new 
Axis2SynapseEnvironment(synConfig));
         org.apache.axis2.context.MessageContext mc =
             new org.apache.axis2.context.MessageContext();
+        AxisConfiguration axisConfig = synConfig.getAxisConfiguration();
+        if (axisConfig == null) {
+            axisConfig = new AxisConfiguration();
+            synConfig.setAxisConfiguration(axisConfig);
+        }
+        ConfigurationContext cfgCtx = new ConfigurationContext(axisConfig);
+        mc.setConfigurationContext(cfgCtx);
         mc.setEnvelope(TestUtils.getTestContext("<empty/>").getEnvelope());
 
         new SynapseMessageReceiver().receive(mc);

Modified: 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/url/URLRewriteMediatorTest.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/url/URLRewriteMediatorTest.java?rev=996425&r1=996424&r2=996425&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/url/URLRewriteMediatorTest.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/url/URLRewriteMediatorTest.java
 Mon Sep 13 06:04:01 2010
@@ -111,7 +111,7 @@ public class URLRewriteMediatorTest exte
         RewriteRule rule = new RewriteRule();
         EqualEvaluator eval = new EqualEvaluator();
         URLTextRetriever txtRtvr = new URLTextRetriever();
-        txtRtvr.setFragment(EvaluatorConstants.URI_FRAGMENTS.port.name());
+        txtRtvr.setSource(EvaluatorConstants.URI_FRAGMENTS.port.name());
         eval.setTextRetriever(txtRtvr);
         eval.setValue("8280");
         rule.setCondition(eval);
@@ -135,7 +135,7 @@ public class URLRewriteMediatorTest exte
         RewriteRule rule = new RewriteRule();
         EqualEvaluator eval = new EqualEvaluator();
         URLTextRetriever txtRtvr = new URLTextRetriever();
-        txtRtvr.setFragment(EvaluatorConstants.URI_FRAGMENTS.port.name());
+        txtRtvr.setSource(EvaluatorConstants.URI_FRAGMENTS.port.name());
         eval.setTextRetriever(txtRtvr);
         eval.setValue("8280");
         rule.setCondition(eval);
@@ -160,7 +160,7 @@ public class URLRewriteMediatorTest exte
         rule1.addRewriteAction(action1);
         EqualEvaluator eval1 = new EqualEvaluator();
         URLTextRetriever txtRtvr1 = new URLTextRetriever();
-        txtRtvr1.setFragment(EvaluatorConstants.URI_FRAGMENTS.host.name());
+        txtRtvr1.setSource(EvaluatorConstants.URI_FRAGMENTS.host.name());
         eval1.setTextRetriever(txtRtvr1);
         eval1.setValue("myhost");
         rule1.setCondition(eval1);
@@ -179,7 +179,7 @@ public class URLRewriteMediatorTest exte
         rule2.addRewriteAction(action3);
         MatchEvaluator eval2 = new MatchEvaluator();
         URLTextRetriever txtRtvr2 = new URLTextRetriever();
-        txtRtvr2.setFragment(EvaluatorConstants.URI_FRAGMENTS.path.name());
+        txtRtvr2.setSource(EvaluatorConstants.URI_FRAGMENTS.path.name());
         eval2.setTextRetriever(txtRtvr2);
         eval2.setRegex(Pattern.compile(".*/MyService"));
         rule2.setCondition(eval2);
@@ -199,8 +199,8 @@ public class URLRewriteMediatorTest exte
                 "    <rule>\n" +
                 "        <condition>\n" +
                 "            <and>\n" +
-                "                <equal type=\"url\" fragment=\"protocol\" 
value=\"http\"/>\n" +
-                "                <equal type=\"url\" fragment=\"host\" 
value=\"test.org\"/>\n" +
+                "                <equal type=\"url\" source=\"protocol\" 
value=\"http\"/>\n" +
+                "                <equal type=\"url\" source=\"host\" 
value=\"test.org\"/>\n" +
                 "            </and>\n" +
                 "        </condition>\n" +
                 "        <action value=\"https\" fragment=\"protocol\"/>\n" +
@@ -210,14 +210,14 @@ public class URLRewriteMediatorTest exte
                 "    <rule>\n" +
                 "        <condition>\n" +
                 "            <not>\n" +
-                "                <match type=\"url\" fragment=\"path\" 
regex=\"/services/.*\"/>\n" +
+                "                <match type=\"url\" source=\"path\" 
regex=\"/services/.*\"/>\n" +
                 "            </not>\n" +
                 "        </condition>\n" +
                 "        <action value=\"/services\" type=\"prepend\" 
fragment=\"path\"/>\n" +
                 "    </rule>\n" +
                 "    <rule>\n" +
                 "        <condition>\n" +
-                "            <match type=\"url\" fragment=\"path\" 
regex=\".*/MyService\"/>\n" +
+                "            <match type=\"url\" source=\"path\" 
regex=\".*/MyService\"/>\n" +
                 "        </condition>        \n" +
                 "        <action fragment=\"path\" value=\"StockQuoteService\" 
regex=\"MyService\" type=\"replace\"/>\n" +
                 "        <action fragment=\"ref\" value=\"id\"/>\n" +


Reply via email to