You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2006/06/10 17:07:13 UTC

svn commit: r413315 - /tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/startup/ExpandWar.java

Author: markt
Date: Sat Jun 10 08:07:13 2006
New Revision: 413315

URL: http://svn.apache.org/viewvc?rev=413315&view=rev
Log:
Port fixes from 5.5.x
 - Bug 33636. Files now retain last modified time
 - Expanded wars closed so they can be deleted on remove

Modified:
    tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/startup/ExpandWar.java

Modified: tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/startup/ExpandWar.java
URL: http://svn.apache.org/viewvc/tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/startup/ExpandWar.java?rev=413315&r1=413314&r2=413315&view=diff
==============================================================================
--- tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/startup/ExpandWar.java (original)
+++ tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/startup/ExpandWar.java Sat Jun 10 08:07:13 2006
@@ -176,13 +176,16 @@
                     logger.log("  Creating expanded file " + name);
                 }
                 input = jarFile.getInputStream(jarEntry);
-                expand(input, docBase, name);
+                
+                File expandedFile = expand(input, docBase, name);
+                long lastModified = jarEntry.getTime();
+                if ((lastModified != -1) && (lastModified != 0) && (expandedFile != null)) {
+                    expandedFile.setLastModified(lastModified);
+                }
+
                 input.close();
                 input = null;
             }
-            // FIXME - Closing the JAR file messes up the class loader???
-            //            jarFile.close();
-            jarFile = null;
         } finally {
             if (input != null) {
                 try {
@@ -214,23 +217,36 @@
      * @param input InputStream to be copied
      * @param docBase Document base directory into which we are expanding
      * @param name Relative pathname of the file to be created
+     * @return A handle to the expanded File
      *
      * @exception IOException if an input/output error occurs
      */
-    protected static void expand(InputStream input, File docBase, String name)
+    protected static File expand(InputStream input, File docBase, String name)
         throws IOException {
 
         File file = new File(docBase, name);
-        BufferedOutputStream output =
-            new BufferedOutputStream(new FileOutputStream(file));
-        byte buffer[] = new byte[2048];
-        while (true) {
-            int n = input.read(buffer);
-            if (n <= 0)
-                break;
-            output.write(buffer, 0, n);
+        BufferedOutputStream output = null;
+        try {
+            output = 
+                new BufferedOutputStream(new FileOutputStream(file));
+            byte buffer[] = new byte[2048];
+            while (true) {
+                int n = input.read(buffer);
+                if (n <= 0)
+                    break;
+                output.write(buffer, 0, n);
+            }
+        } finally {
+            if (output != null) {
+                try {
+                    output.close();
+                } catch (IOException e) {
+                    // Ignore
+                }
+            }
         }
-        output.close();
+
+        return file;
 
     }
 



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