Polishing contribution

Closes gh-27220
This commit is contained in:
Rossen Stoyanchev 2021-08-03 10:31:13 +01:00
parent e290ae285c
commit ce6217be85
2 changed files with 30 additions and 40 deletions

View File

@ -125,16 +125,17 @@ public interface ClientRequest {
// Static builder methods // Static builder methods
/** /**
* Create a builder with the method, URI, headers, cookies, attributes, and body of the given request. * Create a builder initialized with the HTTP method, url, headers, cookies,
* @param other the request to copy the method, URI, headers, cookies, attributes, and body from * attributes, and body of the given request.
* @return the created builder * @param other the request to copy from
* @return the builder instance
*/ */
static Builder from(ClientRequest other) { static Builder from(ClientRequest other) {
return new DefaultClientRequestBuilder(other); return new DefaultClientRequestBuilder(other);
} }
/** /**
* Create a builder with the given method and url. * Create a builder with the given HTTP method and url.
* @param method the HTTP method (GET, POST, etc) * @param method the HTTP method (GET, POST, etc)
* @param url the url (as a URI instance) * @param url the url (as a URI instance)
* @return the created builder * @return the created builder
@ -146,7 +147,7 @@ public interface ClientRequest {
} }
/** /**
* Create a request builder with the given method and url. * Create a request builder with the given HTTP method and url.
* @param method the HTTP method (GET, POST, etc) * @param method the HTTP method (GET, POST, etc)
* @param url the url (as a URI instance) * @param url the url (as a URI instance)
* @return the created builder * @return the created builder

View File

@ -51,20 +51,24 @@ import static org.springframework.http.HttpMethod.POST;
*/ */
public class DefaultClientRequestBuilderTests { public class DefaultClientRequestBuilderTests {
private static final URI DEFAULT_URL = URI.create("https://example.com");
@Test @Test
public void from() throws URISyntaxException { public void from() {
ClientRequest other = ClientRequest.create(GET, URI.create("https://example.com")) ClientRequest other = ClientRequest.create(GET, DEFAULT_URL)
.header("foo", "bar") .header("foo", "bar")
.cookie("baz", "qux") .cookie("baz", "qux")
.attribute("attributeKey", "attributeValue") .attribute("attributeKey", "attributeValue")
.attribute("anotherAttributeKey", "anotherAttributeValue") .attribute("anotherAttributeKey", "anotherAttributeValue")
.httpRequest(request -> {}) .httpRequest(request -> {})
.build(); .build();
ClientRequest result = ClientRequest.from(other) ClientRequest result = ClientRequest.from(other)
.headers(httpHeaders -> httpHeaders.set("foo", "baar")) .headers(httpHeaders -> httpHeaders.set("foo", "baar"))
.cookies(cookies -> cookies.set("baz", "quux")) .cookies(cookies -> cookies.set("baz", "quux"))
.build(); .build();
assertThat(result.url()).isEqualTo(new URI("https://example.com"));
assertThat(result.url()).isEqualTo(DEFAULT_URL);
assertThat(result.method()).isEqualTo(GET); assertThat(result.method()).isEqualTo(GET);
assertThat(result.headers().size()).isEqualTo(1); assertThat(result.headers().size()).isEqualTo(1);
assertThat(result.headers().getFirst("foo")).isEqualTo("baar"); assertThat(result.headers().getFirst("foo")).isEqualTo("baar");
@ -81,13 +85,10 @@ public class DefaultClientRequestBuilderTests {
BodyInserter<String, ClientHttpRequest> inserter = (response, strategies) -> { BodyInserter<String, ClientHttpRequest> inserter = (response, strategies) -> {
byte[] bodyBytes = body.getBytes(UTF_8); byte[] bodyBytes = body.getBytes(UTF_8);
DataBuffer buffer = DefaultDataBufferFactory.sharedInstance.wrap(bodyBytes); DataBuffer buffer = DefaultDataBufferFactory.sharedInstance.wrap(bodyBytes);
return response.writeWith(Mono.just(buffer)); return response.writeWith(Mono.just(buffer));
}; };
ClientRequest other = ClientRequest.create(POST, URI.create("https://example.com")) ClientRequest other = ClientRequest.create(POST, DEFAULT_URL).body(inserter).build();
.body(inserter).build();
ClientRequest result = ClientRequest.from(other).build(); ClientRequest result = ClientRequest.from(other).build();
List<HttpMessageWriter<?>> messageWriters = new ArrayList<>(); List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
@ -105,9 +106,8 @@ public class DefaultClientRequestBuilderTests {
} }
@Test @Test
public void method() throws URISyntaxException { public void method() {
URI url = new URI("https://example.com"); ClientRequest.Builder builder = ClientRequest.create(DELETE, DEFAULT_URL);
ClientRequest.Builder builder = ClientRequest.create(DELETE, url);
assertThat(builder.build().method()).isEqualTo(DELETE); assertThat(builder.build().method()).isEqualTo(DELETE);
builder.method(OPTIONS); builder.method(OPTIONS);
@ -127,18 +127,17 @@ public class DefaultClientRequestBuilderTests {
@Test @Test
public void cookie() { public void cookie() {
ClientRequest result = ClientRequest.create(GET, URI.create("https://example.com")) ClientRequest result = ClientRequest.create(GET, DEFAULT_URL).cookie("foo", "bar").build();
.cookie("foo", "bar").build();
assertThat(result.cookies().getFirst("foo")).isEqualTo("bar"); assertThat(result.cookies().getFirst("foo")).isEqualTo("bar");
} }
@Test @Test
public void build() { public void build() {
ClientRequest result = ClientRequest.create(GET, URI.create("https://example.com")) ClientRequest result = ClientRequest.create(GET, DEFAULT_URL)
.header("MyKey", "MyValue") .header("MyKey", "MyValue")
.cookie("foo", "bar") .cookie("foo", "bar")
.httpRequest(request -> { .httpRequest(request -> {
MockClientHttpRequest nativeRequest = (MockClientHttpRequest) request.getNativeRequest(); MockClientHttpRequest nativeRequest = request.getNativeRequest();
nativeRequest.getHeaders().add("MyKey2", "MyValue2"); nativeRequest.getHeaders().add("MyKey2", "MyValue2");
}) })
.build(); .build();
@ -158,16 +157,14 @@ public class DefaultClientRequestBuilderTests {
@Test @Test
public void bodyInserter() { public void bodyInserter() {
String body = "foo"; String body = "foo";
BodyInserter<String, ClientHttpRequest> inserter = BodyInserter<String, ClientHttpRequest> inserter = (response, strategies) -> {
(response, strategies) -> {
byte[] bodyBytes = body.getBytes(UTF_8); byte[] bodyBytes = body.getBytes(UTF_8);
DataBuffer buffer = DefaultDataBufferFactory.sharedInstance.wrap(bodyBytes); DataBuffer buffer = DefaultDataBufferFactory.sharedInstance.wrap(bodyBytes);
return response.writeWith(Mono.just(buffer)); return response.writeWith(Mono.just(buffer));
}; };
ClientRequest result = ClientRequest.create(POST, URI.create("https://example.com")) ClientRequest result = ClientRequest.create(POST, DEFAULT_URL).body(inserter).build();
.body(inserter).build();
List<HttpMessageWriter<?>> messageWriters = new ArrayList<>(); List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes())); messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
@ -179,17 +176,14 @@ public class DefaultClientRequestBuilderTests {
result.writeTo(request, strategies).block(); result.writeTo(request, strategies).block();
assertThat(request.getBody()).isNotNull(); assertThat(request.getBody()).isNotNull();
StepVerifier.create(request.getBody()) StepVerifier.create(request.getBody()).expectNextCount(1).verifyComplete();
.expectNextCount(1)
.verifyComplete();
} }
@Test @Test
public void bodyClass() { public void bodyClass() {
String body = "foo"; String body = "foo";
Publisher<String> publisher = Mono.just(body); Publisher<String> publisher = Mono.just(body);
ClientRequest result = ClientRequest.create(POST, URI.create("https://example.com")) ClientRequest result = ClientRequest.create(POST, DEFAULT_URL).body(publisher, String.class).build();
.body(publisher, String.class).build();
List<HttpMessageWriter<?>> messageWriters = new ArrayList<>(); List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes())); messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
@ -201,9 +195,7 @@ public class DefaultClientRequestBuilderTests {
result.writeTo(request, strategies).block(); result.writeTo(request, strategies).block();
assertThat(request.getBody()).isNotNull(); assertThat(request.getBody()).isNotNull();
StepVerifier.create(request.getBody()) StepVerifier.create(request.getBody()).expectNextCount(1).verifyComplete();
.expectNextCount(1)
.verifyComplete();
} }
@Test @Test
@ -211,8 +203,7 @@ public class DefaultClientRequestBuilderTests {
String body = "foo"; String body = "foo";
Publisher<String> publisher = Mono.just(body); Publisher<String> publisher = Mono.just(body);
ParameterizedTypeReference<String> typeReference = new ParameterizedTypeReference<String>() {}; ParameterizedTypeReference<String> typeReference = new ParameterizedTypeReference<String>() {};
ClientRequest result = ClientRequest.create(POST, URI.create("https://example.com")) ClientRequest result = ClientRequest.create(POST, DEFAULT_URL).body(publisher, typeReference).build();
.body(publisher, typeReference).build();
List<HttpMessageWriter<?>> messageWriters = new ArrayList<>(); List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes())); messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));
@ -224,9 +215,7 @@ public class DefaultClientRequestBuilderTests {
result.writeTo(request, strategies).block(); result.writeTo(request, strategies).block();
assertThat(request.getBody()).isNotNull(); assertThat(request.getBody()).isNotNull();
StepVerifier.create(request.getBody()) StepVerifier.create(request.getBody()).expectNextCount(1).verifyComplete();
.expectNextCount(1)
.verifyComplete();
} }
} }