Remove PathPatternComparator
Direct comparison of a pattern (as a String) to the path does not make much sense now that we deal with URL encoding through PathContainer which exposes (safely) decoded path segments. Removing the PathPatternComparator also means we can keep patterns pre-sorted instead of sorting them all the time. That probably offsets any benefits from comparing to the lookup path for direct matches and patterns are still sorted according to specificity.
This commit is contained in:
@@ -17,9 +17,7 @@
|
||||
package org.springframework.web.reactive.result.method;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Set;
|
||||
|
||||
import org.hamcrest.Matchers;
|
||||
import org.junit.Before;
|
||||
@@ -35,7 +33,10 @@ import org.springframework.web.method.HandlerMethod;
|
||||
import org.springframework.web.server.ServerWebExchange;
|
||||
import org.springframework.web.util.pattern.ParsingPathMatcher;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link AbstractHandlerMethodMapping}.
|
||||
@@ -149,11 +150,6 @@ public class HandlerMethodMappingTests {
|
||||
return methodName.startsWith("handler") ? methodName : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> getMappingPathPatterns(String key) {
|
||||
return (this.pathMatcher.isPattern(key) ? Collections.emptySet() : Collections.singleton(key));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getMatchingMapping(String pattern, ServerWebExchange exchange) {
|
||||
String lookupPath = exchange.getRequest().getURI().getPath();
|
||||
|
||||
@@ -21,7 +21,6 @@ import java.net.URI;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Consumer;
|
||||
@@ -94,15 +93,6 @@ public class RequestMappingInfoHandlerMappingTests {
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void getMappingPathPatterns() throws Exception {
|
||||
String[] patterns = {"/foo/*", "/foo", "/bar/*", "/bar"};
|
||||
RequestMappingInfo info = paths(patterns).build();
|
||||
Set<String> actual = this.handlerMapping.getMappingPathPatterns(info);
|
||||
|
||||
assertEquals(new HashSet<>(Arrays.asList(patterns)), actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getHandlerDirectMatch() throws Exception {
|
||||
Method expected = on(TestController.class).annot(getMapping("/foo").params()).resolveMethod();
|
||||
|
||||
@@ -39,6 +39,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.context.support.StaticWebApplicationContext;
|
||||
import org.springframework.web.reactive.result.method.RequestMappingInfo;
|
||||
import org.springframework.web.util.pattern.PathPattern;
|
||||
|
||||
import static org.junit.Assert.assertArrayEquals;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -133,9 +134,9 @@ public class RequestMappingHandlerMappingTests {
|
||||
|
||||
assertNotNull(info);
|
||||
|
||||
Set<String> paths = info.getPatternsCondition().getPatternStrings();
|
||||
Set<PathPattern> paths = info.getPatternsCondition().getPatterns();
|
||||
assertEquals(1, paths.size());
|
||||
assertEquals(path, paths.iterator().next());
|
||||
assertEquals(path, paths.iterator().next().getPatternString());
|
||||
|
||||
Set<RequestMethod> methods = info.getMethodsCondition().getMethods();
|
||||
assertEquals(1, methods.size());
|
||||
|
||||
Reference in New Issue
Block a user