Author: hiranya
Date: Mon Aug 23 09:26:32 2010
New Revision: 988040

URL: http://svn.apache.org/viewvc?rev=988040&view=rev
Log:
input property 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/URLRewriteMediator.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=988040&r1=988039&r2=988040&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:26:32 2010
@@ -87,11 +87,14 @@ public class RewriteAction {
                     break;
 
                 case ACTION_PREPEND:
-                    fragments[fragmentIndex] = result + 
fragments[fragmentIndex];
+                    fragments[fragmentIndex] = result +
+                            (fragments[fragmentIndex] != null ? 
fragments[fragmentIndex] : "");
                     break;
 
                 case ACTION_APPEND:
-                    fragments[fragmentIndex] = fragments[fragmentIndex] + 
result;
+                    fragments[fragmentIndex] =
+                            (fragments[fragmentIndex] != null ? 
fragments[fragmentIndex] : "") +
+                                    result;
                     break;
             }
         }

Modified: 
synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/URLRewriteMediator.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/URLRewriteMediator.java?rev=988040&r1=988039&r2=988040&view=diff
==============================================================================
--- 
synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/URLRewriteMediator.java
 (original)
+++ 
synapse/trunk/scratch/hiranya/urlrewrite/src/main/java/org/apache/synapse/mediators/URLRewriteMediator.java
 Mon Aug 23 09:26:32 2010
@@ -42,14 +42,16 @@ public class URLRewriteMediator extends 
     public static final int REF         = 6;
 
     private List<RewriteRule> rules = new ArrayList<RewriteRule>();
+    private String inputProperty;
 
     public boolean mediate(MessageContext messageContext) {
         Object[] fragments = newFragmentSet();
         URI uri;
 
-        if (messageContext.getTo() != null) {
+        String address = getInputAddress(messageContext);
+        if (address != null) {
             try {
-                uri = new URI(messageContext.getTo().getAddress());
+                uri = new URI(address);
                 fragments[0] = uri.getScheme();
                 fragments[1] = uri.getUserInfo();
                 fragments[2] = uri.getHost();
@@ -59,7 +61,7 @@ public class URLRewriteMediator extends 
                 fragments[6] = uri.getFragment();
 
             } catch (URISyntaxException e) {
-                handleException("Malformed URI in the To header", e, 
messageContext);
+                handleException("Malformed URI in the input address field", e, 
messageContext);
                 return false;
             }
         } else {
@@ -76,6 +78,18 @@ public class URLRewriteMediator extends 
         return true;
     }
 
+    private String getInputAddress(MessageContext messageContext) {
+        if (inputProperty != null) {
+            Object prop = messageContext.getProperty(inputProperty);
+            if (prop != null && prop instanceof String) {
+                return (String) prop;
+            }
+        } else if (messageContext.getTo() != null) {
+            return messageContext.getTo().getAddress();
+        }
+        return null;
+    }
+
     private Object[] newFragmentSet() {
         return new Object[] {
             null, null, null, -1, null, null, null
@@ -120,4 +134,12 @@ public class URLRewriteMediator extends 
     public void addRule(RewriteRule rule) {
         rules.add(rule);
     }
+
+    public String getInputProperty() {
+        return inputProperty;
+    }
+
+    public void setInputProperty(String inputProperty) {
+        this.inputProperty = inputProperty;
+    }
 }

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=988040&r1=988039&r2=988040&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:26:32 2010
@@ -42,7 +42,13 @@ public class URLRewriteMediatorFactory e
 
     public Mediator createMediator(OMElement element) {
         Iterator rules = element.getChildrenWithName(new QName("rule"));
+        String inputProperty = element.getAttributeValue(new 
QName("inProperty"));
+
         URLRewriteMediator mediator = new URLRewriteMediator();
+        if (inputProperty != null) {
+            mediator.setInputProperty(inputProperty);    
+        }
+
         while (rules.hasNext()) {
             RewriteRule rule = parseRule((OMElement) rules.next());
             mediator.addRule(rule);

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=988040&r1=988039&r2=988040&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:26:32 2010
@@ -35,7 +35,6 @@ import org.apache.axis2.addressing.Endpo
 
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.io.InputStream;
 
 public class URLRewriteTest extends TestCase {
 
@@ -60,10 +59,13 @@ public class URLRewriteTest extends Test
 
     public void testMediateWithFactory() throws Exception {
         String xml =
-                "<rewrite 
xmlns=\"http://synapse.apache.org/ns/2010/04/configuration\";>" +
+                "<rewrite 
xmlns=\"http://synapse.apache.org/ns/2010/04/configuration\"; 
inProperty=\"inputURL\">" +
                 "    <rule>" +
                 "        <condition>" +
-                "            <match type=\"url\" fragment=\"host\" 
regex=\"wso2.org\"/>" +
+                "            <and>" +
+                "               <match type=\"url\" fragment=\"host\" 
regex=\"wso2.org\"/>" +
+                "               <match type=\"url\" fragment=\"port\" 
regex=\"9763\"/>" +
+                "            </and>" +
                 "        </condition>" +
                 "        <action fragment=\"host\" value=\"wso2.com\"/>" +
                 "        <action fragment=\"port\" value=\"9443\"/>" +
@@ -82,7 +84,8 @@ public class URLRewriteTest extends Test
         SynapseEnvironment env = new Axis2SynapseEnvironment(config);
         MessageContext synMc = new Axis2MessageContext(mc, config, env);
         synMc.setProperty("foo", "/esb");
-        synMc.setTo(new 
EndpointReference("http://wso2.org:9763/services/MyService";));
+        synMc.setProperty("inputURL", 
"http://wso2.org:9763/services/MyService";);
+        //synMc.setTo(new 
EndpointReference("http://wso2.org:9763/services/MyService";));
 
         mediator.mediate(synMc);
         System.out.println(synMc.getTo().getAddress());


Reply via email to