You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2007/03/04 17:07:05 UTC

svn commit: r514424 - in /jakarta/httpcomponents/httpcore/trunk/module-main/src: main/java/org/apache/http/protocol/HttpRequestHandlerRegistry.java test/java/org/apache/http/protocol/TestHttpRequestHandlerRegistry.java

Author: olegk
Date: Sun Mar  4 08:07:04 2007
New Revision: 514424

URL: http://svn.apache.org/viewvc?view=rev&rev=514424
Log:
HTTPCORE-47: Favor suffix patterns (blah*) over prefix ones (*blah) when matching request handlers to request URIs

Modified:
    jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestHandlerRegistry.java
    jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/protocol/TestHttpRequestHandlerRegistry.java

Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestHandlerRegistry.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestHandlerRegistry.java?view=diff&rev=514424&r1=514423&r2=514424
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestHandlerRegistry.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestHandlerRegistry.java Sun Mar  4 08:07:04 2007
@@ -103,7 +103,9 @@
                 String pattern = (String) it.next();
                 if (matchUriRequestPattern(pattern, requestURI)) {
                     // we have a match. is it any better?
-                    if (bestMatch == null || bestMatch.length() <= pattern.length()) {
+                    if (bestMatch == null 
+                            || (bestMatch.length() < pattern.length())
+                            || (bestMatch.length() == pattern.length() && pattern.endsWith("*"))) {
                         handler = this.handlerMap.get(pattern);
                         bestMatch = pattern;
                     }

Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/protocol/TestHttpRequestHandlerRegistry.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/protocol/TestHttpRequestHandlerRegistry.java?view=diff&rev=514424&r1=514423&r2=514424
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/protocol/TestHttpRequestHandlerRegistry.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/protocol/TestHttpRequestHandlerRegistry.java Sun Mar  4 08:07:04 2007
@@ -194,6 +194,21 @@
         assertTrue(def == h);
     }
 
+    public void testSuffixPatternOverPrefixPatternMatch() throws Exception {
+        HttpRequestHandler h1 = new DummyHttpRequestHandler();
+        HttpRequestHandler h2 = new DummyHttpRequestHandler();
+        
+        HttpRequestHandlerRegistry registry = new HttpRequestHandlerRegistry();
+        registry.register("/ma*", h1);
+        registry.register("*tch", h2);
+        
+        HttpRequestHandler h;
+        
+        h = registry.lookup("/match");
+        assertNotNull(h);
+        assertTrue(h1 == h);
+    }
+
     public void testInvalidInput() throws Exception {
         HttpRequestHandlerRegistry registry = new HttpRequestHandlerRegistry();
         try {