Use HttpRequest.getMethodValue
This commit uses the newly introduced HttpRequest.getMethodValue in the webflux module. Issue: SPR-15545
This commit is contained in:
		
							parent
							
								
									630fc194f0
								
							
						
					
					
						commit
						a5b94f3a77
					
				| 
						 | 
				
			
			@ -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 {
 | 
			
		|||
	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))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		|||
						}
 | 
			
		||||
 | 
			
		||||
						// 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");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		|||
			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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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…
	
		Reference in New Issue