Author: hiranya
Date: Wed Jan 18 14:36:13 2012
New Revision: 1232907
URL: http://svn.apache.org/viewvc?rev=1232907&view=rev
Log:
Fixing an issue in the URLMappingBasedDispatcher - URL paths with query params
are not properly matched
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/dispatch/URLMappingHelper.java
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/rest/URLMappingBasedDispatcherTest.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/dispatch/URLMappingHelper.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/dispatch/URLMappingHelper.java?rev=1232907&r1=1232906&r2=1232907&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/dispatch/URLMappingHelper.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/dispatch/URLMappingHelper.java
Wed Jan 18 14:36:13 2012
@@ -63,6 +63,10 @@ public class URLMappingHelper implements
}
url = RESTUtils.trimSlashes(url);
+ int index = url.indexOf('?');
+ if (index != -1) {
+ url = url.substring(0, index);
+ }
String[] segments = url.split("/");
int matchingLength = 0;
for (int i = 0; i < pathSegments.length; i++) {
Modified:
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/rest/URLMappingBasedDispatcherTest.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/rest/URLMappingBasedDispatcherTest.java?rev=1232907&r1=1232906&r2=1232907&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/rest/URLMappingBasedDispatcherTest.java
(original)
+++
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/rest/URLMappingBasedDispatcherTest.java
Wed Jan 18 14:36:13 2012
@@ -71,6 +71,22 @@ public class URLMappingBasedDispatcherTe
handler.process(synCtx);
assertEquals(PROP_VALUE, synCtx.getProperty(PROP_NAME));
+ synCtx = getMessageContext(synapseConfig, false, "/test/foo/bar?a=b",
"GET");
+ handler.process(synCtx);
+ assertEquals(PROP_VALUE, synCtx.getProperty(PROP_NAME));
+
+ synCtx = getMessageContext(synapseConfig, false,
"/test/foo/bar/baz?a=b", "GET");
+ handler.process(synCtx);
+ assertEquals(PROP_VALUE, synCtx.getProperty(PROP_NAME));
+
+ synCtx = getMessageContext(synapseConfig, false, "/test/foo/bar/?a=b",
"GET");
+ handler.process(synCtx);
+ assertEquals(PROP_VALUE, synCtx.getProperty(PROP_NAME));
+
+ synCtx = getMessageContext(synapseConfig, false, "/test/foo/bars?a=b",
"GET");
+ handler.process(synCtx);
+ assertNull(synCtx.getProperty(PROP_NAME));
+
synCtx = getMessageContext(synapseConfig, false, "/test/foo/", "GET");
handler.process(synCtx);
assertNull(synCtx.getProperty(PROP_NAME));