formatting and checkstyle
This commit is contained in:
@@ -277,8 +277,7 @@ public class ProxyExchange<T> {
|
||||
}
|
||||
|
||||
public ResponseEntity<T> get() {
|
||||
RequestEntity<?> requestEntity = headers((BodyBuilder) RequestEntity.get(uri))
|
||||
.body(body());
|
||||
RequestEntity<?> requestEntity = headers((BodyBuilder) RequestEntity.get(uri)).body(body());
|
||||
return exchange(requestEntity);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,15 +16,15 @@
|
||||
|
||||
package org.springframework.cloud.gateway.mvc;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.util.Collections;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
@@ -54,7 +54,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.client.DefaultResponseErrorHandler;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
@@ -73,8 +73,7 @@ public class GetWithBodyRequestTest {
|
||||
@Before
|
||||
public void init() throws Exception {
|
||||
testApplication.setHome(new URI("http://localhost:" + port));
|
||||
rest.getRestTemplate()
|
||||
.setRequestFactory(new GetWithBodyRequestClientHttpRequestFactory());
|
||||
rest.getRestTemplate().setRequestFactory(new GetWithBodyRequestClientHttpRequestFactory());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -91,8 +90,8 @@ public class GetWithBodyRequestTest {
|
||||
final Foo bodyRequest = new Foo("hello");
|
||||
final HttpEntity<Foo> entity = new HttpEntity<>(bodyRequest, headers);
|
||||
|
||||
final ResponseEntity<Foo> response = rest.exchange("/proxy/get-with-body-request",
|
||||
HttpMethod.GET, entity, Foo.class);
|
||||
final ResponseEntity<Foo> response = rest.exchange("/proxy/get-with-body-request", HttpMethod.GET, entity,
|
||||
Foo.class);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
assertThat(response.getBody()).isInstanceOfSatisfying(Foo.class,
|
||||
@@ -110,8 +109,7 @@ public class GetWithBodyRequestTest {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ProxyExchangeArgumentResolver proxyExchangeArgumentResolver(
|
||||
final ProxyProperties proxy) {
|
||||
public ProxyExchangeArgumentResolver proxyExchangeArgumentResolver(final ProxyProperties proxy) {
|
||||
ProxyExchangeArgumentResolver resolver = new ProxyExchangeArgumentResolver(
|
||||
generateConfiguredRestTemplate());
|
||||
resolver.setHeaders(proxy.convertHeaders());
|
||||
@@ -146,16 +144,15 @@ public class GetWithBodyRequestTest {
|
||||
}
|
||||
|
||||
@GetMapping("/proxy/{id}")
|
||||
public ResponseEntity<?> proxyFoos(@PathVariable Integer id,
|
||||
ProxyExchange<?> proxy) throws Exception {
|
||||
public ResponseEntity<?> proxyFoos(@PathVariable Integer id, ProxyExchange<?> proxy) throws Exception {
|
||||
return proxy.uri(home.toString() + "/foos/" + id).get();
|
||||
}
|
||||
|
||||
@GetMapping("/proxy/get-with-body-request")
|
||||
public ResponseEntity<?> proxyFooWithBody(@RequestBody Foo foo,
|
||||
ProxyExchange<?> proxy) throws Exception {
|
||||
public ResponseEntity<?> proxyFooWithBody(@RequestBody Foo foo, ProxyExchange<?> proxy) throws Exception {
|
||||
return proxy.uri(home.toString() + "/foo/get-with-body-request").get();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@RestController
|
||||
@@ -171,10 +168,12 @@ public class GetWithBodyRequestTest {
|
||||
public Foo getWithBody(@RequestBody Foo foo) {
|
||||
return new Foo(foo.getName() + " world");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
static class Foo {
|
||||
|
||||
private String name;
|
||||
|
||||
Foo() {
|
||||
@@ -191,13 +190,17 @@ public class GetWithBodyRequestTest {
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static class NoOpResponseErrorHandler
|
||||
extends DefaultResponseErrorHandler {
|
||||
private static class NoOpResponseErrorHandler extends DefaultResponseErrorHandler {
|
||||
|
||||
@Override
|
||||
public void handleError(ClientHttpResponse response) throws IOException {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -16,17 +16,17 @@
|
||||
|
||||
package org.springframework.cloud.gateway.mvc;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
@@ -56,7 +56,7 @@ import org.springframework.web.bind.annotation.RequestHeader;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.util.UriComponentsBuilder;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(properties = { "spring.cloud.gateway.proxy.auto-forward=Baz" },
|
||||
@@ -538,6 +538,9 @@ public class ProductionConfigurationTests {
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -16,8 +16,6 @@
|
||||
|
||||
package org.springframework.cloud.gateway.mvc.config;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -25,6 +23,7 @@ import java.util.List;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
@@ -44,6 +43,8 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.client.DefaultResponseErrorHandler;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
|
||||
@ContextConfiguration(classes = ProxyExchangeArgumentResolverTest.ProxyExchangeArgumentResolverTestApplication.class)
|
||||
|
||||
@@ -25,17 +25,16 @@ import org.springframework.http.client.AbstractClientHttpRequest;
|
||||
import org.springframework.http.client.ClientHttpResponse;
|
||||
|
||||
abstract class AbstractBufferingClientHttpRequest extends AbstractClientHttpRequest {
|
||||
|
||||
private ByteArrayOutputStream bufferedOutput = new ByteArrayOutputStream(1024);
|
||||
|
||||
protected OutputStream getBodyInternal(final HttpHeaders headers) {
|
||||
protected OutputStream getBodyInternal(HttpHeaders headers) {
|
||||
return bufferedOutput;
|
||||
}
|
||||
|
||||
protected abstract ClientHttpResponse executeInternal(final HttpHeaders headers,
|
||||
final byte[] body) throws IOException;
|
||||
protected abstract ClientHttpResponse executeInternal(HttpHeaders headers, byte[] body) throws IOException;
|
||||
|
||||
protected ClientHttpResponse executeInternal(final HttpHeaders headers)
|
||||
throws IOException {
|
||||
protected ClientHttpResponse executeInternal(HttpHeaders headers) throws IOException {
|
||||
final byte[] bytes = bufferedOutput.toByteArray();
|
||||
if (headers.getContentLength() < 0L) {
|
||||
headers.setContentLength(bytes.length);
|
||||
@@ -45,4 +44,5 @@ abstract class AbstractBufferingClientHttpRequest extends AbstractClientHttpRequ
|
||||
bufferedOutput = new ByteArrayOutputStream(0);
|
||||
return response;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,13 +35,14 @@ import org.apache.http.client.methods.HttpUriRequest;
|
||||
import org.apache.http.client.protocol.HttpClientContext;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.apache.http.protocol.HttpContext;
|
||||
|
||||
import org.springframework.beans.factory.DisposableBean;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.client.ClientHttpRequest;
|
||||
import org.springframework.http.client.ClientHttpRequestFactory;
|
||||
|
||||
public class GetWithBodyRequestClientHttpRequestFactory
|
||||
implements ClientHttpRequestFactory, DisposableBean {
|
||||
public class GetWithBodyRequestClientHttpRequestFactory implements ClientHttpRequestFactory, DisposableBean {
|
||||
|
||||
private final HttpClient httpClient;
|
||||
|
||||
public GetWithBodyRequestClientHttpRequestFactory() {
|
||||
@@ -49,8 +50,7 @@ public class GetWithBodyRequestClientHttpRequestFactory
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClientHttpRequest createRequest(final URI uri, final HttpMethod httpMethod)
|
||||
throws IOException {
|
||||
public ClientHttpRequest createRequest(final URI uri, final HttpMethod httpMethod) throws IOException {
|
||||
final HttpUriRequest httpRequest = createHttpUriRequest(httpMethod, uri);
|
||||
final HttpContext context = HttpClientContext.create();
|
||||
|
||||
@@ -70,8 +70,7 @@ public class GetWithBodyRequestClientHttpRequestFactory
|
||||
return new HttpComponentsClientHttpRequest(httpClient, httpRequest, context);
|
||||
}
|
||||
|
||||
private HttpUriRequest createHttpUriRequest(final HttpMethod httpMethod,
|
||||
final URI uri) {
|
||||
private HttpUriRequest createHttpUriRequest(final HttpMethod httpMethod, final URI uri) {
|
||||
switch (httpMethod) {
|
||||
case GET:
|
||||
return new GetWithEntity(uri);
|
||||
@@ -109,6 +108,7 @@ public class GetWithBodyRequestClientHttpRequestFactory
|
||||
}
|
||||
|
||||
public static class GetWithEntity extends HttpEntityEnclosingRequestBase {
|
||||
|
||||
public static final String METHOD_NAME = "GET";
|
||||
|
||||
public GetWithEntity(final URI uri) {
|
||||
@@ -119,5 +119,7 @@ public class GetWithBodyRequestClientHttpRequestFactory
|
||||
public String getMethod() {
|
||||
return METHOD_NAME;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,21 +26,27 @@ import org.apache.http.client.HttpClient;
|
||||
import org.apache.http.client.methods.HttpUriRequest;
|
||||
import org.apache.http.entity.ByteArrayEntity;
|
||||
import org.apache.http.protocol.HttpContext;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.client.ClientHttpResponse;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
final class HttpComponentsClientHttpRequest extends AbstractBufferingClientHttpRequest {
|
||||
|
||||
private static final String COOKIE_HEADER_NAME = "Cookie";
|
||||
|
||||
private static final String CONTENT_LENGTH_HEADER_NAME = "Content-Length";
|
||||
|
||||
private static final String TRANSFER_ENCODING_HEADER_NAME = "Transfer-Encoding";
|
||||
|
||||
private final HttpClient httpClient;
|
||||
|
||||
private final HttpUriRequest httpRequest;
|
||||
|
||||
private final HttpContext httpContext;
|
||||
|
||||
HttpComponentsClientHttpRequest(final HttpClient httpClient,
|
||||
final HttpUriRequest httpRequest, final HttpContext httpContext) {
|
||||
HttpComponentsClientHttpRequest(final HttpClient httpClient, final HttpUriRequest httpRequest,
|
||||
final HttpContext httpContext) {
|
||||
this.httpClient = httpClient;
|
||||
this.httpRequest = httpRequest;
|
||||
this.httpContext = httpContext;
|
||||
@@ -57,8 +63,8 @@ final class HttpComponentsClientHttpRequest extends AbstractBufferingClientHttpR
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ClientHttpResponse executeInternal(final HttpHeaders headers,
|
||||
final byte[] bufferedOutput) throws IOException {
|
||||
protected ClientHttpResponse executeInternal(final HttpHeaders headers, final byte[] bufferedOutput)
|
||||
throws IOException {
|
||||
addHeaders(headers);
|
||||
attachBodyRequest(bufferedOutput);
|
||||
|
||||
@@ -69,8 +75,7 @@ final class HttpComponentsClientHttpRequest extends AbstractBufferingClientHttpR
|
||||
private void addHeaders(final HttpHeaders headers) {
|
||||
headers.forEach((headerName, headerValues) -> {
|
||||
if (COOKIE_HEADER_NAME.equalsIgnoreCase(headerName)) {
|
||||
String headerValue = StringUtils.collectionToDelimitedString(headerValues,
|
||||
": ");
|
||||
String headerValue = StringUtils.collectionToDelimitedString(headerValues, ": ");
|
||||
httpRequest.addHeader(headerName, headerValue);
|
||||
}
|
||||
else if (!CONTENT_LENGTH_HEADER_NAME.equalsIgnoreCase(headerName)
|
||||
@@ -86,8 +91,8 @@ final class HttpComponentsClientHttpRequest extends AbstractBufferingClientHttpR
|
||||
|
||||
private void attachBodyRequest(final byte[] bufferedOutput) {
|
||||
if (httpRequest instanceof HttpEntityEnclosingRequest) {
|
||||
((HttpEntityEnclosingRequest) httpRequest)
|
||||
.setEntity(new ByteArrayEntity(bufferedOutput));
|
||||
((HttpEntityEnclosingRequest) httpRequest).setEntity(new ByteArrayEntity(bufferedOutput));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,13 +24,16 @@ import org.apache.http.Header;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.client.AbstractClientHttpResponse;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.StreamUtils;
|
||||
|
||||
final class HttpComponentsClientHttpResponse extends AbstractClientHttpResponse {
|
||||
|
||||
private final HttpResponse response;
|
||||
|
||||
@Nullable
|
||||
private HttpHeaders headers;
|
||||
|
||||
@@ -81,4 +84,5 @@ final class HttpComponentsClientHttpResponse extends AbstractClientHttpResponse
|
||||
catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user