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" +