[jboss-cvs] JBossAS SVN: r111972 - in projects/vfs/branches/Branch_2_2/src: test/java/org/jboss/test/virtual/test and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Aug 9 17:22:26 EDT 2011


Author: alesj
Date: 2011-08-09 17:22:26 -0400 (Tue, 09 Aug 2011)
New Revision: 111972

Modified:
   projects/vfs/branches/Branch_2_2/src/main/java/org/jboss/virtual/plugins/context/zip/CertificateReaderInputStream.java
   projects/vfs/branches/Branch_2_2/src/test/java/org/jboss/test/virtual/test/VirtualFileUnitTestCase.java
Log:
[JBVFS-176]; lazy cert reading.


Modified: projects/vfs/branches/Branch_2_2/src/main/java/org/jboss/virtual/plugins/context/zip/CertificateReaderInputStream.java
===================================================================
--- projects/vfs/branches/Branch_2_2/src/main/java/org/jboss/virtual/plugins/context/zip/CertificateReaderInputStream.java	2011-08-09 20:49:04 UTC (rev 111971)
+++ projects/vfs/branches/Branch_2_2/src/main/java/org/jboss/virtual/plugins/context/zip/CertificateReaderInputStream.java	2011-08-09 21:22:26 UTC (rev 111972)
@@ -50,6 +50,9 @@
    /** Is stream closed */
    private boolean closed;
 
+   /** Has the entry been consumed */
+   private boolean consumedEntry ;
+
    /**
     * ZipEntryInputStream constructor.
     *
@@ -82,7 +85,8 @@
 
          try
          {
-            info.readCertificates();
+            if (consumedEntry)
+               info.readCertificates();
          }
          finally
          {
@@ -108,7 +112,8 @@
       }
       finally
       {
-         streamClosed(rc < 0);
+         consumedEntry = (rc < 0);
+         streamClosed(consumedEntry);
       }
    }
 
@@ -131,7 +136,8 @@
       }
       finally
       {
-         streamClosed(rc < 0);
+         consumedEntry = (rc < 0);
+         streamClosed(consumedEntry);
       }
    }
 
@@ -155,7 +161,8 @@
       }
       finally
       {
-         streamClosed(rc < 0);
+         consumedEntry = (rc < 0);
+         streamClosed(consumedEntry);
       }
    }
 
@@ -264,4 +271,4 @@
    {
       return closed;
    }
-}
\ No newline at end of file
+}

Modified: projects/vfs/branches/Branch_2_2/src/test/java/org/jboss/test/virtual/test/VirtualFileUnitTestCase.java
===================================================================
--- projects/vfs/branches/Branch_2_2/src/test/java/org/jboss/test/virtual/test/VirtualFileUnitTestCase.java	2011-08-09 20:49:04 UTC (rev 111971)
+++ projects/vfs/branches/Branch_2_2/src/test/java/org/jboss/test/virtual/test/VirtualFileUnitTestCase.java	2011-08-09 21:22:26 UTC (rev 111972)
@@ -1345,8 +1345,6 @@
 
    public void testCertificates() throws Exception
    {
-      //Debug.getInstance("jar");
-
       URL url = getResource("/vfs/test/cert_test.jar");
       VirtualFile jar = VFS.getRoot(url);
       VirtualFile clazz = jar.findChild("examplets/plugins/impl/AnotherInjectedPlugin.class");
@@ -1357,4 +1355,24 @@
       Certificate[] certs = clazz.getCertificates();
       assertNotNull("No certificates: " + clazz, certs);
    }
+
+   public void testCertificatesNoRead() throws Exception
+   {
+      URL url = getResource("/vfs/test/cert_test.jar");
+      VirtualFile jar = VFS.getRoot(url);
+      VirtualFile clazz = jar.findChild("examplets/plugins/impl/AnotherInjectedPlugin.class");
+
+      // Closing the stream without consuming the entry will cause the signature information to be ignored
+      InputStream tmp = clazz.openStream();
+      tmp.close() ;
+
+      Certificate[] certs = clazz.getCertificates();
+      assertNull("Certificates present: " + clazz, certs);
+
+      tmp = clazz.openStream();
+      VFSUtils.copyStreamAndClose(tmp, new ByteArrayOutputStream()); // dummy read
+
+      certs = clazz.getCertificates();
+      assertNotNull("No certificates: " + clazz, certs);
+   }
 }



More information about the jboss-cvs-commits mailing list