You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sk...@apache.org on 2005/10/17 10:55:09 UTC

svn commit: r325861 - /jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java

Author: skitching
Date: Mon Oct 17 01:54:58 2005
New Revision: 325861

URL: http://svn.apache.org/viewcvs?rev=325861&view=rev
Log:
Avoid using InputSource(URL) constructor, as it is reported to cause jar files
to be locked on windows systems. Thanks to Rich Feit for report and patch.
See bugzilla #37034.

Modified:
    jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java

Modified: jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java?rev=325861&r1=325860&r2=325861&view=diff
==============================================================================
--- jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java (original)
+++ jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Digester.java Mon Oct 17 01:54:58 2005
@@ -24,6 +24,8 @@
 import java.io.InputStream;
 import java.io.Reader;
 import java.lang.reflect.InvocationTargetException;
+import java.net.URL;
+import java.net.URLConnection;
 import java.util.EmptyStackException;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -1515,7 +1517,21 @@
         }  
         
         try {
-            return (new InputSource(entityURL));
+            // Ideally we would just call
+            //   return (new InputSource(entityURL));
+            // Unforunately it appears that when the entityURL
+            // points to a file within a jar archive a caching mechanism
+            // inside the InputSource implementation causes a file-handle
+            // to the jar file to remain open. On Windows systems this then
+            // causes the jar archive file to be locked on disk ("in use")
+            // which makes it impossible to delete the jar file - and that
+            // really stuffs up "undeploy" in webapps in particular.
+            URLConnection urlConnection = new URL(entityURL).openConnection();
+            urlConnection.setUseCaches(false);
+            InputSource source = new InputSource(urlConnection.getInputStream());
+            source.setSystemId(entityURL);
+            return source;
+
         } catch (Exception e) {
             throw createSAXException(e);
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org