[jboss-cvs] JBossAS SVN: r99124 - in projects/jboss-cl/branches/vfs3-int/classloading-vfs/src: main/java/org/jboss/classloading/spi/vfs/policy and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jan 7 12:18:30 EST 2010


Author: johnbailey
Date: 2010-01-07 12:18:30 -0500 (Thu, 07 Jan 2010)
New Revision: 99124

Modified:
   projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java
   projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
   projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/policy/test/VFSCLPolicySignedCertsUnitTestCase.java
Log:
[JBAS-7360] - Update VFS3 classloading integration that properly manages archive mounting

Modified: projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java	2010-01-07 16:55:02 UTC (rev 99123)
+++ projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java	2010-01-07 17:18:30 UTC (rev 99124)
@@ -21,6 +21,7 @@
 */
 package org.jboss.classloading.spi.vfs.dependency;
 
+import java.io.IOException;
 import java.net.URI;
 import java.net.URL;
 import java.net.URISyntaxException;
@@ -43,6 +44,7 @@
 import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
 import org.jboss.vfs.VFS;
 import org.jboss.vfs.VirtualFile;
+import org.jboss.vfs.util.automount.Automounter;
 
 /**
  * VFSClassLoaderPolicyModule.
@@ -214,6 +216,33 @@
       vfsRoots = null;
    }
 
+   /**
+    * Mounts all VFS roots when the module is created. 
+    */
+   public void create()
+   {
+      final VirtualFile[] vfsRoots = determineVFSRoots();
+      for (VirtualFile root : vfsRoots) 
+      {
+         try 
+         {
+            Automounter.mount(this, root);
+         }
+         catch (IOException e) 
+         {
+            throw new RuntimeException("Failed to mount root " + root, e);
+         }
+      }
+   }
+
+   /**
+    * Cleanup all mounts. 
+    */
+   public void destroy() 
+   {
+      Automounter.cleanup(this);
+   }
+
    @Override
    public void visit(ResourceVisitor visitor, ResourceFilter filter, ResourceFilter recurseFilter, URL... urls)
    {

Modified: projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java	2010-01-07 16:55:02 UTC (rev 99123)
+++ projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java	2010-01-07 17:18:30 UTC (rev 99124)
@@ -50,7 +50,6 @@
 import org.jboss.util.collection.SoftValueHashMap;
 import org.jboss.vfs.VFSUtils;
 import org.jboss.vfs.VirtualFile;
-import org.jboss.vfs.util.Automounter;
 
 /**
  * VFSClassLoaderPolicy.
@@ -524,7 +523,6 @@
       {
          try
          {
-            ensureMounted(root);
             VirtualFile child = root.getChild(name);
             if (child != null)
                urls.add(child.toURL());
@@ -580,7 +578,6 @@
       {
          try
          {
-            ensureMounted(root);
             VirtualFile file = root.getChild(path);
             if (file.exists())
             {
@@ -693,17 +690,6 @@
       }
       return false;
    }
-   
-   /**
-    * Temporary hack to ensure the requested root is mounted.  This should be moved to any clients creating this class directly. 
-    *  
-    * @param root
-    * @throws IOException
-    */
-   private void ensureMounted(VirtualFile root) throws IOException
-   {
-      Automounter.mount(root);
-   }
 
    /**
     * VirtualFileInfo.    */

Modified: projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/policy/test/VFSCLPolicySignedCertsUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/policy/test/VFSCLPolicySignedCertsUnitTestCase.java	2010-01-07 16:55:02 UTC (rev 99123)
+++ projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/policy/test/VFSCLPolicySignedCertsUnitTestCase.java	2010-01-07 17:18:30 UTC (rev 99124)
@@ -33,6 +33,7 @@
 import org.jboss.test.BaseTestCase;
 import org.jboss.vfs.VFS;
 import org.jboss.vfs.VirtualFile;
+import org.jboss.vfs.util.automount.Automounter;
 
 /**
  * Unit test JBCL-67
@@ -65,20 +66,28 @@
       URL signedJarURL = getResource("/classloader/signedjar");
       VirtualFile signedJarRoot = VFS.getChild(signedJarURL);
       VirtualFile signedJar = signedJarRoot.getChild("wstx.jar");
-      VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(signedJar);
-      policy.setExportAll(ExportAll.ALL);
-
-      ClassLoaderSystem system = new DefaultClassLoaderSystem();
-      ClassLoader classLoader = system.registerClassLoaderPolicy(policy);
-
-      Class<?> clazz = classLoader.loadClass("org.codehaus.stax2.validation.XMLValidator");
-      assertNotNull(clazz);
-      ProtectionDomain pd = clazz.getProtectionDomain();
-      assertNotNull("Protection Domain is null: " + clazz , pd);
-      Certificate[] certs = pd.getCodeSource().getCertificates();
-      assertNotNull("Certs are null: " + pd, certs);
-      assertTrue("Certs are empty.", certs.length > 0);
-      //RH, thawte, thawte root CA
-      assertEquals("Should be 3 certs.", 3, certs.length);
+      Automounter.mount(signedJar);
+      try 
+      {
+         VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(signedJar);
+         policy.setExportAll(ExportAll.ALL);
+   
+         ClassLoaderSystem system = new DefaultClassLoaderSystem();
+         ClassLoader classLoader = system.registerClassLoaderPolicy(policy);
+   
+         Class<?> clazz = classLoader.loadClass("org.codehaus.stax2.validation.XMLValidator");
+         assertNotNull(clazz);
+         ProtectionDomain pd = clazz.getProtectionDomain();
+         assertNotNull("Protection Domain is null: " + clazz , pd);
+         Certificate[] certs = pd.getCodeSource().getCertificates();
+         assertNotNull("Certs are null: " + pd, certs);
+         assertTrue("Certs are empty.", certs.length > 0);
+         //RH, thawte, thawte root CA
+         assertEquals("Should be 3 certs.", 3, certs.length);
+      }
+      finally
+      {
+         Automounter.cleanup(signedJar);
+      }
    }
 }
\ No newline at end of file




More information about the jboss-cvs-commits mailing list