Author: hiranya
Date: Mon Aug 23 09:50:14 2010
New Revision: 988050

URL: http://svn.apache.org/viewvc?rev=988050&view=rev
Log:
Implemented replace action


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=988050&r1=988049&r2=988050&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 09:50:14 2010
@@ -34,9 +34,11 @@ public class RewriteAction {
     public static final int ACTION_SET = 0;
     public static final int ACTION_APPEND = 1;
     public static final int ACTION_PREPEND = 2;
+    public static final int ACTION_REPLACE = 3;
 
     private String value;
     private SynapseXPath xpath;
+    private String regex;
     private int fragmentIndex = URLRewriteMediator.FULL_URI;
     private int actionType = ACTION_SET;
 
@@ -96,6 +98,13 @@ public class RewriteAction {
                             (fragments[fragmentIndex] != null ? 
fragments[fragmentIndex] : "") +
                                     result;
                     break;
+
+                case ACTION_REPLACE:
+                    String str = (fragments[fragmentIndex] != null ?
+                            (String) fragments[fragmentIndex] : "");
+                    str = str.replaceAll(regex, result);
+                    fragments[fragmentIndex] = str;
+                    break;
             }
         }
     }
@@ -124,6 +133,14 @@ public class RewriteAction {
         this.xpath = xpath;
     }
 
+    public String getRegex() {
+        return regex;
+    }
+
+    public void setRegex(String regex) {
+        this.regex = regex;
+    }
+
     public int getActionType() {
         return 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=988050&r1=988049&r2=988050&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 09:50:14 2010
@@ -144,6 +144,14 @@ public class URLRewriteMediatorFactory e
                 action.setActionType(RewriteAction.ACTION_APPEND);
             } else if ("prepend".equals(type)) {
                 action.setActionType(RewriteAction.ACTION_PREPEND);
+            } else if ("replace".equals(type)) {
+                action.setActionType(RewriteAction.ACTION_REPLACE);
+                String regex = actionElt.getAttributeValue(new QName("regex"));
+                if (regex != null) {
+                    action.setRegex(regex);
+                } else {
+                    handleException("regex attribute is required for replace 
action");
+                }
             } else {
                 handleException("Unknown action type: " + type);
             }

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=988050&r1=988049&r2=988050&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 09:50:14 2010
@@ -63,8 +63,8 @@ public class URLRewriteTest extends Test
                 "    <rule>" +
                 "        <condition>" +
                 "            <and>" +
-                "               <match type=\"url\" fragment=\"host\" 
regex=\"wso2.org\"/>" +
-                "               <match type=\"url\" fragment=\"port\" 
regex=\"9763\"/>" +
+                "               <equal type=\"url\" fragment=\"host\" 
value=\"wso2.org\"/>" +
+                "               <equal type=\"url\" fragment=\"port\" 
value=\"9763\"/>" +
                 "            </and>" +
                 "        </condition>" +
                 "        <action fragment=\"host\" value=\"wso2.com\"/>" +
@@ -74,6 +74,12 @@ public class URLRewriteTest extends Test
                 "    <rule>" +
                 "        <action fragment=\"path\" value=\"/esb\" 
type=\"prepend\"/>" +
                 "    </rule>" +
+                "    <rule>" +
+                "        <condition>" +
+                "           <match type=\"url\" fragment=\"path\" 
regex=\".*/MyService\"/>" +
+                "        </condition>" +
+                "        <action fragment=\"path\" value=\"StockQuoteService\" 
regex=\"MyService\" type=\"replace\"/>" +
+                "    </rule>" +
                 "</rewrite>";
         URLRewriteMediatorFactory fac = new URLRewriteMediatorFactory();
         Mediator mediator = fac.createMediator(AXIOMUtil.stringToOM(xml));


Reply via email to