Author: markt
Date: Thu Aug 8 16:46:55 2013
New Revision: 1511866
URL: http://svn.apache.org/r1511866
Log:
Duplicate path parameters are invalid
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/server/UriTemplate.java
tomcat/trunk/res/findbugs/filter-false-positives.xml
tomcat/trunk/test/org/apache/tomcat/websocket/server/TestUriTemplate.java
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/UriTemplate.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/UriTemplate.java?rev=1511866&r1=1511865&r2=1511866&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/UriTemplate.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/UriTemplate.java Thu
Aug 8 16:46:55 2013
@@ -16,10 +16,9 @@
*/
package org.apache.tomcat.websocket.server;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
-import java.util.List;
+import java.util.LinkedHashMap;
import java.util.Map;
import javax.websocket.DeploymentException;
@@ -36,7 +35,7 @@ public class UriTemplate {
StringManager.getManager(Constants.PACKAGE_NAME);
private final String normalized;
- private final List<Segment> segments = new ArrayList<>();
+ private final Map<String,Segment> segments = new LinkedHashMap<>();
private final boolean hasParameters;
@@ -73,7 +72,12 @@ public class UriTemplate {
}
normalized.append(segment);
}
- this.segments.add(new Segment(index, segment));
+ Segment old =
+ this.segments.put(segment, new Segment(index, segment));
+ if (old != null) {
+ throw new IllegalArgumentException(
+ sm.getString("uriTemplate.duplicateName", segment));
+ }
segmentCount++;
}
@@ -92,8 +96,8 @@ public class UriTemplate {
}
Iterator<Segment> candidateSegments =
- candidate.getSegments().iterator();
- Iterator<Segment> targetSegments = segments.iterator();
+ candidate.getSegments().values().iterator();
+ Iterator<Segment> targetSegments = segments.values().iterator();
while (candidateSegments.hasNext()) {
Segment candidateSegment = candidateSegments.next();
@@ -132,7 +136,7 @@ public class UriTemplate {
}
- private List<Segment> getSegments() {
+ private Map<String,Segment> getSegments() {
return segments;
}
Modified: tomcat/trunk/res/findbugs/filter-false-positives.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/res/findbugs/filter-false-positives.xml?rev=1511866&r1=1511865&r2=1511866&view=diff
==============================================================================
--- tomcat/trunk/res/findbugs/filter-false-positives.xml (original)
+++ tomcat/trunk/res/findbugs/filter-false-positives.xml Thu Aug 8 16:46:55
2013
@@ -639,7 +639,8 @@
<Or>
<Method name="testBasicPrefix" />
<Method name="testQuote2" />
+ <Method name="testDuplicate" />
</Or>
- <Bug code="DLS" />
+ <Bug pattern="DLS_DEAD_LOCAL_STORE"/>
</Match>
</FindBugsFilter>
\ No newline at end of file
Modified:
tomcat/trunk/test/org/apache/tomcat/websocket/server/TestUriTemplate.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/websocket/server/TestUriTemplate.java?rev=1511866&r1=1511865&r2=1511866&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/websocket/server/TestUriTemplate.java
(original)
+++ tomcat/trunk/test/org/apache/tomcat/websocket/server/TestUriTemplate.java
Thu Aug 8 16:46:55 2013
@@ -151,4 +151,11 @@ public class TestUriTemplate {
Assert.assertNull(result);
}
+
+
+ @Test(expected=java.lang.IllegalArgumentException.class)
+ public void testDuplicate() throws Exception {
+ @SuppressWarnings("unused")
+ UriTemplate t = new UriTemplate("/{var}/{var}");
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]