Fix review remarks on Servlet.fn

This commit incoporates the remarks made during the Servlet.fn review.

See gh-21490
This commit is contained in:
Arjen Poutsma
2019-03-13 15:30:50 +01:00
parent 2f682e1035
commit 0e9ea2c94d
9 changed files with 162 additions and 137 deletions

View File

@@ -29,6 +29,7 @@ import javax.servlet.http.Cookie;
import org.junit.Test;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.CacheControl;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
@@ -63,6 +64,16 @@ public class DefaultEntityResponseBuilderTests {
assertSame(body, response.entity());
}
@Test
public void fromObjectTypeReference() {
String body = "foo";
EntityResponse<String> response = EntityResponse.fromObject(body,
new ParameterizedTypeReference<String>() {})
.build();
assertSame(body, response.entity());
}
@Test
public void status() {
String body = "foo";

View File

@@ -36,6 +36,7 @@ import org.springframework.http.HttpRange;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.mock.web.test.MockHttpServletRequest;
import org.springframework.mock.web.test.MockHttpSession;
import org.springframework.util.LinkedMultiValueMap;
@@ -240,14 +241,16 @@ public class DefaultServerRequestTests {
@Test
public void bodyParameterizedTypeReference() throws Exception {
MockHttpServletRequest servletRequest = new MockHttpServletRequest("GET", "/");
servletRequest.setContentType(MediaType.TEXT_PLAIN_VALUE);
servletRequest.setContent("foo".getBytes(UTF_8));
servletRequest.setContentType(MediaType.APPLICATION_JSON_VALUE);
servletRequest.setContent("[\"foo\",\"bar\"]".getBytes(UTF_8));
DefaultServerRequest request = new DefaultServerRequest(servletRequest,
this.messageConverters);
Collections.singletonList(new MappingJackson2HttpMessageConverter()));
String result = request.body(new ParameterizedTypeReference<String>() {});
assertEquals("foo", result);
List<String> result = request.body(new ParameterizedTypeReference<List<String>>() {});
assertEquals(2, result.size());
assertEquals("foo", result.get(0));
assertEquals("bar", result.get(1));
}
@Test(expected = HttpMediaTypeNotSupportedException.class)

View File

@@ -20,6 +20,7 @@ import java.net.URI;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
@@ -31,6 +32,7 @@ import org.junit.Test;
import org.reactivestreams.Publisher;
import reactor.core.publisher.Mono;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.CacheControl;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
@@ -38,6 +40,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.mock.web.test.MockHttpServletRequest;
import org.springframework.mock.web.test.MockHttpServletResponse;
import org.springframework.util.LinkedMultiValueMap;
@@ -288,10 +291,27 @@ public class DefaultServerResponseBuilderTests {
}
@Test
public void asyncBodyCompletionStage() throws Exception {
public void bodyWithParameterizedTypeReference() throws Exception {
List<String> body = new ArrayList<>();
body.add("foo");
body.add("bar");
ServerResponse response = ServerResponse.ok().body(body, new ParameterizedTypeReference<List<String>>() {});
MockHttpServletRequest mockRequest = new MockHttpServletRequest("GET", "http://example.com");
MockHttpServletResponse mockResponse = new MockHttpServletResponse();
ServerResponse.Context context = () -> Collections.singletonList(new MappingJackson2HttpMessageConverter());
ModelAndView mav = response.writeTo(mockRequest, mockResponse, context);
assertNull(mav);
assertEquals("[\"foo\",\"bar\"]", mockResponse.getContentAsString());
}
@Test
public void bodyCompletionStage() throws Exception {
String body = "foo";
CompletionStage<String> completionStage = CompletableFuture.completedFuture(body);
ServerResponse response = ServerResponse.ok().asyncBody(completionStage);
ServerResponse response = ServerResponse.ok().body(completionStage);
MockHttpServletRequest mockRequest = new MockHttpServletRequest("GET", "http://example.com");
MockHttpServletResponse mockResponse = new MockHttpServletResponse();
@@ -307,10 +327,10 @@ public class DefaultServerResponseBuilderTests {
}
@Test
public void asyncBodyPublisher() throws Exception {
public void bodyPublisher() throws Exception {
String body = "foo";
Publisher<String> publisher = Mono.just(body);
ServerResponse response = ServerResponse.ok().asyncBody(publisher);
ServerResponse response = ServerResponse.ok().body(publisher);
MockHttpServletRequest mockRequest = new MockHttpServletRequest("GET", "http://example.com");
MockHttpServletResponse mockResponse = new MockHttpServletResponse();