Don't throw NPE when serving webjar directories

Prior to this change, serving resources with ResourceHttpRequestHandler
could result in NPE when requesting an existing folder located in a JAR.

This commit swallows those exceptions, as it is not possible to foresee
those cases without reading the actual resource. This result in a HTTP
200 response with a zero Content-Length instead of a HTTP 500 internal
exception.

Issue: SPR-13620
This commit is contained in:
Brian Clozel
2015-10-29 16:10:27 +01:00
parent 323fa8510d
commit 9334fabe26
2 changed files with 17 additions and 0 deletions

View File

@@ -478,6 +478,20 @@ public class ResourceHttpRequestHandlerTests {
assertEquals(0, this.response.getContentLength());
}
// SPR-13620
@Test
public void writeContentInputStreamThrowingNullPointerException() throws Exception {
Resource resource = mock(Resource.class);
InputStream in = mock(InputStream.class);
given(resource.getInputStream()).willReturn(in);
given(in.read(any())).willThrow(NullPointerException.class);
this.handler.writeContent(this.response, resource);
assertEquals(200, this.response.getStatus());
assertEquals(0, this.response.getContentLength());
}
private long dateHeaderAsLong(String responseHeaderName) throws Exception {
return dateFormat.parse(this.response.getHeader(responseHeaderName)).getTime();