提交 f7bf6138 编写于 作者: A Arjen Poutsma

SPR-5808 - Make HttpMessageConverterExtractor top level class

上级 59e41a27
......@@ -167,7 +167,7 @@ public class RestTemplate extends HttpAccessor implements RestOperations {
checkForSupportedMessageConverter(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);
}
......@@ -176,7 +176,7 @@ public class RestTemplate extends HttpAccessor implements RestOperations {
checkForSupportedMessageConverter(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);
}
......@@ -339,15 +339,15 @@ public class RestTemplate extends HttpAccessor implements RestOperations {
/** Request callback implementation that prepares the request's accept headers. */
private class GetCallback<T> implements RequestCallback {
private final Class<T> responseType;
private final List<HttpMessageConverter<T>> messageConverters;
private GetCallback(Class<T> responseType) {
this.responseType = responseType;
private GetCallback(List<HttpMessageConverter<T>> messageConverters) {
this.messageConverters = messageConverters;
}
public void doWithRequest(ClientHttpRequest request) throws IOException {
List<MediaType> allSupportedMediaTypes = new ArrayList<MediaType>();
for (HttpMessageConverter<?> entityConverter : getSupportedMessageConverters(this.responseType)) {
for (HttpMessageConverter<?> entityConverter : messageConverters) {
List<MediaType> supportedMediaTypes = entityConverter.getSupportedMediaTypes();
for (MediaType supportedMediaType : supportedMediaTypes) {
if (supportedMediaType.getCharSet() != null) {
......
......@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册