INT-808 DefaultInboundRequestMapper no longer removes newlines.

This commit is contained in:
Mark Fisher
2009-09-30 21:12:32 +00:00
parent d79611a067
commit 92121c460d
2 changed files with 20 additions and 6 deletions

View File

@@ -212,10 +212,13 @@ public class DefaultInboundRequestMapper implements InboundRequestMapper {
private Object createPayloadFromTextContent(HttpServletRequest request) throws IOException {
StringBuilder sb = new StringBuilder();
BufferedReader reader = request.getReader();
String line = reader.readLine();
while (line != null) {
sb.append(line);
line = reader.readLine();
int contentLength = request.getContentLength();
int bufferLength = (contentLength > -1) ? contentLength : 1024;
char[] buffer = new char[bufferLength];
int charsRead = 0;
while ((charsRead = reader.read(buffer, 0, bufferLength)) != -1) {
sb.append(buffer, 0, charsRead);
buffer = new char[bufferLength];
}
return sb.toString();
}

View File

@@ -23,9 +23,8 @@ import org.springframework.integration.core.Message;
import org.springframework.mock.web.MockHttpServletRequest;
/**
*
* @author Iwein Fuld
*
* @author Mark Fisher
*/
@SuppressWarnings("unchecked")
public class DefaultInboundRequestMapperTests {
@@ -59,4 +58,16 @@ public class DefaultInboundRequestMapperTests {
Message<String> message = (Message<String>) mapper.toMessage(request);
assertThat(message.getPayload(), is(COMPLEX_STRING));
}
@Test
public void newlineTest() throws Exception {
String content = "foo\nbar\n";
MockHttpServletRequest request = new MockHttpServletRequest();
request.setContentType("text");
byte[] bytes = content.getBytes();
request.setContent(bytes);
Message<String> message = (Message<String>) mapper.toMessage(request);
assertThat(message.getPayload(), is(content));
}
}