Browse Source

Use HttpRequest.getMethodValue

This commit uses the newly introduced HttpRequest.getMethodValue in
the webflux module.

Issue: SPR-15545
pull/1325/merge
Arjen Poutsma 8 years ago
parent
commit
a5b94f3a77
  1. 4
      spring-webflux/src/main/java/org/springframework/web/reactive/DispatcherHandler.java
  2. 4
      spring-webflux/src/main/java/org/springframework/web/reactive/resource/ResourceWebHandler.java
  3. 4
      spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/RequestMethodsRequestCondition.java
  4. 4
      spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMapping.java
  5. 52
      spring-webflux/src/test/java/org/springframework/web/reactive/function/server/InvalidHttpMethodIntegrationTests.java

4
spring-webflux/src/main/java/org/springframework/web/reactive/DispatcherHandler.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2017 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.
@ -120,7 +120,7 @@ public class DispatcherHandler implements WebHandler, ApplicationContextAware { @@ -120,7 +120,7 @@ public class DispatcherHandler implements WebHandler, ApplicationContextAware {
public Mono<Void> handle(ServerWebExchange exchange) {
if (logger.isDebugEnabled()) {
ServerHttpRequest request = exchange.getRequest();
logger.debug("Processing " + request.getMethod() + " request for [" + request.getURI() + "]");
logger.debug("Processing " + request.getMethodValue() + " request for [" + request.getURI() + "]");
}
return Flux.fromIterable(this.handlerMappings)
.concatMap(mapping -> mapping.getHandler(exchange))

4
spring-webflux/src/main/java/org/springframework/web/reactive/resource/ResourceWebHandler.java

@ -283,7 +283,7 @@ public class ResourceWebHandler @@ -283,7 +283,7 @@ public class ResourceWebHandler
}))
.flatMap(resource -> {
try {
if (HttpMethod.OPTIONS.equals(exchange.getRequest().getMethod())) {
if (HttpMethod.OPTIONS.matches(exchange.getRequest().getMethodValue())) {
exchange.getResponse().getHeaders().add("Allow", "GET,HEAD,OPTIONS");
return Mono.empty();
}
@ -323,7 +323,7 @@ public class ResourceWebHandler @@ -323,7 +323,7 @@ public class ResourceWebHandler
}
// Content phase
if (HttpMethod.HEAD.equals(exchange.getRequest().getMethod())) {
if (HttpMethod.HEAD.matches(exchange.getRequest().getMethodValue())) {
setHeaders(exchange, resource, mediaType);
exchange.getResponse().getHeaders().set(HttpHeaders.ACCEPT_RANGES, "bytes");
logger.trace("HEAD request - skipping content");

4
spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/RequestMethodsRequestCondition.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2017 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.
@ -107,7 +107,7 @@ public final class RequestMethodsRequestCondition extends AbstractRequestConditi @@ -107,7 +107,7 @@ public final class RequestMethodsRequestCondition extends AbstractRequestConditi
return matchPreFlight(exchange.getRequest());
}
if (getMethods().isEmpty()) {
if (RequestMethod.OPTIONS.name().equals(exchange.getRequest().getMethod().name())) {
if (RequestMethod.OPTIONS.name().equals(exchange.getRequest().getMethodValue())) {
return null; // No implicit match for OPTIONS (we handle it)
}
return this;

4
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMapping.java

@ -218,9 +218,9 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe @@ -218,9 +218,9 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe
ServerHttpRequest request = exchange.getRequest();
if (helper.hasMethodsMismatch()) {
HttpMethod httpMethod = request.getMethod();
String httpMethod = request.getMethodValue();
Set<HttpMethod> methods = helper.getAllowedMethods();
if (HttpMethod.OPTIONS.matches(httpMethod.name())) {
if (HttpMethod.OPTIONS.matches(httpMethod)) {
HttpOptionsHandler handler = new HttpOptionsHandler(methods);
return new HandlerMethod(handler, HTTP_OPTIONS_HANDLE_METHOD);
}

52
spring-webflux/src/test/java/org/springframework/web/reactive/function/server/InvalidHttpMethodIntegrationTests.java

@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
/*
* Copyright 2002-2017 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.web.reactive.function.server;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* @author Arjen Poutsma
*/
public class InvalidHttpMethodIntegrationTests extends AbstractRouterFunctionIntegrationTests {
@Override
protected RouterFunction<?> routerFunction() {
return RouterFunctions.route(RequestPredicates.GET("/"),
request -> ServerResponse.ok().syncBody("FOO"))
.andRoute(RequestPredicates.all(),
request -> ServerResponse.ok().syncBody("BAR"));
}
@Test
public void invalidHttpMethod() throws Exception {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.method("BAZ", null)
.url("http://localhost:" + port + "/")
.build();
try (Response response = client.newCall(request).execute()) {
assertEquals("BAR", response.body().string());
}
}
}
Loading…
Cancel
Save