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 2011/02/11 15:33:00 UTC
svn commit: r1069814 - in /cxf/trunk:
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/
rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/
Author: sergeyb
Date: Fri Feb 11 14:33:00 2011
New Revision: 1069814
URL: http://svn.apache.org/viewvc?rev=1069814&view=rev
Log:
[CXF-3330] Escaping literal pluses in URITemplate
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java?rev=1069814&r1=1069813&r2=1069814&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java Fri Feb 11 14:33:00 2011
@@ -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 final String template;
private final List<String> variables = new ArrayList<String>();
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java?rev=1069814&r1=1069813&r2=1069814&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java Fri Feb 11 14:33:00 2011
@@ -260,7 +260,45 @@ public class URITemplateTest extends Ass
assertFalse(uriTemplate.match("/books/a", values));
assertFalse(uriTemplate.match("/books/ac", values));
}
+
+ @Test
+ public void testValueWithLiteralPlus() throws Exception {
+ URITemplate uriTemplate = new URITemplate("/books/ab+");
+ MultivaluedMap<String, String> values = new MetadataMap<String, String>();
+
+ assertTrue(uriTemplate.match("/books/ab+", values));
+ assertFalse(uriTemplate.match("/books/abb", values));
+ assertFalse(uriTemplate.match("/books/ab", values));
+ assertFalse(uriTemplate.match("/books/a", values));
+ }
+
+ @Test
+ public void testValueWithManyLiteralPluses() throws Exception {
+ URITemplate uriTemplate = new URITemplate("/books/ab+++++");
+ MultivaluedMap<String, String> values = new MetadataMap<String, String>();
+ assertTrue(uriTemplate.match("/books/ab+++++", values));
+ assertFalse(uriTemplate.match("/books/ab++++++", values));
+ assertFalse(uriTemplate.match("/books/ab++++", values));
+ assertFalse(uriTemplate.match("/books/ab+++", values));
+ assertFalse(uriTemplate.match("/books/ab++", values));
+ assertFalse(uriTemplate.match("/books/ab+", values));
+ assertFalse(uriTemplate.match("/books/ab", values));
+ assertFalse(uriTemplate.match("/books/a", values));
+ }
+
+ @Test
+ public void testValueWithRegExPlus() throws Exception {
+ URITemplate uriTemplate = new URITemplate("/books/{regex:ab+\\+}");
+ MultivaluedMap<String, String> values = new MetadataMap<String, String>();
+
+ assertTrue(uriTemplate.match("/books/ab+", values));
+ assertFalse(uriTemplate.match("/books/abb", values));
+ assertFalse(uriTemplate.match("/books/abb", values));
+ assertFalse(uriTemplate.match("/books/abc", values));
+ assertFalse(uriTemplate.match("/books/a", values));
+ }
+
@Test
public void testEncodedSpace() throws Exception {
URITemplate uriTemplate = new URITemplate("/1 2/%203");
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java?rev=1069814&r1=1069813&r2=1069814&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java Fri Feb 11 14:33:00 2011
@@ -162,6 +162,13 @@ public class BookStore {
}
@GET
+ @Path("name-in-query")
+ @Produces("application/xml")
+ public Book getBookFromQuery(@QueryParam("name") String name) {
+ return new Book(name, 321L);
+ }
+
+ @GET
@Path("propagate-exception2")
public Book propogateException2() throws BookNotFoundFault {
PhaseInterceptorChain.getCurrentMessage().put("org.apache.cxf.propagate.exception", Boolean.FALSE);
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=1069814&r1=1069813&r2=1069814&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Fri Feb 11 14:33:00 2011
@@ -67,6 +67,18 @@ public class JAXRSClientServerBookTest e
}
@Test
+ public void testGetBookWithNameInQuery() throws Exception {
+
+ String endpointAddress =
+ "http://localhost:" + PORT + "/bookstore/name-in-query";
+ WebClient wc = WebClient.create(endpointAddress);
+ String name = "Many spaces";
+ wc.query("name", name);
+ Book b = wc.get(Book.class);
+ assertEquals(name, b.getName());
+ }
+
+ @Test
public void testPostAnd401WithText() throws Exception {
String endpointAddress =