Browse Source

SPR-5808 - Make HttpMessageConverterExtractor top level class

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@1352 50f2f4bb-b051-0410-bef5-90022cba6387
pull/1/head
Arjen Poutsma 17 years ago
parent
commit
236e3caa55
  1. 12
      org.springframework.web/src/main/java/org/springframework/web/client/RestTemplate.java
  2. 5
      org.springframework.web/src/test/java/org/springframework/web/client/RestTemplateTests.java

12
org.springframework.web/src/main/java/org/springframework/web/client/RestTemplate.java

@ -167,7 +167,7 @@ public class RestTemplate extends HttpAccessor implements RestOperations {
checkForSupportedMessageConverter(responseType); checkForSupportedMessageConverter(responseType);
List<HttpMessageConverter<T>> supportedMessageConverters = getSupportedMessageConverters(responseType); List<HttpMessageConverter<T>> supportedMessageConverters = getSupportedMessageConverters(responseType);
return execute(url, HttpMethod.GET, new GetCallback<T>(responseType), return execute(url, HttpMethod.GET, new GetCallback<T>(supportedMessageConverters),
new HttpMessageConverterExtractor<T>(responseType, supportedMessageConverters), urlVariables); new HttpMessageConverterExtractor<T>(responseType, supportedMessageConverters), urlVariables);
} }
@ -176,7 +176,7 @@ public class RestTemplate extends HttpAccessor implements RestOperations {
checkForSupportedMessageConverter(responseType); checkForSupportedMessageConverter(responseType);
List<HttpMessageConverter<T>> supportedMessageConverters = getSupportedMessageConverters(responseType); List<HttpMessageConverter<T>> supportedMessageConverters = getSupportedMessageConverters(responseType);
return execute(url, HttpMethod.GET, new GetCallback<T>(responseType), return execute(url, HttpMethod.GET, new GetCallback<T>(supportedMessageConverters),
new HttpMessageConverterExtractor<T>(responseType, supportedMessageConverters), urlVariables); new HttpMessageConverterExtractor<T>(responseType, supportedMessageConverters), urlVariables);
} }
@ -339,15 +339,15 @@ public class RestTemplate extends HttpAccessor implements RestOperations {
/** Request callback implementation that prepares the request's accept headers. */ /** Request callback implementation that prepares the request's accept headers. */
private class GetCallback<T> implements RequestCallback { private class GetCallback<T> implements RequestCallback {
private final Class<T> responseType; private final List<HttpMessageConverter<T>> messageConverters;
private GetCallback(Class<T> responseType) { private GetCallback(List<HttpMessageConverter<T>> messageConverters) {
this.responseType = responseType; this.messageConverters = messageConverters;
} }
public void doWithRequest(ClientHttpRequest request) throws IOException { public void doWithRequest(ClientHttpRequest request) throws IOException {
List<MediaType> allSupportedMediaTypes = new ArrayList<MediaType>(); List<MediaType> allSupportedMediaTypes = new ArrayList<MediaType>();
for (HttpMessageConverter<?> entityConverter : getSupportedMessageConverters(this.responseType)) { for (HttpMessageConverter<?> entityConverter : messageConverters) {
List<MediaType> supportedMediaTypes = entityConverter.getSupportedMediaTypes(); List<MediaType> supportedMediaTypes = entityConverter.getSupportedMediaTypes();
for (MediaType supportedMediaType : supportedMediaTypes) { for (MediaType supportedMediaType : supportedMediaTypes) {
if (supportedMediaType.getCharSet() != null) { if (supportedMediaType.getCharSet() != null) {

5
org.springframework.web/src/test/java/org/springframework/web/client/RestTemplateTests.java

@ -136,7 +136,7 @@ public class RestTemplateTests {
@Test @Test
public void getForObject() throws Exception { public void getForObject() throws Exception {
expect(converter.supports(String.class)).andReturn(true).times(3); expect(converter.supports(String.class)).andReturn(true).times(2);
MediaType textPlain = new MediaType("text", "plain"); MediaType textPlain = new MediaType("text", "plain");
expect(converter.getSupportedMediaTypes()).andReturn(Collections.singletonList(textPlain)).times(2); expect(converter.getSupportedMediaTypes()).andReturn(Collections.singletonList(textPlain)).times(2);
expect(requestFactory.createRequest(new URI("http://example.com"), HttpMethod.GET)).andReturn(request); expect(requestFactory.createRequest(new URI("http://example.com"), HttpMethod.GET)).andReturn(request);
@ -155,6 +155,7 @@ public class RestTemplateTests {
String result = template.getForObject("http://example.com", String.class); String result = template.getForObject("http://example.com", String.class);
assertEquals("Invalid GET result", expected, result); assertEquals("Invalid GET result", expected, result);
assertEquals("Invalid Accept header", textPlain.toString(), requestHeaders.getFirst("Accept"));
verifyMocks(); verifyMocks();
} }
@ -178,7 +179,7 @@ public class RestTemplateTests {
@Test @Test
public void getUnsupportedMediaType() throws Exception { public void getUnsupportedMediaType() throws Exception {
expect(converter.supports(String.class)).andReturn(true).times(3); expect(converter.supports(String.class)).andReturn(true).times(2);
MediaType supportedMediaType = new MediaType("foo", "bar"); MediaType supportedMediaType = new MediaType("foo", "bar");
expect(converter.getSupportedMediaTypes()).andReturn(Collections.singletonList(supportedMediaType)).times(2); expect(converter.getSupportedMediaTypes()).andReturn(Collections.singletonList(supportedMediaType)).times(2);
expect(requestFactory.createRequest(new URI("http://example.com/resource"), HttpMethod.GET)).andReturn(request); expect(requestFactory.createRequest(new URI("http://example.com/resource"), HttpMethod.GET)).andReturn(request);

Loading…
Cancel
Save