From 236e3caa5587c56a5392fb66d4444eaeb385cfea Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Thu, 11 Jun 2009 09:51:45 +0000 Subject: [PATCH] SPR-5808 - Make HttpMessageConverterExtractor top level class git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@1352 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../org/springframework/web/client/RestTemplate.java | 12 ++++++------ .../web/client/RestTemplateTests.java | 5 +++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/org.springframework.web/src/main/java/org/springframework/web/client/RestTemplate.java b/org.springframework.web/src/main/java/org/springframework/web/client/RestTemplate.java index 4024e057603..8345b48d87c 100644 --- a/org.springframework.web/src/main/java/org/springframework/web/client/RestTemplate.java +++ b/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); List> supportedMessageConverters = getSupportedMessageConverters(responseType); - return execute(url, HttpMethod.GET, new GetCallback(responseType), + return execute(url, HttpMethod.GET, new GetCallback(supportedMessageConverters), new HttpMessageConverterExtractor(responseType, supportedMessageConverters), urlVariables); } @@ -176,7 +176,7 @@ public class RestTemplate extends HttpAccessor implements RestOperations { checkForSupportedMessageConverter(responseType); List> supportedMessageConverters = getSupportedMessageConverters(responseType); - return execute(url, HttpMethod.GET, new GetCallback(responseType), + return execute(url, HttpMethod.GET, new GetCallback(supportedMessageConverters), new HttpMessageConverterExtractor(responseType, supportedMessageConverters), urlVariables); } @@ -339,15 +339,15 @@ public class RestTemplate extends HttpAccessor implements RestOperations { /** Request callback implementation that prepares the request's accept headers. */ private class GetCallback implements RequestCallback { - private final Class responseType; + private final List> messageConverters; - private GetCallback(Class responseType) { - this.responseType = responseType; + private GetCallback(List> messageConverters) { + this.messageConverters = messageConverters; } public void doWithRequest(ClientHttpRequest request) throws IOException { List allSupportedMediaTypes = new ArrayList(); - for (HttpMessageConverter entityConverter : getSupportedMessageConverters(this.responseType)) { + for (HttpMessageConverter entityConverter : messageConverters) { List supportedMediaTypes = entityConverter.getSupportedMediaTypes(); for (MediaType supportedMediaType : supportedMediaTypes) { if (supportedMediaType.getCharSet() != null) { diff --git a/org.springframework.web/src/test/java/org/springframework/web/client/RestTemplateTests.java b/org.springframework.web/src/test/java/org/springframework/web/client/RestTemplateTests.java index 813d932eee7..68b034cd330 100644 --- a/org.springframework.web/src/test/java/org/springframework/web/client/RestTemplateTests.java +++ b/org.springframework.web/src/test/java/org/springframework/web/client/RestTemplateTests.java @@ -136,7 +136,7 @@ public class RestTemplateTests { @Test 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"); expect(converter.getSupportedMediaTypes()).andReturn(Collections.singletonList(textPlain)).times(2); 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); assertEquals("Invalid GET result", expected, result); + assertEquals("Invalid Accept header", textPlain.toString(), requestHeaders.getFirst("Accept")); verifyMocks(); } @@ -178,7 +179,7 @@ public class RestTemplateTests { @Test 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"); expect(converter.getSupportedMediaTypes()).andReturn(Collections.singletonList(supportedMediaType)).times(2); expect(requestFactory.createRequest(new URI("http://example.com/resource"), HttpMethod.GET)).andReturn(request);