Fix condition in ServletInvocableHandlerMethod
Closes gh-23775
This commit is contained in:
parent
29b31cad48
commit
9960ed55aa
|
|
@ -166,7 +166,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(HttpHeaders.ETAG))) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -130,7 +132,26 @@ public class ServletInvocableHandlerMethodTests {
|
|||
ServletInvocableHandlerMethod handlerMethod = getHandlerMethod(new Handler(), "notModified");
|
||||
handlerMethod.invokeAndHandle(this.webRequest, this.mavContainer);
|
||||
|
||||
assertThat(this.mavContainer.isRequestHandled()).as("Null return value + 'not modified' request should result in 'request handled'").isTrue();
|
||||
assertThat(this.mavContainer.isRequestHandled())
|
||||
.as("Null return value + 'not modified' request should result in 'request handled'")
|
||||
.isTrue();
|
||||
}
|
||||
|
||||
@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);
|
||||
|
||||
assertThat(this.mavContainer.isRequestHandled())
|
||||
.as("Null return value + 'not modified' request should result in 'request handled'")
|
||||
.isTrue();
|
||||
|
||||
assertThat(this.request.getAttribute(ShallowEtagHeaderFilter.class.getName() + ".STREAMING"))
|
||||
.isEqualTo(true);
|
||||
}
|
||||
|
||||
@Test // SPR-9159
|
||||
|
|
|
|||
Loading…
Reference in New Issue