Author: hiranya
Date: Tue Jul 16 19:08:08 2013
New Revision: 1503835

URL: http://svn.apache.org/r1503835
Log:
Fixing SYNAPSE-889 If the XPath expression evaluates to null in a 
RewriteAction, treat the result as if it was an empty string. Added a test case 
to verify the fix.

Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/url/RewriteAction.java
    
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/url/URLRewriteMediatorTest.java

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/url/RewriteAction.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/url/RewriteAction.java?rev=1503835&r1=1503834&r2=1503835&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/url/RewriteAction.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/url/RewriteAction.java
 Tue Jul 16 19:08:08 2013
@@ -53,6 +53,9 @@ public class RewriteAction {
         String result;
         if (xpath != null) {
             result = xpath.stringValueOf(messageContext);
+            if (result == null) {
+                result = "";
+            }
         } else {
             result = value;
         }
@@ -68,7 +71,7 @@ public class RewriteAction {
                 uri = new URI("");
             }
 
-            // Since the entire URL has been rewritten we need to reinit all 
the fragments
+            // Since the entire URL has been rewritten we need to re-init all 
the fragments
             fragments.setFragments(uri);
 
         } else if (fragmentIndex == URIFragments.PORT) {

Modified: 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/url/URLRewriteMediatorTest.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/url/URLRewriteMediatorTest.java?rev=1503835&r1=1503834&r2=1503835&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/url/URLRewriteMediatorTest.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/transform/url/URLRewriteMediatorTest.java
 Tue Jul 16 19:08:08 2013
@@ -267,4 +267,22 @@ public class URLRewriteMediatorTest exte
         assertEquals("https://test.com:9443/services/StockQuoteService#id";,
                 msgCtx.getTo().getAddress());
     }
+
+    public void testNonExistingPropertyRewriteScenario() throws Exception {
+        URLRewriteMediator mediator = new URLRewriteMediator();
+        mediator.setOutputProperty("outURL");
+
+        RewriteAction action = new RewriteAction();
+        action.setXpath(new SynapseXPath("get-property('bogus')"));
+        action.setActionType(RewriteAction.ACTION_APPEND);
+        action.setFragmentIndex(URIFragments.PROTOCOL);
+
+        RewriteRule rule = new RewriteRule();
+        rule.addRewriteAction(action);
+        mediator.addRule(rule);
+
+        MessageContext msgCtx = 
TestUtils.createLightweightSynapseMessageContext("<empty/>");
+        msgCtx.setTo(new EndpointReference("http://foo.com";));
+        mediator.mediate(msgCtx);
+    }
 }


Reply via email to