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