You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jc...@apache.org on 2007/04/18 10:06:24 UTC

svn commit: r529907 - /incubator/wicket/branches/wicket-1.2.x/wicket/src/main/java/wicket/util/resource/UrlResourceStream.java

Author: jcompagner
Date: Wed Apr 18 01:06:19 2007
New Revision: 529907

URL: http://svn.apache.org/viewvc?view=rev&rev=529907
Log:
File handle leak backport:  	 WICKET-438

Modified:
    incubator/wicket/branches/wicket-1.2.x/wicket/src/main/java/wicket/util/resource/UrlResourceStream.java

Modified: incubator/wicket/branches/wicket-1.2.x/wicket/src/main/java/wicket/util/resource/UrlResourceStream.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.2.x/wicket/src/main/java/wicket/util/resource/UrlResourceStream.java?view=diff&rev=529907&r1=529906&r2=529907
==============================================================================
--- incubator/wicket/branches/wicket-1.2.x/wicket/src/main/java/wicket/util/resource/UrlResourceStream.java (original)
+++ incubator/wicket/branches/wicket-1.2.x/wicket/src/main/java/wicket/util/resource/UrlResourceStream.java Wed Apr 18 01:06:19 2007
@@ -21,6 +21,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.HttpURLConnection;
+import java.net.JarURLConnection;
 import java.net.URI;
 import java.net.URL;
 import java.net.URLConnection;
@@ -230,15 +231,35 @@
 		else
 		{
 			URLConnection urlConnection = null;
+			boolean close = false;
 			try
 			{
 				urlConnection = url.openConnection();
-
+				long lastModified = this.lastModified;
+				if (urlConnection instanceof JarURLConnection)
+				{
+					JarURLConnection jarUrlConnection = (JarURLConnection)urlConnection;
+					URL jarFileUrl = jarUrlConnection.getJarFileURL();
+					URLConnection jarFileConnection = jarFileUrl.openConnection();
+					try
+					{
+						lastModified = jarFileConnection.getLastModified();
+					}
+					finally
+					{
+						jarFileConnection.getInputStream().close();
+					}
+				}
+				else
+				{
+					close = true;
+					lastModified = urlConnection.getLastModified();
+				}
 				// update the last modified time.
-				long lastModified = urlConnection.getLastModified();
 				if (lastModified != this.lastModified)
 				{
 					this.lastModified = lastModified;
+					close = true;
 					this.contentLength = urlConnection.getContentLength();
 				}
 			}
@@ -255,7 +276,7 @@
 					{
 						((HttpURLConnection)urlConnection).disconnect();
 					}
-					else
+					else if (close)
 					{
 						try
 						{