cxf git commit: [CXF-6474] Minor update to UriTemplate
Repository: cxf Updated Branches: refs/heads/3.0.x-fixes c5cd6ed14 -> 45e03d5fc [CXF-6474] Minor update to UriTemplate Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/45e03d5f Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/45e03d5f Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/45e03d5f Branch: refs/heads/3.0.x-fixes Commit: 45e03d5fcb1c0bfb34124b770963c63c4e9d3502 Parents: c5cd6ed Author: Sergey Beryozkin Authored: Wed Jun 24 11:40:43 2015 +0100 Committer: Sergey Beryozkin Committed: Wed Jun 24 11:41:39 2015 +0100 -- .../org/apache/cxf/jaxrs/model/URITemplate.java | 3 +- .../apache/cxf/jaxrs/model/URITemplateTest.java | 35 +++- 2 files changed, 36 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/45e03d5f/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java -- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java index 637beb1..47ed9a6 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java @@ -188,7 +188,8 @@ public final class URITemplate { for (String name : variables) { while (i <= groupCount) { String value = m.group(i++); -if (value == null || value.length() == 0 && i < groupCount) { +if ((value == null || value.length() == 0 && i < groupCount) +&& variables.size() + 1 < groupCount) { continue; } templateVariableToValue.add(name, value); http://git-wip-us.apache.org/repos/asf/cxf/blob/45e03d5f/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java -- diff --git a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java index 47bb62c..acfd7da 100644 --- a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java +++ b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java @@ -65,7 +65,7 @@ public class URITemplateTest extends Assert { String value = values.getFirst("id"); assertEquals("123", value); } - + @Test public void testMatchWithMatrixAndTemplate() throws Exception { URITemplate uriTemplate = new URITemplate("/customers/{id}"); @@ -439,6 +439,39 @@ public class URITemplateTest extends Assert { assertEquals("/", finalPath); } +@Test +public void testExpressionWithTwoVars() throws Exception { +URITemplate uriTemplate = new URITemplate("/{tenant : [^/]*}/resource/{id}"); +MultivaluedMap values = new MetadataMap(); +boolean match = uriTemplate.match("/t1/resource/1", values); +assertTrue(match); +String tenant = values.getFirst("tenant"); +assertEquals("t1", tenant); +String id = values.getFirst("id"); +assertEquals("1", id); +String finalPath = values.getFirst(URITemplate.FINAL_MATCH_GROUP); +assertEquals("/", finalPath); + +values.clear(); +match = uriTemplate.match("//resource/1", values); +assertTrue(match); +tenant = values.getFirst("tenant"); +assertEquals("", tenant); +id = values.getFirst("id"); +assertEquals("1", id); +finalPath = values.getFirst(URITemplate.FINAL_MATCH_GROUP); +assertEquals("/", finalPath); + +values.clear(); +match = uriTemplate.match("/t1/resource/1/sub", values); +assertTrue(match); +tenant = values.getFirst("tenant"); +assertEquals("t1", tenant); +id = values.getFirst("id"); +assertEquals("1", id); +finalPath = values.getFirst(URITemplate.FINAL_MATCH_GROUP); +assertEquals("/sub", finalPath); +} @Test public void testExpressionWithNestedGroupAndManySegments() throws Exception {
cxf git commit: [CXF-6474] Minor update to UriTemplate
Repository: cxf Updated Branches: refs/heads/master 9c5f2a657 -> c1387810b [CXF-6474] Minor update to UriTemplate Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/c1387810 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/c1387810 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/c1387810 Branch: refs/heads/master Commit: c1387810b05a79a219a3fe89adac5e23fb8ef87f Parents: 9c5f2a6 Author: Sergey Beryozkin Authored: Wed Jun 24 11:40:43 2015 +0100 Committer: Sergey Beryozkin Committed: Wed Jun 24 11:40:43 2015 +0100 -- .../org/apache/cxf/jaxrs/model/URITemplate.java | 3 +- .../apache/cxf/jaxrs/model/URITemplateTest.java | 35 +++- 2 files changed, 36 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/c1387810/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java -- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java index 637beb1..47ed9a6 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java @@ -188,7 +188,8 @@ public final class URITemplate { for (String name : variables) { while (i <= groupCount) { String value = m.group(i++); -if (value == null || value.length() == 0 && i < groupCount) { +if ((value == null || value.length() == 0 && i < groupCount) +&& variables.size() + 1 < groupCount) { continue; } templateVariableToValue.add(name, value); http://git-wip-us.apache.org/repos/asf/cxf/blob/c1387810/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java -- diff --git a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java index 47bb62c..acfd7da 100644 --- a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java +++ b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java @@ -65,7 +65,7 @@ public class URITemplateTest extends Assert { String value = values.getFirst("id"); assertEquals("123", value); } - + @Test public void testMatchWithMatrixAndTemplate() throws Exception { URITemplate uriTemplate = new URITemplate("/customers/{id}"); @@ -439,6 +439,39 @@ public class URITemplateTest extends Assert { assertEquals("/", finalPath); } +@Test +public void testExpressionWithTwoVars() throws Exception { +URITemplate uriTemplate = new URITemplate("/{tenant : [^/]*}/resource/{id}"); +MultivaluedMap values = new MetadataMap(); +boolean match = uriTemplate.match("/t1/resource/1", values); +assertTrue(match); +String tenant = values.getFirst("tenant"); +assertEquals("t1", tenant); +String id = values.getFirst("id"); +assertEquals("1", id); +String finalPath = values.getFirst(URITemplate.FINAL_MATCH_GROUP); +assertEquals("/", finalPath); + +values.clear(); +match = uriTemplate.match("//resource/1", values); +assertTrue(match); +tenant = values.getFirst("tenant"); +assertEquals("", tenant); +id = values.getFirst("id"); +assertEquals("1", id); +finalPath = values.getFirst(URITemplate.FINAL_MATCH_GROUP); +assertEquals("/", finalPath); + +values.clear(); +match = uriTemplate.match("/t1/resource/1/sub", values); +assertTrue(match); +tenant = values.getFirst("tenant"); +assertEquals("t1", tenant); +id = values.getFirst("id"); +assertEquals("1", id); +finalPath = values.getFirst(URITemplate.FINAL_MATCH_GROUP); +assertEquals("/sub", finalPath); +} @Test public void testExpressionWithNestedGroupAndManySegments() throws Exception {