Polishing contribution
Closes gh-29634
This commit is contained in:
@@ -246,7 +246,11 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe
|
||||
protected HandlerMethod handleNoMatch(
|
||||
Set<RequestMappingInfo> infos, String lookupPath, HttpServletRequest request) throws ServletException {
|
||||
|
||||
PartialMatchHelper helper = PartialMatchHelper.from(infos, request);
|
||||
if (CollectionUtils.isEmpty(infos)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
PartialMatchHelper helper = new PartialMatchHelper(infos, request);
|
||||
if (helper.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
@@ -295,11 +299,9 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe
|
||||
*/
|
||||
private static final class PartialMatchHelper {
|
||||
|
||||
private static final PartialMatchHelper EMPTY_HELPER = new PartialMatchHelper(Collections.emptySet(), null);
|
||||
|
||||
private final List<PartialMatch> partialMatches = new ArrayList<>();
|
||||
|
||||
private PartialMatchHelper(Set<RequestMappingInfo> infos, HttpServletRequest request) {
|
||||
PartialMatchHelper(Set<RequestMappingInfo> infos, HttpServletRequest request) {
|
||||
for (RequestMappingInfo info : infos) {
|
||||
if (info.getActivePatternsCondition().getMatchingCondition(request) != null) {
|
||||
this.partialMatches.add(new PartialMatch(info, request));
|
||||
@@ -307,13 +309,6 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe
|
||||
}
|
||||
}
|
||||
|
||||
public static PartialMatchHelper from(Set<RequestMappingInfo> infos, HttpServletRequest request) {
|
||||
if (CollectionUtils.isEmpty(infos)) {
|
||||
return EMPTY_HELPER;
|
||||
}
|
||||
return new PartialMatchHelper(infos, request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether there are any partial matches.
|
||||
*/
|
||||
|
||||
@@ -398,14 +398,15 @@ class RequestMappingInfoHandlerMappingTests {
|
||||
assertThat(uriVariables.get("cars")).isEqualTo("cars");
|
||||
}
|
||||
|
||||
@PathPatternsParameterizedTest
|
||||
void handleNoMatchEmptyRequestMappingInfo(TestRequestMappingInfoHandlerMapping mapping) throws ServletException {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/cars;color=green");
|
||||
@PathPatternsParameterizedTest // gh-29611
|
||||
void handleNoMatchWithoutPartialMatches(TestRequestMappingInfoHandlerMapping mapping) throws ServletException {
|
||||
String path = "/non-existent";
|
||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", path);
|
||||
|
||||
HandlerMethod handlerMethod = mapping.handleNoMatch(new HashSet<>(), "/{cars}", request);
|
||||
HandlerMethod handlerMethod = mapping.handleNoMatch(new HashSet<>(), path, request);
|
||||
assertThat(handlerMethod).isNull();
|
||||
|
||||
handlerMethod = mapping.handleNoMatch(null, "/{cars}", request);
|
||||
handlerMethod = mapping.handleNoMatch(null, path, request);
|
||||
assertThat(handlerMethod).isNull();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user