Author: hiranya
Date: Mon Aug 23 07:39:22 2010
New Revision: 988013
URL: http://svn.apache.org/viewvc?rev=988013&view=rev
Log:
Multiple actions per rule support
Modified:
synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/RewriteAction.java
synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/xml/URLRewriteMediatorFactory.java
synapse/trunk/scratch/hiranya/urlrewrite/src/test/java/org/apache/synapse/mediators/URLRewriteTest.java
Modified:
synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/RewriteAction.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/RewriteAction.java?rev=988013&r1=988012&r2=988013&view=diff
==============================================================================
---
synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/RewriteAction.java
(original)
+++
synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/RewriteAction.java
Mon Aug 23 07:39:22 2010
@@ -31,9 +31,14 @@ public class RewriteAction {
private static final Log log = LogFactory.getLog(RewriteAction.class);
+ public static final int ACTION_SET = 0;
+ public static final int ACTION_APPEND = 1;
+ public static final int ACTION_PREPEND = 2;
+
private String value;
private SynapseXPath xpath;
private int fragmentIndex = URLRewriteMediator.FULL_URI;
+ private int actionType = ACTION_SET;
public void execute(Object[] fragments, MessageContext messageContext) {
String result;
@@ -76,7 +81,19 @@ public class RewriteAction {
fragments[fragmentIndex] = -1;
}
} else {
- fragments[fragmentIndex] = result;
+ switch (actionType) {
+ case ACTION_SET:
+ fragments[fragmentIndex] = result;
+ break;
+
+ case ACTION_PREPEND:
+ fragments[fragmentIndex] = result +
fragments[fragmentIndex];
+ break;
+
+ case ACTION_APPEND:
+ fragments[fragmentIndex] = fragments[fragmentIndex] +
result;
+ break;
+ }
}
}
@@ -103,4 +120,12 @@ public class RewriteAction {
public void setXpath(SynapseXPath xpath) {
this.xpath = xpath;
}
+
+ public int getActionType() {
+ return actionType;
+ }
+
+ public void setActionType(int actionType) {
+ this.actionType = actionType;
+ }
}
Modified:
synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/xml/URLRewriteMediatorFactory.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/xml/URLRewriteMediatorFactory.java?rev=988013&r1=988012&r2=988013&view=diff
==============================================================================
---
synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/xml/URLRewriteMediatorFactory.java
(original)
+++
synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/xml/URLRewriteMediatorFactory.java
Mon Aug 23 07:39:22 2010
@@ -84,6 +84,7 @@ public class URLRewriteMediatorFactory e
private RewriteAction parseAction(OMElement actionElt) {
String value = actionElt.getAttributeValue(new QName("value"));
String xpath = actionElt.getAttributeValue(new QName("xpath"));
+ String type = actionElt.getAttributeValue(new QName("type"));
if (value == null && xpath == null) {
handleException("value or xpath attribute is required on the
action element");
@@ -124,6 +125,19 @@ public class URLRewriteMediatorFactory e
} else {
action.setFragmentIndex(URLRewriteMediator.FULL_URI);
}
+
+ if (type != null) {
+ if ("set".equals(type)) {
+ action.setActionType(RewriteAction.ACTION_SET);
+ } else if ("append".equals(type)) {
+ action.setActionType(RewriteAction.ACTION_APPEND);
+ } else if ("prepend".equals(type)) {
+ action.setActionType(RewriteAction.ACTION_PREPEND);
+ } else {
+ handleException("Unknown action type: " + type);
+ }
+ }
+
return action;
}
Modified:
synapse/trunk/scratch/hiranya/urlrewrite/src/test/java/org/apache/synapse/mediators/URLRewriteTest.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/urlrewrite/src/test/java/org/apache/synapse/mediators/URLRewriteTest.java?rev=988013&r1=988012&r2=988013&view=diff
==============================================================================
---
synapse/trunk/scratch/hiranya/urlrewrite/src/test/java/org/apache/synapse/mediators/URLRewriteTest.java
(original)
+++
synapse/trunk/scratch/hiranya/urlrewrite/src/test/java/org/apache/synapse/mediators/URLRewriteTest.java
Mon Aug 23 07:39:22 2010
@@ -35,6 +35,7 @@ import org.apache.axis2.addressing.Endpo
import java.net.URI;
import java.net.URISyntaxException;
+import java.io.InputStream;
public class URLRewriteTest extends TestCase {
@@ -58,7 +59,8 @@ public class URLRewriteTest extends Test
}
public void testMediateWithFactory() throws Exception {
- String xml = "<rewrite
xmlns=\"http://synapse.apache.org/ns/2010/04/configuration\">" +
+ String xml =
+ "<rewrite
xmlns=\"http://synapse.apache.org/ns/2010/04/configuration\">" +
" <rule>" +
" <condition>" +
" <match type=\"url\" fragment=\"host\"
regex=\"wso2.org\"/>" +
@@ -67,6 +69,9 @@ public class URLRewriteTest extends Test
" <action fragment=\"port\" value=\"9443\"/>" +
" <action fragment=\"protocol\" value=\"https\"/>" +
" </rule>" +
+ " <rule>" +
+ " <action fragment=\"path\" value=\"/esb\"
type=\"prepend\"/>" +
+ " </rule>" +
"</rewrite>";
URLRewriteMediatorFactory fac = new URLRewriteMediatorFactory();
Mediator mediator = fac.createMediator(AXIOMUtil.stringToOM(xml));
@@ -76,7 +81,7 @@ public class URLRewriteTest extends Test
SynapseConfiguration config = new SynapseConfiguration();
SynapseEnvironment env = new Axis2SynapseEnvironment(config);
MessageContext synMc = new Axis2MessageContext(mc, config, env);
- synMc.setProperty("prop1", "ref1");
+ synMc.setProperty("foo", "/esb");
synMc.setTo(new
EndpointReference("http://wso2.org:9763/services/MyService"));
mediator.mediate(synMc);