[jboss-cvs] JBossAS SVN: r90261 - in projects/vfs/trunk/src/main/java/org/jboss/virtual: plugins/context and 5 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jun 16 12:32:38 EDT 2009


Author: david.lloyd at jboss.com
Date: 2009-06-16 12:32:38 -0400 (Tue, 16 Jun 2009)
New Revision: 90261

Modified:
   projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/VirtualFile.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractURLHandler.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/jar/NestedJarHandler.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryContext.java
   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/ZipFileWrapper.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipStreamWrapper.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/VFSContextFactoryLocator.java
Log:
Clean up lots of resource management, add safeClose() convenience method

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java	2009-06-16 16:10:32 UTC (rev 90260)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java	2009-06-16 16:32:38 UTC (rev 90261)
@@ -25,6 +25,7 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
+import java.io.Closeable;
 import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -278,13 +279,7 @@
       }
       finally
       {
-         try
-         {
-            stream.close();
-         }
-         catch (IOException ignored)
-         {
-         }
+         safeClose(stream);
       }
    }
 
@@ -902,18 +897,8 @@
       }
       finally
       {
-         if (is != null)
-         {
-            try
-            {
-               is.close();
-            }
-            catch(IOException ignored)
-            {
-            }
-         }
-         if (os != null)
-            os.close();
+         safeClose(is);
+         safeClose(os);
       }
    }
 
@@ -1117,4 +1102,33 @@
       URI uri = context.getRootURI();
       return stripProtocol(uri);
    }
+
+   /**
+    * Safely close some resource without throwing an exception.  Any exception will be logged at TRACE level.
+    *
+    * @param c the resource
+    */
+   public static void safeClose(final Closeable c)
+   {
+      if (c != null) try {
+         c.close();
+      }
+      catch (Exception e)
+      {
+         log.trace("Failed to close resource", e);
+      }
+   }
+
+   /**
+    * Safely close some resources without throwing an exception.  Any exception will be logged at TRACE level.
+    *
+    * @param ci the resources
+    */
+   public static void safeClose(final Iterable<? extends Closeable> ci)
+   {
+      if (ci != null) for (Closeable closeable : ci)
+      {
+         safeClose(closeable);
+      }
+   }
 }

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/VirtualFile.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/VirtualFile.java	2009-06-16 16:10:32 UTC (rev 90260)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/VirtualFile.java	2009-06-16 16:32:38 UTC (rev 90261)
@@ -260,19 +260,7 @@
          return;
 
       // Close the streams
-      for (InputStream stream : streams)
-      {
-         if (stream != null)
-         {
-            try
-            {
-               stream.close();
-            }
-            catch (IOException ignored)
-            {
-            }
-         }
-      }
+      VFSUtils.safeClose(streams);
       streams.clear();
    }
 

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractURLHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractURLHandler.java	2009-06-16 16:10:32 UTC (rev 90260)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractURLHandler.java	2009-06-16 16:32:38 UTC (rev 90261)
@@ -118,7 +118,7 @@
       try
       {
          if (c instanceof JarURLConnection == false)
-            c.getInputStream().close();
+            VFSUtils.safeClose(c.getInputStream());
       }
       catch (Exception ex)
       {

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java	2009-06-16 16:10:32 UTC (rev 90260)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java	2009-06-16 16:32:38 UTC (rev 90261)
@@ -372,14 +372,7 @@
       }
       finally
       {
-         try
-         {
-            fis.close();
-         }
-         catch(IOException e)
-         {
-            log.debug("Exception closing file input stream: " + fis, e);
-         }
+         VFSUtils.safeClose(fis);
       }
       return handler;
    }

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/jar/NestedJarHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/jar/NestedJarHandler.java	2009-06-16 16:10:32 UTC (rev 90260)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/jar/NestedJarHandler.java	2009-06-16 16:32:38 UTC (rev 90261)
@@ -34,6 +34,7 @@
 
 import org.jboss.virtual.spi.VFSContext;
 import org.jboss.virtual.spi.VirtualFileHandler;
+import org.jboss.virtual.VFSUtils;
 
 /**
  * Nested Jar Handler.
@@ -78,18 +79,12 @@
          }
          finally
          {
-            outputStream.close();
+            VFSUtils.safeClose(outputStream);
          }
       }
       finally
       {
-         try
-         {
-            inputStream.close();
-         }
-         catch (IOException ignored)
-         {
-         }
+         VFSUtils.safeClose(inputStream);
       }
       
       return new JarFile(temp);

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryContext.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryContext.java	2009-06-16 16:10:32 UTC (rev 90260)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryContext.java	2009-06-16 16:32:38 UTC (rev 90261)
@@ -432,10 +432,11 @@
          }
          if (longestNameMatch == null)
             throw new IllegalArgumentException("Cannot find entry: " + is + ", " + relative);
+         zis.close();
       }
       finally
       {
-         zis.close();
+         VFSUtils.safeClose(zis);
       }
 
       // do recursion on relative
@@ -455,10 +456,11 @@
                return findEntry(zis.currentStream(), relative, null);
             }
          }
+         zis.close();
       }
       finally
       {
-         zis.close();
+         VFSUtils.safeClose(zis);
       }
       throw new IllegalArgumentException("No such entry: " + is + ", " + relative);
    }

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 16:10:32 UTC (rev 90260)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryInputStream.java	2009-06-16 16:32:38 UTC (rev 90261)
@@ -21,6 +21,8 @@
 */
 package org.jboss.virtual.plugins.context.zip;
 
+import org.jboss.virtual.VFSUtils;
+
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -228,13 +230,7 @@
     */
    protected void finalize() throws Throwable
    {
-      try
-      {
-         close();
-      }
-      catch(IOException ignored)
-      {
-      }
+      VFSUtils.safeClose(this);
       super.finalize();
    }
 

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipFileWrapper.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipFileWrapper.java	2009-06-16 16:10:32 UTC (rev 90260)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipFileWrapper.java	2009-06-16 16:32:38 UTC (rev 90261)
@@ -373,10 +373,11 @@
                try
                {
                   VFSUtils.copyStream(is, zout);
+                  is.close();
                }
                finally
                {
-                  is.close();
+                  VFSUtils.safeClose(is);
                }
             }
          }

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipStreamWrapper.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipStreamWrapper.java	2009-06-16 16:10:32 UTC (rev 90260)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipStreamWrapper.java	2009-06-16 16:32:38 UTC (rev 90261)
@@ -106,10 +106,11 @@
             inMemoryFiles.put(ent.getName(), new InMemoryFile(ent, fileBytes));
             ent = zis.getNextEntry();
          }
+         zis.close();
       }
       finally
       {
-         zis.close();
+         VFSUtils.safeClose(zis);
       }
 
       if (optimizeForMemory) {

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java	2009-06-16 16:10:32 UTC (rev 90260)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java	2009-06-16 16:32:38 UTC (rev 90261)
@@ -318,10 +318,11 @@
       try
       {
          JarUtils.unjar(in, copy);
+         in.close();
       }
       finally
       {
-         in.close();
+         VFSUtils.safeClose(in);
       }
    }
 
@@ -335,33 +336,29 @@
    protected static void rewrite(VirtualFileHandler handler, File file) throws IOException
    {
       OutputStream out = new FileOutputStream(file);
-      InputStream in = handler.openStream();
       try
       {
-         byte[] bytes = new byte[1024];
-         while (in.available() > 0)
-         {
-            int length = in.read(bytes);
-            if (length > 0)
-               out.write(bytes, 0, length);
-         }
-      }
-      finally
-      {
+         InputStream in = handler.openStream();
          try
          {
+            byte[] bytes = new byte[1024];
+            while (in.available() > 0)
+            {
+               int length = in.read(bytes);
+               if (length > 0)
+                  out.write(bytes, 0, length);
+            }
             in.close();
-         }
-         catch (IOException ignored)
-         {
-         }
-         try
-         {
             out.close();
          }
-         catch (IOException ignored)
+         finally
          {
+            VFSUtils.safeClose(in);
          }
       }
+      finally
+      {
+         VFSUtils.safeClose(out);
+      }
    }
 }
\ No newline at end of file

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/VFSContextFactoryLocator.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/VFSContextFactoryLocator.java	2009-06-16 16:10:32 UTC (rev 90260)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/VFSContextFactoryLocator.java	2009-06-16 16:32:38 UTC (rev 90261)
@@ -43,6 +43,7 @@
 import org.jboss.virtual.plugins.context.memory.MemoryContextFactory;
 import org.jboss.virtual.plugins.context.zip.ZipEntryContextFactory;
 import org.jboss.virtual.plugins.context.VfsArchiveBrowserFactory;
+import org.jboss.virtual.VFSUtils;
 import org.jboss.util.file.ArchiveBrowser;
 
 /**
@@ -290,10 +291,11 @@
                      temp.add(factory);
                }
             }
+            is.close();
          }
          finally
          {
-            is.close();
+            VFSUtils.safeClose(is);
          }
       }
       catch(Exception e)




More information about the jboss-cvs-commits mailing list