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 2012/01/25 00:30:16 UTC
svn commit: r1235552 - in /cxf/branches/2.4.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ rt/frontend...
Author: sergeyb
Date: Tue Jan 24 23:30:16 2012
New Revision: 1235552
URL: http://svn.apache.org/viewvc?rev=1235552&view=rev
Log:
Merged revisions 1235547 via svnmerge from
https://svn.apache.org/repos/asf/cxf/branches/2.5.x-fixes
................
r1235547 | sergeyb | 2012-01-24 23:19:12 +0000 (Tue, 24 Jan 2012) | 9 lines
Merged revisions 1235544 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1235544 | sergeyb | 2012-01-24 23:15:27 +0000 (Tue, 24 Jan 2012) | 1 line
[CXF-4061] Keeping some of the URI path characters unencoded
........
................
Modified:
cxf/branches/2.4.x-fixes/ (props changed)
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Jan 24 23:30:16 2012
@@ -0,0 +1,2 @@
+/cxf/branches/2.5.x-fixes:1235547
+/cxf/trunk:1235544
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java?rev=1235552&r1=1235551&r2=1235552&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java Tue Jan 24 23:30:16 2012
@@ -40,7 +40,7 @@ public final class URITemplate {
public static final String LIMITED_REGEX_SUFFIX = "(/.*)?";
public static final String FINAL_MATCH_GROUP = "FINAL_MATCH_GROUP";
private static final String DEFAULT_PATH_VARIABLE_REGEX = "([^/]+?)";
- private static final String CHARACTERS_TO_ESCAPE = ".*+";
+ private static final String CHARACTERS_TO_ESCAPE = ".*+$()";
private static final String SLASH = "/";
private static final String SLASH_QUOTE = "/;";
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java?rev=1235552&r1=1235551&r2=1235552&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java Tue Jan 24 23:30:16 2012
@@ -326,11 +326,16 @@ public class WadlGenerator implements Re
}
private String getPath(String path) {
+ String thePath = null;
if (ignoreForwardSlash && path.startsWith("/") && path.length() > 0) {
- return path.substring(1);
+ thePath = path.substring(1);
} else {
- return path;
+ thePath = path;
}
+ if (thePath.contains("&")) {
+ thePath = thePath.replace("&", "&");
+ }
+ return thePath;
}
private void startMethodTag(StringBuilder sb, OperationResourceInfo ori) {
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=1235552&r1=1235551&r2=1235552&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java Tue Jan 24 23:30:16 2012
@@ -63,7 +63,7 @@ public final class HttpUtils {
private static final String CHARSET_PARAMETER = "charset";
// there are more of such characters, ex, '*' but '*' is not affected by UrlEncode
- private static final String PATH_RESERVED_CHARACTERS = "=@/:";
+ private static final String PATH_RESERVED_CHARACTERS = "=@/:!$&\'(),;~";
private static final String QUERY_RESERVED_CHARACTERS = "?/";
private HttpUtils() {
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java?rev=1235552&r1=1235551&r2=1235552&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java Tue Jan 24 23:30:16 2012
@@ -40,6 +40,13 @@ public class URITemplateTest extends Ass
}
@Test
+ public void testPathCharacters() {
+ String pathChars = ":@!$&'*+,;=-._~()";
+ assertTrue(new URITemplate(pathChars).match(pathChars,
+ new MetadataMap<String, String>()));
+ }
+
+ @Test
public void testMatchBasic() throws Exception {
URITemplate uriTemplate = new URITemplate("/customers/{id}");
MultivaluedMap<String, String> values = new MetadataMap<String, String>();
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java?rev=1235552&r1=1235551&r2=1235552&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java Tue Jan 24 23:30:16 2012
@@ -59,8 +59,24 @@ public class HttpUtilsTest extends Asser
assertEquals("%2B+", HttpUtils.urlEncode("+ "));
}
+
@Test
public void testPathEncode() {
+ // rfc3986.txt 3.3
+ //segment-nz = 1*pchar
+ //pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
+ // sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
+ // unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
+
+ // '&' has to be represented as & in WADL
+
+ String pathChars = ":@!$&'()*+,;=-._~";
+ String str = HttpUtils.pathEncode(pathChars);
+ assertEquals(str, pathChars);
+ }
+
+ @Test
+ public void testPathEncodeWithPlusAndSpace() {
assertEquals("+%20", HttpUtils.pathEncode("+ "));
}
Modified: cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java?rev=1235552&r1=1235551&r2=1235552&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java (original)
+++ cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java Tue Jan 24 23:30:16 2012
@@ -117,6 +117,12 @@ public class BookStore {
public void preDestroy() {
//System.out.println("PreDestroy called");
}
+
+ @GET
+ @Path("allCharsButA-B/:@!$&'()*+,;=-._~")
+ public Book getWithComplexPath() {
+ return new Book("Encoded Path", 125L);
+ }
@GET
@Path("/default")
Modified: cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=1235552&r1=1235551&r2=1235552&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java (original)
+++ cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Tue Jan 24 23:30:16 2012
@@ -80,6 +80,15 @@ public class JAXRSClientServerBookTest e
}
@Test
+ public void testWithComplexPath() {
+ WebClient wc =
+ WebClient.create("http://localhost:" + PORT + "/bookstore/allCharsButA-B/:@!$&'()*+,;=-._~");
+ wc.accept("application/xml");
+ Book book = wc.get(Book.class);
+ assertEquals("Encoded Path", book.getName());
+ }
+
+ @Test
public void testMalformedAcceptType() {
WebClient wc =
WebClient.create("http://localhost:" + PORT + "/bookstore/books/123");