You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2010/11/27 21:22:07 UTC

svn commit: r1039751 - /wicket/trunk/wicket/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java

Author: mgrigorov
Date: Sat Nov 27 20:22:07 2010
New Revision: 1039751

URL: http://svn.apache.org/viewvc?rev=1039751&view=rev
Log:
Close the streams after usage.

Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java?rev=1039751&r1=1039750&r2=1039751&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/resource/ContextRelativeResource.java Sat Nov 27 20:22:07 2010
@@ -24,6 +24,8 @@ import org.apache.wicket.util.io.ByteArr
 import org.apache.wicket.util.io.Streams;
 import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
 import org.apache.wicket.util.resource.WebExternalResourceStream;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Resource served from a file relative to the context root.
@@ -34,6 +36,8 @@ public class ContextRelativeResource ext
 {
 	private static final long serialVersionUID = 1L;
 
+	private static final Logger log = LoggerFactory.getLogger(ContextRelativeResource.class);
+
 	private final String path;
 
 	/**
@@ -74,10 +78,11 @@ public class ContextRelativeResource ext
 				@Override
 				public void writeData(final Attributes attributes)
 				{
+					InputStream inputStream = null;
+					ByteArrayOutputStream baos = new ByteArrayOutputStream();
 					try
 					{
-						InputStream inputStream = webExternalResourceStream.getInputStream();
-						ByteArrayOutputStream baos = new ByteArrayOutputStream();
+						inputStream = webExternalResourceStream.getInputStream();
 						Streams.copy(inputStream, baos);
 						attributes.getResponse().write(baos.toByteArray());
 					}
@@ -89,6 +94,36 @@ public class ContextRelativeResource ext
 					{
 						throw new WicketRuntimeException(iox);
 					}
+					finally
+					{
+						try
+						{
+							Streams.close(inputStream);
+						}
+						catch (IOException iox)
+						{
+							if (log.isDebugEnabled())
+							{
+								log.debug(
+									"An error occurred while closing the input stream to the external resource",
+									iox);
+							}
+						}
+
+						try
+						{
+							Streams.close(baos);
+						}
+						catch (IOException iox)
+						{
+							if (log.isDebugEnabled())
+							{
+								log.debug(
+									"An error occurred while closing the temporary output stream",
+									iox);
+							}
+						}
+					}
 				}
 			});
 		}