HttpMessageConverters should support streaming

All HttpMessageConverters should support StreamingHttpOutputMessage.
Specifically, the BufferedImageHttpMessageConverter and
FormHttpMessageConverter should do so.

Issue: SPR-12715
This commit is contained in:
Arjen Poutsma
2015-03-02 15:31:39 +01:00
committed by Rossen Stoyanchev
parent d64c48ff5f
commit 8ab2e47556
4 changed files with 97 additions and 10 deletions

View File

@@ -19,6 +19,7 @@ package org.springframework.web.client;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
@@ -85,6 +86,7 @@ public class AbstractJettyServerTestCase {
handler.addServlet(new ServletHolder(new ErrorServlet(500)), "/status/server");
handler.addServlet(new ServletHolder(new UriServlet()), "/uri/*");
handler.addServlet(new ServletHolder(new MultipartServlet()), "/multipart");
handler.addServlet(new ServletHolder(new FormServlet()), "/form");
handler.addServlet(new ServletHolder(new DeleteServlet()), "/delete");
handler.addServlet(
new ServletHolder(new PutServlet(helloWorld, bytes, textContentType)),
@@ -286,6 +288,28 @@ public class AbstractJettyServerTestCase {
}
}
@SuppressWarnings("serial")
private static class FormServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
assertEquals(MediaType.APPLICATION_FORM_URLENCODED_VALUE,
req.getContentType());
Map<String, String[]> parameters = req.getParameterMap();
assertEquals(2, parameters.size());
String[] values = parameters.get("name 1");
assertEquals(1, values.length);
assertEquals("value 1", values[0]);
values = parameters.get("name 2");
assertEquals(2, values.length);
assertEquals("value 2+1", values[0]);
assertEquals("value 2+2", values[1]);
}
}
@SuppressWarnings("serial")
private static class DeleteServlet extends HttpServlet {

View File

@@ -179,6 +179,16 @@ public class RestTemplateIntegrationTests extends AbstractJettyServerTestCase {
template.postForLocation(baseUrl + "/multipart", parts);
}
@Test
public void form() throws UnsupportedEncodingException {
MultiValueMap<String, String> form = new LinkedMultiValueMap<String, String>();
form.add("name 1", "value 1");
form.add("name 2", "value 2+1");
form.add("name 2", "value 2+2");
template.postForLocation(baseUrl + "/form", form);
}
@Test
public void exchangeGet() throws Exception {
HttpHeaders requestHeaders = new HttpHeaders();