You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2010/10/04 20:03:22 UTC
svn commit: r1004341 - in /cxf/trunk/rt/frontend/jaxrs/src:
main/java/org/apache/cxf/jaxrs/impl/ main/java/org/apache/cxf/jaxrs/utils/
test/java/org/apache/cxf/jaxrs/client/ test/java/org/apache/cxf/jaxrs/impl/
Author: sergeyb
Date: Mon Oct 4 18:03:21 2010
New Revision: 1004341
URL: http://svn.apache.org/viewvc?rev=1004341&view=rev
Log:
A hack to ensure that a + contained in UriBuilder.replaceQuery is retained but is encoded otherwise
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java?rev=1004341&r1=1004340&r2=1004341&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java Mon Oct 4 18:03:21 2010
@@ -592,7 +592,7 @@ public class UriBuilderImpl extends UriB
// of quertyParam are encoded as '+'
queryValue = queryValue.replace(" ", "%20");
}
- query = JAXRSUtils.getStructuredParams(queryValue, "&", false, false);
+ query = JAXRSUtils.getStructuredParams(queryValue, "&", false, true);
return this;
}
@@ -661,9 +661,7 @@ public class UriBuilderImpl extends UriB
Map.Entry<String, List<String>> entry = it.next();
for (Iterator<String> sit = entry.getValue().iterator(); sit.hasNext();) {
String val = sit.next();
- if (fromEncoded) {
- val = HttpUtils.encodePartiallyEncoded(val, isQuery);
- } else if (isQuery && !val.startsWith("{") && !val.endsWith("}")) {
+ if (fromEncoded || (isQuery && !val.startsWith("{") && !val.endsWith("}"))) {
val = HttpUtils.encodePartiallyEncoded(val, isQuery);
}
b.append(entry.getKey());
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=1004341&r1=1004340&r2=1004341&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java Mon Oct 4 18:03:21 2010
@@ -64,7 +64,7 @@ public final class HttpUtils {
// there are more of such characters, ex, '*' but '*' is not affected by UrlEncode
private static final String PATH_RESERVED_CHARACTERS = "=@";
- private static final String QUERY_RESERVED_CHARACTERS = "?/+";
+ private static final String QUERY_RESERVED_CHARACTERS = "?/";
private HttpUtils() {
}
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=1004341&r1=1004340&r2=1004341&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Mon Oct 4 18:03:21 2010
@@ -939,8 +939,8 @@ public final class JAXRSUtils {
String value = null;
if (values.length == 1) {
value = "";
- } else if (decode) {
- value = (";".equals(sep) || !decodePlus)
+ } else if (decode || (decodePlus && values[1].contains("+"))) {
+ value = (";".equals(sep))
? HttpUtils.pathDecode(values[1]) : HttpUtils.urlDecode(values[1]);
} else {
value = values[1];
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java?rev=1004341&r1=1004340&r2=1004341&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java Mon Oct 4 18:03:21 2010
@@ -33,8 +33,8 @@ public class WebClientTest extends Asser
@Test
public void testEncoding() {
URI u = WebClient.create("http://foo").path("bar+ %2B").matrix("a", "value+ ")
- .query("b", "bv+ ").getCurrentURI();
- assertEquals("http://foo/bar+%20%2B;a=value+%20?b=bv++", u.toString());
+ .query("b", "bv+ %2B").getCurrentURI();
+ assertEquals("http://foo/bar+%20%2B;a=value+%20?b=bv%2B+%2B", u.toString());
}
@Test
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java?rev=1004341&r1=1004340&r2=1004341&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java Mon Oct 4 18:03:21 2010
@@ -167,7 +167,7 @@ public class UriBuilderImplTest extends
.matrixParam("m", "m1 ", "m2+%20")
.queryParam("q", "q1 ", "q2+q3%20").clone().buildFromEncoded("a+ ", "b%2B%20 ");
assertEquals("URI is not built correctly",
- "http://bar/a+%20/b%2B%20%20;m=m1%20;m=m2+%20?q=q1+&q=q2+q3%20",
+ "http://bar/a+%20/b%2B%20%20;m=m1%20;m=m2+%20?q=q1+&q=q2%2Bq3%20",
newUri.toString());
}
@@ -176,7 +176,7 @@ public class UriBuilderImplTest extends
URI uri = new URI("http://bar/foo+%20%2B?q=a+b%20%2B");
URI newUri = new UriBuilderImpl(uri).buildFromEncoded();
assertEquals("URI is not built correctly",
- "http://bar/foo+%20%2B?q=a+b%20%2B", newUri.toString());
+ "http://bar/foo+%20%2B?q=a%2Bb%20%2B", newUri.toString());
}
@Test
@@ -215,7 +215,7 @@ public class UriBuilderImplTest extends
public void testEncodedAddedQuery() throws Exception {
URI uri = new URI("http://bar");
URI newUri = new UriBuilderImpl(uri).queryParam("q", "a+b%20%2B").buildFromEncoded();
- assertEquals("URI is not built correctly", "http://bar?q=a+b%20%2B", newUri.toString());
+ assertEquals("URI is not built correctly", "http://bar?q=a%2Bb%20%2B", newUri.toString());
}
@Test