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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org