Add PathPatternRegistry for handler mapping matching
Previously `HandlerMapping` implementation were heavily relying on
`String` path patterns, `PathMatcher` implementations and dedicated maps
for matching incoming request URL to an actual request handler.
This commit adds the `PathPatternRegistry` that holds `PathPattern`
instances and the associated request handler — matching results are then
shared as `PathMatchResult` instances. `AbstractUrlHandlerMapping` will
use this registry directly, but other components dealing with request
matching (like `PatternsRequestCondition`) will directly use ordered
`PathPattern` collections since ordering is important there.
This opens the door for faster request matching and simplifies the
design of this part.
Issue: SPR-15608
@ -118,21 +110,11 @@ public class WebFluxConfigurationSupport implements ApplicationContextAware {
@@ -118,21 +110,11 @@ public class WebFluxConfigurationSupport implements ApplicationContextAware {
@ -224,9 +206,12 @@ public class WebFluxConfigurationSupport implements ApplicationContextAware {
@@ -224,9 +206,12 @@ public class WebFluxConfigurationSupport implements ApplicationContextAware {
@ -52,7 +51,7 @@ public abstract class AbstractHandlerMapping extends ApplicationObjectSupport im
@@ -52,7 +51,7 @@ public abstract class AbstractHandlerMapping extends ApplicationObjectSupport im
privateintorder=Integer.MAX_VALUE;// default: same as non-Ordered
@ -74,22 +73,28 @@ public abstract class AbstractHandlerMapping extends ApplicationObjectSupport im
@@ -74,22 +73,28 @@ public abstract class AbstractHandlerMapping extends ApplicationObjectSupport im
@ -60,7 +60,7 @@ public class SimpleUrlHandlerMapping extends AbstractUrlHandlerMapping {
@@ -60,7 +60,7 @@ public class SimpleUrlHandlerMapping extends AbstractUrlHandlerMapping {
@ -72,7 +72,7 @@ public class SimpleUrlHandlerMapping extends AbstractUrlHandlerMapping {
@@ -72,7 +72,7 @@ public class SimpleUrlHandlerMapping extends AbstractUrlHandlerMapping {
@ -54,26 +54,17 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@@ -54,26 +54,17 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@ -84,8 +75,8 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@@ -84,8 +75,8 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@ -94,8 +85,8 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@@ -94,8 +85,8 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@ -109,14 +100,14 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@@ -109,14 +100,14 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@ -129,7 +120,7 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@@ -129,7 +120,7 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@ -138,7 +129,7 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@@ -138,7 +129,7 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@ -173,11 +164,11 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@@ -173,11 +164,11 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
privateintgetEndPathIndex(StringlookupPath){
intsuffixIndex=lookupPath.length();
intqueryIndex=lookupPath.indexOf("?");
if(queryIndex>0){
if(queryIndex>0){
suffixIndex=queryIndex;
}
inthashIndex=lookupPath.indexOf("#");
if(hashIndex>0){
if(hashIndex>0){
suffixIndex=Math.min(suffixIndex,hashIndex);
}
returnsuffixIndex;
@ -200,28 +191,20 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
@@ -200,28 +191,20 @@ public class ResourceUrlProvider implements ApplicationListener<ContextRefreshed
logger.trace("Getting resource URL for lookup path \""+lookupPath+"\"");
@ -103,26 +95,17 @@ public final class PatternsRequestCondition extends AbstractRequestCondition<Pat
@@ -103,26 +95,17 @@ public final class PatternsRequestCondition extends AbstractRequestCondition<Pat
@ -136,62 +119,54 @@ public final class PatternsRequestCondition extends AbstractRequestCondition<Pat
@@ -136,62 +119,54 @@ public final class PatternsRequestCondition extends AbstractRequestCondition<Pat
@ -201,39 +176,19 @@ public final class PatternsRequestCondition extends AbstractRequestCondition<Pat
@@ -201,39 +176,19 @@ public final class PatternsRequestCondition extends AbstractRequestCondition<Pat
@ -244,11 +199,13 @@ public final class PatternsRequestCondition extends AbstractRequestCondition<Pat
@@ -244,11 +199,13 @@ public final class PatternsRequestCondition extends AbstractRequestCondition<Pat
@ -294,7 +292,7 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@@ -294,7 +292,7 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@ -302,14 +300,7 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@@ -302,14 +300,7 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@ -443,8 +434,6 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@@ -443,8 +434,6 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@ -457,15 +446,6 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@@ -457,15 +446,6 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@ -499,17 +479,12 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@@ -499,17 +479,12 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@ -520,22 +495,12 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@@ -520,22 +495,12 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@ -545,16 +510,6 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@@ -545,16 +510,6 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@ -570,14 +525,11 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@@ -570,14 +525,11 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@ -588,9 +540,6 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@@ -588,9 +540,6 @@ public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMap
@ -473,8 +471,7 @@ public final class RequestMappingInfo implements RequestCondition<RequestMapping
@@ -473,8 +471,7 @@ public final class RequestMappingInfo implements RequestCondition<RequestMapping
@ -495,77 +492,17 @@ public final class RequestMappingInfo implements RequestCondition<RequestMapping
@@ -495,77 +492,17 @@ public final class RequestMappingInfo implements RequestCondition<RequestMapping
@ -76,7 +77,7 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe
@@ -76,7 +77,7 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe
@ -108,17 +109,17 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe
@@ -108,17 +109,17 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe
@ -62,40 +55,6 @@ public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMappi
@@ -62,40 +55,6 @@ public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMappi
@ -113,36 +72,13 @@ public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMappi
@@ -113,36 +72,13 @@ public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMappi
@ -150,14 +86,6 @@ public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMappi
@@ -150,14 +86,6 @@ public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMappi