|
16 | 16 |
|
17 | 17 | package org.springframework.web.servlet.mvc.method;
|
18 | 18 |
|
19 |
| -import java.util.ArrayList; |
20 |
| -import java.util.Comparator; |
21 |
| -import java.util.HashSet; |
22 |
| -import java.util.LinkedHashMap; |
23 |
| -import java.util.LinkedHashSet; |
24 |
| -import java.util.Map; |
| 19 | +import java.util.*; |
25 | 20 | import java.util.Map.Entry;
|
26 |
| -import java.util.Set; |
27 | 21 |
|
28 | 22 | import javax.servlet.ServletException;
|
29 | 23 | import javax.servlet.http.HttpServletRequest;
|
@@ -97,16 +91,28 @@ public int compare(RequestMappingInfo info1, RequestMappingInfo info2) {
|
97 | 91 | protected void handleMatch(RequestMappingInfo info, String lookupPath, HttpServletRequest request) {
|
98 | 92 | super.handleMatch(info, lookupPath, request);
|
99 | 93 |
|
| 94 | + String bestPattern; |
| 95 | + Map<String, String> uriVariables; |
| 96 | + Map<String, String> decodedUriVariables; |
| 97 | + |
100 | 98 | Set<String> patterns = info.getPatternsCondition().getPatterns();
|
101 |
| - String bestPattern = patterns.isEmpty() ? lookupPath : patterns.iterator().next(); |
102 |
| - request.setAttribute(BEST_MATCHING_PATTERN_ATTRIBUTE, bestPattern); |
| 99 | + if (patterns.isEmpty()) { |
| 100 | + bestPattern = lookupPath; |
| 101 | + uriVariables = Collections.emptyMap(); |
| 102 | + decodedUriVariables = Collections.emptyMap(); |
| 103 | + } |
| 104 | + else { |
| 105 | + bestPattern = patterns.iterator().next(); |
| 106 | + uriVariables = getPathMatcher().extractUriTemplateVariables(bestPattern, lookupPath); |
| 107 | + decodedUriVariables = getUrlPathHelper().decodePathVariables(request, uriVariables); |
| 108 | + } |
103 | 109 |
|
104 |
| - Map<String, String> uriVariables = getPathMatcher().extractUriTemplateVariables(bestPattern, lookupPath); |
105 |
| - Map<String, String> decodedUriVariables = getUrlPathHelper().decodePathVariables(request, uriVariables); |
| 110 | + request.setAttribute(BEST_MATCHING_PATTERN_ATTRIBUTE, bestPattern); |
106 | 111 | request.setAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, decodedUriVariables);
|
107 | 112 |
|
108 | 113 | if (isMatrixVariableContentAvailable()) {
|
109 |
| - request.setAttribute(HandlerMapping.MATRIX_VARIABLES_ATTRIBUTE, extractMatrixVariables(request, uriVariables)); |
| 114 | + Map<String, MultiValueMap<String, String>> matrixVars = extractMatrixVariables(request, uriVariables); |
| 115 | + request.setAttribute(HandlerMapping.MATRIX_VARIABLES_ATTRIBUTE, matrixVars); |
110 | 116 | }
|
111 | 117 |
|
112 | 118 | if (!info.getProducesCondition().getProducibleMediaTypes().isEmpty()) {
|
|
0 commit comments