Author: hiranya
Date: Mon Aug 23 10:05:34 2010
New Revision: 988054

URL: http://svn.apache.org/viewvc?rev=988054&view=rev
Log:
Implemented remove 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=988054&r1=988053&r2=988054&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 10:05:34 2010
@@ -35,6 +35,7 @@ public class RewriteAction {
     public static final int ACTION_APPEND = 1;
     public static final int ACTION_PREPEND = 2;
     public static final int ACTION_REPLACE = 3;
+    public static final int ACTION_REMOVE = 4;
 
     private String value;
     private SynapseXPath xpath;
@@ -83,29 +84,32 @@ public class RewriteAction {
                 fragments[fragmentIndex] = -1;
             }
         } else {
+            String str;
             switch (actionType) {
-                case ACTION_SET:
-                    fragments[fragmentIndex] = result;
-                    break;
-
                 case ACTION_PREPEND:
-                    fragments[fragmentIndex] = result +
+                    str = result +
                             (fragments[fragmentIndex] != null ? 
fragments[fragmentIndex] : "");
                     break;
 
                 case ACTION_APPEND:
-                    fragments[fragmentIndex] =
+                    str =
                             (fragments[fragmentIndex] != null ? 
fragments[fragmentIndex] : "") +
                                     result;
                     break;
 
                 case ACTION_REPLACE:
-                    String str = (fragments[fragmentIndex] != null ?
-                            (String) fragments[fragmentIndex] : "");
+                    str = (fragments[fragmentIndex] != null ? (String) 
fragments[fragmentIndex] : "");
                     str = str.replaceAll(regex, result);
-                    fragments[fragmentIndex] = str;
                     break;
-            }
+
+                case ACTION_REMOVE:
+                    str = null;
+                    break;
+
+                default:
+                    str = result;
+            }            
+            fragments[fragmentIndex] = str;
         }
     }
 

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=988054&r1=988053&r2=988054&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 10:05:34 2010
@@ -97,7 +97,7 @@ public class URLRewriteMediatorFactory e
         String xpath = actionElt.getAttributeValue(new QName("xpath"));
         String type = actionElt.getAttributeValue(new QName("type"));
 
-        if (value == null && xpath == null) {
+        if (value == null && xpath == null && !"remove".equals(type)) {
             handleException("value or xpath attribute is required on the 
action element");
         }
 
@@ -138,6 +138,11 @@ public class URLRewriteMediatorFactory e
         }
 
         if (type != null) {
+            if (action.getFragmentIndex() == URLRewriteMediator.FULL_URI ||
+                    action.getFragmentIndex() == URLRewriteMediator.PORT) {
+                handleException("type attribute is not allowed for 'port' and 
'full URI' rewrites");    
+            }
+
             if ("set".equals(type)) {
                 action.setActionType(RewriteAction.ACTION_SET);
             } else if ("append".equals(type)) {
@@ -152,6 +157,8 @@ public class URLRewriteMediatorFactory e
                 } else {
                     handleException("regex attribute is required for replace 
action");
                 }
+            } else if ("remove".equals(type)) {
+                action.setActionType(RewriteAction.ACTION_REMOVE);             
   
             } 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=988054&r1=988053&r2=988054&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 10:05:34 2010
@@ -79,6 +79,10 @@ public class URLRewriteTest extends Test
                 "           <match type=\"url\" fragment=\"path\" 
regex=\".*/MyService\"/>" +
                 "        </condition>" +
                 "        <action fragment=\"path\" value=\"StockQuoteService\" 
regex=\"MyService\" type=\"replace\"/>" +
+                "        <action fragment=\"ref\" value=\"summary\"/>" +
+                "    </rule>" +
+                "    <rule>" +
+                "        <action fragment=\"ref\" type=\"remove\"/>" +
                 "    </rule>" +
                 "</rewrite>";
         URLRewriteMediatorFactory fac = new URLRewriteMediatorFactory();


Reply via email to