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