[jboss-cvs] JBossAS SVN: r90269 - in projects/vfs/trunk/src: main/java/org/jboss/virtual/spi/zip and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jun 16 16:02:08 EDT 2009


Author: alesj
Date: 2009-06-16 16:02:08 -0400 (Tue, 16 Jun 2009)
New Revision: 90269

Modified:
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryInputStream.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipEntry.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipEntryProvider.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipFactory.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipFile.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/jzipfile/JZipFileZipEntryProvider.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARCacheUnitTestCase.java
Log:
Fix IS::close.
Found the culprit who didn't close. :-)

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryInputStream.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryInputStream.java	2009-06-16 19:58:48 UTC (rev 90268)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryInputStream.java	2009-06-16 20:02:08 UTC (rev 90269)
@@ -21,11 +21,11 @@
 */
 package org.jboss.virtual.plugins.context.zip;
 
-import org.jboss.virtual.VFSUtils;
-
 import java.io.IOException;
 import java.io.InputStream;
 
+import org.jboss.virtual.VFSUtils;
+
 /**
  * ZipEntryInputStream is part of ZipFileWrapper implementation.
  *
@@ -33,9 +33,9 @@
  * and releases the underlying ZipFileWrapper when detecting end of use.
  *
  * @author <a href="strukelj at parsek.net">Marko Strukelj</a>
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
  * @version $Revision: 1.0 $
  */
-
 public class ZipEntryInputStream extends InputStream
 {
    /** Underlying input stream */
@@ -44,9 +44,12 @@
    /** Underlying zip source */
    private ZipFileWrapper zipWrapper;
 
-   /** Is stream closed */
-   private boolean closed;
+   /** Is stream released */
+   private volatile boolean released;
 
+   /** Is stream delegate closed */
+   private volatile boolean closed;
+
    /**
     * ZipEntryInputStream constructor.
     *
@@ -65,13 +68,15 @@
    }
 
    /**
-    * Close this stream and release zipWrapper
+    * Release this stream and release zipWrapper
+    *
+    * @param doRelease should we release
     */
-   private void streamClosed(boolean doClose)
+   private void streamReleased(boolean doRelease)
    {
-      if (closed == false && doClose)
+      if (released == false && doRelease)
       {
-         closed = true;
+         released = true;
          zipWrapper.release();
       }
    }
@@ -93,7 +98,7 @@
       }
       finally
       {
-         streamClosed(rc < 0);
+         streamReleased(rc < 0);
       }
    }
 
@@ -116,7 +121,7 @@
       }
       finally
       {
-         streamClosed(rc < 0);
+         streamReleased(rc < 0);
       }
    }
 
@@ -140,7 +145,7 @@
       }
       finally
       {
-         streamClosed(rc < 0);
+         streamReleased(rc < 0);
       }
    }
 
@@ -157,7 +162,7 @@
       }
       finally
       {
-         streamClosed(ok == false);
+         streamReleased(ok == false);
       }
    }
 
@@ -174,7 +179,7 @@
       }
       finally
       {
-         streamClosed(ok == false);
+         streamReleased(ok == false);
       }
    }
 
@@ -192,7 +197,7 @@
       }
       finally
       {
-         streamClosed(ok == false);
+         streamReleased(ok == false);
       }
    }
 
@@ -210,7 +215,7 @@
       }
       finally
       {
-         streamClosed(ok == false);
+         streamReleased(ok == false);
       }
    }
 
@@ -221,8 +226,18 @@
     */
    public void close() throws IOException
    {
-      streamClosed(true);
-      super.close();
+      try
+      {
+         streamReleased(true);
+      }
+      finally
+      {
+         if (closed == false)
+         {
+            closed = true;
+            VFSUtils.safeClose(delegate);
+         }
+      }
    }
 
    /**
@@ -235,6 +250,16 @@
    }
 
    /**
+    * isReleased.
+    *
+    * @return returns true if released
+    */
+   boolean isReleased()
+   {
+      return released;
+   }
+
+   /**
     * isClosed.
     *
     * @return returns true if closed

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipEntry.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipEntry.java	2009-06-16 19:58:48 UTC (rev 90268)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipEntry.java	2009-06-16 20:02:08 UTC (rev 90269)
@@ -28,7 +28,6 @@
  */
 public interface ZipEntry
 {
-
    /**
     * Get the full name of the entry.
     *

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipEntryProvider.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipEntryProvider.java	2009-06-16 19:58:48 UTC (rev 90268)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipEntryProvider.java	2009-06-16 20:02:08 UTC (rev 90269)
@@ -32,7 +32,6 @@
  */
 public interface ZipEntryProvider extends Closeable
 {
-
    /**
     * Get the next entry in the stream.  This method may render the results of {@link #currentStream()} useless;
     * such streams should be closed before invoking this method.

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipFactory.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipFactory.java	2009-06-16 19:58:48 UTC (rev 90268)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipFactory.java	2009-06-16 20:02:08 UTC (rev 90269)
@@ -32,7 +32,6 @@
  */
 public interface ZipFactory
 {
-
    /**
     * Create a zip entry provider for an input stream.  The provider will provide the means to iterate over a zip
     * file one entry at a time.  The returned provider <b>must</b> be closed or else file locking or cleanup issues

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipFile.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipFile.java	2009-06-16 19:58:48 UTC (rev 90268)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/ZipFile.java	2009-06-16 20:02:08 UTC (rev 90269)
@@ -33,7 +33,6 @@
  */
 public interface ZipFile extends Closeable
 {
-
    /**
     * Get the input stream for a specific entry.  The caller <b>must</b> close the input stream or
     * file locking/cleanup issues may ensue.

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/jzipfile/JZipFileZipEntryProvider.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/jzipfile/JZipFileZipEntryProvider.java	2009-06-16 19:58:48 UTC (rev 90268)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/jzipfile/JZipFileZipEntryProvider.java	2009-06-16 20:02:08 UTC (rev 90269)
@@ -21,18 +21,18 @@
  */
 package org.jboss.virtual.spi.zip.jzipfile;
 
+import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.File;
-import java.io.FileOutputStream;
 import java.util.Iterator;
 
 import org.jboss.jzipfile.Zip;
 import org.jboss.jzipfile.ZipCatalog;
 import org.jboss.jzipfile.ZipEntryType;
+import org.jboss.virtual.VFSUtils;
 import org.jboss.virtual.spi.zip.ZipEntry;
 import org.jboss.virtual.spi.zip.ZipEntryProvider;
-import org.jboss.virtual.VFSUtils;
 
 /**
  * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARCacheUnitTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARCacheUnitTestCase.java	2009-06-16 19:58:48 UTC (rev 90268)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARCacheUnitTestCase.java	2009-06-16 20:02:08 UTC (rev 90269)
@@ -31,8 +31,8 @@
 
 import junit.framework.Test;
 import org.jboss.virtual.VFS;
+import org.jboss.virtual.VFSUtils;
 import org.jboss.virtual.VirtualFile;
-import org.jboss.virtual.VFSUtils;
 
 /**
  * Test the caching strategy of VFS with jar files.




More information about the jboss-cvs-commits mailing list