[utilities COMMIT] in /java-support/trunk/src: main/java/net/shibboleth/utilities/java/support/net/UriSupport.java te...
noreply at shibboleth.net
noreply at shibboleth.net
Thu Feb 7 00:22:49 EST 2013
Author: putmanb
Date: Thu Feb 7 00:22:49 2013
New Revision: 318
URL: http://svn.shibboleth.net/view/utilities?rev=318&view=rev
Log:
JSPT-20: UriSupport getRawQueryStringParameter is broken on a couple of cases
Modified:
java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/net/UriSupport.java
java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/net/UriSupportTest.java
Modified: java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/net/UriSupport.java
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/net/UriSupport.java?rev=318&r1=317&r2=318&view=diff
==============================================================================
--- java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/net/UriSupport.java (original)
+++ java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/net/UriSupport.java Thu Feb 7 00:22:49 2013
@@ -207,21 +207,21 @@
}
final String encodedName = urlEncode(trimmedName);
-
- int index = queryString.indexOf(encodedName);
- while (index != -1) {
- // check if this is an valueless parameter at the end of the query string
- if (index + encodedName.length() == queryString.length()) {
- return encodedName;
- }
-
- // check if the next character after the name is an = or if we've just found another parameter
- // name that happens to start with the name we're looking for
- if (queryString.charAt(index++) == '=') {
- return queryString.substring(index - encodedName.length() - 1, queryString.indexOf("&", index));
- }
- }
-
+
+ // Special case, just a single parameter present
+ if (!trimmedQuery.contains("&")) {
+ if (trimmedQuery.startsWith(encodedName+"=") || trimmedQuery.equals(encodedName)) {
+ return trimmedQuery;
+ }
+ }
+
+ String[] candidates = trimmedQuery.split("&");
+ for (String candidate : candidates) {
+ if (candidate.startsWith(encodedName+"=") || candidate.equals(encodedName)) {
+ return candidate;
+ }
+ }
+
return null;
}
Modified: java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/net/UriSupportTest.java
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/net/UriSupportTest.java?rev=318&r1=317&r2=318&view=diff
==============================================================================
--- java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/net/UriSupportTest.java (original)
+++ java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/net/UriSupportTest.java Thu Feb 7 00:22:49 2013
@@ -68,6 +68,7 @@
}
@Test public void testGetRawQueryStringParameter() {
+ // Chad's original java-support tests
String param = UriSupport.getRawQueryStringParameter(null, null);
Assert.assertEquals(param, null);
@@ -102,6 +103,76 @@
param = UriSupport.getRawQueryStringParameter(queryString, "paramName2");
Assert.assertEquals(param, "paramName2");
+
+ // Tests brought in directly from v2 java-openws
+ queryString = "ABC=123&Foo=Bar&XYZ=456";
+ param = UriSupport.getRawQueryStringParameter(queryString, "Foo");
+ Assert.assertEquals(param, "Foo=Bar");
+
+ queryString = "Foo=Bar&XYZ=456";
+ param = UriSupport.getRawQueryStringParameter(queryString, "Foo");
+ Assert.assertEquals(param, "Foo=Bar");
+
+ queryString = "ABC=123&Foo=Bar";
+ param = UriSupport.getRawQueryStringParameter(queryString, "Foo");
+ Assert.assertEquals(param, "Foo=Bar");
+
+ queryString = "Foo=Bar";
+ param = UriSupport.getRawQueryStringParameter(queryString, "Foo");
+ Assert.assertEquals(param, "Foo=Bar");
+
+ queryString = "ABC=123&Foo=Bar&XYZ456";
+ param = UriSupport.getRawQueryStringParameter(queryString, "NotThere");
+ Assert.assertNull(param);
+
+ queryString = "ABC=123&XYZ456";
+ param = UriSupport.getRawQueryStringParameter(queryString, "Foo");
+ Assert.assertNull(param);
+
+ queryString = null;
+ param = UriSupport.getRawQueryStringParameter(queryString, "Foo");
+ Assert.assertNull(param);
+
+ // Brent's new tests
+ queryString = "ABC=123&FooFoo=BarBar&Foo=Bar&XYZ=456";
+ param = UriSupport.getRawQueryStringParameter(queryString, "Foo");
+ Assert.assertEquals(param, "Foo=Bar");
+
+ queryString = "ABC=123&Foo=&XYZ=456";
+ param = UriSupport.getRawQueryStringParameter(queryString, "Foo");
+ Assert.assertEquals(param, "Foo=");
+
+ queryString = "Foo=&ABC=123&XYZ=456";
[... 34 lines stripped ...]
More information about the commits
mailing list