Minor updates in HandlerMappingIntrospector
Required by Spring Security to complete work on https://github.com/spring-projects/spring-security/issues/14128 The setCache and resetCache methods used from createCacheFilter are now public. Generally they don't need to be used outside of the Filter if only making checks against the current request. Spring Security, however, makes additional checks against requests with alternative paths.
This commit is contained in:
parent
f962211e0a
commit
570074259d
|
|
@ -191,8 +191,12 @@ public class HandlerMappingIntrospector
|
|||
public Filter createCacheFilter() {
|
||||
return (request, response, chain) -> {
|
||||
CachedResult previous = setCache((HttpServletRequest) request);
|
||||
chain.doFilter(request, response);
|
||||
resetCache(request, previous);
|
||||
try {
|
||||
chain.doFilter(request, response);
|
||||
}
|
||||
finally {
|
||||
resetCache(request, previous);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -206,7 +210,7 @@ public class HandlerMappingIntrospector
|
|||
* @since 6.0.14
|
||||
*/
|
||||
@Nullable
|
||||
private CachedResult setCache(HttpServletRequest request) {
|
||||
public CachedResult setCache(HttpServletRequest request) {
|
||||
CachedResult previous = (CachedResult) request.getAttribute(CACHED_RESULT_ATTRIBUTE);
|
||||
if (previous == null || !previous.matches(request)) {
|
||||
HttpServletRequest wrapped = new AttributesPreservingRequest(request);
|
||||
|
|
@ -245,7 +249,7 @@ public class HandlerMappingIntrospector
|
|||
* a filter after delegating to the rest of the chain.
|
||||
* @since 6.0.14
|
||||
*/
|
||||
private void resetCache(ServletRequest request, @Nullable CachedResult cachedResult) {
|
||||
public void resetCache(ServletRequest request, @Nullable CachedResult cachedResult) {
|
||||
request.setAttribute(CACHED_RESULT_ATTRIBUTE, cachedResult);
|
||||
}
|
||||
|
||||
|
|
@ -363,7 +367,7 @@ public class HandlerMappingIntrospector
|
|||
* @since 6.0.14
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
private static final class CachedResult {
|
||||
public static final class CachedResult {
|
||||
|
||||
private final DispatcherType dispatcherType;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue