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:
rstoyanchev 2023-12-11 10:24:39 +00:00
parent f962211e0a
commit 570074259d
1 changed files with 9 additions and 5 deletions

View File

@ -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;