You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2021/09/14 15:03:31 UTC
[cxf] branch 3.4.x-fixes updated: [CXF-8594]:Fix regular expression parameter with non-capturing group … (#847)
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 3.4.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/3.4.x-fixes by this push:
new 352d8bf [CXF-8594]:Fix regular expression parameter with non-capturing group … (#847)
352d8bf is described below
commit 352d8bf50c2d14ac2e5ee720ec97f95b151851e2
Author: jimma <em...@apache.org>
AuthorDate: Tue Sep 14 19:23:23 2021 +0800
[CXF-8594]:Fix regular expression parameter with non-capturing group … (#847)
* [CXF-8594]:Fix regular expression parameter with non-capturing group doesn't work
* [CXF-8594]:Improve the fix to better check the non grouping expression
---
.../src/main/java/org/apache/cxf/jaxrs/model/URITemplate.java | 2 +-
.../test/java/org/apache/cxf/jaxrs/model/URITemplateTest.java | 11 +++++++++++
2 files changed, 12 insertions(+), 1 deletion(-)
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 b0c0af2..5003d32 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
@@ -83,7 +83,7 @@ public final class URITemplate {
// however do not add them if they already exist since that will cause the Matcher
// to create extraneous values. Parens identify a group so multiple parens would
// indicate multiple groups.
- if (pattern.startsWith("(") && pattern.endsWith(")")) {
+ if (pattern.startsWith("(") && pattern.endsWith(")") && !pattern.startsWith("(?")) {
patternBuilder.append(pattern);
} else {
patternBuilder.append('(');
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 c2ba414..fb8c2e5 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
@@ -28,6 +28,7 @@ import javax.ws.rs.core.MultivaluedMap;
import org.apache.cxf.jaxrs.impl.MetadataMap;
import org.apache.cxf.jaxrs.model.URITemplate.CurlyBraceTokenizer;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -789,4 +790,14 @@ public class URITemplateTest {
-Integer.signum(URITemplate.compareTemplates(t2, t1)));
}
+ @Test
+ public void testNonCapturingGroup() {
+ MultivaluedMap<String, String> values = new MetadataMap<>();
+ URITemplate t1 = new URITemplate("/{name: (?:cxf|CXF)}");
+ assertTrue("should match '/cxf' url", t1.match("/cxf", values));
+ Assert.assertEquals("cxf", values.get("name").get(0));
+ URITemplate t2 = new URITemplate("/{project: (?>cxf|apache)}");
+ assertTrue("should match '/cxf' url", t2.match("/cxf", values));
+ Assert.assertEquals("cxf", values.get("project").get(0));
+ }
}
\ No newline at end of file