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 {