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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Feb 3 10:59:07 EST 2010


Author: johnbailey
Date: 2010-02-03 10:59:05 -0500 (Wed, 03 Feb 2010)
New Revision: 100351

Added:
   projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/java/org/jboss/classloading/spi/vfs/policy/VirtualFileInfo.java
   projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/policy/test/ShutdownUnitTestCase.java
   projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/resources/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleShutdown.xml
Modified:
   projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java
   projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
   projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/resources/schema/jboss-classloader-1.0.xsd
   projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/resources/schema/jboss-classloading-1.0.xsd
   projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/ClassLoadingVFSTestSuite.java
   projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/client/support/launcher/ClientLauncher.java
   projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/metadata/test/ManagedObjectVFSClassLoaderFactoryUnitTestCase.java
   projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/JBossXBTestDelegate.java
   projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/test/VFSClassLoaderFactoryXMLUnitTestCase.java
Log:
Merged changes from trunk -r 99556:100350

Modified: projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java	2010-02-03 15:28:44 UTC (rev 100350)
+++ projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/java/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java	2010-02-03 15:59:05 UTC (rev 100351)
@@ -203,6 +203,7 @@
       policy.setExcludedExport(getExcludedExport());
       policy.setExportAll(getExportAll());
       policy.setImportAll(isImportAll());
+      policy.setShutdownPolicy(getShutdownPolicy());
       policy.setCacheable(isCacheable());
       policy.setBlackListable(isBlackListable());
       policy.setDelegates(getDelegates());

Modified: projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
===================================================================
--- projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java	2010-02-03 15:28:44 UTC (rev 100350)
+++ projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java	2010-02-03 15:59:05 UTC (rev 100351)
@@ -35,7 +35,6 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.jar.Manifest;
 
 import org.jboss.classloader.plugins.ClassLoaderUtils;
@@ -80,9 +79,6 @@
    /** The roots */
    private VirtualFile[] roots;
    
-   /** The fragment roots */
-   private List<VirtualFile> fragments;
-   
    /** The excluded roots */
    private VirtualFile[] excludedRoots;
 
@@ -114,7 +110,7 @@
    private Map<String, Manifest> manifestCache = new ConcurrentHashMap<String, Manifest>();
    
    /** Cache of virtual file information by path */
-   @SuppressWarnings("unchecked")
+   @SuppressWarnings({ "unchecked", "rawtypes" })
    private Map<String, VirtualFileInfo> vfsCache = Collections.synchronizedMap(new SoftValueHashMap());
    
    /** JBCL-64, JBVFS-77: CodeSource should use real url **/
@@ -269,51 +265,6 @@
       return name;
    }
 
-   /**
-    * Attach a new fragment root to the policy.
-    * @param fragRoot The fragment root file
-    */
-   public void attachFragment(VirtualFile fragRoot)
-   {
-      if (fragRoot == null)
-         throw new IllegalArgumentException("Null fragment file");
-      
-      if (fragments == null)
-         fragments = new CopyOnWriteArrayList<VirtualFile>();
-      
-      fragments.add(fragRoot);
-   }
-   
-   /**
-    * Detach a fragment root from the policy.
-    * @param fragRoot The fragment root file
-    * @return true if the fragment could be detached
-    */
-   public boolean detachFragment(VirtualFile fragRoot)
-   {
-      if (fragRoot == null)
-         throw new IllegalArgumentException("Null fragment file");
-      
-      if (fragments == null)
-         return false;
-      
-      return fragments.remove(fragRoot);
-   }
-   
-   /**
-    * Get the array of attached fragment root files.
-    * @return The array of attached fragment root files or null.
-    */
-   public VirtualFile[] getFragmentRoots()
-   {
-      if (fragments == null)
-         return null;
-      
-      VirtualFile[] retarr = new VirtualFile[fragments.size()];
-      fragments.toArray(retarr);
-      return retarr;
-   }
-
    @Override
    public List<? extends DelegateLoader> getDelegates()
    {
@@ -643,26 +594,6 @@
          }
       }
       
-      if (fragments != null)
-      {
-         for (VirtualFile root : fragments)
-         {
-            try
-            {
-               VirtualFile file = root.getChild(path);
-               if (file != null)
-               {
-                  result = new VirtualFileInfo(file, root);
-                  vfsCache.put(path, result);
-                  return result;
-               }
-            }
-            catch (Exception ignored)
-            {
-            }
-         }
-      }
-      
       return null;
    }
    
@@ -763,41 +694,4 @@
       }
       return false;
    }
-
-   /**
-    * VirtualFileInfo.    */
-   private static class VirtualFileInfo
-   {
-      /** The file */
-      private VirtualFile file;
-      
-      /** The root */
-      private VirtualFile root;
-      
-      public VirtualFileInfo(VirtualFile file, VirtualFile root)
-      {
-         this.file = file;
-         this.root = root;
-      }
-
-      /**
-       * Get the file.
-       * 
-       * @return the file.
-       */
-      public VirtualFile getFile()
-      {
-         return file;
-      }
-
-      /**
-       * Get the root.
-       * 
-       * @return the root.
-       */
-      public VirtualFile getRoot()
-      {
-         return root;
-      }
-   }
 }

Copied: projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/java/org/jboss/classloading/spi/vfs/policy/VirtualFileInfo.java (from rev 100350, projects/jboss-cl/trunk/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VirtualFileInfo.java)
===================================================================
--- projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/java/org/jboss/classloading/spi/vfs/policy/VirtualFileInfo.java	                        (rev 0)
+++ projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/java/org/jboss/classloading/spi/vfs/policy/VirtualFileInfo.java	2010-02-03 15:59:05 UTC (rev 100351)
@@ -0,0 +1,45 @@
+package org.jboss.classloading.spi.vfs.policy;
+
+import org.jboss.vfs.VirtualFile;
+
+/**
+ * A cache entry in the policy that combines the entry with its associated root.
+ * 
+ * @author <a href="adrian at jboss.org">Adrian Brock</a> 
+ * @author Thomas.Diesler at jboss.com
+ * @version $Revision: 1.1 $
+ */
+public class VirtualFileInfo
+{
+   /** The file */
+   private VirtualFile file;
+
+   /** The root */
+   private VirtualFile root;
+
+   public VirtualFileInfo(VirtualFile file, VirtualFile root)
+   {
+      this.file = file;
+      this.root = root;
+   }
+
+   /**
+    * Get the file.
+    * 
+    * @return the file.
+    */
+   public VirtualFile getFile()
+   {
+      return file;
+   }
+
+   /**
+    * Get the root.
+    * 
+    * @return the root.
+    */
+   public VirtualFile getRoot()
+   {
+      return root;
+   }
+}
\ No newline at end of file

Modified: projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/resources/schema/jboss-classloader-1.0.xsd
===================================================================
--- projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/resources/schema/jboss-classloader-1.0.xsd	2010-02-03 15:28:44 UTC (rev 100350)
+++ projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/resources/schema/jboss-classloader-1.0.xsd	2010-02-03 15:59:05 UTC (rev 100351)
@@ -145,6 +145,15 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attribute name="shutdown" type="shutdown-policy" use="optional">
+         <xsd:annotation>
+            <xsd:documentation>
+               <![CDATA[
+               The shutdown policy for the classloader.
+               ]]>
+            </xsd:documentation>
+         </xsd:annotation>
+      </xsd:attribute>
       <xsd:attribute name="included" type="xsd:string" use="optional">
          <xsd:annotation>
             <xsd:documentation>
@@ -383,4 +392,17 @@
       </xsd:annotation>
       <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
+
+   <xsd:simpleType name="shutdown-policy">
+      <xsd:annotation>
+         <xsd:documentation>
+            <![CDATA[
+            When to shutdown the classloader
+            UNREGISTER - shutdown when the classloader is unregistered (the default)
+            GARBAGE_COLLECTION - shutdown at garbage collection
+            ]]>
+         </xsd:documentation>
+      </xsd:annotation>
+      <xsd:restriction base="xsd:string"/>
+   </xsd:simpleType>
 </xsd:schema>

Modified: projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/resources/schema/jboss-classloading-1.0.xsd
===================================================================
--- projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/resources/schema/jboss-classloading-1.0.xsd	2010-02-03 15:28:44 UTC (rev 100350)
+++ projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/main/resources/schema/jboss-classloading-1.0.xsd	2010-02-03 15:59:05 UTC (rev 100351)
@@ -133,6 +133,15 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attribute name="shutdown" type="shutdown-policy" use="optional">
+         <xsd:annotation>
+            <xsd:documentation>
+               <![CDATA[
+               The shutdown policy for the classloader.
+               ]]>
+            </xsd:documentation>
+         </xsd:annotation>
+      </xsd:attribute>
       <xsd:attribute name="included" type="xsd:string" use="optional">
          <xsd:annotation>
             <xsd:documentation>
@@ -361,4 +370,17 @@
       </xsd:annotation>
       <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>
+
+   <xsd:simpleType name="shutdown-policy">
+      <xsd:annotation>
+         <xsd:documentation>
+            <![CDATA[
+            When to shutdown the classloader
+            UNREGISTER - shutdown when the classloader is unregistered (the default)
+            GARBAGE_COLLECTION - shutdown at garbage collection
+            ]]>
+         </xsd:documentation>
+      </xsd:annotation>
+      <xsd:restriction base="xsd:string"/>
+   </xsd:simpleType>
 </xsd:schema>

Modified: projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/ClassLoadingVFSTestSuite.java
===================================================================
--- projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/ClassLoadingVFSTestSuite.java	2010-02-03 15:28:44 UTC (rev 100350)
+++ projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/ClassLoadingVFSTestSuite.java	2010-02-03 15:59:05 UTC (rev 100351)
@@ -41,6 +41,7 @@
 import org.jboss.test.classloading.vfs.metadata.xml.test.NoopClassLoaderFactoryXMLUnitTestCase;
 import org.jboss.test.classloading.vfs.policy.test.ExportAllUnitTestCase;
 import org.jboss.test.classloading.vfs.policy.test.PackageInfoUnitTestCase;
+import org.jboss.test.classloading.vfs.policy.test.ShutdownUnitTestCase;
 import org.jboss.test.classloading.vfs.policy.test.VFSCLPolicySignedCertsUnitTestCase;
 
 /**
@@ -87,6 +88,7 @@
       suite.addTest(PackageInfoUnitTestCase.suite());
       suite.addTest(GeneratedClassesUnitTestCase.suite());
       suite.addTest(VFSCLPolicySignedCertsUnitTestCase.suite());
+      suite.addTest(ShutdownUnitTestCase.suite());
 
       return suite;
    }

Modified: projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/client/support/launcher/ClientLauncher.java
===================================================================
--- projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/client/support/launcher/ClientLauncher.java	2010-02-03 15:28:44 UTC (rev 100350)
+++ projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/client/support/launcher/ClientLauncher.java	2010-02-03 15:59:05 UTC (rev 100351)
@@ -100,7 +100,7 @@
     */
    public void setDefaultMode(ControllerMode defaultMode)
    {
-      this.defaultMode = defaultMode;
+      ClientLauncher.defaultMode = defaultMode;
    }
 
    /**

Modified: projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/metadata/test/ManagedObjectVFSClassLoaderFactoryUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/metadata/test/ManagedObjectVFSClassLoaderFactoryUnitTestCase.java	2010-02-03 15:28:44 UTC (rev 100350)
+++ projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/metadata/test/ManagedObjectVFSClassLoaderFactoryUnitTestCase.java	2010-02-03 15:59:05 UTC (rev 100351)
@@ -29,6 +29,7 @@
 
 import junit.framework.Test;
 
+import org.jboss.classloader.spi.ShutdownPolicy;
 import org.jboss.classloading.spi.metadata.CapabilitiesMetaData;
 import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
 import org.jboss.classloading.spi.metadata.ExportAll;
@@ -70,7 +71,7 @@
    {
       ManagedObject result = moFactory.initManagedObject(test, null, null);
       assertNotNull(result);
-      List<String> expectedProperties = Arrays.asList("name", "version", "context", "domain", "parentDomain", "topLevelClassLoader", "exportAll", "included", "excluded", "excludedExport", "importAll", "parentFirst", "cache", "blackList", "system", "roots", "capabilities", "requirements");
+      List<String> expectedProperties = Arrays.asList("name", "version", "context", "domain", "parentDomain", "topLevelClassLoader", "exportAll", "shutdown", "included", "excluded", "excludedExport", "importAll", "parentFirst", "cache", "blackList", "system", "roots", "capabilities", "requirements");
       Set<String> actualProperties = result.getPropertyNames();
       for (String expected : expectedProperties)
       {
@@ -119,6 +120,7 @@
       assertManagedProperty(mo, "parentDomain", String.class, null);
       assertManagedProperty(mo, "topLevelClassLoader", boolean.class, false);
       assertManagedProperty(mo, "exportAll", ExportAll.class, null);
+      assertManagedProperty(mo, "shutdown", ShutdownPolicy.class, null);
       assertManagedProperty(mo, "included", String.class, null);
       assertManagedProperty(mo, "excluded", String.class, null);
       assertManagedProperty(mo, "excludedExport", String.class, null);
@@ -184,6 +186,14 @@
       assertManagedProperty(mo, "exportAll", ExportAll.class, ExportAll.ALL);
    }
 
+   public void testSetShutdownPolicy() throws Exception
+   {
+      VFSClassLoaderFactory test = new VFSClassLoaderFactory();
+      test.setShutdownPolicy(ShutdownPolicy.GARBAGE_COLLECTION);
+      ManagedObject mo = assertManagedObject(test);
+      assertManagedProperty(mo, "shutdown", ShutdownPolicy.class, ShutdownPolicy.GARBAGE_COLLECTION);
+   }
+
    public void testSetIncludedPackages() throws Exception
    {
       VFSClassLoaderFactory test = new VFSClassLoaderFactory();

Modified: projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/JBossXBTestDelegate.java
===================================================================
--- projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/JBossXBTestDelegate.java	2010-02-03 15:28:44 UTC (rev 100350)
+++ projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/JBossXBTestDelegate.java	2010-02-03 15:59:05 UTC (rev 100351)
@@ -64,6 +64,7 @@
       initResolver();
    }
 
+   @SuppressWarnings("unchecked")
    protected void initResolver() throws Exception
    {
       try

Modified: projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/test/VFSClassLoaderFactoryXMLUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/test/VFSClassLoaderFactoryXMLUnitTestCase.java	2010-02-03 15:28:44 UTC (rev 100350)
+++ projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/metadata/xml/test/VFSClassLoaderFactoryXMLUnitTestCase.java	2010-02-03 15:59:05 UTC (rev 100351)
@@ -27,6 +27,7 @@
 
 import junit.framework.Test;
 
+import org.jboss.classloader.spi.ShutdownPolicy;
 import org.jboss.classloading.spi.metadata.Capability;
 import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
 import org.jboss.classloading.spi.metadata.ExportAll;
@@ -66,6 +67,7 @@
       assertNull(result.getDomain());
       assertNull(result.getParentDomain());
       assertNull(result.getExportAll());
+      assertNull(result.getShutdownPolicy());
       assertNull(result.getIncludedPackages());
       assertNull(result.getExcludedPackages());
       assertNull(result.getExcludedExportPackages());
@@ -109,6 +111,12 @@
       assertEquals(ExportAll.ALL, result.getExportAll());
    }
 
+   public void testModuleShutdown() throws Exception
+   {
+      VFSClassLoaderFactory result = unmarshal();
+      assertEquals(ShutdownPolicy.GARBAGE_COLLECTION, result.getShutdownPolicy());
+   }
+
    public void testModuleIncluded() throws Exception
    {
       VFSClassLoaderFactory result = unmarshal();

Copied: projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/policy/test/ShutdownUnitTestCase.java (from rev 100350, projects/jboss-cl/trunk/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/policy/test/ShutdownUnitTestCase.java)
===================================================================
--- projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/policy/test/ShutdownUnitTestCase.java	                        (rev 0)
+++ projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/java/org/jboss/test/classloading/vfs/policy/test/ShutdownUnitTestCase.java	2010-02-03 15:59:05 UTC (rev 100351)
@@ -0,0 +1,133 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2010, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.classloading.vfs.policy.test;
+
+import java.net.URL;
+import java.util.Collections;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.classloader.plugins.ClassLoaderUtils;
+import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.DelegateLoader;
+import org.jboss.classloader.spi.ShutdownPolicy;
+import org.jboss.classloader.test.support.MockClassLoaderPolicy;
+import org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy;
+import org.jboss.test.BaseTestCase;
+import org.jboss.vfs.VFS;
+import org.jboss.vfs.VirtualFile;
+import org.jboss.vfs.util.automount.Automounter;
+
+/**
+ * ShutdownUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ShutdownUnitTestCase extends BaseTestCase
+{
+   
+   private VirtualFile signedJar;
+   
+   @Override
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+      URL signedJarURL = getResource("/classloader/signedjar");
+      VirtualFile signedJarRoot = VFS.getChild(signedJarURL);
+      signedJar = signedJarRoot.getChild("wstx.jar");
+      Automounter.mount(signedJar);
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      Automounter.cleanup(signedJar);
+      super.tearDown();
+   }
+
+   public void testShutdownUnregisterDefault() throws Exception
+   {
+      VFSClassLoaderPolicy policy = getClassLoaderPolicy();;
+      testShutdown(policy, true);
+   }
+
+   public void testShutdownUnregister() throws Exception
+   {
+      VFSClassLoaderPolicy policy = getClassLoaderPolicy();;
+      policy.setShutdownPolicy(ShutdownPolicy.UNREGISTER);
+      testShutdown(policy, true);
+   }
+
+   public void testShutdownGC() throws Exception
+   {
+      VFSClassLoaderPolicy policy = getClassLoaderPolicy();;
+      policy.setShutdownPolicy(ShutdownPolicy.GARBAGE_COLLECTION);
+      testShutdown(policy, false);
+   }
+
+   protected VFSClassLoaderPolicy getClassLoaderPolicy() throws Exception
+   {
+      VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(signedJar);
+      return policy;
+   }
+   
+   protected void testShutdown(VFSClassLoaderPolicy policy, boolean shutdownAtUnregister) throws Exception
+   {
+      ClassLoaderSystem system = new DefaultClassLoaderSystem();
+      ClassLoader classLoader = system.registerClassLoaderPolicy(policy);
+      
+      Class<?> clazz = classLoader.loadClass("org.codehaus.stax2.validation.XMLValidator");
+      assertEquals(classLoader, clazz.getClassLoader());
+      
+      MockClassLoaderPolicy mock = new MockClassLoaderPolicy();
+      mock.setDelegates(Collections.singletonList(new DelegateLoader(policy)));
+      ClassLoader mockCl = system.registerClassLoaderPolicy(mock);
+      
+      clazz = mockCl.loadClass("org.codehaus.stax2.validation.XMLValidator");
+      assertEquals(classLoader, clazz.getClassLoader());
+      
+      system.unregisterClassLoader(classLoader);
+      try
+      {
+         clazz = mockCl.loadClass("org.codehaus.stax2.validation.XMLValidator");
+         if (shutdownAtUnregister)
+            fail("Should not be here: " + ClassLoaderUtils.classToString(clazz));
+      }
+      catch (ClassNotFoundException e)
+      {
+         assertTrue("Didn't expect: " + e, shutdownAtUnregister);
+      }
+   }
+
+   public static Test suite()
+   {
+      return new TestSuite(ShutdownUnitTestCase.class);
+   }
+
+   public ShutdownUnitTestCase(String name) throws Throwable
+   {
+      super(name);
+   }
+}

Copied: projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/resources/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleShutdown.xml (from rev 100350, projects/jboss-cl/trunk/classloading-vfs/src/test/resources/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleShutdown.xml)
===================================================================
--- projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/resources/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleShutdown.xml	                        (rev 0)
+++ projects/jboss-cl/branches/classloading-vfs-vfs3-int/src/test/resources/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleShutdown.xml	2010-02-03 15:59:05 UTC (rev 100351)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+              name="test"
+              shutdown="GARBAGE_COLLECTION">
+</classloader>




More information about the jboss-cvs-commits mailing list