Add HttpRequest.getMethodValue

This commit introduces a new method in HttpRequest:
`String getMethodValue`, which returns the HTTP method as a String.
Furthermore, HttpRequest.getMethod() has been given a default
implementation using this String value in combination with
`HttpMethod.resolve`.

Issue: SPR-15545
This commit is contained in:
Arjen Poutsma 2017-05-24 16:36:58 +02:00
parent 31d1e26c95
commit 630fc194f0
26 changed files with 111 additions and 42 deletions

View File

@ -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.
@ -66,6 +66,11 @@ public class MockClientHttpRequest extends MockHttpOutputMessage implements Clie
return this.httpMethod;
}
@Override
public String getMethodValue() {
return this.httpMethod.name();
}
public void setURI(URI uri) {
this.uri = uri;
}

View File

@ -83,6 +83,11 @@ public class MockServerHttpRequest extends AbstractServerHttpRequest {
return this.httpMethod;
}
@Override
public String getMethodValue() {
return this.httpMethod.name();
}
@Override
public String getContextPath() {
return this.contextPath;

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2015 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.
@ -32,7 +32,15 @@ public interface HttpRequest extends HttpMessage {
* @return the HTTP method as an HttpMethod enum value, or {@code null}
* if not resolvable (e.g. in case of a non-standard HTTP method)
*/
HttpMethod getMethod();
default HttpMethod getMethod() {
return HttpMethod.resolve(getMethodValue());
}
/**
* Return the HTTP method of the request as a String
* @return the HTTP method as a String
*/
String getMethodValue();
/**
* Return the URI of the request.

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2015 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.
@ -44,6 +44,11 @@ final class BufferingClientHttpRequestWrapper extends AbstractBufferingClientHtt
return this.request.getMethod();
}
@Override
public String getMethodValue() {
return this.request.getMethodValue();
}
@Override
public URI getURI() {
return this.request.getURI();

View File

@ -30,7 +30,6 @@ import org.apache.http.nio.entity.NByteArrayEntity;
import org.apache.http.protocol.HttpContext;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.util.concurrent.FailureCallback;
import org.springframework.util.concurrent.FutureAdapter;
import org.springframework.util.concurrent.ListenableFuture;
@ -69,8 +68,8 @@ final class HttpComponentsAsyncClientHttpRequest extends AbstractBufferingAsyncC
@Override
public HttpMethod getMethod() {
return HttpMethod.resolve(this.httpRequest.getMethod());
public String getMethodValue() {
return this.httpRequest.getMethod();
}
@Override

View File

@ -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.
@ -63,8 +63,8 @@ final class HttpComponentsClientHttpRequest extends AbstractBufferingClientHttpR
@Override
public HttpMethod getMethod() {
return HttpMethod.resolve(this.httpRequest.getMethod());
public String getMethodValue() {
return this.httpRequest.getMethod();
}
@Override

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2015 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.
@ -31,7 +31,6 @@ import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HttpContext;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.StreamingHttpOutputMessage;
@ -65,8 +64,8 @@ final class HttpComponentsStreamingClientHttpRequest extends AbstractClientHttpR
@Override
public HttpMethod getMethod() {
return HttpMethod.resolve(this.httpRequest.getMethod());
public String getMethodValue() {
return this.httpRequest.getMethod();
}
@Override

View File

@ -75,7 +75,12 @@ class InterceptingAsyncClientHttpRequest extends AbstractBufferingAsyncClientHtt
@Override
public HttpMethod getMethod() {
return httpMethod;
return this.httpMethod;
}
@Override
public String getMethodValue() {
return this.httpMethod.name();
}
@Override

View File

@ -59,6 +59,11 @@ class InterceptingClientHttpRequest extends AbstractBufferingClientHttpRequest {
return this.method;
}
@Override
public String getMethodValue() {
return this.method.name();
}
@Override
public URI getURI() {
return this.uri;

View File

@ -77,6 +77,11 @@ class Netty4ClientHttpRequest extends AbstractAsyncClientHttpRequest implements
return this.method;
}
@Override
public String getMethodValue() {
return this.method.name();
}
@Override
public URI getURI() {
return this.uri;

View File

@ -63,6 +63,11 @@ class OkHttp3AsyncClientHttpRequest extends AbstractBufferingAsyncClientHttpRequ
return this.method;
}
@Override
public String getMethodValue() {
return this.method.name();
}
@Override
public URI getURI() {
return this.uri;

View File

@ -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.
@ -56,6 +56,11 @@ class OkHttp3ClientHttpRequest extends AbstractBufferingClientHttpRequest {
return this.method;
}
@Override
public String getMethodValue() {
return this.method.name();
}
@Override
public URI getURI() {
return this.uri;

View File

@ -58,8 +58,8 @@ final class SimpleBufferingAsyncClientHttpRequest extends AbstractBufferingAsync
@Override
public HttpMethod getMethod() {
return HttpMethod.resolve(this.connection.getRequestMethod());
public String getMethodValue() {
return this.connection.getRequestMethod();
}
@Override

View File

@ -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.
@ -51,8 +51,8 @@ final class SimpleBufferingClientHttpRequest extends AbstractBufferingClientHttp
@Override
public HttpMethod getMethod() {
return HttpMethod.resolve(this.connection.getRequestMethod());
public String getMethodValue() {
return this.connection.getRequestMethod();
}
@Override

View File

@ -25,7 +25,6 @@ import java.util.concurrent.Callable;
import org.springframework.core.task.AsyncListenableTaskExecutor;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.util.StreamUtils;
import org.springframework.util.concurrent.ListenableFuture;
@ -64,8 +63,8 @@ final class SimpleStreamingAsyncClientHttpRequest extends AbstractAsyncClientHtt
@Override
public HttpMethod getMethod() {
return HttpMethod.resolve(this.connection.getRequestMethod());
public String getMethodValue() {
return this.connection.getRequestMethod();
}
@Override

View File

@ -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.
@ -52,8 +52,9 @@ final class SimpleStreamingClientHttpRequest extends AbstractClientHttpRequest {
}
public HttpMethod getMethod() {
return HttpMethod.resolve(this.connection.getRequestMethod());
@Override
public String getMethodValue() {
return this.connection.getRequestMethod();
}
@Override

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2015 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.
@ -62,6 +62,14 @@ public class HttpRequestWrapper implements HttpRequest {
return this.request.getMethod();
}
/**
* Return the method value of the wrapped request.
*/
@Override
public String getMethodValue() {
return this.request.getMethodValue();
}
/**
* Return the URI of the wrapped request.
*/

View File

@ -83,8 +83,8 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
}
@Override
public HttpMethod getMethod() {
return HttpMethod.resolve(this.servletRequest.getMethod());
public String getMethodValue() {
return this.servletRequest.getMethod();
}
@Override

View File

@ -28,7 +28,6 @@ import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.NettyDataBufferFactory;
import org.springframework.http.HttpCookie;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.util.Assert;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
@ -82,8 +81,8 @@ public class ReactorServerHttpRequest extends AbstractServerHttpRequest {
}
@Override
public HttpMethod getMethod() {
return HttpMethod.valueOf(this.request.method().name());
public String getMethodValue() {
return this.request.method().name();
}
@Override

View File

@ -58,6 +58,11 @@ public class ServerHttpRequestDecorator implements ServerHttpRequest {
return getDelegate().getMethod();
}
@Override
public String getMethodValue() {
return getDelegate().getMethodValue();
}
@Override
public URI getURI() {
return getDelegate().getURI();

View File

@ -39,7 +39,6 @@ import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferFactory;
import org.springframework.http.HttpCookie;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.util.Assert;
import org.springframework.util.LinkedCaseInsensitiveMap;
@ -150,8 +149,8 @@ public class ServletServerHttpRequest extends AbstractServerHttpRequest {
}
@Override
public HttpMethod getMethod() {
return HttpMethod.valueOf(getServletRequest().getMethod());
public String getMethodValue() {
return getServletRequest().getMethod();
}
@Override

View File

@ -34,7 +34,6 @@ import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferFactory;
import org.springframework.http.HttpCookie;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.util.Assert;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
@ -83,8 +82,8 @@ public class UndertowServerHttpRequest extends AbstractServerHttpRequest {
}
@Override
public HttpMethod getMethod() {
return HttpMethod.valueOf(this.getUndertowExchange().getRequestMethod().toString());
public String getMethodValue() {
return this.getUndertowExchange().getRequestMethod().toString();
}
@Override

View File

@ -662,6 +662,10 @@ public class AsyncRestTemplate extends org.springframework.http.client.support.I
return request.getMethod();
}
@Override
public String getMethodValue() {
return request.getMethodValue();
}
@Override
public URI getURI() {
return request.getURI();
}

View File

@ -267,6 +267,11 @@ public class InterceptingClientHttpRequestFactoryTests {
return method;
}
@Override
public String getMethodValue() {
return method.name();
}
public void setMethod(HttpMethod method) {
this.method = method;
}

View File

@ -31,7 +31,6 @@ import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.NettyDataBufferFactory;
import org.springframework.http.HttpCookie;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.util.Assert;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
@ -93,8 +92,8 @@ public class RxNettyServerHttpRequest extends AbstractServerHttpRequest {
}
@Override
public HttpMethod getMethod() {
return HttpMethod.valueOf(this.request.getHttpMethod().name());
public String getMethodValue() {
return this.request.getHttpMethod().name();
}
@Override

View File

@ -82,6 +82,11 @@ public class MockServerHttpRequest extends AbstractServerHttpRequest {
return this.httpMethod;
}
@Override
public String getMethodValue() {
return this.httpMethod.name();
}
@Override
public String getContextPath() {
return this.contextPath;