From 30db112d37b382a3248f3b9db2c2634e94f2ca45 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Fri, 10 May 2013 17:26:35 -0400 Subject: [PATCH] Close InputStream in ResourceHttpMessageConverter Spring 3.2.2 introduced a change to avoid closing the response stream in HttpMessageConverters (SPR-10095). However, the InputStream of resources being written, for example as part of a multi-part request should be closed. This change ensures that. Issue: SPR-10460 --- .../http/converter/ResourceHttpMessageConverter.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/spring-web/src/main/java/org/springframework/http/converter/ResourceHttpMessageConverter.java b/spring-web/src/main/java/org/springframework/http/converter/ResourceHttpMessageConverter.java index 69f22a92e10a..81733712488c 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/ResourceHttpMessageConverter.java +++ b/spring-web/src/main/java/org/springframework/http/converter/ResourceHttpMessageConverter.java @@ -85,7 +85,17 @@ protected Long getContentLength(Resource resource, MediaType contentType) throws protected void writeInternal(Resource resource, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { - StreamUtils.copy(resource.getInputStream(), outputMessage.getBody()); + InputStream in = resource.getInputStream(); + try { + StreamUtils.copy(in, outputMessage.getBody()); + } + finally { + try { + in.close(); + } + catch (IOException ex) { + } + } outputMessage.getBody().flush(); }