You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by hi...@apache.org on 2010/08/23 11:50:14 UTC

svn commit: r988050 - in /synapse/trunk/scratch/hiranya/urlrewrite/src: main/java/org/apache/synapse/mediators/ main/java/org/apache/synapse/mediators/xml/ test/java/org/apache/synapse/mediators/

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));