Fix condition in ServletInvocableHandlerMethod
Closes gh-23775
This commit is contained in:
@@ -165,7 +165,7 @@ public class ServletInvocableHandlerMethod extends InvocableHandlerMethod {
|
||||
}
|
||||
|
||||
private void disableContentCachingIfNecessary(ServletWebRequest webRequest) {
|
||||
if (!isRequestNotModified(webRequest)) {
|
||||
if (isRequestNotModified(webRequest)) {
|
||||
HttpServletResponse response = webRequest.getNativeResponse(HttpServletResponse.class);
|
||||
Assert.notNull(response, "Expected HttpServletResponse");
|
||||
if (StringUtils.hasText(response.getHeader("ETag"))) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -31,6 +31,7 @@ import reactor.core.publisher.Flux;
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
@@ -46,6 +47,7 @@ import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
import org.springframework.web.context.request.NativeWebRequest;
|
||||
import org.springframework.web.context.request.ServletWebRequest;
|
||||
import org.springframework.web.context.request.async.DeferredResult;
|
||||
import org.springframework.web.filter.ShallowEtagHeaderFilter;
|
||||
import org.springframework.web.method.annotation.RequestParamMethodArgumentResolver;
|
||||
import org.springframework.web.method.support.HandlerMethodArgumentResolverComposite;
|
||||
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
|
||||
@@ -139,6 +141,21 @@ public class ServletInvocableHandlerMethodTests {
|
||||
this.mavContainer.isRequestHandled());
|
||||
}
|
||||
|
||||
@Test // gh-23775
|
||||
public void invokeAndHandle_VoidNotModifiedWithEtag() throws Exception {
|
||||
String etag = "\"deadb33f8badf00d\"";
|
||||
this.request.addHeader(HttpHeaders.IF_NONE_MATCH, etag);
|
||||
this.webRequest.checkNotModified(etag);
|
||||
|
||||
ServletInvocableHandlerMethod handlerMethod = getHandlerMethod(new Handler(), "notModified");
|
||||
handlerMethod.invokeAndHandle(this.webRequest, this.mavContainer);
|
||||
|
||||
assertTrue("Null return value + 'not modified' request should result in 'request handled'",
|
||||
this.mavContainer.isRequestHandled());
|
||||
|
||||
assertEquals(true, this.request.getAttribute(ShallowEtagHeaderFilter.class.getName() + ".STREAMING"));
|
||||
}
|
||||
|
||||
@Test // SPR-9159
|
||||
public void invokeAndHandle_NotVoidWithResponseStatusAndReason() throws Exception {
|
||||
ServletInvocableHandlerMethod handlerMethod = getHandlerMethod(new Handler(), "responseStatusWithReason");
|
||||
|
||||
Reference in New Issue
Block a user