SPR-7145 - NullPointerException in AnnotationMethodHandlerAdapter if HttpHeaders in ResponseEntity are empty
This commit is contained in:
parent
aa216672ae
commit
a910ce68ff
|
|
@ -912,7 +912,10 @@ public class AnnotationMethodHandlerAdapter extends WebContentGenerator
|
||||||
if (!entityHeaders.isEmpty()) {
|
if (!entityHeaders.isEmpty()) {
|
||||||
outputMessage.getHeaders().putAll(entityHeaders);
|
outputMessage.getHeaders().putAll(entityHeaders);
|
||||||
}
|
}
|
||||||
writeWithMessageConverters(responseEntity.getBody(), inputMessage, outputMessage);
|
Object body = responseEntity.getBody();
|
||||||
|
if (body != null) {
|
||||||
|
writeWithMessageConverters(body, inputMessage, outputMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|
|
||||||
|
|
@ -1192,9 +1192,9 @@ public class ServletAnnotationControllerTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void httpEntity() throws ServletException, IOException {
|
public void httpEntity() throws ServletException, IOException {
|
||||||
initServlet(HttpEntityController.class);
|
initServlet(ResponseEntityController.class);
|
||||||
|
|
||||||
MockHttpServletRequest request = new MockHttpServletRequest("PUT", "/handle");
|
MockHttpServletRequest request = new MockHttpServletRequest("PUT", "/foo");
|
||||||
String requestBody = "Hello World";
|
String requestBody = "Hello World";
|
||||||
request.setContent(requestBody.getBytes("UTF-8"));
|
request.setContent(requestBody.getBytes("UTF-8"));
|
||||||
request.addHeader("Content-Type", "text/plain; charset=utf-8");
|
request.addHeader("Content-Type", "text/plain; charset=utf-8");
|
||||||
|
|
@ -1205,6 +1205,11 @@ public class ServletAnnotationControllerTests {
|
||||||
assertEquals(201, response.getStatus());
|
assertEquals(201, response.getStatus());
|
||||||
assertEquals(requestBody, response.getContentAsString());
|
assertEquals(requestBody, response.getContentAsString());
|
||||||
assertEquals("MyValue", response.getHeader("MyResponseHeader"));
|
assertEquals("MyValue", response.getHeader("MyResponseHeader"));
|
||||||
|
|
||||||
|
request = new MockHttpServletRequest("PUT", "/bar");
|
||||||
|
response = new MockHttpServletResponse();
|
||||||
|
servlet.service(request, response);
|
||||||
|
assertEquals(404, response.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -2597,10 +2602,10 @@ public class ServletAnnotationControllerTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public static class HttpEntityController {
|
public static class ResponseEntityController {
|
||||||
|
|
||||||
@RequestMapping("/handle")
|
@RequestMapping("/foo")
|
||||||
public ResponseEntity<String> handle(HttpEntity<byte[]> requestEntity) throws UnsupportedEncodingException {
|
public ResponseEntity<String> foo(HttpEntity<byte[]> requestEntity) throws UnsupportedEncodingException {
|
||||||
assertNotNull(requestEntity);
|
assertNotNull(requestEntity);
|
||||||
assertEquals("MyValue", requestEntity.getHeaders().getFirst("MyRequestHeader"));
|
assertEquals("MyValue", requestEntity.getHeaders().getFirst("MyRequestHeader"));
|
||||||
String requestBody = new String(requestEntity.getBody(), "UTF-8");
|
String requestBody = new String(requestEntity.getBody(), "UTF-8");
|
||||||
|
|
@ -2610,6 +2615,12 @@ public class ServletAnnotationControllerTests {
|
||||||
responseHeaders.set("MyResponseHeader", "MyValue");
|
responseHeaders.set("MyResponseHeader", "MyValue");
|
||||||
return new ResponseEntity<String>(requestBody, responseHeaders, HttpStatus.CREATED);
|
return new ResponseEntity<String>(requestBody, responseHeaders, HttpStatus.CREATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping("/bar")
|
||||||
|
public ResponseEntity<String> bar() {
|
||||||
|
return new ResponseEntity<String>(new HttpHeaders(), HttpStatus.NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue