[jboss-cvs] JBossAS SVN: r97186 - in projects/jboss-classpool/trunk: src/main/java/org/jboss and 5 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Nov 30 16:37:58 EST 2009


Author: flavia.rainone at jboss.com
Date: 2009-11-30 16:37:56 -0500 (Mon, 30 Nov 2009)
New Revision: 97186

Added:
   projects/jboss-classpool/trunk/src/main/java/org/jboss/test/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/support/
   projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/support/MicrocontainerFacade.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/DependencyTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencySanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencySanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReplaceReferencesClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositorySanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CLDeploymentBuilder.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassPoolTestScenario.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/DomainRegistry.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/LoaderRegistry.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoSuchClassLoaderException.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SanityTestScenario.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java
Removed:
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassLoaderSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalDomainSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalParentLoaderSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithModuleDependencySanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithPackageDependencySanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportModuleSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportPackageSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithUsesPackageSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolTestScenario.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalDomainTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalParentLoaderTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithModuleDependencyTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithPackageDependencyTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportModuleTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportPackageTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithUsesPackageTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/SanityTestScenario.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/TestScenario.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/BundleInfoBuilder.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CapabilityInfo.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ModuleOrPackageInfo.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/RequirementInfo.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/Result.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactoryFactory.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/a/
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/b/
Modified:
   projects/jboss-classpool/trunk/pom.xml
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolDelegatingTestSuite.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolSanityTestSuite.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactory.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java
Log:
[JBREFLECT-74] All the duplicate code in the tests has been removed. The cleanup of created classloaders is now performed automatically on tearDown (instead of every test having its own cleanup).

Modified: projects/jboss-classpool/trunk/pom.xml
===================================================================
--- projects/jboss-classpool/trunk/pom.xml	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/pom.xml	2009-11-30 21:37:56 UTC (rev 97186)
@@ -67,7 +67,7 @@
         <version>2.4.3</version>
         <configuration>
           <!--  <useSystemClassLoader>true</useSystemClassLoader> -->
-          <testFailureIgnore>true</testFailureIgnore>
+          <testFailureIgnore>false</testFailureIgnore>
           <forkMode>always</forkMode>
           <redirectTestOutputToFile>true</redirectTestOutputToFile>
           <includes>

Added: projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/support/MicrocontainerFacade.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/support/MicrocontainerFacade.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/support/MicrocontainerFacade.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,45 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.support;
+
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+
+/**
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+
+public interface MicrocontainerFacade
+{
+   public void deploy(KernelDeployment deployment) throws Exception;
+   
+   public Object getBean(Object name, ControllerState state);
+   public Object getBean(Object name);
+   public <T> T assertBean(Object name, Class<T> expected);
+
+   /**
+    * @param undeploy
+    */
+   public void undeploy(KernelDeployment undeploy);
+}


Property changes on: projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/support/MicrocontainerFacade.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassLoaderSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassLoaderSanityTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassLoaderSanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,51 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, 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.classpool.jbosscl.test;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
- * @version $Revision$
- */
-
-public class ArchiveClassLoaderSanityTestCase extends
-      ArchiveTest<Class<?>, ClassLoader>
-{
-   public static Test suite()
-   {
-      return new TestSuite(ArchiveClassLoaderSanityTestCase.class);
-   }
-
-   public ArchiveClassLoaderSanityTestCase(String name)
-   {
-      super(name);
-   }
-
-   @Override
-   protected TestScenario<Class<?>, ClassLoader> getTestScenario()
-   {
-      return new SanityTestScenario(this);
-   }
-}
\ No newline at end of file

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -26,12 +26,15 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
 /**
- * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
+ * Executes the archive tests against a class pool test scenario.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
  * @version $Revision$
  */
-
 public class ArchiveClassPoolTestCase extends ArchiveTest<CtClass, ClassPool>
 {
    public static Test suite()
@@ -47,6 +50,6 @@
    @Override
    protected TestScenario<CtClass, ClassPool> getTestScenario()
    {
-      return new ClassPoolTestScenario(this);
+      return new ClassPoolTestScenario(getMicrocontainerFacade());
    }
 }
\ No newline at end of file

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveSanityTestCase.java (from rev 97064, projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassLoaderSanityTestCase.java)
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveSanityTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveSanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,54 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the archive tests against a sanity test scenario (for class loader behavior sanity
+ * checking).
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ArchiveSanityTestCase extends ArchiveTest<Class<?>, ClassLoader>
+{
+   public static Test suite()
+   {
+      return new TestSuite(ArchiveSanityTestCase.class);
+   }
+
+   public ArchiveSanityTestCase(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+   {
+      return new SanityTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveTest.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveTest.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -34,69 +34,22 @@
 import static org.jboss.test.classpool.support.SupportClasses.CLASS_UI;
 import static org.jboss.test.classpool.support.SupportClasses.CLASS_UTIL;
 
-import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
 import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
 import org.jboss.test.classpool.support.SupportClasses;
 
-
-
 /**
+ * This class contains tests ported from deployers-vfs tests.
+ * 
  * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
  * @version $Revision$
  */
-
-public abstract class ArchiveTest<C, L> extends JBossClClassPoolTest
+public abstract class ArchiveTest<C, L> extends JBossClClassPoolTest<C, L>
 {
-   // TODO refactorate this, extracting this from this class
-   // TODO move the jars to a directory of their own (such as target/test-archives)
-   public final static URL SIMPLE_JAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_JAR);
-   public final static URL SIMPLE_SAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_SAR);
-   public final static URL EJB_JAR = getURLRelativeToProjectRoot(SupportClasses.EJB_JAR);
-   public final static URL SIMPLE_WAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_WAR);
-   public final static URL SIMPLE_EAR_JAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_JAR);
-   public final static URL SIMPLE_EAR_SAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_SAR);
-   public final static URL SIMPLE_EAR_EJB = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_EJB);
-   public final static URL SIMPLE_EAR_LIB1 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_LIB1);
-   public final static URL SIMPLE_EAR_LIB2 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_LIB2);
-   public final static URL SIMPLE_EAR_WAR1 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR1);
-   public final static URL SIMPLE_EAR_WAR1_CP = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR1_CP);
-   public final static URL SIMPLE_EAR_WAR1_LIB = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR1_LIB);
-   public final static URL SIMPLE_EAR_WAR2 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR2);
-   public final static URL SIMPLE_EAR_WAR2_CP = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR2_CP);
-   public final static URL SIMPLE_EAR_WAR2_LIB = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR2_LIB);
-   public final static URL EAR_UTIL1 = getURLRelativeToProjectRoot(SupportClasses.EAR_UTIL1);
-   public final static URL EAR_UTIL2 = getURLRelativeToProjectRoot(SupportClasses.EAR_UTIL2);
-   public final static URL EAR_WAR = getURLRelativeToProjectRoot(SupportClasses.EAR_WAR);
-   public final static URL EAR_WAR_CP = getURLRelativeToProjectRoot(SupportClasses.EAR_WAR_CP);
-   public final static URL EAR_JAR = getURLRelativeToProjectRoot(SupportClasses.EAR_JAR);
-   public final static URL SERVLET_JAR = getURLRelativeToProjectRoot(SupportClasses.SERVLET_JAR);
-   public final static URL PTD_EAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_EAR_LIB);
-   public final static URL PTD_JSF_WAR = getURLRelativeToProjectRoot(SupportClasses.PTD_JSF_WAR);
-   public final static URL PTD_JSF_WAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_JSF_WAR_LIB);
-   public final static URL PTD_WS_WAR = getURLRelativeToProjectRoot(SupportClasses.PTD_WS_WAR);
-   public final static URL PTD_WS_WAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_WS_WAR_LIB);
-   public final static URL EXCLUDED_CLASSPATH = getURLRelativeToProjectRoot(SupportClasses.EXCLUDED_CLASSPATH);
-   
-   final static String STRING = String.class.getName();
-   private TestScenario<C, L> testScenario; 
-   
-   protected abstract TestScenario<C, L> getTestScenario();
-   
-   @Override
-   public void setUp() throws Exception
-   {
-      this.testScenario = getTestScenario();
-      super.setUp();
-   }
-   
-   
    public ArchiveTest(String name)
    {
       super(name);
@@ -106,343 +59,269 @@
    
    public void testJar() throws Exception
    {
-      L loader = null;
-      Result result = new Result();
-      try
-      {
-         loader = testScenario.createLoader(result, "simple.jar", true, SIMPLE_JAR);
-         assertCanLoad(loader, CLASS_PLAIN);
-      }
-      finally
-      {
-         testScenario.unregister(loader, result);
-      }
+      CLDeploymentBuilder classLoaderBuilder = new CLDeploymentBuilder("simple.jar", SIMPLE_JAR);
+      L loader = testScenario.createLoader(classLoaderBuilder);
+      assertCanLoad(loader, CLASS_PLAIN);
    }
    
    public void testSar() throws Exception
    {
-      L loader = null;
-      Result result = new Result();
-      try
-      {
-         loader = testScenario.createLoader(result, "simple.sar", true, SIMPLE_SAR);
-         assertCanLoad(loader, CLASS_MBEAN);
-      }
-      finally
-      {
-         testScenario.unregister(loader, result);
-      }
+      CLDeploymentBuilder classLoaderBuilder = new CLDeploymentBuilder("simple.sar", SIMPLE_SAR);
+      L loader = testScenario.createLoader(classLoaderBuilder);
+      assertCanLoad(loader, CLASS_MBEAN);
    }
    
    public void testEjbJar() throws Exception
    {
-      L loader = null;
-      Result result = new Result();
-      try
-      {
-         loader = testScenario.createLoader(result, "ejbs.jar", true, EJB_JAR);
-         assertCanLoad(loader, CLASS_SLS_BEAN, CLASS_SLS_INTERFACE);
-      }
-      finally
-      {
-         testScenario.unregister(loader, result);
-      }
+      CLDeploymentBuilder classLoaderBuilder = new CLDeploymentBuilder("ejbs.jar", EJB_JAR);
+      L loader = testScenario.createLoader(classLoaderBuilder);
+      assertCanLoad(loader, CLASS_SLS_BEAN, CLASS_SLS_INTERFACE);
    }
    
    public void testWar() throws Exception
    {
-      L loader = null;
-      Result result = new Result();
-      try
-      {
-         loader = testScenario.createChildDomainParentLastLoader(result, "simple.war", "simple.war", true,
-               SIMPLE_WAR);
-         assertCanLoad(loader, CLASS_SERVLET);
-      }
-      finally
-      {
-         testScenario.unregister(loader, result);
-      }
+      CLDeploymentBuilder clBuilder = new CLDeploymentBuilder("simple.war", SIMPLE_WAR);
+      clBuilder.createDomain("simple.war", false);
+      L loader = testScenario.createLoader(clBuilder);
+      assertCanLoad(loader, CLASS_SERVLET);
    }
    
    public void testEar() throws Exception
    {
-      L earLoader = null;
-      L war1Loader = null;
-      L war2Loader = null;
-      Result earResult = new Result();
-      Result war1Result = new Result();
-      Result war2Result = new Result();
-      try
-      {
-         URL[] excludes = {SIMPLE_EAR_WAR1, SIMPLE_EAR_WAR1_CP, SIMPLE_EAR_WAR1_LIB,
-               SIMPLE_EAR_WAR2, SIMPLE_EAR_WAR2_CP, SIMPLE_EAR_WAR2_LIB};
-         earLoader = testScenario.createLoader(earResult, "simple.ear", true, excludes, SIMPLE_EAR_JAR,
-               SIMPLE_EAR_SAR, SIMPLE_EAR_EJB, SIMPLE_EAR_LIB1, SIMPLE_EAR_LIB2);
-         war1Loader = testScenario.createChildDomainParentLastLoader(war1Result, "simple.ear/simple_ui.war",
-               "simple_ui.war", true, earLoader, SIMPLE_EAR_WAR1_CP, SIMPLE_EAR_WAR1_LIB);
-         war2Loader = testScenario.createChildDomainParentLastLoader(war2Result, "simple.ear/jsfapp.war",
-               "simple_ui.war", true, earLoader, SIMPLE_EAR_WAR2_CP, SIMPLE_EAR_WAR2_LIB);
-         
-         Map<String, L> classes = new HashMap<String, L>();
-         classes.put(CLASS_UTIL, earLoader);
-         classes.put(CLASS_EXT, earLoader);
-         classes.put(CLASS_PLAIN, earLoader);
-         classes.put(CLASS_SLS_BEAN, earLoader);
-         classes.put(CLASS_SLS_INTERFACE, earLoader);
-         classes.put(CLASS_SERVLET, war1Loader);
-         classes.put(CLASS_UI, war1Loader);
-         classes.put(CLASS_JSF, war2Loader);
-         classes.put(CLASS_CRM, war2Loader);
-         classes.put(CLASS_MBEAN, earLoader);
-         assertCanLoad(classes);
-         assertSimpleHierarchy(earLoader, war1Loader);
-      }
-      finally
-      {
-         testScenario.unregister(war1Loader, war1Result);
-         testScenario.unregister(war2Loader, war2Result);
-         testScenario.unregister(earLoader, earResult);
-      }
+      // create the ear loader
+      CLDeploymentBuilder earCLBuilder = new CLDeploymentBuilder("simple.ear", SIMPLE_EAR_JAR,
+            SIMPLE_EAR_SAR, SIMPLE_EAR_EJB, SIMPLE_EAR_LIB1, SIMPLE_EAR_LIB2);
+      earCLBuilder.setExcludes(SIMPLE_EAR_WAR1, SIMPLE_EAR_WAR1_CP, SIMPLE_EAR_WAR1_LIB,
+         SIMPLE_EAR_WAR2, SIMPLE_EAR_WAR2_CP, SIMPLE_EAR_WAR2_LIB);
+      L earLoader = testScenario.createLoader(earCLBuilder);
+      
+      // create the simple_ui.war loader
+      ClassLoader earClassLoader = testScenario.getClassLoader(earLoader);
+      CLDeploymentBuilder war1CLBuilder = new CLDeploymentBuilder(
+            "simple.ear/simple_ui.war",  SIMPLE_EAR_WAR1_CP, SIMPLE_EAR_WAR1_LIB);
+      war1CLBuilder.createDomain("simple_ui.war", earClassLoader, false);
+      L war1Loader = testScenario.createLoader(war1CLBuilder);
+      
+      // create the jsfapp.war loader
+      CLDeploymentBuilder war2CLBuilder = new CLDeploymentBuilder("simple.ear/jsfapp.war",
+            SIMPLE_EAR_WAR2_CP, SIMPLE_EAR_WAR2_LIB);
+      war2CLBuilder.createDomain("jsfapp.war", earClassLoader, false);
+      L war2Loader = testScenario.createLoader(war2CLBuilder);
+
+      // assert that the loaderse can load the classes
+      Map<String, L> classes = new HashMap<String, L>();
+      classes.put(CLASS_UTIL, earLoader);
+      classes.put(CLASS_EXT, earLoader);
+      classes.put(CLASS_PLAIN, earLoader);
+      classes.put(CLASS_SLS_BEAN, earLoader);
+      classes.put(CLASS_SLS_INTERFACE, earLoader);
+      classes.put(CLASS_SERVLET, war1Loader);
+      classes.put(CLASS_UI, war1Loader);
+      classes.put(CLASS_JSF, war2Loader);
+      classes.put(CLASS_CRM, war2Loader);
+      classes.put(CLASS_MBEAN, earLoader);
+      assertCanLoad(classes);
+      
+      // assert simple hierarchy
+      assertSimpleHierarchy(earLoader, war1Loader);
    }
    
    public void testTopLevelWithUtil() throws Exception
    {
-      L earLoader = null;
-      Result earResult = new Result();
-      try
-      {
-         earLoader = testScenario.createLoader(earResult, "top-level.ear", true, EAR_UTIL1, EAR_UTIL2);
-         assertCanLoad(earLoader, CLASS_UTIL, CLASS_EXT);
-      }
-      finally
-      {
-         testScenario.unregister(earLoader, earResult);
-      }
+      CLDeploymentBuilder clBuilder = new CLDeploymentBuilder("top-level.ear", EAR_UTIL1, EAR_UTIL2);
+      L earLoader = testScenario.createLoader(clBuilder);
+      assertCanLoad(earLoader, CLASS_UTIL, CLASS_EXT);
    }
    
    public void testWarInEar() throws Exception
    {
-      L earLoader = null;
-      L warLoader = null;
-      Result earResult = new Result();
-      Result warResult = new Result();
-      try
-      {
-         URL[] excludes = {EAR_WAR, EAR_WAR_CP};
-         earLoader = testScenario.createLoader(earResult, "war-in-ear.ear", true, excludes);
-         warLoader = testScenario.createChildDomainParentLastLoader(warResult, "war-in-ear.ear/simple.war",
-               "simple.war", true, earLoader, EAR_WAR_CP);
-         Map<String, L> classes = new HashMap<String, L>();
-         classes.put(CLASS_SERVLET, warLoader);
-         assertCanLoad(classes);
-      }
-      finally
-      {
-         testScenario.unregister(warLoader, warResult);
-         testScenario.unregister(earLoader, earResult);
-      }
+      // create ear loader
+      CLDeploymentBuilder earCLBuilder = new CLDeploymentBuilder("war-in-ear.ear");
+      earCLBuilder.setExcludes(EAR_WAR, EAR_WAR_CP);
+      L earLoader = testScenario.createLoader(earCLBuilder);
+      
+      // create war loader
+      CLDeploymentBuilder warCLBuilder = new CLDeploymentBuilder(
+            "war-in-ear.ear/simple.war", EAR_WAR_CP);
+      warCLBuilder.createDomain("simple.war", testScenario.getClassLoader(earLoader), false);
+      L warLoader = testScenario.createLoader(warCLBuilder);
+      
+      // assert warLoader can load CLASS_SERVLET
+      Map<String, L> classes = new HashMap<String, L>();
+      classes.put(CLASS_SERVLET, warLoader);
+      assertCanLoad(classes);
    }
    
    public void testJarInEar() throws Exception
    {
-      L earLoader = null;
-      Result earResult = new Result();
-      try
-      {
-         earLoader = testScenario.createLoader(earResult, "jar-in-ear.ear", true, EAR_JAR);
-         assertCanLoad(earLoader, CLASS_PLAIN);
-      }
-      finally
-      {
-         testScenario.unregister(earLoader, earResult);
-      }
+      CLDeploymentBuilder earCLBuilder = new CLDeploymentBuilder("jar-in-ear.ear", EAR_JAR);
+      L earLoader = testScenario.createLoader(earCLBuilder);
+      assertCanLoad(earLoader, CLASS_PLAIN);
    }
    
    public void testIsolatedJars() throws Exception
    {
-      L loader1 = null;
-      L loader2 = null;
-      Result result1 = new Result();
-      Result result2 = new Result();
-      try
-      {
-         loader1 = testScenario.createChildDomainParentFirstLoader(result1, "a1.jar", "a1.jar_Domain", true, JAR_A_1);
-         loader2 = testScenario.createChildDomainParentFirstLoader(result2, "a2.jar", "a2.jar_Domain", true, JAR_A_2);
-         assertIsolated(loader1, loader2);
-      }
-      finally
-      {
-         testScenario.unregister(loader1, result1);
-         testScenario.unregister(loader2, result2);
-      }
+      // create a1.jar loader
+      CLDeploymentBuilder cl1Builder = new CLDeploymentBuilder("a1.jar", JAR_A_1);
+      cl1Builder.createDomain("a1.jar_Domain", true);
+      L loader1 = testScenario.createLoader(cl1Builder);
+      // create a2.jar loader
+      CLDeploymentBuilder cl2Builder = new CLDeploymentBuilder("a2.jar", JAR_A_2);
+      cl2Builder.createDomain("a2.jar_Domain", true);
+      L loader2 = testScenario.createLoader(cl2Builder);
+      // assert proper isolation between the loaders
+      assertIsolated(loader1, loader2);
    }
    
    public void testHierarchyJarsChildFirst() throws Exception
    {
-      L loader1 = null;
-      L loader2 = null;
-      Result result1 = new Result();
-      Result result2 = new Result();
-      try
-      {
-         loader1 = testScenario.createChildDomainParentFirstLoader(result1, "a1.jar", "a1.jar_Domain", true, JAR_A_1);
-         loader2 = testScenario.createChildDomainParentLastLoader(result2, "a2.jar", "a2.jar_Domain", "a1.jar_Domain", true, JAR_A_2);
-         assertIsolated(loader1, loader2);
-      }
-      finally
-      {
-         testScenario.unregister(loader1, result1);
-         testScenario.unregister(loader2, result2);
-      }
+      // creeate a1.jar loader
+      CLDeploymentBuilder clBuilder1 = new CLDeploymentBuilder("a1.jar", JAR_A_1);
+      clBuilder1.createDomain("a1.jar_Domain", true);
+      L loader1 = testScenario.createLoader(clBuilder1);
+      
+      // create a2.jar loader
+      CLDeploymentBuilder clBuilder2 = new CLDeploymentBuilder("a2.jar", JAR_A_2);
+      clBuilder2.createDomain("a2.jar_Domain", "a1.jar_Domain", false);
+      L loader2 = testScenario.createLoader(clBuilder2);
+      assertIsolated(loader1, loader2);
    }
    
    public void testDomainHierarchy() throws Exception
    {
-      L topLoader = null;
-      L leftLoader = null;
-      L rightLoader = null;
-      Result topResult = new Result();
-      Result leftResult = new Result();
-      Result rightResult = new Result();
-      try
-      {
-         // TODO replace a1.jar by the SupportClasses equivalent
-         topLoader = testScenario.createChildDomainParentFirstLoader(topResult, "simple.jar", "simple.jar_Domain", true, SIMPLE_JAR);
-         leftLoader = testScenario.createChildDomainParentFirstLoader(leftResult, "servlet.jarL", "servlet.jar_DomainLeft", "simple.jar_Domain", true, SERVLET_JAR);
-         rightLoader = testScenario.createChildDomainParentFirstLoader(rightResult, "servlet.jarR", "servlet.jar_DomainRight", "simple.jar_Domain", true, SERVLET_JAR);
-         assertDomainHierarchy(topLoader, leftLoader, rightLoader);
-      }
-      finally
-      {
-         testScenario.unregister(leftLoader, leftResult);
-         testScenario.unregister(rightLoader, rightResult);
-         testScenario.unregister(topLoader, topResult);
-      }
+      // create simple.jar loader
+      CLDeploymentBuilder topCLBuilder = new CLDeploymentBuilder("simple.jar", SIMPLE_JAR);
+      topCLBuilder.createDomain("simple.jar_Domain", true);
+      L topLoader = testScenario.createLoader(topCLBuilder);
+      
+      // create servlet.jar "left" loader
+      CLDeploymentBuilder leftCLBuilder = new CLDeploymentBuilder("servlet.jarL", SERVLET_JAR);
+      leftCLBuilder.createDomain("servlet.jar_LeftDomain", "simple.jar_Domain", true);
+      L leftLoader = testScenario.createLoader(leftCLBuilder);
+      
+      // create servlet.jar "right" loader
+      CLDeploymentBuilder rightCLBuilder = new CLDeploymentBuilder("servlet.jarR", SERVLET_JAR);
+      rightCLBuilder.createDomain("servlet.jar_RightDomain", "simple.jar_Domain", true);
+      L rightLoader = testScenario.createLoader(rightCLBuilder);
+      
+      // assert domain hierarchy
+      assertDomainHierarchy(topLoader, leftLoader, rightLoader);
    }
    
    public void testEar2War() throws Exception
    {
-      L topLoader = null;
-      L leftLoader = null;
-      L rightLoader = null;
-      Result topResult = new Result();
-      Result leftResult = new Result();
-      Result rightResult = new Result();
-      try
-      {
-         URL[] excludes = {PTD_JSF_WAR, PTD_JSF_WAR_LIB, PTD_WS_WAR, PTD_WS_WAR_LIB};
-         topLoader = testScenario.createChildDomainParentLastLoader(topResult,
-               "ptd-ear-1.0-SNAPSHOT.ear", "ptd-ear-1.0-SNAPSHOT.ear_Domain", true, excludes, PTD_EAR_LIB);
-         leftLoader = testScenario.createChildDomainParentFirstLoader(leftResult, SupportClasses.PTD_JSF_WAR,
-               "ptd-jsf-1.0-SNAPSHOT.war_Domain", "ptd-ear-1.0-SNAPSHOT.ear_Domain", true,
+      // create ptd-ear-1.0-SNAPSHOT.ear loader
+      CLDeploymentBuilder topCLBuilder = new CLDeploymentBuilder("ptd-ear-1.0-SNAPSHOT.ear",
+            PTD_EAR_LIB);
+      topCLBuilder.createDomain("ptd-ear-1.0-SNAPSHOT.ear_Domain", false);
+      topCLBuilder.setExcludes(PTD_JSF_WAR, PTD_JSF_WAR_LIB, PTD_WS_WAR, PTD_WS_WAR_LIB);
+      L topLoader = testScenario.createLoader(topCLBuilder);
+      
+      // create ptd-jsf-1.0.-SNAPSHOT.war loader
+      CLDeploymentBuilder leftCLBuilder = new CLDeploymentBuilder(SupportClasses.PTD_JSF_WAR,
                PTD_JSF_WAR_LIB);
-         rightLoader = testScenario.createChildDomainParentFirstLoader(rightResult, SupportClasses.PTD_WS_WAR,
-               "ptd-ws-1.0-SNAPSHOT.war_Domain", "ptd-ear-1.0-SNAPSHOT.ear_Domain", true,
-               PTD_WS_WAR_LIB);
-         assertDomainHierarchy(topLoader, leftLoader, rightLoader);
-      }
-      finally
-      {
-         testScenario.unregister(leftLoader, leftResult);
-         testScenario.unregister(rightLoader, rightResult);
-         testScenario.unregister(topLoader, topResult);
-      }
+      leftCLBuilder.createDomain("ptd-jsf-1.0-SNAPSHOT.war_Domain",
+            "ptd-ear-1.0-SNAPSHOT.ear_Domain", true);
+      
+      // create ptd-ws-1.0-SNAPSHOT.war loader
+      L leftLoader = testScenario.createLoader(leftCLBuilder);
+      CLDeploymentBuilder rightCLBuilder = new CLDeploymentBuilder(SupportClasses.PTD_WS_WAR,
+            PTD_WS_WAR_LIB);
+      rightCLBuilder.createDomain("ptd-ws-1.0-SNAPSHOT.war_Domain",
+            "ptd-ear-1.0-SNAPSHOT.ear_Domain", true);
+      L rightLoader = testScenario.createLoader(rightCLBuilder);
+      
+      // assert domain hierarchy
+      assertDomainHierarchy(topLoader, leftLoader, rightLoader);
    }
    
    public void testJarAndExcludedClassPath() throws Exception
    {
-      L jarLoader = null;
-      L anysLoader = null;
-      Result jarResult = new Result();
-      Result anysResult = new Result();
-      try
-      {
-         jarLoader = testScenario.createLoader(jarResult, "simple.jar", true, SIMPLE_JAR);
-         anysLoader = testScenario.createLoader(anysResult, "anys-classloader", true,
-               SupportClasses.PACKAGE_WEB, EXCLUDED_CLASSPATH);
+      // create simple.jar loader
+      CLDeploymentBuilder jarCLBuilder = new CLDeploymentBuilder("simple.jar", SIMPLE_JAR);
+      L jarLoader = testScenario.createLoader(jarCLBuilder);
+      
+      // create anys loader
+      CLDeploymentBuilder anysCLBuilder = new CLDeploymentBuilder("anys-classloader",
+            EXCLUDED_CLASSPATH);
+      anysCLBuilder.createPackage(SupportClasses.PACKAGE_WEB);
+      L anysLoader = testScenario.createLoader(anysCLBuilder);
+      
+      // create AnyServlet bean meta data
+      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("AnyServlet", CLASS_SERVLET);
+      builder.setClassLoader(new AbstractDependencyValueMetaData("anys-classloader:0.0.0"));
+      super.deploy(builder.getBeanMetaData());
 
-         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("AnyServlet", CLASS_SERVLET);
-         builder.setClassLoader(new AbstractDependencyValueMetaData("anys-classloader:0.0.0"));
-         super.deploy(builder.getBeanMetaData());
-         
-         Object anys = assertBean("AnyServlet", Object.class);
-         Class<?> anysClass = anys.getClass();
-         ClassLoader anysCL = anysClass.getClassLoader();
-         assertSame(anysCL, testScenario.getClassLoader(anysLoader));
-         assertNotSame(anysCL, testScenario.getClassLoader(jarLoader));
-         assertNonDeploymentModule(jarLoader, anysLoader);
-      }
-      finally
-      {
-         testScenario.unregister(jarLoader, jarResult);
-         testScenario.unregister(anysLoader, anysResult);
-      }
+      // assert AnyServlet bean
+      Object anys = assertBean("AnyServlet", Object.class);
+      Class<?> anysClass = anys.getClass();
+      ClassLoader anysCL = anysClass.getClassLoader();
+      assertSame(anysCL, testScenario.getClassLoader(anysLoader));
+      assertNotSame(anysCL, testScenario.getClassLoader(jarLoader));
+      
+      // assert "nondeployment" module (nomenclature used by corresponding vfs-deployer test)
+      assertNonDeploymentModule(jarLoader, anysLoader);
    }
    
    public void testTifHierarchy() throws Exception
    {
-      L jarLoader = null;
-      L anysLoader = null;
-      L tifLoader = null;
-      Result jarResult = new Result();
-      Result anysResult = new Result();
-      Result tifResult = new Result();
-      try
-      {
-         jarLoader = testScenario.createLoader(jarResult, "simple.jar", true, SIMPLE_JAR);
-         anysLoader = testScenario.createChildDomainParentFirstLoader(anysResult, "anys-classloader",
-               "Anys_Domain",true, SupportClasses.PACKAGE_WEB, EXCLUDED_CLASSPATH);
-         tifLoader = testScenario.createChildDomainParentFirstLoader(tifResult, "tif-classloader",
-               "TIF_Domain", "Anys_Domain",true, SupportClasses.PACKAGE_TIF, EXCLUDED_CLASSPATH);
-         
-         createHierarchyBeans(jarLoader);
-         assertNonDeploymentModule(jarLoader, anysLoader, tifLoader);
-      }
-      finally
-      {
-         testScenario.unregister(tifLoader, tifResult);
-         testScenario.unregister(anysLoader, anysResult);
-         testScenario.unregister(jarLoader, jarResult);
-      }
+      // create simple.jar loader
+      CLDeploymentBuilder jarCLBuilder = new CLDeploymentBuilder("simple.jar", SIMPLE_JAR);
+      L jarLoader = testScenario.createLoader(jarCLBuilder);
+      
+      // create anys loader
+      CLDeploymentBuilder anysCLBuilder = new CLDeploymentBuilder("anys-classloader",
+            EXCLUDED_CLASSPATH);
+      anysCLBuilder.createDomain("Anys_Domain", true);
+      anysCLBuilder.createPackage(SupportClasses.PACKAGE_WEB);
+      L anysLoader = testScenario.createLoader(anysCLBuilder);
+      
+      // create tif loader
+      CLDeploymentBuilder tifCLBuilder = new CLDeploymentBuilder("tif-classloader",
+            EXCLUDED_CLASSPATH);
+      tifCLBuilder.createDomain("TIF_Domain", "Anys_Domain",true);
+      tifCLBuilder.createPackage(SupportClasses.PACKAGE_TIF);
+      L tifLoader = testScenario.createLoader(tifCLBuilder);
+      
+      // create AnyServlet and TifTester beans
+      createHierarchyBeans(jarLoader);
+      
+      // assert "nondeployment" module (nomenclature used by corresponding vfs-deployer test)
+      assertNonDeploymentModule(jarLoader, anysLoader, tifLoader);
    }
 
    public void testTifHierarchyWithRequirements() throws Exception
    {
-      L jarLoader = null;
-      L anysLoader = null;
-      L tifLoader = null;
-      Result jarResult = new Result();
-      Result anysResult = new Result();
-      Result tifResult = new Result();
-      try
-      {
-         jarLoader = testScenario.createLoader(jarResult, "simple.jar", true,
-               SupportClasses.PACKAGE_JAR, SIMPLE_JAR);
-         BundleInfoBuilder bundleBuilder = BundleInfoBuilder.getBuilder();
-         bundleBuilder.createModule("any-classloader:0.0.0$Module").
-            createPackage(SupportClasses.PACKAGE_WEB).
-            createRequirePackage(SupportClasses.PACKAGE_JAR);
-         anysLoader = testScenario.createLoader(anysResult, "anys-classloader",
-               bundleBuilder, EXCLUDED_CLASSPATH);
-         bundleBuilder = BundleInfoBuilder.getBuilder();
-         bundleBuilder.createModule("tif-classloader:0.0.0$Module").
-            createPackage(SupportClasses.PACKAGE_TIF).
-            createRequirePackage(SupportClasses.PACKAGE_WEB);
-         tifLoader = testScenario.createLoader(tifResult, "tif-classloader",
-               bundleBuilder, EXCLUDED_CLASSPATH);
-         
-         createHierarchyBeans(jarLoader);
-         assertNonDeploymentModule(jarLoader, anysLoader, tifLoader);
-      }
-      finally
-      {
-         testScenario.unregister(tifLoader, tifResult);
-         testScenario.unregister(anysLoader, anysResult);
-         testScenario.unregister(jarLoader, jarResult);
-      }
+      // create simple.jar loader
+      CLDeploymentBuilder jarCLBuilder = new CLDeploymentBuilder("simple.jar", SIMPLE_JAR);
+      jarCLBuilder.createPackage(SupportClasses.PACKAGE_JAR);
+      L jarLoader = testScenario.createLoader(jarCLBuilder);
+      
+      // create anys loader
+      CLDeploymentBuilder anysCLBuilder = new CLDeploymentBuilder("anys-classloader",
+            EXCLUDED_CLASSPATH);
+      anysCLBuilder.createModule("any-classloader:0.0.0$Module");
+      anysCLBuilder.createPackage(SupportClasses.PACKAGE_WEB);
+      anysCLBuilder.createRequirePackage(SupportClasses.PACKAGE_JAR);
+      L anysLoader = testScenario.createLoader(anysCLBuilder);
+      
+      // create tif loader
+      CLDeploymentBuilder tifCLBuilder = new CLDeploymentBuilder("tif-classloader",
+               EXCLUDED_CLASSPATH);
+      tifCLBuilder.createModule("tif-classloader:0.0.0$Module");
+      tifCLBuilder.createPackage(SupportClasses.PACKAGE_TIF);
+      tifCLBuilder.createRequirePackage(SupportClasses.PACKAGE_WEB);
+      L tifLoader = testScenario.createLoader(tifCLBuilder);
+      
+      // create AnyServlet and TifTester beans
+      createHierarchyBeans(jarLoader);
+      
+      // assert "nondeployment" module (nomenclature used by corresponding vfs-deployer test)
+      assertNonDeploymentModule(jarLoader, anysLoader, tifLoader);
    }
    
+   // ASSERT METHODS
+   
    protected void assertCanLoad(L parentLoader, String... classNames) throws Exception
    {
       Map<String, L> map = new HashMap<String, L>();
@@ -480,11 +359,11 @@
       C class2 = testScenario.loadClass(loader2, CLASS_A);
       assertNotSame("Should NOT be the same " + class1 +" and " + class2, class1, class2);
       
-      L loader3 = testScenario.cloneLoader(class1);
+      L loader3 = testScenario.getLoader(class1);
       C class3 = testScenario.loadClass(loader3, CLASS_A);
       assertEquals(class1, class3);
 
-      L loader4 = testScenario.cloneLoader(class2);
+      L loader4 = testScenario.getLoader(class2);
       C class4 = testScenario.loadClass(loader4, CLASS_A);
       assertEquals(class2, class4);
       assertNotSame(class3, class4);

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalDomainSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalDomainSanityTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalDomainSanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,535 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.dependency.test.HierarchicalDomainUnitTestCase using our test framework, 
- * ClassPoolWithHierarchicalDomainSanityTestCase replicates this with the javassist classpools
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithHierarchicalDomainSanityTestCase extends JBossClClassPoolTest
-{
-   public ClassLoaderWithHierarchicalDomainSanityTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassLoaderWithHierarchicalDomainSanityTestCase.class);
-   }
-   
-   public void testParentFirst() throws Exception
-   {
-      ClassLoader clParentA = null;
-      Result resultParentA = new Result();
-      try
-      {
-         clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
-         assertLoadClass(CLASS_A, clParentA);
-         assertCannotLoadClass(CLASS_B, clParentA);
-         
-         ClassLoader clChildA = null;
-         Result resultChildA = new Result();
-         final String childDomainName = "ChildDomain";
-         try
-         {
-            clChildA = createChildDomainParentFirstClassLoader(resultChildA, "aChild", childDomainName, true, JAR_A_2);
-            assertLoadClass(CLASS_A, clParentA);
-            assertLoadClass(CLASS_A, clChildA, clParentA);
-            assertCannotLoadClass(CLASS_B, clChildA);
-            
-            ClassLoader clB = null;
-            Result resultB = new Result();
-            try
-            {
-               BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-                  createRequirePackage(PACKAGE_A);
-               clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, builderB, JAR_B_1);
-               
-               assertLoadClass(CLASS_A, clParentA);
-               assertLoadClass(CLASS_B, clB);
-               assertLoadClass(CLASS_A, clB, clParentA);
-            }
-            finally
-            {
-               unregisterClassLoader(clB);
-            }
-            assertNoClassLoader(resultB);
-         }
-         finally
-         {
-            unregisterClassLoader(clChildA);
-            unregisterDomain(childDomainName);
-         }
-         assertNoClassLoader(resultChildA);
-      }
-      finally
-      {
-         unregisterClassLoader(clParentA);
-      }
-      assertNoClassLoader(resultParentA);
-   }
-   
-   public void testParentLast() throws Exception
-   {
-      ClassLoader clParentA = null;
-      Result resultParentA = new Result();
-      try
-      {
-         clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
-         assertLoadClass(CLASS_A, clParentA);
-         assertCannotLoadClass(CLASS_B, clParentA);
-         
-         ClassLoader clChildA = null;
-         Result resultChildA = new Result();
-         final String childDomainName = "ChildDomain";
-         try
-         {
-            clChildA = createChildDomainParentLastClassLoader(resultChildA, "aChild", childDomainName, true, JAR_A_2);
-            assertLoadClass(CLASS_A, clParentA);
-            assertLoadClass(CLASS_A, clChildA);
-            assertCannotLoadClass(CLASS_B, clChildA);
-            
-            ClassLoader clB = null;
-            Result resultB = new Result();
-            try
-            {
-               BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-                  createRequirePackage(PACKAGE_A);
-               clB = createChildDomainParentLastClassLoader(resultB, "b", childDomainName, builderB, JAR_B_1);
-               
-               assertLoadClass(CLASS_A, clChildA);
-               assertLoadClass(CLASS_B, clB);
-               assertLoadClass(CLASS_A, clB, clChildA);
-            }
-            finally
-            {
-               unregisterClassLoader(clB);
-            }
-            assertNoClassLoader(resultB);
-         }
-         finally
-         {
-            unregisterClassLoader(clChildA);
-            unregisterDomain(childDomainName);
-         }
-         assertNoClassLoader(resultChildA);
-      }
-      finally
-      {
-         unregisterClassLoader(clParentA);
-      }
-      assertNoClassLoader(resultParentA);
-   }
-   
-   public void testParentLastNotInChild() throws Exception
-   {
-      ClassLoader clParentA = null;
-      Result resultParentA = new Result();
-      try
-      {
-         clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
-         assertLoadClass(CLASS_A, clParentA);
-         assertCannotLoadClass(CLASS_B, clParentA);
-         
-         ClassLoader clB = null;
-         Result resultB = new Result();
-         final String childDomainName = "ChildDomain";
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequirePackage(PACKAGE_A);
-            clB = createChildDomainParentLastClassLoader(resultB, "b", childDomainName, builderB, JAR_B_1);
-            
-            assertLoadClass(CLASS_A, clParentA);
-            assertLoadClass(CLASS_B, clB);
-            assertLoadClass(CLASS_A, clB, clParentA);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-            unregisterDomain(childDomainName);
-         }
-         assertNoClassLoader(resultB);
-      }
-      finally
-      {
-         unregisterClassLoader(clParentA);
-      }
-      assertNoClassLoader(resultParentA);
-   }
-   
-   public void testParentFirstWrongWayAround() throws Exception
-   {
-      ClassLoader clB = null;
-      Result resultB = new Result();
-      final String childDomainName = "ChildDomain";
-      try
-      {
-         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-            createRequirePackage(PACKAGE_A);
-         try
-         {
-            clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, builderB, JAR_B_1);
-            fail("Should be no loader");
-         }
-         catch(NoSuchClassLoaderException e)
-         {
-         }
-         assertNoClassLoader(resultB);
-         
-         ClassLoader clParentA = null;
-         Result resultParentA = new Result();
-         try
-         {
-            clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
-            assertLoadClass(CLASS_A, clParentA);
-            assertCannotLoadClass(CLASS_B, clParentA);
-            
-            clB = assertClassLoader(resultB.getFactory());
-            assertLoadClass(CLASS_A, clParentA);
-            assertLoadClass(CLASS_A, clB, clParentA);
-            assertLoadClass(CLASS_B, clB);
-         }
-         finally
-         {
-            unregisterClassLoader(clParentA);
-         }
-         assertNoClassLoader(resultParentA);
-      }
-      finally
-      {
-         unregisterClassLoader(clB);
-         unregisterDomain(childDomainName);
-      }
-      assertNoClassLoader(resultB);
-   }
-   
-   public void testParentLastWrongWayAround() throws Exception
-   {
-      ClassLoader clB = null;
-      Result resultB = new Result();
-      final String childDomainName = "ChildDomain";
-      try
-      {
-         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-            createRequirePackage(PACKAGE_A);
-         try
-         {
-            clB = createChildDomainParentLastClassLoader(resultB, "b", childDomainName, builderB, JAR_B_1);
-            fail("Should be no loader");
-         }
-         catch(NoSuchClassLoaderException e)
-         {
-         }
-         assertNoClassLoader(resultB);
-         
-         ClassLoader clParentA = null;
-         Result resultParentA = new Result();
-         try
-         {
-            clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
-            assertLoadClass(CLASS_A, clParentA);
-            assertCannotLoadClass(CLASS_B, clParentA);
-            
-            clB = assertClassLoader(resultB.getFactory());
-            assertLoadClass(CLASS_A, clParentA);
-            assertLoadClass(CLASS_A, clB, clParentA);
-            assertLoadClass(CLASS_B, clB);
-         }
-         finally
-         {
-            unregisterClassLoader(clParentA);
-         }
-         assertNoClassLoader(resultParentA);
-      }
-      finally
-      {
-         unregisterClassLoader(clB);
-         unregisterDomain(childDomainName);
-      }
-   }
-   
-   public void testParentRedeploy() throws Exception
-   {
-      ClassLoader clB = null;
-      Result resultB = new Result();
-      final String childDomainName = "ChildDomain";
-      try
-      {
-         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-            createRequirePackage(PACKAGE_A);
-         try
-         {
-            clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, builderB, JAR_B_1);
-            fail("Should be no loader");
-         }
-         catch(NoSuchClassLoaderException e)
-         {
-         }
-         assertNoClassLoader(resultB);
-
-         ClassLoader clParentA = null;
-         Result resultParentA = new Result();
-         try
-         {
-            clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
-            assertLoadClass(CLASS_A, clParentA);
-            assertCannotLoadClass(CLASS_B, clParentA);
-            
-            clB = assertClassLoader(resultB.getFactory());
-            assertLoadClass(CLASS_A, clParentA);
-            assertLoadClass(CLASS_A, clB, clParentA);
-            assertLoadClass(CLASS_B, clB);
-         }
-         finally
-         {
-            unregisterClassLoader(clParentA);
-         }
-
-         assertNoClassLoader(resultParentA);
-         assertNoClassLoader(resultB);
-      
-         try
-         {
-            clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
-            assertLoadClass(CLASS_A, clParentA);
-            assertCannotLoadClass(CLASS_B, clParentA);
-            
-            clB = assertClassLoader(resultB.getFactory());
-            assertLoadClass(CLASS_A, clParentA);
-            assertLoadClass(CLASS_A, clB, clParentA);
-            assertLoadClass(CLASS_B, clB);
-         }
-         finally
-         {
-            unregisterClassLoader(clParentA);
-         }
-         assertNoClassLoader(resultParentA);
-      }
-      finally
-      {
-         unregisterClassLoader(clB);
-         unregisterDomain(childDomainName);
-      }
-      assertNoClassLoader(resultB);
-   }
-   
-   public void testParentOtherDomain() throws Exception
-   {
-      ClassLoader clParentA = null;
-      Result resultParentA = new Result();
-      final String parentDomainName = "ParentDomain";
-      try
-      {
-         clParentA = createChildDomainParentFirstClassLoader(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
-         assertLoadClass(CLASS_A, clParentA);
-         assertCannotLoadClass(CLASS_B, clParentA);
-         
-         ClassLoader clB = null;
-         Result resultB = new Result();
-         final String childDomainName = "ChildDomain";
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequirePackage(PACKAGE_A);
-            clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
-            assertLoadClass(CLASS_A, clParentA);
-            assertLoadClass(CLASS_B, clB);
-            assertLoadClass(CLASS_A, clB, clParentA);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-            unregisterDomain(childDomainName);
-         }
-      }
-      finally
-      {
-         unregisterClassLoader(clParentA);
-         unregisterDomain(parentDomainName);
-      }
-   }
-   
-   // JBREFLECT-65
-   public void testParentOtherDomainClassloader() throws Exception
-   {
-      ClassLoader clParentA = null;
-      Result resultParentA = new Result();
-      final String parentDomainName = "ParentDomain";
-      try
-      {
-         clParentA = createChildDomainParentFirstClassLoader(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
-         assertLoadClass(CLASS_A, clParentA);
-         assertCannotLoadClass(CLASS_B, clParentA);
-         
-         ClassLoader clB = null;
-         Result resultB = new Result();
-         final String childDomainName = "ChildDomain";
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequirePackage(PACKAGE_A);
-            clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
-            assertLoadClass(CLASS_A, clParentA);
-            assertLoadClass(CLASS_B, clB);
-            assertLoadClass(CLASS_A, clB, clParentA);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-            unregisterDomain(childDomainName);
-         }
-      }
-      finally
-      {
-         unregisterClassLoader(clParentA);
-         unregisterDomain(parentDomainName);
-      }
-   }
-   
-   public void testParentOtherDomainLazy() throws Exception
-   {
-      ClassLoader clB = null;
-      Result resultB = new Result();
-      final String parentDomainName = "ParentDomain";
-      final String childDomainName = "ChildDomain";
-      try
-      {
-         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-            createRequirePackage(PACKAGE_A);
-         try
-         {
-            clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
-            fail("Should be no loader");
-         }
-         catch(NoSuchClassLoaderException e)
-         {
-         }
-         assertNoClassLoader(resultB);
-         
-         ClassLoader clParentA = null;
-         Result resultParentA = new Result();
-         try
-         {
-            clParentA = createChildDomainParentFirstClassLoader(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
-            assertLoadClass(CLASS_A, clParentA);
-            assertCannotLoadClass(CLASS_B, clParentA);
-
-            clB = assertClassLoader(resultB.getFactory());
-            assertLoadClass(CLASS_A, clParentA);
-            assertCannotLoadClass(CLASS_B, clParentA);
-            assertLoadClass(CLASS_A, clB, clParentA);
-         }
-         finally
-         {
-            unregisterClassLoader(clParentA);
-            unregisterDomain(parentDomainName);
-         }
-         assertNoClassLoader(resultParentA);
-      }
-      finally
-      {
-         unregisterClassLoader(clB);
-         unregisterDomain(childDomainName);
-      }
-      assertNoClassLoader(resultB);
-   }
-
-   public void testParentRedeployOtherDomain() throws Exception
-   {
-      ClassLoader clB = null;
-      Result resultB = new Result();
-      final String parentDomainName = "ParentDomain";
-      final String childDomainName = "ChildDomain";
-      try
-      {
-         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-            createRequirePackage(PACKAGE_A);
-         try
-         {
-            clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
-            fail("Should be no loader");
-         }
-         catch(NoSuchClassLoaderException e)
-         {
-         }
-         assertNoClassLoader(resultB);
-         
-         ClassLoader clParentA = null;
-         Result resultParentA = new Result();
-         try
-         {
-            clParentA = createChildDomainParentFirstClassLoader(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
-            assertLoadClass(CLASS_A, clParentA);
-            assertCannotLoadClass(CLASS_B, clParentA);
-
-            clB = assertClassLoader(resultB.getFactory());
-            assertLoadClass(CLASS_A, clParentA);
-            assertCannotLoadClass(CLASS_B, clParentA);
-            assertLoadClass(CLASS_A, clB, clParentA);
-         }
-         finally
-         {
-            unregisterClassLoader(clParentA);
-            unregisterDomain(parentDomainName);
-         }
-         assertNoClassLoader(resultParentA);
-         assertNoClassLoader(resultB);
-
-         try
-         {
-            clParentA = createChildDomainParentFirstClassLoader(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
-            assertLoadClass(CLASS_A, clParentA);
-            assertCannotLoadClass(CLASS_B, clParentA);
-
-            clB = assertClassLoader(resultB.getFactory());
-            assertLoadClass(CLASS_A, clParentA);
-            assertCannotLoadClass(CLASS_B, clParentA);
-            assertLoadClass(CLASS_A, clB, clParentA);
-         }
-         finally
-         {
-            unregisterClassLoader(clParentA);
-            unregisterDomain(parentDomainName);
-         }
-      }
-      finally
-      {
-         unregisterClassLoader(clB);
-         unregisterDomain(childDomainName);
-      }
-      assertNoClassLoader(resultB);
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalParentLoaderSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalParentLoaderSanityTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalParentLoaderSanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,129 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-
-import java.net.URL;
-
-import junit.framework.Test;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloader.spi.filter.ClassFilter;
-import org.jboss.test.classpool.support.NoMatchClassFilter;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloader.domain.test.HierarchicalParentLoaderUnitTestCase using our test framework, 
- * ClassPoolWithHierarchicalParentLoaderUnitTestCaseSanityTestCase replicates this with the javassist classpools
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithHierarchicalParentLoaderSanityTestCase extends JBossClClassPoolTest
-{
-   public ClassLoaderWithHierarchicalParentLoaderSanityTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassLoaderWithHierarchicalParentLoaderSanityTestCase.class);
-   }
-   
-   public void testHierarchyBefore() throws Exception
-   {
-      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.BEFORE, true);
-   }
-   
-   
-   public void testHierarchyBeforeNotFound() throws Exception
-   {
-      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.BEFORE, false, false);
-   }
-   
-   public void testHierarchyAfterNotReached() throws Exception
-   {
-      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.AFTER_BUT_JAVA_BEFORE, false);
-   }
-   
-   public void testHierarchyAfterReached() throws Exception
-   {
-      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.AFTER_BUT_JAVA_BEFORE, null, true);
-   }
-   
-   public void testHierarchyFiltered() throws Exception
-   {
-      NoMatchClassFilter filter = new NoMatchClassFilter(CLASS_A);
-      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, new ParentPolicy(filter, ClassFilter.NOTHING), false);
-
-      assertTrue("Should have been filtered", filter.filtered);
-   }
-
-
-   private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean expectedParent) throws Exception
-   {
-      runTest(parentParentPolicy, childParentPolicy, true, JAR_A_2, expectedParent);
-   }
-   
-   private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean createParent, boolean expectedParent) throws Exception
-   {
-      runTest(parentParentPolicy, childParentPolicy, createParent, JAR_A_2, expectedParent);
-   }
-   
-   private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, URL url, boolean expectedParent) throws Exception
-   {
-      runTest(parentParentPolicy, childParentPolicy, true, url, expectedParent);
-   }
-   
-   private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean createParent, URL childURL, boolean expectedParent) throws Exception
-   {
-      final String parentName = "parent";
-      final String childName = "child";
-      ClassLoaderDomain parent = system.createAndRegisterDomain(parentName, parentParentPolicy);
-      ClassLoaderDomain child = system.createAndRegisterDomain(childName, childParentPolicy, parent);
-
-      ClassLoader parentLoader = null;
-      ClassLoader childLoader = null;
-      try
-      {
-         //Since the domain is created first, the first/last flag from these two methods is ignored, instead the
-         //policy used when creating the domain is used
-         if (createParent)
-         {
-            parentLoader = createChildDomainParentLastClassLoader("ParentLoader", parentName, true, JAR_A_1);
-         }
-         childLoader = createChildDomainParentLastClassLoader("ChildLoader", childName, parentName, true, childURL);
-         assertLoadClass(CLASS_A, childLoader, expectedParent ? parentLoader : childLoader);
-      }
-      finally
-      {
-         unregisterClassLoader(parentLoader);
-         unregisterClassLoader(childLoader);
-         unregisterDomain(child);
-         unregisterDomain(parent);
-      }
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithModuleDependencySanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithModuleDependencySanityTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithModuleDependencySanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,357 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import junit.framework.Test;
-
-import org.jboss.classloading.spi.version.VersionRange;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.vfs.metadata.test.ModuleDependencyUnitTestCase using our test framework, 
- * the original tests are testImportNoVersionCheck, testImportVersionCheck and testImportVersionCheckFailed. 
- * ClassPoolWithModuleDependencyTestCase replicates this with the javassist classpools
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithModuleDependencySanityTestCase extends JBossClClassPoolTest
-{
-
-   public ClassLoaderWithModuleDependencySanityTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassLoaderWithModuleDependencySanityTestCase.class);
-   }
-
-   public void testImportNoVersionCheck() throws Exception
-   {
-      ClassLoader clA = null;
-      Result resultA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA").
-            createPackage(PACKAGE_A);
-         clA = createClassLoader(resultA, "A", builderA, JAR_A_1);
-         
-         Class<?> aFromA = assertLoadClass(CLASS_A, clA, clA);
-         assertCannotLoadClass(CLASS_B, clA);
-         
-         ClassLoader clB = null;
-         Result resultB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createModule("ModuleB").
-               createRequireModule("ModuleA");
-            clB = createClassLoader(resultB, "B", builderB, JAR_B_1);
-
-            Class<?> aFromA1 = assertLoadClass(CLASS_A, clA, clA);
-            assertSame(aFromA, aFromA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertLoadClass(CLASS_B, clB, clB);
-            Class<?> aFromB = assertLoadClass(CLASS_A, clB, clA);
-            assertSame(aFromA, aFromB);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         Class<?> aFromA1 = assertLoadClass(CLASS_A, clA);
-         assertSame(aFromA, aFromA1);
-         assertCannotLoadClass(CLASS_B, clA);
-         assertNoClassLoader(resultB);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-      }
-      assertNoClassLoader(resultA);
-   }
-   
-   public void testImportVersionCheck() throws Exception
-   {
-      ClassLoader clA = null;
-      Result resultA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA", "1.0.0").
-            createPackage(PACKAGE_A);
-         clA = createClassLoader(resultA, "A", builderA, JAR_A_1);
-         Class<?> classA = assertLoadClass(CLASS_A, clA);
-         assertCannotLoadClass(CLASS_B, clA);
-
-         ClassLoader clB = null;
-         Result resultB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequireModule("ModuleA", new VersionRange("1.0.0", "2.0.0")).
-               createPackage(PACKAGE_B);
-            clB = createClassLoader(resultB, "B", builderB, JAR_B_1);
-            Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertLoadClass(CLASS_B, clB);
-            classA1 = assertLoadClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         assertNoClassLoader(resultB);
-
-         Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadClass(CLASS_B, clA);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-      }
-      assertNoClassLoader(resultA);
-   }   
-
-   public void testImportVersionCheckFailed() throws Exception
-   {
-      ClassLoader clA = null;
-      Result resultA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA", "3.0.0").
-            createPackage(PACKAGE_A);
-         clA = createClassLoader(resultA, "A", builderA, JAR_A_1);
-         Class<?> classA = assertLoadClass(CLASS_A, clA);
-         assertCannotLoadClass(CLASS_B, clA);
-         Result resultB = new Result(); 
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequireModule("ModuleA", new VersionRange("1.0.0", "2.0.0")).
-               createPackage(PACKAGE_B);
-            try
-            {
-               createClassLoader(resultB, "B", builderB, JAR_B_1);
-               fail("Should not have been able to create loader");
-            }
-            catch(NoSuchClassLoaderException expected)
-            {
-            }
-            Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertNoClassLoader(resultB);
-         }
-         finally
-         {
-            unregisterClassLoader("B");
-         }
-         assertNoClassLoader(resultB);
-
-         Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadClass(CLASS_B, clA);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-      }
-      assertNoClassLoader(resultA);
-   }
-   
-   //These are my extra tests
-   public void testSeveralModulesWithSamePackages() throws Exception
-   {
-      ClassLoader clAModuleX = null;
-      ClassLoader clAModuleA = null;
-      ClassLoader clAModuleY = null;
-      Result rAX = new Result();
-      Result rAA = new Result();
-      Result rAY = new Result();
-      try
-      {
-         BundleInfoBuilder builderAX = BundleInfoBuilder.getBuilder().
-            createModule("ModuleX").
-            createPackage(PACKAGE_A);
-         clAModuleX = createClassLoader(rAX, "X", builderAX, JAR_A_1);
-      
-         BundleInfoBuilder builderAA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA").
-            createPackage(PACKAGE_A);
-         clAModuleA = createClassLoader(rAA, "A", builderAA, JAR_A_1);
-         
-         BundleInfoBuilder builderAY = BundleInfoBuilder.getBuilder().
-            createModule("ModuleY").
-            createPackage(PACKAGE_A);
-         clAModuleY = createClassLoader(rAY, "Y", builderAY, JAR_A_1);
-      
-         Class<?> classAX = assertLoadClass(CLASS_A, clAModuleX);
-         Class<?> classAA = assertLoadClass(CLASS_A, clAModuleA);
-         Class<?> classAY = assertLoadClass(CLASS_A, clAModuleY);
-         assertCannotLoadClass(CLASS_B, clAModuleX);
-         assertCannotLoadClass(CLASS_B, clAModuleA);
-         assertCannotLoadClass(CLASS_B, clAModuleY);
-         
-         ClassLoader clB = null;
-         Result resultB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequireModule("ModuleA").
-               createPackage(PACKAGE_B);
-            clB = createClassLoader(resultB, "B", builderB, JAR_B_1);
-            Class<?> classAX1 = assertLoadClass(CLASS_A, clAModuleX);
-            assertSame(classAX, classAX1);
-            Class<?> classAA1 = assertLoadClass(CLASS_A, clAModuleA);
-            assertSame(classAA, classAA1);
-            Class<?> classAY1 = assertLoadClass(CLASS_A, clAModuleY);
-            assertSame(classAY, classAY1);
-            assertCannotLoadClass(CLASS_B, clAModuleX);
-            assertCannotLoadClass(CLASS_B, clAModuleA);
-            assertCannotLoadClass(CLASS_B, clAModuleY);
-            
-            assertLoadClass(CLASS_B, clB, clB);
-            Class<?> aFromB = assertLoadClass(CLASS_A, clB, clAModuleA);
-            assertSame(aFromB, classAA);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         assertNoClassLoader(resultB);
-         
-         Class<?> classAX1 = assertLoadClass(CLASS_A, clAModuleX);
-         assertSame(classAX, classAX1);
-         Class<?> classAA1 = assertLoadClass(CLASS_A, clAModuleA);
-         assertSame(classAA, classAA1);
-         Class<?> classAY1 = assertLoadClass(CLASS_A, clAModuleY);
-         assertSame(classAY, classAY1);
-         assertCannotLoadClass(CLASS_B, clAModuleX);
-         assertCannotLoadClass(CLASS_B, clAModuleA);
-         assertCannotLoadClass(CLASS_B, clAModuleY);
-      }
-      finally
-      {
-         unregisterClassLoader(clAModuleY);
-         unregisterClassLoader(clAModuleA);
-         unregisterClassLoader(clAModuleX);
-      }
-      assertNoClassLoader(rAY);
-      assertNoClassLoader(rAA);
-      assertNoClassLoader(rAX);
-   }
-   
-   public void testSeveralModulesWithSameNamesDifferentVersions() throws Exception
-   {
-      ClassLoader clAModuleA1 = null;
-      ClassLoader clAModuleA2 = null;
-      ClassLoader clAModuleA3 = null;
-      Result rA1 = new Result();
-      Result rA2 = new Result();
-      Result rA3 = new Result();
-      try
-      {
-         BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA", "1.0.0").
-            createPackage(PACKAGE_A);
-         clAModuleA1 = createClassLoader(rA1, "X", builderA1, JAR_A_1);
-      
-         BundleInfoBuilder builderA2 = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA", "2.0.0").
-            createPackage(PACKAGE_A);
-         clAModuleA2 = createClassLoader(rA2, "A", builderA2, JAR_A_1);
-         
-         BundleInfoBuilder builderA3 = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA", "3.0.0").
-            createPackage(PACKAGE_A);
-         clAModuleA3 = createClassLoader(rA3, "Y", builderA3, JAR_A_1);
-      
-         Class<?> classAX = assertLoadClass(CLASS_A, clAModuleA1);
-         Class<?> classAA = assertLoadClass(CLASS_A, clAModuleA2);
-         Class<?> classAY = assertLoadClass(CLASS_A, clAModuleA3);
-         assertCannotLoadClass(CLASS_B, clAModuleA1);
-         assertCannotLoadClass(CLASS_B, clAModuleA2);
-         assertCannotLoadClass(CLASS_B, clAModuleA3);
-         
-         ClassLoader clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequireModule("ModuleA", new VersionRange("2.0.0", true, "3.0.0", false)).
-               createPackage(PACKAGE_B);
-            clB = createClassLoader(rB, "B", builderB, JAR_B_1);
-            Class<?> classAX1 = assertLoadClass(CLASS_A, clAModuleA1);
-            assertSame(classAX, classAX1);
-            Class<?> classAA1 = assertLoadClass(CLASS_A, clAModuleA2);
-            assertSame(classAA, classAA1);
-            Class<?> classAY1 = assertLoadClass(CLASS_A, clAModuleA3);
-            assertSame(classAY, classAY1);
-            assertCannotLoadClass(CLASS_B, clAModuleA1);
-            assertCannotLoadClass(CLASS_B, clAModuleA2);
-            assertCannotLoadClass(CLASS_B, clAModuleA3);
-            
-            assertLoadClass(CLASS_B, clB, clB);
-            Class<?> aFromB = assertLoadClass(CLASS_A, clB, clAModuleA2);
-            assertSame(aFromB, classAA);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         assertNoClassLoader(rB);
-
-         Class<?> classAX1 = assertLoadClass(CLASS_A, clAModuleA1);
-         assertSame(classAX, classAX1);
-         Class<?> classAA1 = assertLoadClass(CLASS_A, clAModuleA2);
-         assertSame(classAA, classAA1);
-         Class<?> classAY1 = assertLoadClass(CLASS_A, clAModuleA3);
-         assertSame(classAY, classAY1);
-         assertCannotLoadClass(CLASS_B, clAModuleA1);
-         assertCannotLoadClass(CLASS_B, clAModuleA2);
-         assertCannotLoadClass(CLASS_B, clAModuleA3);
-      }
-      finally
-      {
-         unregisterClassLoader(clAModuleA3);
-         unregisterClassLoader(clAModuleA2);
-         unregisterClassLoader(clAModuleA1);
-      }
-      assertNoClassLoader(rA1);
-      assertNoClassLoader(rA2);
-      assertNoClassLoader(rA3);
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithPackageDependencySanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithPackageDependencySanityTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithPackageDependencySanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,272 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import junit.framework.Test;
-
-import org.jboss.classloading.spi.version.VersionRange;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.vfs.metadata.test.PackageDependencyUnitTestCase using our test framework, 
- * the original tests are testImportNoVersionCheck, testImportVersionCheck and testImportVersionCheckFailed. 
- * ClassPoolWithPackageDependencyTestCase replicates this with the javassist classpools
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithPackageDependencySanityTestCase extends JBossClClassPoolTest
-{
-
-   public ClassLoaderWithPackageDependencySanityTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassLoaderWithPackageDependencySanityTestCase.class);
-   }
-
-   public void testImportNoVersionCheck() throws Exception
-   {
-      ClassLoader clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA").
-            createPackage(PACKAGE_A);
-         clA = createClassLoader(rA, "A", builderA, JAR_A_1);
-         Class<?> classA = assertLoadClass(CLASS_A, clA);
-         assertCannotLoadClass(CLASS_B, clA);
-         
-         ClassLoader clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createPackage(PACKAGE_B).
-               createRequirePackage(PACKAGE_A);
-            clB = createClassLoader(rB, "B", builderB, JAR_B_1);
-            Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertLoadClass(CLASS_B, clB);
-            Class<?> aFromB = assertLoadClass(CLASS_A, clB, clA);
-            assertSame(classA, aFromB);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         assertNoClassLoader(rB);
-         
-         Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadClass(CLASS_B, clA);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-      }
-      assertNoClassLoader(rA);
-   }
-   
-   public void testImportVersionCheck() throws Exception
-   {
-      ClassLoader clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA").
-            createPackage(PACKAGE_A, "1.0.0");
-         clA = createClassLoader(rA, "A", builderA, JAR_A_1);
-         Class<?> classA = assertLoadClass(CLASS_A, clA);
-         assertCannotLoadClass(CLASS_B, clA);
-         
-         ClassLoader clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createPackage(PACKAGE_B).
-               createRequirePackage(PACKAGE_A, new VersionRange("1.0.0", "2.0.0"));
-            clB = createClassLoader(rB, "B", builderB, JAR_B_1);
-            Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertLoadClass(CLASS_B, clB);
-            Class<?> aFromB = assertLoadClass(CLASS_A, clB, clA);
-            assertSame(classA, aFromB);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         assertNoClassLoader(rB);
-         
-         assertLoadClass(CLASS_A, clA);
-         assertCannotLoadClass(CLASS_B, clA);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-      }
-      assertNoClassLoader(rA);
-   }
-   
-   public void testImportVersionCheckFailed() throws Exception
-   {
-      ClassLoader clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA").
-            createPackage(PACKAGE_A, "3.0.0");
-         clA = createClassLoader(rA, "A", builderA, JAR_A_1);
-         Class<?> classA = assertLoadClass(CLASS_A, clA);
-         assertCannotLoadClass(CLASS_B, clA);
-         
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createPackage(PACKAGE_B).
-               createRequirePackage(PACKAGE_A, new VersionRange("1.0.0", "2.0.0"));
-            try
-            {
-               createClassLoader(rB, "B", builderB, JAR_B_1);
-               fail("Should not have been able to create loader");
-            }
-            catch(NoSuchClassLoaderException expected)
-            {
-            }
-            Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-         }
-         finally
-         {
-            unregisterClassLoader("B");
-         }
-         Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadClass(CLASS_B, clA);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-      }
-   }
-   
-   //These are mine
-   
-   public void testSeveralModulesWithSamePackagesDifferentVersions() throws Exception
-   {
-      ClassLoader clA1 = null;
-      ClassLoader clA2 = null;
-      ClassLoader clA3 = null;
-      Result rA1 = new Result();
-      Result rA2 = new Result();
-      Result rA3 = new Result();
-      try
-      {
-         BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
-            createModule("PackageA").
-            createPackage(PACKAGE_A, "1.0.0");
-         clA1 = createClassLoader(rA1, "A1", builderA1, JAR_A_1);
-         
-         BundleInfoBuilder builderA2 = BundleInfoBuilder.getBuilder().
-            createModule("PackageA").
-            createPackage(PACKAGE_A, "2.0.0");
-         clA2 = createClassLoader(rA2, "A2", builderA2, JAR_A_1);
-         
-         BundleInfoBuilder builderA3 = BundleInfoBuilder.getBuilder().
-         createModule("PackageA").
-         createPackage(PACKAGE_A, "3.0.0");
-         clA3 = createClassLoader(rA3, "A3", builderA3, JAR_A_1);
-                  
-         Class<?> classA1 = assertLoadClass(CLASS_A, clA1);
-         Class<?> classA2 = assertLoadClass(CLASS_A, clA2);
-         Class<?> classA3 = assertLoadClass(CLASS_A, clA3);
-         assertCannotLoadClass(CLASS_B, clA1);
-         assertCannotLoadClass(CLASS_B, clA2);
-         assertCannotLoadClass(CLASS_B, clA3);
-         
-         ClassLoader clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createPackage(PACKAGE_B).
-               createRequirePackage(PACKAGE_A, new VersionRange("1.0.0", false, "2.0.0", true));
-            clB = createClassLoader(rB, "B", builderB, JAR_B_1);
-            Class<?> classA11 = assertLoadClass(CLASS_A, clA1);
-            assertSame(classA1, classA11);
-            Class<?> classA21 = assertLoadClass(CLASS_A, clA2);
-            assertSame(classA2, classA21);
-            Class<?> classA31 = assertLoadClass(CLASS_A, clA3);
-            assertSame(classA3, classA31);
-            assertCannotLoadClass(CLASS_B, clA1);
-            assertCannotLoadClass(CLASS_B, clA2);
-            assertCannotLoadClass(CLASS_B, clA3);
-
-            assertLoadClass(CLASS_B, clB);
-            Class<?> classAFromB = assertLoadClass(CLASS_A, clB, clA2);
-            assertSame(classA2, classAFromB);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         assertNoClassLoader(rB);
-         Class<?> classA11 = assertLoadClass(CLASS_A, clA1);
-         assertSame(classA1, classA11);
-         Class<?> classA21 = assertLoadClass(CLASS_A, clA2);
-         assertSame(classA2, classA21);
-         Class<?> classA31 = assertLoadClass(CLASS_A, clA3);
-         assertSame(classA3, classA31);
-         assertCannotLoadClass(CLASS_B, clA1);
-         assertCannotLoadClass(CLASS_B, clA2);
-         assertCannotLoadClass(CLASS_B, clA3);
-      }
-      finally
-      {
-         unregisterClassLoader(clA3);
-         unregisterClassLoader(clA2);
-         unregisterClassLoader(clA1);
-      }
-      assertNoClassLoader(rA1);
-      assertNoClassLoader(rA2);
-      assertNoClassLoader(rA3);
-      
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportModuleSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportModuleSanityTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportModuleSanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,226 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.vfs.metadata.test.ReExportPackageUnitTestCase using our test framework, 
- * ClassPoolWithReExportPackageTestCase replicates this with the javassist classpools
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithReExportModuleSanityTestCase extends JBossClClassPoolTest
-{
-
-   public ClassLoaderWithReExportModuleSanityTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassLoaderWithReExportModuleSanityTestCase.class);
-   }
-
-   public void testReExport() throws Exception
-   {
-      ClassLoader clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("a").
-            createPackage(PACKAGE_A);
-         clA = createClassLoader(rA, "A", builderA, JAR_A_1);
-         Class<?> classA = assertLoadClass(CLASS_A, clA);
-         assertCannotLoadClass(CLASS_B, clA);
-         assertCannotLoadClass(CLASS_C, clA);
-         
-         ClassLoader clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createModule("b").
-               createPackage(PACKAGE_B).
-               createReExportModule("a");
-            clB = createClassLoader(rB, "B", builderB, JAR_B_1);
-            Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertCannotLoadClass(CLASS_C, clA);
-            assertLoadClass(CLASS_A, clB, clA);
-            Class<?> classB = assertLoadClass(CLASS_B, clB);
-            assertCannotLoadClass(CLASS_C, clB);
-            
-            ClassLoader clC = null;
-            Result rC = new Result();
-            try
-            {
-               BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
-                  createRequireModule("b");
-               clC = createClassLoader(rC, "C", builderC, JAR_C_1);
-               
-               classA1 = assertLoadClass(CLASS_A, clA);
-               assertSame(classA, classA1);
-               assertCannotLoadClass(CLASS_B, clA);
-               assertCannotLoadClass(CLASS_C, clA);
-               classA1 = assertLoadClass(CLASS_A, clB, clA);
-               assertSame(classA, classA1);
-               Class<?> classB1 = assertLoadClass(CLASS_B, clB);
-               assertSame(classB, classB1);
-               assertCannotLoadClass(CLASS_C, clB);
-               classA1 = assertLoadClass(CLASS_A, clC, clA);
-               assertSame(classA, classA1);
-               classB1 = assertLoadClass(CLASS_B, clC, clB);
-               assertSame(classB, classB1);
-               assertLoadClass(CLASS_C, clC);
-            }
-            finally
-            {
-               unregisterClassLoader(clC);
-            }
-            assertNoClassLoader(rC);
-            classA1 = assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertCannotLoadClass(CLASS_C, clA);
-            classA1 = assertLoadClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            Class<?> classB1 = assertLoadClass(CLASS_B, clB);
-            assertSame(classB, classB1);
-            assertCannotLoadClass(CLASS_C, clB);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         assertNoClassLoader(rB);
-         Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadClass(CLASS_B, clA);
-         assertCannotLoadClass(CLASS_C, clA);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-      }
-      assertNoClassLoader(rA);
-   }
-   
-   public void testNoReExport() throws Exception
-   {
-      ClassLoader clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("a").
-            createPackage(PACKAGE_A);
-         clA = createClassLoader(rA, "A", builderA, JAR_A_1);
-         Class<?> classA = assertLoadClass(CLASS_A, clA);
-         assertCannotLoadClass(CLASS_B, clA);
-         assertCannotLoadClass(CLASS_C, clA);
-         
-         ClassLoader clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createModule("b").
-               createPackage(PACKAGE_B).
-               createReExportModule("a");
-            clB = createClassLoader(rB, "B", builderB, JAR_B_1);
-            Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertCannotLoadClass(CLASS_C, clA);
-            classA1 = assertLoadClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            Class<?> classB = assertLoadClass(CLASS_B, clB);
-            assertCannotLoadClass(CLASS_C, clB);
-            
-            ClassLoader clC = null;
-            Result rC = new Result();
-            try
-            {
-               BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
-                  createRequirePackage(PACKAGE_B);
-               clC = createClassLoader(rC, "C", builderC, JAR_C_1);
-               
-               classA1 = assertLoadClass(CLASS_A, clA);
-               assertSame(classA, classA1);
-               assertCannotLoadClass(CLASS_B, clA);
-               assertCannotLoadClass(CLASS_C, clA);
-               classA1 = assertLoadClass(CLASS_A, clB, clA);
-               assertSame(classA, classA1);
-               Class<?> classB1 = assertLoadClass(CLASS_B, clB);
-               assertSame(classB, classB1);
-               assertCannotLoadClass(CLASS_C, clB);
-               assertCannotLoadClass(CLASS_A, clC);
-               classB1 = assertLoadClass(CLASS_B, clC, clB);
-               assertSame(classB, classB1);
-               assertLoadClass(CLASS_C, clC);
-            }
-            finally
-            {
-               unregisterClassLoader(clC);
-            }
-            assertNoClassLoader(rC);
-            classA1 = assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertCannotLoadClass(CLASS_C, clA);
-            classA1 = assertLoadClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            Class<?> classB1 = assertLoadClass(CLASS_B, clB);
-            assertSame(classB, classB1);
-            assertCannotLoadClass(CLASS_C, clB);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         assertNoClassLoader(rB);
-         Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadClass(CLASS_B, clA);
-         assertCannotLoadClass(CLASS_C, clA);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-      }
-      assertNoClassLoader(rA);
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportPackageSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportPackageSanityTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportPackageSanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,229 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.vfs.metadata.test.ReExportModuleUnitTestCase using our test framework, 
- * ClassPoolWithReExportModuleTestCase replicates this with the javassist classpools
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithReExportPackageSanityTestCase extends JBossClClassPoolTest
-{
-
-   public ClassLoaderWithReExportPackageSanityTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassLoaderWithReExportPackageSanityTestCase.class);
-   }
-
-   public void testReExport() throws Exception
-   {
-      ClassLoader clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("a").
-            createPackage(PACKAGE_A);
-         clA = createClassLoader(rA, "A", builderA, JAR_A_1);
-         Class<?> classA = assertLoadClass(CLASS_A, clA);
-         assertCannotLoadClass(CLASS_B, clA);
-         assertCannotLoadClass(CLASS_C, clA);
-         
-         ClassLoader clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createModule("b").
-               createPackage(PACKAGE_B).
-               createReExportPackage(PACKAGE_A);
-            
-            clB = createClassLoader(rB, "B", builderB, JAR_B_1);
-            Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertCannotLoadClass(CLASS_C, clA);
-            classA1 = assertLoadClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            Class<?> classB = assertLoadClass(CLASS_B, clB);
-            assertCannotLoadClass(CLASS_C, clB);
-            
-            ClassLoader clC = null;
-            Result rC = new Result();
-            try
-            {
-               BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
-                  createRequireModule("b");
-               clC = createClassLoader(rC, "C", builderC, JAR_C_1);
-               
-               classA1 = assertLoadClass(CLASS_A, clA);
-               assertSame(classA, classA1);
-               assertCannotLoadClass(CLASS_B, clA);
-               assertCannotLoadClass(CLASS_C, clA);
-               classA1 = assertLoadClass(CLASS_A, clB, clA);
-               assertSame(classA, classA1);
-               Class<?> classB1 = assertLoadClass(CLASS_B, clB);
-               assertSame(classB, classB1);
-               assertCannotLoadClass(CLASS_C, clB);
-               classA1 = assertLoadClass(CLASS_A, clC, clA);
-               assertSame(classA, classA1);
-               classB1 = assertLoadClass(CLASS_B, clC, clB);
-               assertSame(classB, classB1);
-               assertLoadClass(CLASS_C, clC);
-            }
-            finally
-            {
-               unregisterClassLoader(clC);
-            }
-            assertNoClassLoader(rC);
-            classA1 = assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertCannotLoadClass(CLASS_C, clA);
-            classA1 = assertLoadClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            Class<?> classB1 = assertLoadClass(CLASS_B, clB);
-            assertSame(classB, classB1);
-            assertCannotLoadClass(CLASS_C, clB);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         assertNoClassLoader(rB);
-         Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadClass(CLASS_B, clA);
-         assertCannotLoadClass(CLASS_C, clA);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-      }
-      assertNoClassLoader(rA);
-   }
-   
-   public void testNoReExport() throws Exception
-   {
-      ClassLoader clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("a").
-            createPackage(PACKAGE_A);
-         clA = createClassLoader(rA, "A", builderA, JAR_A_1);
-         Class<?> classA = assertLoadClass(CLASS_A, clA);
-         assertCannotLoadClass(CLASS_B, clA);
-         assertCannotLoadClass(CLASS_C, clA);
-         
-         ClassLoader clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createModule("b").
-               createPackage(PACKAGE_B).
-               createReExportModule("a");
-            clB = createClassLoader(rB, "B", builderB, JAR_B_1);
-            Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertCannotLoadClass(CLASS_C, clA);
-            assertLoadClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            Class<?> classB = assertLoadClass(CLASS_B, clB);
-            assertCannotLoadClass(CLASS_C, clB);
-            
-            ClassLoader clC = null;
-            Result rC = new Result();
-            try
-            {
-               BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
-                  createRequirePackage(PACKAGE_B);
-               clC = createClassLoader(rC, "C", builderC, JAR_C_1);
-               
-               assertLoadClass(CLASS_A, clA);
-               assertSame(classA, classA1);
-               assertCannotLoadClass(CLASS_B, clA);
-               assertCannotLoadClass(CLASS_C, clA);
-               assertLoadClass(CLASS_A, clB, clA);
-               assertSame(classA, classA1);
-               Class<?> classB1 = assertLoadClass(CLASS_B, clB);
-               assertSame(classB, classB1);
-               assertCannotLoadClass(CLASS_C, clB);
-               assertCannotLoadClass(CLASS_A, clC);
-               classB1 = assertLoadClass(CLASS_B, clC, clB);
-               assertSame(classB, classB1);
-               assertLoadClass(CLASS_C, clC);
-            }
-            finally
-            {
-               unregisterClassLoader(clC);
-            }
-            assertNoClassLoader(rC);
-            assertLoadClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadClass(CLASS_B, clA);
-            assertCannotLoadClass(CLASS_C, clA);
-            assertLoadClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            Class<?> classB1 = assertLoadClass(CLASS_B, clB);
-            assertSame(classB, classB1);
-            assertCannotLoadClass(CLASS_C, clB);
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         assertNoClassLoader(rB);
-         Class<?> classA1 = assertLoadClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadClass(CLASS_B, clA);
-         assertCannotLoadClass(CLASS_C, clA);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-      }
-      assertNoClassLoader(rA);
-
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,594 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_D;
-
-import java.lang.reflect.Method;
-
-import junit.framework.Test;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloading.spi.dependency.Module;
-
-/**
- * Tests the behaviour of the new classloaders
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
- * @version $Revision$
- */
-public class ClassLoaderWithRepositorySanityTestCase extends JBossClClassPoolTest
-{
-
-   public ClassLoaderWithRepositorySanityTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassLoaderWithRepositorySanityTestCase.class);
-   }
-
-   public void testGlobalScope() throws Exception
-   {
-      ClassLoader clA = null;
-      ClassLoader clB = null;
-      try
-      {
-         clA = createClassLoader("A", true, JAR_A_1);
-         assertModule(clA);
-         clB = createClassLoader("B", true, JAR_B_1);
-         assertModule(clB);
-         try
-         {
-            Class<?> aFromA = clA.loadClass(CLASS_A);
-            assertNotNull(aFromA);
-            Class<?> bFromA = clA.loadClass(CLASS_B);
-            assertNotNull(bFromA);
-            Class<?> aFromB = clB.loadClass(CLASS_A);
-            Class<?> bFromB = clB.loadClass(CLASS_B);
-            assertSame(aFromA, aFromB);
-            assertSame(bFromA, bFromB);
-            assertSame(clA, aFromA.getClassLoader());
-            assertSame(clB, bFromB.getClassLoader());
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         Class<?> aFromA = clA.loadClass(CLASS_A);
-         assertNotNull(aFromA);
-
-         assertCannotLoadClass(CLASS_B, clA);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-      }
-      assertCannotLoadClass(CLASS_A, system.getDefaultDomain());
-   }
-
-   public void testChildDomain() throws Exception
-   {
-      ClassLoader clA = null;
-      ClassLoader clB = null;
-      ClassLoaderDomain childDomain = null;
-      ClassLoader clC = null;
-      try
-      {
-         clA = createClassLoader("A", true, JAR_A_1);
-         assertModule(clA);
-         clB = createClassLoader("B", true, JAR_B_2);
-         assertModule(clB);
-         clC = createChildDomainParentFirstClassLoader("C", "CHILD", true, JAR_C_1);
-         assertModule(clC);
-         
-         childDomain = getChildDomainForLoader(clC);
-         assertNotNull(childDomain);
-         assertSame(system.getDefaultDomain(), childDomain.getParent());
-
-         Class<?> aFromA = clA.loadClass(CLASS_A);
-         assertNotNull(aFromA);
-         Class<?> bFromB = clB.loadClass(CLASS_B);
-         assertNotNull(bFromB);
-         Class<?> cFromC = clC.loadClass(CLASS_C);
-         assertNotNull(cFromC);
-         Class<?> aFromC = clC.loadClass(CLASS_A);
-         assertNotNull(aFromC);
-         Class<?> bFromC = clC.loadClass(CLASS_B);
-         assertNotNull(bFromC);
-         
-         assertSame(aFromA, aFromC);
-         assertSame(bFromB, bFromC);
-         assertSame(clA, aFromA.getClassLoader());
-         assertSame(clB, bFromB.getClassLoader());
-         assertSame(clC, cFromC.getClassLoader());
-         
-         assertCannotLoadClass(CLASS_C, clA);
-         assertCannotLoadClass(CLASS_C, clB);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-         unregisterClassLoader(clB);
-         unregisterClassLoader(clC);
-         unregisterDomain(childDomain);
-      }
-   }
-   
-   public void testSiblingDomains() throws Exception
-   {
-      ClassLoader clA = null;
-      ClassLoader clB = null;
-      ClassLoaderDomain domainA = null;
-      ClassLoaderDomain domainB = null;
-      try
-      {
-         clA = createChildDomainParentFirstClassLoader("A", "ChildA", true, JAR_A_1);
-         assertModule(clA);
-         clB = createChildDomainParentLastClassLoader("B", "ChildB", true, JAR_B_1);
-         assertModule(clB);
-
-         domainA = getChildDomainForLoader(clA);
-         assertNotNull(domainA);
-         assertSame(system.getDefaultDomain(), domainA.getParent());
-         domainB = getChildDomainForLoader(clB);
-         assertNotNull(domainB);
-         assertSame(system.getDefaultDomain(), domainB.getParent());
-         assertNotSame(domainA, domainB);
-
-         Class<?> clazzA = clA.loadClass(CLASS_A);
-         assertSame(clA, clazzA.getClassLoader());
-         Class<?> clazzB = clB.loadClass(CLASS_B);
-         assertSame(clB, clazzB.getClassLoader());
-         assertCannotLoadClass(CLASS_B, clA);
-         assertCannotLoadClass(CLASS_A, clB);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-         unregisterClassLoader(clB);
-         unregisterDomain(clA);
-         unregisterDomain(clB);
-      }
-   }
-   
-   public void testChildWithNewClassesInParent() throws Exception
-   {
-      ClassLoader clGlobal = null;
-      ClassLoader clScoped = null;
-      try
-      {
-         clScoped = createChildDomainParentFirstClassLoader("SCOPED", "SCOPED", true, JAR_B_1);
-         assertModule(clScoped);
-         assertCannotLoadClass(CLASS_A, clScoped);
-         
-         clGlobal = createClassLoader("GLOBAL", true, JAR_A_1);
-         assertModule(clScoped);
-         assertModule(clGlobal);
-
-         Class<?> aFromChild = clScoped.loadClass(CLASS_A);
-         assertNotNull(aFromChild);
-         Class<?> aFromParent = clGlobal.loadClass(CLASS_A);
-         assertNotNull(aFromParent);
-         assertSame(aFromChild, aFromParent);
-         assertSame(clGlobal, aFromParent.getClassLoader());
-      }
-      finally
-      {
-         unregisterClassLoader(clGlobal);
-         unregisterClassLoader(clScoped);
-         unregisterDomain(clScoped);
-      }
-   }
-   
-   public void testChildOverrideWithParentDelegation() throws Exception
-   {
-      ClassLoader clGlobal = null;
-      ClassLoader clScoped = null;
-      try
-      {
-         clGlobal = createClassLoader("GLOBAL", true, JAR_A_1);
-         clScoped = createChildDomainParentFirstClassLoader("SCOPED", "SCOPED", true, JAR_B_1);
-         Class<?> aFromParent = clGlobal.loadClass(CLASS_A);
-         assertNotNull(aFromParent);
-         Class<?> aFromChild = clScoped.loadClass(CLASS_A);
-         assertNotNull(aFromChild);
-         assertSame(aFromParent, aFromChild);
-         assertSame(clGlobal, aFromParent.getClassLoader());
-      }
-      finally
-      {
-         unregisterClassLoader(clGlobal);
-         unregisterClassLoader(clScoped);
-         unregisterDomain(clScoped);
-      }
-   }
-   
-   public void testChildOverrideWithNoParentDelegation() throws Exception
-   {
-      ClassLoader clGlobal = null;
-      ClassLoader clScoped = null;
-      try
-      {
-         clGlobal = createClassLoader("GLOBAL", true, JAR_A_1);
-         clScoped = createChildDomainParentLastClassLoader("CHILD", "CHILD", true, JAR_A_1);
-         Class<?> aFromParent = clGlobal.loadClass(CLASS_A);
-         assertNotNull(aFromParent);
-         Class<?> aFromChild = clScoped.loadClass(CLASS_A);
-         assertNotNull(aFromChild);
-         assertNotSame(aFromParent, aFromChild);
-         assertSame(clGlobal, aFromParent.getClassLoader());
-         assertSame(clScoped, aFromChild.getClassLoader());
-      }
-      finally
-      {
-         unregisterClassLoader(clGlobal);
-         unregisterClassLoader(clScoped);
-         unregisterDomain(clScoped);
-      }
-   }
-   
-   public void testURLChildOfGlobalUcl() throws Exception
-   {
-      ClassLoader clGlobal = null;
-      ClassLoader clChildA = null;
-      ClassLoader clChildB = null;
-      try
-      {
-         clGlobal = createClassLoader("GLOBAL", true, JAR_A_1);
-         clChildA = createChildURLClassLoader(clGlobal, JAR_B_1);
-         
-         Class<?> aFromA = clChildA.loadClass(CLASS_A);
-         assertSame(clGlobal, aFromA.getClassLoader());
-         Class<?> bFromA = clChildA.loadClass(CLASS_B);
-         assertSame(clChildA, bFromA.getClassLoader());
-         
-         clChildB = createChildURLClassLoader(clGlobal, JAR_A_2);
-         Class<?> aFromB = clChildB.loadClass(CLASS_A);
-         assertSame(clGlobal, aFromB.getClassLoader());
-      }
-      finally
-      {
-         unregisterClassLoader(clGlobal);
-         unregisterClassLoader(clChildA);
-         unregisterClassLoader(clChildB);
-      }
-   }
-   
-   public void testUndeploySibling() throws Exception
-   {
-      ClassLoader clA = null;
-      ClassLoader clB = null;
-      try
-      {
-         try
-         {
-            clA = createClassLoader("A", true, JAR_A_1);
-            assertCannotLoadClass(CLASS_B, clA);
-            
-            clB = createClassLoader("B", true, JAR_B_1);
-            Class<?> bFromA = clA.loadClass(CLASS_B);
-            assertSame(clB, bFromA.getClassLoader());
-         }
-         finally
-         {
-            unregisterClassLoader(clB);
-         }
-         assertCannotLoadClass(CLASS_B, clA);
-      }
-      finally
-      {
-         unregisterClassLoader(clA);
-      }
-   }
-
-   
-   public void testUndeployParentDomainClassLoader() throws Exception
-   {
-      ClassLoader globalA = null;
-      ClassLoader globalB = null;
-      ClassLoader child = null;
-      try
-      {
-         try
-         {
-            globalA = createClassLoader("A", true, JAR_A_1);
-            assertCannotLoadClass(CLASS_B, globalA);
-            
-            child = createChildDomainParentLastClassLoader("C", "C", true, JAR_C_1);
-            assertCannotLoadClass(CLASS_B, child);
-            
-            globalB = createClassLoader("B", true, JAR_B_1);
-            Class<?> bFromChild = child.loadClass(CLASS_B);
-            Class<?> bFromA = globalA.loadClass(CLASS_B);
-            assertSame(globalB, bFromA.getClassLoader());
-            assertSame(bFromA, bFromChild);
-         }
-         finally
-         {
-            unregisterClassLoader(globalB);
-         }
-         assertCannotLoadClass(CLASS_B, child);
-      }
-      finally
-      {
-         unregisterClassLoader(globalA);
-         unregisterClassLoader(child);
-         unregisterDomain(getChildDomainForLoader(child));
-      }
-   }
-   
-   public void testClassLoaderWithParentClassLoader() throws Exception
-   {
-      ClassLoader parent = createChildURLClassLoader(null, JAR_B_1);
-      ClassLoader global = null;
-      try
-      {
-         global = createChildDomainParentFirstClassLoader("A", "A", true, parent, JAR_A_1);
-         Class<?> aFromGlobal = global.loadClass(CLASS_A);
-         assertSame(global, aFromGlobal.getClassLoader());
-         Class<?> bFromGlobal = global.loadClass(CLASS_B);
-         assertSame(parent, bFromGlobal.getClassLoader());
-         Class<?> bFromParent = parent.loadClass(CLASS_B);
-         assertSame(bFromGlobal, bFromParent);
-         assertCannotLoadClass(CLASS_A, parent);
-      }
-      finally
-      {
-         unregisterClassLoader(global);
-         unregisterClassLoader(parent);
-         unregisterDomain(global);
-      }
-   }
-   
-   // TODO JBREFLECT-65 undeploy e parent last
-   
-   public void testClassLoaderWithParentClassLoaderAndCrossReference() throws Exception
-   {
-      ClassLoader parent = createChildURLClassLoader(null, JAR_B_1);
-      ClassLoader global = null;
-      try
-      {
-         global = createChildDomainParentLastClassLoader("D", "D", true, parent, JAR_D);
-         Class<?> dFromGlobal = global.loadClass(CLASS_D);
-         assertSame(global, dFromGlobal.getClassLoader());
-         Class<?> bFromGlobal = global.loadClass(CLASS_B);
-         assertSame(parent, bFromGlobal.getClassLoader());
-         Class<?> bFromParent = parent.loadClass(CLASS_B);
-         assertSame(bFromGlobal, bFromParent);
-         assertCannotLoadClass(CLASS_D, parent);
-         
-         Method method = dFromGlobal.getDeclaredMethod("getB");
-         assertSame(method.getReturnType(), bFromParent);
-         
-      }
-      finally
-      {
-         unregisterClassLoader(global);
-         unregisterClassLoader(parent);
-         unregisterDomain(global);
-      }
-   }
-
-   
-   public void testClassLoaderWithParentClassLoaderAndSameClassInDomain() throws Exception
-   {
-      ClassLoader parent = createChildURLClassLoader(null, JAR_B_1);
-      ClassLoader globalA = null;
-      ClassLoader globalB = null;
-      ClassLoader globalC = null;
-      try
-      {
-         final String domain = "CHILD";
-         globalA = createChildDomainParentFirstClassLoader("A", domain, true, parent, JAR_A_1);
-         Class<?> aFromGlobal = globalA.loadClass(CLASS_A);
-         assertSame(globalA, aFromGlobal.getClassLoader());
-         Class<?> bFromGlobalA = globalA.loadClass(CLASS_B);
-         assertSame(parent, bFromGlobalA.getClassLoader());
-
-         globalB = createChildDomainParentFirstClassLoader("B", domain, true, parent, JAR_B_2);
-         Class<?> bFromParent = parent.loadClass(CLASS_B);
-         assertSame(parent, bFromParent.getClassLoader());
-         assertSame(bFromGlobalA, bFromParent);
-         
-         Class<?> bFromGlobalB = globalB.loadClass(CLASS_B);
-         assertSame(bFromGlobalB, bFromParent);
-         
-         globalC = createChildDomainParentLastClassLoader("C", domain + "2", true, parent, JAR_B_2);
-         assertLoadClass(CLASS_B, globalC);
-      }
-      finally
-      {
-         unregisterClassLoader(globalA);
-         unregisterClassLoader(globalB);
-         unregisterClassLoader(globalC);
-         unregisterClassLoader(parent);
-         unregisterDomain(globalA);
-         unregisterDomain(globalC);
-      }
-   }
-
-   public void testSeveralLevelsOfDomain() throws Exception
-   {
-      ClassLoader parent = null;
-      ClassLoader cl1B = null;
-      ClassLoader cl1C = null;
-      ClassLoader cl2B = null;
-      ClassLoader cl2C = null;
-      ClassLoader cl11A = null;
-      ClassLoader cl11B = null;
-      ClassLoader cl11C = null;
-      ClassLoader cl12A = null;
-      ClassLoader cl12B = null;
-      ClassLoader cl12C = null;
-      
-      try
-      {
-         parent = createClassLoader("A", true, JAR_A_1);
-         Class<?> aFromParent = parent.loadClass(CLASS_A);
-         assertSame(parent, aFromParent.getClassLoader());
-         
-         final String domain1 = "1";
-         cl1B = createChildDomainParentFirstClassLoader("1B", domain1, true, JAR_B_1);
-         cl1C =  createChildDomainParentFirstClassLoader("1C", domain1, true, JAR_C_1);
-         Class<?> aFrom1B = cl1B.loadClass(CLASS_A);
-         Class<?> bFrom1B = cl1B.loadClass(CLASS_B);
-         Class<?> cFrom1B = cl1B.loadClass(CLASS_C);
-         Class<?> aFrom1C = cl1C.loadClass(CLASS_A);
-         Class<?> bFrom1C = cl1C.loadClass(CLASS_B);
-         Class<?> cFrom1C = cl1C.loadClass(CLASS_C);
-         assertSame(aFromParent, aFrom1B);
-         assertSame(aFromParent, aFrom1C);
-         assertSame(bFrom1B, bFrom1C);
-         assertSame(cFrom1B, cFrom1C);
-         assertSame(cl1B, bFrom1B.getClassLoader());
-         assertSame(cl1C, cFrom1B.getClassLoader());
-         
-         
-         final String domain2 = "2";
-         cl2B = createChildDomainParentFirstClassLoader("2B", domain2, true, JAR_B_1);
-         cl2C = createChildDomainParentFirstClassLoader("2C", domain2, true, JAR_C_1);
-         Class<?> aFrom2B = cl2B.loadClass(CLASS_A);
-         Class<?> bFrom2B = cl2B.loadClass(CLASS_B);
-         Class<?> cFrom2B = cl2B.loadClass(CLASS_C);
-         Class<?> aFrom2C = cl2C.loadClass(CLASS_A);
-         Class<?> bFrom2C = cl2C.loadClass(CLASS_B);
-         Class<?> cFrom2C = cl2C.loadClass(CLASS_C);
-         assertSame(aFromParent, aFrom2B);
-         assertSame(aFromParent, aFrom2C);
-         assertSame(bFrom2B, bFrom2C);
-         assertSame(cFrom2B, cFrom2C);
-         assertSame(cl2B, bFrom2B.getClassLoader());
-         assertSame(cl2C, cFrom2B.getClassLoader());
-         assertNotSame(bFrom1B, bFrom2B);
-         assertNotSame(bFrom2C, bFrom1C);
-         assertNotSame(cFrom2C, cFrom1C);
-         
-         final String domain11 = "11";
-         cl11A = createChildDomainParentFirstClassLoader("11A", domain11, domain1, true, JAR_A_2);
-         cl11B = createChildDomainParentFirstClassLoader("11B", domain11, domain1, true, JAR_B_2);
-         cl11C = createChildDomainParentFirstClassLoader("11C", domain11, domain1, true, JAR_C_2);
-         final String domain12 = "12";
-         cl12A = createChildDomainParentLastClassLoader("12A", domain12, domain1, true, JAR_A_2);
-         cl12B = createChildDomainParentLastClassLoader("12B", domain12, domain1, true, JAR_B_2);
-         cl12C = createChildDomainParentLastClassLoader("12C", domain12, domain1, true, JAR_C_2);
-         Class<?> aFrom11A = cl11A.loadClass(CLASS_A);
-         Class<?> aFrom11B = cl11B.loadClass(CLASS_A);
-         Class<?> aFrom11C = cl11C.loadClass(CLASS_A);
-         assertSame(aFromParent, aFrom11A);
-         assertSame(aFromParent, aFrom11B);
-         assertSame(aFromParent, aFrom11C);
-         Class<?> aFrom12A = cl12A.loadClass(CLASS_A);
-         Class<?> aFrom12B = cl12B.loadClass(CLASS_A);
-         Class<?> aFrom12C = cl12C.loadClass(CLASS_A);
-         assertNotSame(aFromParent, aFrom12A);
-         assertSame(aFrom12A, aFrom12B);
-         assertSame(aFrom12A, aFrom12C);
-         assertSame(cl12A, aFrom12A.getClassLoader());
-         
-         Class<?> bFrom11A = cl11A.loadClass(CLASS_B);
-         Class<?> bFrom11B = cl11B.loadClass(CLASS_B);
-         Class<?> bFrom11C = cl11C.loadClass(CLASS_B);
-         Class<?> cFrom11A = cl11A.loadClass(CLASS_C);
-         Class<?> cFrom11B = cl11B.loadClass(CLASS_C);
-         Class<?> cFrom11C = cl11C.loadClass(CLASS_C);
-         assertSame(bFrom11A, bFrom11B);
-         assertSame(bFrom11A, bFrom11C);
-         assertSame(cl1B, bFrom11B.getClassLoader());
-         assertSame(cFrom11A, cFrom11B);
-         assertSame(cFrom11A, cFrom11C);
-         assertSame(cl1C, cFrom11C.getClassLoader());
-         
-         Class<?> bFrom12A = cl12A.loadClass(CLASS_B);
-         Class<?> bFrom12B = cl12B.loadClass(CLASS_B);
-         Class<?> bFrom12C = cl12C.loadClass(CLASS_B);
-         Class<?> cFrom12A = cl12A.loadClass(CLASS_C);
-         Class<?> cFrom12B = cl12B.loadClass(CLASS_C);
-         Class<?> cFrom12C = cl12C.loadClass(CLASS_C);
-         assertSame(bFrom12A, bFrom12B);
-         assertSame(bFrom12A, bFrom12C);
-         assertSame(cl12B, bFrom12B.getClassLoader());
-         assertSame(cFrom12A, cFrom12B);
-         assertSame(cFrom12A, cFrom12C);
-         assertSame(cl12C, cFrom12C.getClassLoader());
-         assertNotSame(bFrom11B, bFrom12B);
-         assertNotSame(cFrom11C, cFrom12C);
-      }
-      finally
-      {
-         unregisterClassLoader(parent);
-         unregisterClassLoader(cl1B);
-         unregisterClassLoader(cl1C);
-         unregisterClassLoader(cl2B);
-         unregisterClassLoader(cl2C);
-         unregisterClassLoader(cl11A);
-         unregisterClassLoader(cl11B);
-         unregisterClassLoader(cl11C);
-         unregisterClassLoader(cl12A);
-         unregisterClassLoader(cl12B);
-         unregisterClassLoader(cl12C);
-         
-         unregisterDomain(cl12A);
-         unregisterDomain(cl11A);
-         unregisterDomain(cl2B);
-         unregisterDomain(cl1B);
-      }
-   }
-   
-   public void testUclLoaderOrdering() throws Exception
-   {
-      ClassLoader globalA = null;
-      ClassLoader globalB = null;
-      ClassLoader globalC = null;
-      try
-      {
-         globalA = createClassLoader("A1", true, JAR_A_1);
-         globalB = createClassLoader("A2", true, JAR_A_1);
-         globalC = createClassLoader("A3", true, JAR_A_1);
-         
-         Class<?> aFromA = globalA.loadClass(CLASS_A);
-         Class<?> aFromB = globalB.loadClass(CLASS_A);
-         Class<?> aFromC = globalC.loadClass(CLASS_A);
-         assertSame(aFromA, aFromB);
-         assertSame(aFromA, aFromC);
-         assertSame(globalA, aFromA.getClassLoader());
-      }
-      finally
-      {
-         unregisterClassLoader(globalA);
-         unregisterClassLoader(globalB);
-         unregisterClassLoader(globalC);
-      }
-   }
-   
-   @Override
-   protected void registerModule(Module module)
-   {
-      domainRegistry.initMapsForModule(module);
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithUsesPackageSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithUsesPackageSanityTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithUsesPackageSanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,113 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.vfs.metadata.test.UsesPackageUnitTestCase using our test framework, 
- * ClassPoolWithUsesPackageTestCase replicates this with the javassist classpools
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithUsesPackageSanityTestCase extends JBossClClassPoolTest
-{
-
-   public ClassLoaderWithUsesPackageSanityTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassLoaderWithUsesPackageSanityTestCase.class);
-   }
-
-   public void testUsesImport() throws Exception
-   {
-      ClassLoader clA1 = null;
-      Result rA1 = new Result();
-      try
-      {
-         BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
-            createModule("a1").
-            createPackage(PACKAGE_A);
-         clA1 = createClassLoader(rA1, "A1", builderA1, JAR_A_1);
-         Class<?> classA = assertLoadClass(CLASS_A, clA1);
-
-         ClassLoader clA2 = null;
-         Result rA2 = new Result();
-         try
-         {
-            BundleInfoBuilder builderA2 = BundleInfoBuilder.getBuilder().
-            createModule("a2").
-            createUsesPackage(PACKAGE_A);
-
-            clA2 = createClassLoader(rA2, "A2", builderA2, JAR_A_1);
-            Class<?> classA1 = assertLoadClass(CLASS_A, clA1);
-            assertSame(classA, classA1);
-            classA1 = assertLoadClass(CLASS_A, clA2, clA1);
-            assertSame(classA, classA1);
-         }
-         finally
-         {
-            unregisterClassLoader(clA2);
-         }
-         assertNoClassLoader(rA2);
-         assertLoadClass(CLASS_A, clA1);
-      }
-      finally
-      {
-         unregisterClassLoader(clA1);
-      }
-      assertNoClassLoader(rA1);
-      //assertCannotLoadClass(this.getClass().getClassLoader(), SupportClasses.CLASS_A);
-   }
-   
-   public void testUsesNoImport() throws Exception
-   {
-      ClassLoader clA1 = null;
-      Result rA1 = new Result();
-      try
-      {
-         BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
-            createModule("a1").
-            createUsesPackage(PACKAGE_A);
-         clA1 = createClassLoader(rA1, "A1", builderA1, JAR_A_1);
-         assertLoadClass(CLASS_A, clA1);
-      }
-      finally
-      {
-         unregisterClassLoader(clA1);
-      }
-      assertNoClassLoader(rA1);
-      //assertCannotLoadClass(this.getClass().getClassLoader(), SupportClasses.CLASS_A);
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolTestScenario.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolTestScenario.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolTestScenario.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,161 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, 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.classpool.jbosscl.test;
-
-import java.net.URL;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import junit.framework.Assert;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
- * @version $Revision$
- */
-
-public class ClassPoolTestScenario extends TestScenario<CtClass, ClassPool>
-{
-   /*private static final JavassistTestClassLoader instance = new JavassistTestClassLoader();
-   public static final JavassistTestClassLoader getInstance()
-   {
-      return instance;
-   }*/
-   private JBossClClassPoolTest test = null;
-   
-   public ClassPoolTestScenario(JBossClClassPoolTest test)
-   {
-      this.test = test;
-   }
-   
-   public ClassPool cloneLoader(CtClass clazz)
-   {
-      return test.repository.registerClassLoader(clazz.getClassPool().getClassLoader());
-   }
-   
-   public ClassPool getLoader(ClassLoader classLoader)
-   {
-      return test.repository.registerClassLoader(classLoader);
-   }
-   
-   public ClassLoader getClassLoader(ClassPool classPool)
-   {
-      return classPool.getClassLoader();
-   }
-   
-   public String getClassName(CtClass clazz)
-   {
-      return clazz.getName();
-   }
-   
-   public ClassPool createLoader(Result result, String name, boolean importAll, URL... urls) throws Exception
-   {
-      return test.createClassPool(result, name, importAll, urls);
-   }
-   
-   public ClassPool createLoader(Result result, String name, boolean importAll, URL[] excludes, URL... urls) throws Exception
-   {
-      return test.createClassPool(result, name, importAll, excludes, urls);
-   }
-   
-   public ClassPool createLoader(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception
-   {
-      return test.createClassPool(result, name, importAll, packageCapability, urls);
-   }
-   
-   public ClassPool createLoader(Result result, String name, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      return test.createClassPool(result, name, builder, urls);
-   }
-   
-   public ClassPool createChildDomainParentFirstLoader(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentFirstClassPool(result, name, domainName, importAll, urls);
-   }
-   
-   public ClassPool createChildDomainParentFirstLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentFirstClassPool(result, name, domainName, parentDomainName, importAll, urls);
-   }
-   
-   public ClassPool createChildDomainParentFirstLoader(Result result, String name, String domainName, boolean importAll, String packageCapability, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentFirstClassPool(result, name, domainName, importAll, packageCapability, urls);
-   }
-   
-   public ClassPool createChildDomainParentFirstLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, String packageCapability, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentFirstClassPool(result, name, domainName, parentDomainName, importAll, packageCapability, urls);
-   }
-   
-   public ClassPool createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll,
-         URL... urls) throws Exception
-   {
-      return test.createChildDomainParentLastClassPool(result, name, domainName, importAll,urls);
-   }
-   
-   public ClassPool createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentLastClassPool(result, name, domainName, importAll, parent, urls);
-   }
-   
-   public ClassPool createChildDomainParentLastLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentLastClassPool(result, name, domainName, parentDomainName, importAll, urls);
-   }
-   
-   public ClassPool createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll, URL[] excludes, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentLastClassPool(result, name, domainName, importAll, excludes, urls);
-   }
-   
-   public CtClass getMethodReturnType(CtClass clazz, String methodName) throws Exception
-   {
-      return clazz.getDeclaredMethod(methodName).getReturnType();
-   }
-   
-   /* (non-Javadoc)
-    * @see org.jboss.test.classpool.support.TestClassLoader#loadClass(java.lang.Object, java.lang.String)
-    */
-   public CtClass loadClass(ClassPool classPool, ClassPool expectedClassPool, String className) throws Exception
-   {
-      Class<?> clazz = test.assertLoadClass(className, classPool.getClassLoader(), expectedClassPool.getClassLoader());
-      CtClass ctClass = test.assertLoadCtClass(className, classPool, expectedClassPool);
-      Assert.assertEquals(className, ctClass.getName());
-      Assert.assertEquals("Class has been loaded by the wrong class loader: " + className,
-            clazz.getClassLoader(), ctClass.getClassPool().getClassLoader());
-      return ctClass;
-   }
-   
-   public void unregister(ClassPool classPool, Result result)
-   {
-      if (classPool != null)
-      {
-         test.unregisterClassPool(classPool);
-         test.assertNoClassLoader(result);
-      }
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalDomainTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalDomainTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalDomainTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,535 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import javassist.ClassPool;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.dependency.test.HierarchicalDomainUnitTestCase using our test framework, 
- * ClassPoolWithHierarchicalDomainSanityTestCase replicates this with the javassist classpools
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithHierarchicalDomainTestCase extends JBossClClassPoolTest
-{
-   public ClassPoolWithHierarchicalDomainTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassPoolWithHierarchicalDomainTestCase.class);
-   }
-
-   public void testParentFirst() throws Exception
-   {
-      ClassPool poolParentA = null;
-      Result resultParentA = new Result();
-      try
-      {
-         poolParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
-         assertLoadCtClass(CLASS_A, poolParentA);
-         assertCannotLoadCtClass(CLASS_B, poolParentA);
-         
-         ClassPool poolChildA = null;
-         Result resultChildA = new Result();
-         final String childDomainName = "ChildDomain";
-         try
-         {
-            poolChildA = createChildDomainParentFirstClassPool(resultChildA, "aChild", childDomainName, true, JAR_A_2);
-            assertLoadCtClass(CLASS_A, poolParentA);
-            assertLoadCtClass(CLASS_A, poolChildA, poolParentA);
-            assertCannotLoadCtClass(CLASS_B, poolChildA);
-            
-            ClassPool poolB = null;
-            Result resultB = new Result();
-            try
-            {
-               BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-                  createRequirePackage(PACKAGE_A);
-               poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, builderB, JAR_B_1);
-               
-               assertLoadCtClass(CLASS_A, poolParentA);
-               assertLoadCtClass(CLASS_B, poolB);
-               assertLoadCtClass(CLASS_A, poolB, poolParentA);
-            }
-            finally
-            {
-               unregisterClassPool(poolB);
-            }
-            assertNoClassPool(resultB);
-         }
-         finally
-         {
-            unregisterClassPool(poolChildA);
-            unregisterDomain(childDomainName);
-         }
-         assertNoClassPool(resultChildA);
-      }
-      finally
-      {
-         unregisterClassPool(poolParentA);
-      }
-      assertNoClassPool(resultParentA);
-   }
-   
-   public void testParentLast() throws Exception
-   {
-      ClassPool clParentA = null;
-      Result resultParentA = new Result();
-      try
-      {
-         clParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
-         assertLoadCtClass(CLASS_A, clParentA);
-         assertCannotLoadCtClass(CLASS_B, clParentA);
-         
-         ClassPool poolChildA = null;
-         Result resultChildA = new Result();
-         final String childDomainName = "ChildDomain";
-         try
-         {
-            poolChildA = createChildDomainParentLastClassPool(resultChildA, "aChild", childDomainName, true, JAR_A_2);
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertLoadCtClass(CLASS_A, poolChildA);
-            assertCannotLoadCtClass(CLASS_B, poolChildA);
-            
-            ClassPool poolB = null;
-            Result resultB = new Result();
-            try
-            {
-               BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-                  createRequirePackage(PACKAGE_A);
-               poolB = createChildDomainParentLastClassPool(resultB, "b", childDomainName, builderB, JAR_B_1);
-               
-               assertLoadCtClass(CLASS_A, poolChildA);
-               assertLoadCtClass(CLASS_B, poolB);
-               assertLoadCtClass(CLASS_A, poolB, poolChildA);
-            }
-            finally
-            {
-               unregisterClassPool(poolB);
-            }
-            assertNoClassPool(resultB);
-         }
-         finally
-         {
-            unregisterClassPool(poolChildA);
-            unregisterDomain(childDomainName);
-         }
-         assertNoClassPool(resultChildA);
-      }
-      finally
-      {
-         unregisterClassPool(clParentA);
-      }
-      assertNoClassPool(resultParentA);
-   }
-   
-   public void testParentLastNotInChild() throws Exception
-   {
-      ClassPool clParentA = null;
-      Result resultParentA = new Result();
-      try
-      {
-         clParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
-         assertLoadCtClass(CLASS_A, clParentA);
-         assertCannotLoadCtClass(CLASS_B, clParentA);
-         
-         ClassPool poolB = null;
-         Result resultB = new Result();
-         final String childDomainName = "ChildDomain";
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequirePackage(PACKAGE_A);
-            poolB = createChildDomainParentLastClassPool(resultB, "b", childDomainName, builderB, JAR_B_1);
-            
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertLoadCtClass(CLASS_B, poolB);
-            assertLoadCtClass(CLASS_A, poolB, clParentA);
-         }
-         finally
-         {
-            unregisterClassPool(poolB);
-            unregisterDomain(childDomainName);
-         }
-         assertNoClassPool(resultB);
-      }
-      finally
-      {
-         unregisterClassPool(clParentA);
-      }
-      assertNoClassPool(resultParentA);
-   }
-   
-   public void testParentFirstWrongWayAround() throws Exception
-   {
-      ClassPool poolB = null;
-      Result resultB = new Result();
-      final String childDomainName = "ChildDomain";
-      try
-      {
-         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-            createRequirePackage(PACKAGE_A);
-         try
-         {
-            poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, builderB, JAR_B_1);
-            fail("Should be no loader");
-         }
-         catch(NoSuchClassLoaderException e)
-         {
-         }
-         assertNoClassPool(resultB);
-         
-         ClassPool clParentA = null;
-         Result resultParentA = new Result();
-         try
-         {
-            clParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertCannotLoadCtClass(CLASS_B, clParentA);
-            
-            poolB = assertClassPool(resultB.getFactory());
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertLoadCtClass(CLASS_A, poolB, clParentA);
-            assertLoadCtClass(CLASS_B, poolB);
-         }
-         finally
-         {
-            unregisterClassPool(clParentA);
-         }
-         assertNoClassPool(resultParentA);
-      }
-      finally
-      {
-         unregisterClassPool(poolB);
-         unregisterDomain(childDomainName);
-      }
-      assertNoClassPool(resultB);
-   }
-   
-   public void testParentLastWrongWayAround() throws Exception
-   {
-      ClassPool poolB = null;
-      Result resultB = new Result();
-      final String childDomainName = "ChildDomain";
-      try
-      {
-         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-            createRequirePackage(PACKAGE_A);
-         try
-         {
-            poolB = createChildDomainParentLastClassPool(resultB, "b", childDomainName, builderB, JAR_B_1);
-            fail("Should be no loader");
-         }
-         catch(NoSuchClassLoaderException e)
-         {
-         }
-         assertNoClassPool(resultB);
-         
-         ClassPool clParentA = null;
-         Result resultParentA = new Result();
-         try
-         {
-            clParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertCannotLoadCtClass(CLASS_B, clParentA);
-            
-            poolB = assertClassPool(resultB.getFactory());
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertLoadCtClass(CLASS_A, poolB, clParentA);
-            assertLoadCtClass(CLASS_B, poolB);
-         }
-         finally
-         {
-            unregisterClassPool(clParentA);
-         }
-         assertNoClassPool(resultParentA);
-      }
-      finally
-      {
-         unregisterClassPool(poolB);
-         unregisterDomain(childDomainName);
-      }
-   }
-   
-   public void testParentRedeploy() throws Exception
-   {
-      ClassPool poolB = null;
-      Result resultB = new Result();
-      final String childDomainName = "ChildDomain";
-      try
-      {
-         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-            createRequirePackage(PACKAGE_A);
-         try
-         {
-            poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, builderB, JAR_B_1);
-            fail("Should be no loader");
-         }
-         catch(NoSuchClassLoaderException e)
-         {
-         }
-         assertNoClassPool(resultB);
-
-         ClassPool clParentA = null;
-         Result resultParentA = new Result();
-         try
-         {
-            clParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertCannotLoadCtClass(CLASS_B, clParentA);
-            
-            poolB = assertClassPool(resultB.getFactory());
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertLoadCtClass(CLASS_A, poolB, clParentA);
-            assertLoadCtClass(CLASS_B, poolB);
-         }
-         finally
-         {
-            unregisterClassPool(clParentA);
-         }
-
-         assertNoClassPool(resultParentA);
-         assertNoClassPool(resultB);
-      
-         try
-         {
-            clParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertCannotLoadCtClass(CLASS_B, clParentA);
-            
-            poolB = assertClassPool(resultB.getFactory());
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertLoadCtClass(CLASS_A, poolB, clParentA);
-            assertLoadCtClass(CLASS_B, poolB);
-         }
-         finally
-         {
-            unregisterClassPool(clParentA);
-         }
-         assertNoClassPool(resultParentA);
-      }
-      finally
-      {
-         unregisterClassPool(poolB);
-         unregisterDomain(childDomainName);
-      }
-      assertNoClassPool(resultB);
-   }
-   
-   public void testParentOtherDomain() throws Exception
-   {
-      ClassPool clParentA = null;
-      Result resultParentA = new Result();
-      final String parentDomainName = "ParentDomain";
-      try
-      {
-         clParentA = createChildDomainParentFirstClassPool(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
-         assertLoadCtClass(CLASS_A, clParentA);
-         assertCannotLoadCtClass(CLASS_B, clParentA);
-         
-         ClassPool poolB = null;
-         Result resultB = new Result();
-         final String childDomainName = "ChildDomain";
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequirePackage(PACKAGE_A);
-            poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertLoadCtClass(CLASS_B, poolB);
-            assertLoadCtClass(CLASS_A, poolB, clParentA);
-         }
-         finally
-         {
-            unregisterClassPool(poolB);
-            unregisterDomain(childDomainName);
-         }
-      }
-      finally
-      {
-         unregisterClassPool(clParentA);
-         unregisterDomain(parentDomainName);
-      }
-   }
-   
-   public void testParentOtherDomainWithClassLoaderAdapter() throws Exception
-   {
-      ClassPool clParentA = null;
-      Result resultParentA = new Result();
-      final String parentDomainName = "ParentDomain";
-      try
-      {
-         clParentA = createChildDomainParentFirstClassPool(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
-         assertLoadCtClass(CLASS_A, clParentA);
-         assertCannotLoadCtClass(CLASS_B, clParentA);
-         
-         ClassPool poolB = null;
-         Result resultB = new Result();
-         final String childDomainName = "ChildDomain";
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequirePackage(PACKAGE_A);
-            poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertLoadCtClass(CLASS_B, poolB);
-            assertLoadCtClass(CLASS_A, poolB, clParentA);
-         }
-         finally
-         {
-            unregisterClassPool(poolB);
-            unregisterDomain(childDomainName);
-         }
-      }
-      finally
-      {
-         unregisterClassPool(clParentA);
-         unregisterDomain(parentDomainName);
-      }
-   }
-   
-   public void testParentOtherDomainLazy() throws Exception
-   {
-      ClassPool poolB = null;
-      Result resultB = new Result();
-      final String parentDomainName = "ParentDomain";
-      final String childDomainName = "ChildDomain";
-      try
-      {
-         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-            createRequirePackage(PACKAGE_A);
-         try
-         {
-            poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
-            fail("Should be no loader");
-         }
-         catch(NoSuchClassLoaderException e)
-         {
-         }
-         assertNoClassPool(resultB);
-         
-         ClassPool clParentA = null;
-         Result resultParentA = new Result();
-         try
-         {
-            clParentA = createChildDomainParentFirstClassPool(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertCannotLoadCtClass(CLASS_B, clParentA);
-
-            poolB = assertClassPool(resultB.getFactory());
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertCannotLoadCtClass(CLASS_B, clParentA);
-            assertLoadCtClass(CLASS_A, poolB, clParentA);
-         }
-         finally
-         {
-            unregisterClassPool(clParentA);
-            unregisterDomain(parentDomainName);
-         }
-         assertNoClassPool(resultParentA);
-      }
-      finally
-      {
-         unregisterClassPool(poolB);
-         unregisterDomain(childDomainName);
-      }
-      assertNoClassPool(resultB);
-   }
-
-   public void testParentRedeployOtherDomain() throws Exception
-   {
-      ClassPool poolB = null;
-      Result resultB = new Result();
-      final String parentDomainName = "ParentDomain";
-      final String childDomainName = "ChildDomain";
-      try
-      {
-         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-            createRequirePackage(PACKAGE_A);
-         try
-         {
-            poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
-            fail("Should be no loader");
-         }
-         catch(NoSuchClassLoaderException e)
-         {
-         }
-         assertNoClassPool(resultB);
-         
-         ClassPool clParentA = null;
-         Result resultParentA = new Result();
-         try
-         {
-            clParentA = createChildDomainParentFirstClassPool(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertCannotLoadCtClass(CLASS_B, clParentA);
-
-            poolB = assertClassPool(resultB.getFactory());
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertCannotLoadCtClass(CLASS_B, clParentA);
-            assertLoadCtClass(CLASS_A, poolB, clParentA);
-         }
-         finally
-         {
-            unregisterClassPool(clParentA);
-            unregisterDomain(parentDomainName);
-         }
-         assertNoClassPool(resultParentA);
-         assertNoClassPool(resultB);
-
-         try
-         {
-            clParentA = createChildDomainParentFirstClassPool(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertCannotLoadCtClass(CLASS_B, clParentA);
-
-            poolB = assertClassPool(resultB.getFactory());
-            assertLoadCtClass(CLASS_A, clParentA);
-            assertCannotLoadCtClass(CLASS_B, clParentA);
-            assertLoadCtClass(CLASS_A, poolB, clParentA);
-         }
-         finally
-         {
-            unregisterClassPool(clParentA);
-            unregisterDomain(parentDomainName);
-         }
-      }
-      finally
-      {
-         unregisterClassPool(poolB);
-         unregisterDomain(childDomainName);
-      }
-      assertNoClassPool(resultB);
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalParentLoaderTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalParentLoaderTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalParentLoaderTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,129 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-
-import java.net.URL;
-
-import javassist.ClassPool;
-import junit.framework.Test;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloader.spi.filter.ClassFilter;
-import org.jboss.test.classpool.support.NoMatchClassFilter;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloader.domain.test.HierarchicalParentLoaderUnitTestCase using our test framework, 
- * ClassPoolWithHierarchicalParentLoaderUnitTestCaseSanityTestCase replicates this with the javassist classpools
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithHierarchicalParentLoaderTestCase extends JBossClClassPoolTest
-{
-   public ClassPoolWithHierarchicalParentLoaderTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassPoolWithHierarchicalParentLoaderTestCase.class);
-   }
-   
-   public void testHierarchyBefore() throws Exception
-   {
-      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.BEFORE, true);
-   }
-   
-   
-   public void testHierarchyBeforeNotFound() throws Exception
-   {
-      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.BEFORE, false, false);
-   }
-   
-   public void testHierarchyAfterNotReached() throws Exception
-   {
-      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.AFTER_BUT_JAVA_BEFORE, false);
-   }
-   
-   public void testHierarchyAfterReached() throws Exception
-   {
-      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.AFTER_BUT_JAVA_BEFORE, null, true);
-   }
-   
-   public void testHierarchyFiltered() throws Exception
-   {
-      NoMatchClassFilter filter = new NoMatchClassFilter(CLASS_A);
-      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, new ParentPolicy(filter, ClassFilter.NOTHING), false);
-
-      assertTrue("Should have been filtered", filter.filtered);
-   }
-
-
-   private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean expectedParent) throws Exception
-   {
-      runTest(parentParentPolicy, childParentPolicy, true, JAR_A_2, expectedParent);
-   }
-   
-   private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean createParent, boolean expectedParent) throws Exception
-   {
-      runTest(parentParentPolicy, childParentPolicy, createParent, JAR_A_2, expectedParent);
-   }
-   
-   private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, URL url, boolean expectedParent) throws Exception
-   {
-      runTest(parentParentPolicy, childParentPolicy, true, null, expectedParent);
-   }
-   
-   private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean createParent, URL childURL, boolean expectedParent) throws Exception
-   {
-      final String parentName = "parent";
-      final String childName = "child";
-      ClassLoaderDomain parent = system.createAndRegisterDomain(parentName, parentParentPolicy);
-      ClassLoaderDomain child = system.createAndRegisterDomain(childName, childParentPolicy, parent);
-
-      ClassPool parentPool = null;
-      ClassPool childPool = null;
-      try
-      {
-         //Since the domain is created first, the first/last flag from these two methods is ignored, instead the
-         //policy used when creating the domain is used
-         if (createParent)
-         {
-            parentPool = createChildDomainParentLastClassPool("ParentLoader", parentName, true, JAR_A_1);
-         }
-         childPool = createChildDomainParentLastClassPool("ChildLoader", childName, parentName, true, childURL);
-         assertLoadCtClass(CLASS_A, childPool, expectedParent ? parentPool : childPool);
-      }
-      finally
-      {
-         unregisterClassPool(parentPool);
-         unregisterClassPool(childPool);
-         unregisterDomain(child);
-         unregisterDomain(parent);
-      }
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithModuleDependencyTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithModuleDependencyTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithModuleDependencyTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,361 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import javassist.ClassPool;
-import javassist.CtClass;
-import junit.framework.Test;
-
-import org.jboss.classloading.spi.version.VersionRange;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Reproduces the behavior found in ClassLoaderWithModuleDependencySanityTestCase
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithModuleDependencyTestCase extends JBossClClassPoolTest
-{
-   final static String STRING = String.class.getName();
-   
-   public ClassPoolWithModuleDependencyTestCase(String name)
-   {
-      super(name);
-   }
-
-   
-   public static Test suite()
-   {
-      return suite(ClassPoolWithModuleDependencyTestCase.class);
-   }
-   
-   public void testImportNoVersionCheck() throws Exception
-   {
-      ClassPool clA = null;
-      Result resultA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA").
-            createPackage(PACKAGE_A);
-         clA = createClassPool(resultA, "A", builderA, JAR_A_1);
-         
-         CtClass aFromA = assertLoadCtClass(CLASS_A, clA);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         
-         ClassPool clB = null;
-         Result resultB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createModule("ModuleB").
-               createRequireModule("ModuleA");
-            clB = createClassPool(resultB, "B", builderB, JAR_B_1);
-
-            CtClass aFromA1 = assertLoadCtClass(CLASS_A, clA, clA);
-            assertSame(aFromA, aFromA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertLoadCtClass(CLASS_B, clB, clB);
-            CtClass aFromB = assertLoadCtClass(CLASS_A, clB, clA);
-            assertSame(aFromA, aFromB);
-         }
-         finally
-         {
-            unregisterClassPool(clB);
-         }
-         CtClass aFromA1 = assertLoadCtClass(CLASS_A, clA);
-         assertSame(aFromA, aFromA1);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         
-         assertNoClassLoader(resultB);
-      }
-      finally
-      {
-         unregisterClassPool(clA);
-      }
-      assertNoClassLoader(resultA);
-   }
-   
-   public void testImportVersionCheck() throws Exception
-   {
-      ClassPool clA = null;
-      Result resultA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA", "1.0.0").
-            createPackage(PACKAGE_A);
-         clA = createClassPool(resultA, "A", builderA, JAR_A_1);
-         CtClass classA = assertLoadCtClass(CLASS_A, clA);
-         assertCannotLoadCtClass(CLASS_B, clA);
-
-         ClassPool clB = null;
-         Result resultB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequireModule("ModuleA", new VersionRange("1.0.0", "2.0.0")).
-               createPackage(PACKAGE_B);
-            clB = createClassPool(resultB, "B", builderB, JAR_B_1);
-            CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertLoadCtClass(CLASS_B, clB);
-            classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-         }
-         finally
-         {
-            unregisterClassPool(clB);
-         }
-         assertNoClassLoader(resultB);
-         CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadCtClass(CLASS_B, clA);
-      }
-      finally
-      {
-         unregisterClassPool(clA);
-      }
-      assertNoClassLoader(resultA);
-   }   
-
-   public void testImportVersionCheckFailed() throws Exception
-   {
-      ClassPool clA = null;
-      Result resultA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA", "3.0.0").
-            createPackage(PACKAGE_A);
-         clA = createClassPool(resultA, "A", builderA, JAR_A_1);
-         CtClass classA = assertLoadCtClass(CLASS_A, clA);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         Result resultB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequireModule("ModuleA", new VersionRange("1.0.0", "2.0.0")).
-               createPackage(PACKAGE_B);
-            try
-            {
-               createClassPool(resultB, "B", builderB, JAR_B_1);
-               fail("Should not have been able to create loader");
-            }
-            catch(NoSuchClassLoaderException expected)
-            {
-            }
-            CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertNoClassLoader(resultB);
-         }
-         finally
-         {
-            unregisterClassLoader("B");
-         }
-         assertNoClassLoader(resultB);
-
-         CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadCtClass(CLASS_B, clA);
-      }
-      finally
-      {
-         unregisterClassPool(clA);
-      }
-      assertNoClassLoader(resultA);
-   }
-   
-   //These are my extra tests
-   public void testSeveralModulesWithSamePackages() throws Exception
-   {
-      ClassPool clAModuleX = null;
-      ClassPool clAModuleA = null;
-      ClassPool clAModuleY = null;
-      Result rAX = new Result();
-      Result rAA = new Result();
-      Result rAY = new Result();
-
-      try
-      {
-         BundleInfoBuilder builderAX = BundleInfoBuilder.getBuilder().
-            createModule("ModuleX").
-            createPackage(PACKAGE_A);
-         clAModuleX = createClassPool(rAX, "X", builderAX, JAR_A_1);
-      
-         BundleInfoBuilder builderAA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA").
-            createPackage(PACKAGE_A);
-         clAModuleA = createClassPool(rAA, "A", builderAA, JAR_A_1);
-         
-         BundleInfoBuilder builderAY = BundleInfoBuilder.getBuilder().
-            createModule("ModuleY").
-            createPackage(PACKAGE_A);
-         clAModuleY = createClassPool(rAY, "Y", builderAY, JAR_A_1);
-      
-         CtClass classAX = assertLoadCtClass(CLASS_A, clAModuleX);
-         CtClass classAA = assertLoadCtClass(CLASS_A, clAModuleA);
-         CtClass classAY = assertLoadCtClass(CLASS_A, clAModuleY);
-         assertCannotLoadCtClass(CLASS_B, clAModuleX);
-         assertCannotLoadCtClass(CLASS_B, clAModuleA);
-         assertCannotLoadCtClass(CLASS_B, clAModuleY);
-         
-         ClassPool clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequireModule("ModuleA").
-               createPackage(PACKAGE_B);
-            clB = createClassPool(rB, "B", builderB, JAR_B_1);
-            CtClass classAX1 = assertLoadCtClass(CLASS_A, clAModuleX);
-            assertSame(classAX, classAX1);
-            CtClass classAA1 = assertLoadCtClass(CLASS_A, clAModuleA);
-            assertSame(classAA, classAA1);
-            CtClass classAY1 = assertLoadCtClass(CLASS_A, clAModuleY);
-            assertSame(classAY, classAY1);
-            assertCannotLoadCtClass(CLASS_B, clAModuleX);
-            assertCannotLoadCtClass(CLASS_B, clAModuleA);
-            assertCannotLoadCtClass(CLASS_B, clAModuleY);
-            
-            assertLoadCtClass(CLASS_B, clB, clB);
-            CtClass aFromB = assertLoadCtClass(CLASS_A, clB, clAModuleA);
-            assertSame(aFromB, classAA);
-         }
-         finally
-         {
-            unregisterClassPool(clB);
-         }
-         assertNoClassLoader(rB);
-
-         CtClass classAX1 = assertLoadCtClass(CLASS_A, clAModuleX);
-         assertSame(classAX, classAX1);
-         CtClass classAA1 = assertLoadCtClass(CLASS_A, clAModuleA);
-         assertSame(classAA, classAA1);
-         CtClass classAY1 = assertLoadCtClass(CLASS_A, clAModuleY);
-         assertSame(classAY, classAY1);
-         assertCannotLoadCtClass(CLASS_B, clAModuleX);
-         assertCannotLoadCtClass(CLASS_B, clAModuleA);
-         assertCannotLoadCtClass(CLASS_B, clAModuleY);
-      }
-      finally
-      {
-         unregisterClassPool(clAModuleY);
-         unregisterClassPool(clAModuleA);
-         unregisterClassPool(clAModuleX);
-      }
-      assertNoClassLoader(rAY);
-      assertNoClassLoader(rAA);
-      assertNoClassLoader(rAX);
-   }
-   
-   public void testSeveralModulesWithSameNamesDifferentVersions() throws Exception
-   {
-      ClassPool clAModuleA1 = null;
-      ClassPool clAModuleA2 = null;
-      ClassPool clAModuleA3 = null;
-      Result rA1 = new Result();
-      Result rA2 = new Result();
-      Result rA3 = new Result();
-
-      try
-      {
-         BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA", "1.0.0").
-            createPackage(PACKAGE_A);
-         clAModuleA1 = createClassPool(rA1, "X", builderA1, JAR_A_1);
-      
-         BundleInfoBuilder builderA2 = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA", "2.0.0").
-            createPackage(PACKAGE_A);
-         clAModuleA2 = createClassPool(rA2, "A", builderA2, JAR_A_1);
-         
-         BundleInfoBuilder builderA3 = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA", "3.0.0").
-            createPackage(PACKAGE_A);
-         clAModuleA3 = createClassPool(rA3, "Y", builderA3, JAR_A_1);
-      
-         CtClass classAX = assertLoadCtClass(CLASS_A, clAModuleA1);
-         CtClass classAA = assertLoadCtClass(CLASS_A, clAModuleA2);
-         CtClass classAY = assertLoadCtClass(CLASS_A, clAModuleA3);
-         assertCannotLoadCtClass(CLASS_B, clAModuleA1);
-         assertCannotLoadCtClass(CLASS_B, clAModuleA2);
-         assertCannotLoadCtClass(CLASS_B, clAModuleA3);
-         
-         ClassPool clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createRequireModule("ModuleA", new VersionRange("2.0.0", true, "3.0.0", false)).
-               createPackage(PACKAGE_B);
-            clB = createClassPool(rB, "B", builderB, JAR_B_1);
-            CtClass classAX1 = assertLoadCtClass(CLASS_A, clAModuleA1);
-            assertSame(classAX, classAX1);
-            CtClass classAA1 = assertLoadCtClass(CLASS_A, clAModuleA2);
-            assertSame(classAA, classAA1);
-            CtClass classAY1 = assertLoadCtClass(CLASS_A, clAModuleA3);
-            assertSame(classAY, classAY1);
-            assertCannotLoadCtClass(CLASS_B, clAModuleA1);
-            assertCannotLoadCtClass(CLASS_B, clAModuleA2);
-            assertCannotLoadCtClass(CLASS_B, clAModuleA3);
-            
-            assertLoadCtClass(CLASS_B, clB, clB);
-            CtClass aFromB = assertLoadCtClass(CLASS_A, clB, clAModuleA2);
-            assertSame(aFromB, classAA);
-         }
-         finally
-         {
-            unregisterClassPool(clB);
-         }
-         assertNoClassLoader(rB);
-
-         CtClass classAX1 = assertLoadCtClass(CLASS_A, clAModuleA1);
-         assertSame(classAX, classAX1);
-         CtClass classAA1 = assertLoadCtClass(CLASS_A, clAModuleA2);
-         assertSame(classAA, classAA1);
-         CtClass classAY1 = assertLoadCtClass(CLASS_A, clAModuleA3);
-         assertSame(classAY, classAY1);
-         assertCannotLoadCtClass(CLASS_B, clAModuleA1);
-         assertCannotLoadCtClass(CLASS_B, clAModuleA2);
-         assertCannotLoadCtClass(CLASS_B, clAModuleA3);
-      }
-      finally
-      {
-         unregisterClassPool(clAModuleA3);
-         unregisterClassPool(clAModuleA2);
-         unregisterClassPool(clAModuleA1);
-      }
-      assertNoClassLoader(rA1);
-      assertNoClassLoader(rA2);
-      assertNoClassLoader(rA3);
-   }
-
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithPackageDependencyTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithPackageDependencyTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithPackageDependencyTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,270 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import javassist.ClassPool;
-import javassist.CtClass;
-import junit.framework.Test;
-
-import org.jboss.classloading.spi.version.VersionRange;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Reproduces the behaviour found in ClassLoaderWithPackageDependencySanityTestCase 
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithPackageDependencyTestCase extends JBossClClassPoolTest
-{
-
-   public ClassPoolWithPackageDependencyTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassPoolWithPackageDependencyTestCase.class);
-   }
-
-   public void testImportNoVersionCheck() throws Exception
-   {
-      ClassPool clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA").
-            createPackage(PACKAGE_A);
-         clA = createClassPool(rA, "A", builderA, JAR_A_1);
-         CtClass classA = assertLoadCtClass(CLASS_A, clA);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         
-         ClassPool clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createPackage(PACKAGE_B).
-               createRequirePackage(PACKAGE_A);
-            clB = createClassPool(rB, "B", builderB, JAR_B_1);
-            CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertLoadCtClass(CLASS_B, clB);
-            CtClass aFromB = assertLoadCtClass(CLASS_A, clB, clA);
-            assertSame(classA, aFromB);
-         }
-         finally
-         {
-            unregisterClassPool(clB);
-         }
-         assertNoClassLoader(rB);
-         
-         CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadCtClass(CLASS_B, clA);
-      }
-      finally
-      {
-         unregisterClassPool(clA);
-      }
-      assertNoClassLoader(rA);
-   }
-   
-   public void testImportVersionCheck() throws Exception
-   {
-      ClassPool clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA").
-            createPackage(PACKAGE_A, "1.0.0");
-         clA = createClassPool(rA, "A", builderA, JAR_A_1);
-         CtClass classA = assertLoadCtClass(CLASS_A, clA);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         
-         ClassPool clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createPackage(PACKAGE_B).
-               createRequirePackage(PACKAGE_A, new VersionRange("1.0.0", "2.0.0"));
-            clB = createClassPool(rB, "B", builderB, JAR_B_1);
-            CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertLoadCtClass(CLASS_B, clB);
-            CtClass aFromB = assertLoadCtClass(CLASS_A, clB, clA);
-            assertSame(classA, aFromB);
-         }
-         finally
-         {
-            unregisterClassPool(clB);
-         }
-         assertNoClassLoader(rB);
-
-         assertLoadCtClass(CLASS_A, clA);
-         assertCannotLoadCtClass(CLASS_B, clA);
-      }
-      finally
-      {
-         unregisterClassPool(clA);
-      }
-      assertNoClassLoader(rA);
-   }
-   
-   public void testImportVersionCheckFailed() throws Exception
-   {
-      ClassPool clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("ModuleA").
-            createPackage(PACKAGE_A, "3.0.0");
-         clA = createClassPool(rA, "A", builderA, JAR_A_1);
-         CtClass classA = assertLoadCtClass(CLASS_A, clA);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createPackage(PACKAGE_B).
-               createRequirePackage(PACKAGE_A, new VersionRange("1.0.0", "2.0.0"));
-            try
-            {
-               createClassPool(rB, "B", builderB, JAR_B_1);
-               fail("Should not have been able to create loader");
-            }
-            catch(NoSuchClassLoaderException expected)
-            {
-            }
-            CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-         }
-         finally
-         {
-            unregisterClassLoader("B");
-         }
-         CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadCtClass(CLASS_B, clA);
-      }
-      finally
-      {
-         unregisterClassPool(clA);
-      }
-   }
-   
-   //These are mine
-   
-   public void testSeveralModulesWithSamePackagesDifferentVersions() throws Exception
-   {
-      ClassPool clA1 = null;
-      ClassPool clA2 = null;
-      ClassPool clA3 = null;
-      Result rA1 = new Result();
-      Result rA2 = new Result();
-      Result rA3 = new Result();
-      try
-      {
-         BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
-            createModule("PackageA").
-            createPackage(PACKAGE_A, "1.0.0");
-         clA1 = createClassPool(rA1, "A1", builderA1, JAR_A_1);
-         
-         BundleInfoBuilder builderA2 = BundleInfoBuilder.getBuilder().
-            createModule("PackageA").
-            createPackage(PACKAGE_A, "2.0.0");
-         clA2 = createClassPool(rA2, "A2", builderA2, JAR_A_1);
-         
-         BundleInfoBuilder builderA3 = BundleInfoBuilder.getBuilder().
-         createModule("PackageA").
-         createPackage(PACKAGE_A, "3.0.0");
-         clA3 = createClassPool(rA3, "A3", builderA3, JAR_A_1);
-                  
-         CtClass classA1 = assertLoadCtClass(CLASS_A, clA1);
-         CtClass classA2 = assertLoadCtClass(CLASS_A, clA2);
-         CtClass classA3 = assertLoadCtClass(CLASS_A, clA3);
-         assertCannotLoadCtClass(CLASS_B, clA1);
-         assertCannotLoadCtClass(CLASS_B, clA2);
-         assertCannotLoadCtClass(CLASS_B, clA3);
-         
-         ClassPool clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createPackage(PACKAGE_B).
-               createRequirePackage(PACKAGE_A, new VersionRange("1.0.0", false, "2.0.0", true));
-            clB = createClassPool(rB, "B", builderB, JAR_B_1);
-            CtClass classA11 = assertLoadCtClass(CLASS_A, clA1);
-            assertSame(classA1, classA11);
-            CtClass classA21 = assertLoadCtClass(CLASS_A, clA2);
-            assertSame(classA2, classA21);
-            CtClass classA31 = assertLoadCtClass(CLASS_A, clA3);
-            assertSame(classA3, classA31);
-            assertCannotLoadCtClass(CLASS_B, clA1);
-            assertCannotLoadCtClass(CLASS_B, clA2);
-            assertCannotLoadCtClass(CLASS_B, clA3);
-
-            assertLoadCtClass(CLASS_B, clB);
-            CtClass classAFromB = assertLoadCtClass(CLASS_A, clB, clA2);
-            assertSame(classA2, classAFromB);
-         }
-         finally
-         {
-            unregisterClassPool(clB);
-         }
-         assertNoClassLoader(rB);
-         CtClass classA11 = assertLoadCtClass(CLASS_A, clA1);
-         assertSame(classA1, classA11);
-         CtClass classA21 = assertLoadCtClass(CLASS_A, clA2);
-         assertSame(classA2, classA21);
-         CtClass classA31 = assertLoadCtClass(CLASS_A, clA3);
-         assertSame(classA3, classA31);
-         assertCannotLoadCtClass(CLASS_B, clA1);
-         assertCannotLoadCtClass(CLASS_B, clA2);
-         assertCannotLoadCtClass(CLASS_B, clA3);
-      }
-      finally
-      {
-         unregisterClassPool(clA3);
-         unregisterClassPool(clA2);
-         unregisterClassPool(clA1);
-      }
-      assertNoClassLoader(rA1);
-      assertNoClassLoader(rA2);
-      assertNoClassLoader(rA3);
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportModuleTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportModuleTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportModuleTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,227 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import javassist.ClassPool;
-import javassist.CtClass;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Reproduces the behaviour of ClassLoaderWithReExportModuleSanityTestCase
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithReExportModuleTestCase extends JBossClClassPoolTest
-{
-
-   public ClassPoolWithReExportModuleTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassPoolWithReExportModuleTestCase.class);
-   }
-
-   public void testReExport() throws Exception
-   {
-      ClassPool clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("a").
-            createPackage(PACKAGE_A);
-         clA = createClassPool(rA, "A", builderA, JAR_A_1);
-         CtClass classA = assertLoadCtClass(CLASS_A, clA);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         assertCannotLoadCtClass(CLASS_C, clA);
-         
-         ClassPool clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createModule("b").
-               createPackage(PACKAGE_B).
-               createReExportModule("a");
-            clB = createClassPool(rB, "B", builderB, JAR_B_1);
-            CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertCannotLoadCtClass(CLASS_C, clA);
-            classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            CtClass classB = assertLoadCtClass(CLASS_B, clB);
-            assertCannotLoadCtClass(CLASS_C, clB);
-            
-            ClassPool clC = null;
-            Result rC = new Result();
-            try
-            {
-               BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
-                  createRequireModule("b");
-               clC = createClassPool(rC, "C", builderC, JAR_C_1);
-               
-               classA1 = assertLoadCtClass(CLASS_A, clA);
-               assertSame(classA, classA1);
-               assertCannotLoadCtClass(CLASS_B, clA);
-               assertCannotLoadCtClass(CLASS_C, clA);
-               classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-               assertSame(classA, classA1);
-               CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
-               assertSame(classB, classB1);
-               assertCannotLoadCtClass(CLASS_C, clB);
-               classA1 = assertLoadCtClass(CLASS_A, clC, clA);
-               assertSame(classA, classA1);
-               classB1 = assertLoadCtClass(CLASS_B, clC, clB);
-               assertSame(classB, classB1);
-               assertLoadCtClass(CLASS_C, clC);
-            }
-            finally
-            {
-               unregisterClassPool(clC);
-            }
-            assertNoClassLoader(rC);
-            classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertCannotLoadCtClass(CLASS_C, clA);
-            classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
-            assertSame(classB, classB1);
-            assertCannotLoadCtClass(CLASS_C, clB);
-         }
-         finally
-         {
-            unregisterClassPool(clB);
-         }
-         assertNoClassLoader(rB);
-         CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         assertCannotLoadCtClass(CLASS_C, clA);
-      }
-      finally
-      {
-         unregisterClassPool(clA);
-      }
-      assertNoClassLoader(rA);
-   }
-   
-   public void testNoReExport() throws Exception
-   {
-      ClassPool clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("a").
-            createPackage(PACKAGE_A);
-         clA = createClassPool(rA, "A", builderA, JAR_A_1);
-         CtClass classA = assertLoadCtClass(CLASS_A, clA);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         
-         ClassPool clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createModule("b").
-               createPackage(PACKAGE_B).
-               createReExportModule("a");
-            clB = createClassPool(rB, "B", builderB, JAR_B_1);
-            CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertCannotLoadCtClass(CLASS_C, clA);
-            classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            CtClass classB = assertLoadCtClass(CLASS_B, clB);
-            assertCannotLoadCtClass(CLASS_C, clB);
-            
-            ClassPool clC = null;
-            Result rC = new Result();
-            try
-            {
-               BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
-                  createRequirePackage(PACKAGE_B);
-               clC = createClassPool(rC, "C", builderC, JAR_C_1);
-               
-               classA1 = assertLoadCtClass(CLASS_A, clA);
-               assertSame(classA, classA1);
-               assertCannotLoadCtClass(CLASS_B, clA);
-               assertCannotLoadCtClass(CLASS_B, clA);
-               classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-               assertSame(classA, classA1);
-               CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
-               assertSame(classB, classB1);
-               assertCannotLoadCtClass(CLASS_C, clB);
-               assertCannotLoadCtClass(CLASS_A, clC);
-               classB1 = assertLoadCtClass(CLASS_B, clC, clB);
-               assertSame(classB, classB1);
-               assertLoadCtClass(CLASS_C, clC);
-            }
-            finally
-            {
-               unregisterClassPool(clC);
-            }
-            assertNoClassLoader(rC);
-            classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertCannotLoadCtClass(CLASS_C, clA);
-            classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
-            assertSame(classB, classB1);
-            assertCannotLoadCtClass(CLASS_C, clB);
-         }
-         finally
-         {
-            unregisterClassPool(clB);
-         }
-         assertNoClassLoader(rB);
-         CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         assertCannotLoadCtClass(CLASS_C, clA);
-      }
-      finally
-      {
-         unregisterClassPool(clA);
-      }
-      assertNoClassLoader(rA);
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportPackageTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportPackageTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportPackageTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,228 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import javassist.ClassPool;
-import javassist.CtClass;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Reproduces ClassLoaderWithReExportPackageSanityTestCase 
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithReExportPackageTestCase extends JBossClClassPoolTest
-{
-
-   public ClassPoolWithReExportPackageTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassPoolWithReExportPackageTestCase.class);
-   }
-
-   public void testReExport() throws Exception
-   {
-      ClassPool clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("a").
-            createPackage(PACKAGE_A);
-         clA = createClassPool(rA, "A", builderA, JAR_A_1);
-         CtClass classA = assertLoadCtClass(CLASS_A, clA);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         assertCannotLoadCtClass(CLASS_C, clA);
-         
-         ClassPool clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createModule("b").
-               createPackage(PACKAGE_B).
-               createReExportPackage(PACKAGE_A);
-            
-            clB = createClassPool(rB, "B", builderB, JAR_B_1);
-            CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertCannotLoadCtClass(CLASS_C, clA);
-            classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            CtClass classB = assertLoadCtClass(CLASS_B, clB);
-            assertCannotLoadCtClass(CLASS_C, clB);
-            
-            ClassPool clC = null;
-            Result rC = new Result();
-            try
-            {
-               BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
-                  createRequireModule("b");
-               clC = createClassPool(rC, "C", builderC, JAR_C_1);
-               
-               classA1 = assertLoadCtClass(CLASS_A, clA);
-               assertSame(classA, classA1);
-               assertCannotLoadCtClass(CLASS_B, clA);
-               assertCannotLoadCtClass(CLASS_C, clA);
-               classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-               assertSame(classA, classA1);
-               CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
-               assertSame(classB, classB1);
-               assertCannotLoadCtClass(CLASS_C, clB);
-               classA1 = assertLoadCtClass(CLASS_A, clC, clA);
-               assertSame(classA, classA1);
-               classB1 = assertLoadCtClass(CLASS_B, clC, clB);
-               assertSame(classB, classB1);
-               assertLoadCtClass(CLASS_C, clC);
-            }
-            finally
-            {
-               unregisterClassPool(clC);
-            }
-            assertNoClassLoader(rC);
-            classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertCannotLoadCtClass(CLASS_C, clA);
-            classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
-            assertSame(classB, classB1);
-            assertCannotLoadCtClass(CLASS_C, clB);
-         }
-         finally
-         {
-            unregisterClassPool(clB);
-         }
-         assertNoClassLoader(rB);
-         CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         assertCannotLoadCtClass(CLASS_C, clA);
-      }
-      finally
-      {
-         unregisterClassPool(clA);
-      }
-      assertNoClassLoader(rA);
-   }
-   
-   public void testNoReExport() throws Exception
-   {
-      ClassPool clA = null;
-      Result rA = new Result();
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-            createModule("a").
-            createPackage(PACKAGE_A);
-         clA = createClassPool(rA, "A", builderA, JAR_A_1);
-         CtClass classA = assertLoadCtClass(CLASS_A, clA);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         assertCannotLoadCtClass(CLASS_C, clA);
-         
-         ClassPool clB = null;
-         Result rB = new Result();
-         try
-         {
-            BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-               createModule("b").
-               createPackage(PACKAGE_B).
-               createReExportModule("a");
-            clB = createClassPool(rB, "B", builderB, JAR_B_1);
-            CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertCannotLoadCtClass(CLASS_C, clA);
-            classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            CtClass classB = assertLoadCtClass(CLASS_B, clB);
-            assertCannotLoadCtClass(CLASS_C, clB);
-            
-            ClassPool clC = null;
-            Result rC = new Result();
-            try
-            {
-               BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
-                  createRequirePackage(PACKAGE_B);
-               clC = createClassPool(rC, "C", builderC, JAR_C_1);
-               
-               classA1 = assertLoadCtClass(CLASS_A, clA);
-               assertSame(classA, classA1);
-               assertCannotLoadCtClass(CLASS_B, clA);
-               assertCannotLoadCtClass(CLASS_C, clA);
-               classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-               assertSame(classA, classA1);
-               CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
-               assertSame(classB, classB1);
-               assertCannotLoadCtClass(CLASS_C, clB);
-               assertCannotLoadCtClass(CLASS_A, clC);
-               classB1 = assertLoadCtClass(CLASS_B, clC, clB);
-               assertSame(classB, classB1);
-               assertLoadCtClass(CLASS_C, clC);
-            }
-            finally
-            {
-               unregisterClassPool(clC);
-            }
-            assertNoClassLoader(rC);
-            classA1 = assertLoadCtClass(CLASS_A, clA);
-            assertSame(classA, classA1);
-            assertCannotLoadCtClass(CLASS_B, clA);
-            assertCannotLoadCtClass(CLASS_C, clA);
-            classA1 = assertLoadCtClass(CLASS_A, clB, clA);
-            assertSame(classA, classA1);
-            CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
-            assertSame(classB, classB1);
-            assertCannotLoadCtClass(CLASS_C, clB);
-         }
-         finally
-         {
-            unregisterClassPool(clB);
-         }
-         assertNoClassLoader(rB);
-         CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
-         assertSame(classA, classA1);
-         assertCannotLoadCtClass(CLASS_B, clA);
-         assertCannotLoadCtClass(CLASS_C, clA);
-      }
-      finally
-      {
-         unregisterClassPool(clA);
-      }
-      assertNoClassLoader(rA);
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,351 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_ROOT;
-
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.ProtectionDomain;
-import java.util.Collection;
-
-import javassist.ClassPool;
-import javassist.CodeConverter;
-import javassist.CtClass;
-import javassist.CtConstructor;
-import javassist.CtField;
-import javassist.CtMethod;
-import javassist.CtNewMethod;
-import javassist.Modifier;
-import javassist.scopedpool.ScopedClassPool;
-import junit.framework.Test;
-
-import org.jboss.classloading.spi.DomainClassLoader;
-import org.jboss.classpool.spi.ClassPoolRepository;
-import org.jboss.test.AbstractTestDelegate;
-import org.jboss.util.loading.Translator;
-
-/**
- * Test that field/constructor wrapper replacement works since there were some problems in AS5
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithReplaceReferencesTestCase extends JBossClClassPoolTest
-{
-   final static String STRING = String.class.getName();
-
-   public final static URL JAR_PARENT = getURLRelativeToProjectRoot("/replacereferences-parent.jar");
-
-   public final static URL JAR_CHILD = getURLRelativeToProjectRoot("/replacereferences-child.jar");
-
-   public final static String PACKAGE_REPLACEMENT = PACKAGE_ROOT + ".replacereferences";
-
-   public final static String PACKAGE_REPLACEMENT_CHILD = PACKAGE_REPLACEMENT + ".child";
-
-   public final static String PACKAGE_REPLACEMENT_PARENT = PACKAGE_REPLACEMENT + ".parent";
-
-   public final static String CLASS_INVOKED = PACKAGE_REPLACEMENT + ".Invoked";
-
-   public final static String CLASS_PARENT_CALLER = PACKAGE_REPLACEMENT_PARENT + ".ParentCaller";
-
-   public final static String CLASS_CHILD_CALLER = PACKAGE_REPLACEMENT_CHILD + ".ChildCaller";
-
-   public final String x = "org.jboss.test.classpool.support.excluded";
-
-   private final static Translator TRANSLATOR = new MyTranslator();
-
-   public ClassPoolWithReplaceReferencesTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassPoolWithReplaceReferencesTestCase.class);
-   }
-   
-   public void testParentLoadedParentDelegation() throws Exception
-   {
-      ClassPool globalPool = null;
-      ClassPool scopedPool = null;
-      try
-      {
-         system.setTranslator(TRANSLATOR);
-         globalPool = createClassPool("GLOBAL", true, JAR_PARENT);
-         scopedPool = createChildDomainParentFirstClassPool("SCOPED", "SCOPED", true, JAR_CHILD);
-
-         loadClassAndRunTest(CLASS_PARENT_CALLER, globalPool.getClassLoader());
-         loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
-      }
-      finally
-      {
-         unregisterClassPool(globalPool);
-         unregisterClassPool(scopedPool);
-         unregisterDomain(scopedPool);
-         system.setTranslator(null);
-      }
-   }
-
-   public void testParentLoadedNoParentDelegation() throws Exception
-   {
-      ClassPool globalPool = null;
-      ClassPool scopedPool = null;
-      try
-      {
-         system.setTranslator(TRANSLATOR);
-         globalPool = createClassPool("GLOBAL", true, JAR_PARENT);
-         scopedPool = createChildDomainParentLastClassPool("SCOPED", "SCOPED", true, JAR_CHILD);
-
-         loadClassAndRunTest(CLASS_PARENT_CALLER, globalPool.getClassLoader());
-         loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
-      }
-      finally
-      {
-         unregisterClassPool(globalPool);
-         unregisterClassPool(scopedPool);
-         unregisterDomain(scopedPool);
-         system.setTranslator(null);
-      }
-   }
-
-   public void testParentNotLoadedParentDelegation() throws Exception
-   {
-      ClassPool globalPool = null;
-      ClassPool scopedPool = null;
-      try
-      {
-         system.setTranslator(TRANSLATOR);
-         globalPool = createClassPool("GLOBAL", true, JAR_PARENT);
-         scopedPool = createChildDomainParentFirstClassPool("SCOPED", "SCOPED", true, JAR_CHILD);
-
-         loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
-      }
-      finally
-      {
-         unregisterClassPool(globalPool);
-         unregisterClassPool(scopedPool);
-         unregisterDomain(scopedPool);
-         system.setTranslator(null);
-      }
-   }
-
-   public void testParentNotLoadedNoParentDelegation() throws Exception
-   {
-      ClassPool globalPool = null;
-      ClassPool scopedPool = null;
-      try
-      {
-         system.setTranslator(TRANSLATOR);
-         globalPool = createClassPool("GLOBAL", true, JAR_PARENT);
-         scopedPool = createChildDomainParentLastClassPool("SCOPED", "SCOPED", true, JAR_CHILD);
-
-         loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
-      }
-      finally
-      {
-         unregisterClassPool(globalPool);
-         unregisterClassPool(scopedPool);
-         unregisterDomain(scopedPool);
-         system.setTranslator(null);
-      }
-   }
-
-   private void loadClassAndRunTest(String classname, ClassLoader loader) throws Exception
-   {
-      Class<?> caller = loader.loadClass(classname);
-      Method m = caller.getMethod("test");
-      m.invoke(null, new Object[]
-      {});
-   }
-
-   final static class MyTranslator implements Translator
-   {
-      public void unregisterClassLoader(DomainClassLoader loader)
-      {
-      }
-
-      public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined,
-            ProtectionDomain protectionDomain, byte[] classfileBuffer) throws Exception
-      {
-         if (!className.startsWith(PACKAGE_REPLACEMENT))
-         {
-            return null;
-         }
-         if (className.endsWith("Invoked"))
-         {
-            return null;
-         }
-
-         ClassPool pool = ClassPoolRepository.getInstance().registerClassLoader(loader);
-         CtClass clazz = pool.get(className);
-         if (className.endsWith("Caller"))
-         {
-            instrumentReplaceReferences(clazz);
-         }
-         else
-         {
-            instrumentCreateWrappers(clazz);
-         }
-
-         if (clazz.isModified())
-         {
-            return clazz.toBytecode();
-         }
-         return null;
-      }
-
-      private CtClass instrumentCreateWrappers(CtClass clazz)
-      {
-         try
-         {
-            if (!clazz.getName().startsWith(PACKAGE_REPLACEMENT))
-            {
-               return clazz;
-            }
-            addWrappersToClass(clazz);
-         }
-         catch (Exception e)
-         {
-            System.err.println("Exception creating wrappers for " + clazz);
-            e.printStackTrace();
-         }
-         return clazz;
-      }
-
-      private CtClass instrumentReplaceReferences(CtClass clazz) throws Exception
-      {
-         if (!clazz.getName().startsWith(PACKAGE_REPLACEMENT))
-         {
-            return clazz;
-         }
-         replaceReferences(clazz);
-         return clazz;
-      }
-
-      public void unregisterClassLoader(ClassLoader loader)
-      {
-      }
-
-      private void addWrappersToClass(CtClass clazz) throws Exception
-      {
-         addFieldWrappers(clazz);
-         addConstructorWrappers(clazz);
-      }
-
-      private void addFieldWrappers(CtClass clazz) throws Exception
-      {
-         CtClass objectCt = clazz.getClassPool().getCtClass(Object.class.getName());
-
-         for (CtField field : clazz.getFields())
-         {
-            if (field.getDeclaringClass() == objectCt)
-            {
-               continue;
-            }
-            CtMethod rmethod = 
-               CtNewMethod.make(
-                     Modifier.PUBLIC | Modifier.STATIC,
-                     CtClass.intType, 
-                     getFieldReadWrapperName(field.getName()),
-                     new CtClass[]{objectCt}, 
-                     null, 
-                     "{" + CLASS_INVOKED + ".invoked = true; return ((" + clazz.getName() + ")$1)." + field.getName() + ";}", 
-                     clazz);
-            clazz.addMethod(rmethod);
-
-
-            CtMethod wmethod = 
-               CtNewMethod.make(
-                     Modifier.PUBLIC | Modifier.STATIC,
-                     CtClass.voidType, 
-                     getFieldWriteWrapperName(field.getName()),
-                     new CtClass[]{objectCt, field.getType()}, 
-                     null,
-                     "{" + CLASS_INVOKED + ".invoked = true; ((" + clazz.getName() + ")$1)." + field.getName() + "=(int)$2;}", 
-                     clazz);
-            clazz.addMethod(wmethod);
-         }
-      }
-
-      private void addConstructorWrappers(CtClass clazz) throws Exception
-      {
-         for (CtConstructor ctor : clazz.getConstructors())
-         {
-            CtMethod wrapper = CtNewMethod.make(clazz, getConstructorName(clazz), ctor.getParameterTypes(), null,
-                  "{" + CLASS_INVOKED + ".invoked = true; return new " + clazz.getName() + "($$);}", clazz);
-            wrapper.setModifiers(Modifier.PUBLIC | Modifier.STATIC);
-            clazz.addMethod(wrapper);
-         }
-      }
-
-      private void replaceReferences(final CtClass clazz) throws Exception
-      {
-         CodeConverter conv = new CodeConverter();
-         ScopedClassPool pool = ClassPoolRepository.getInstance().getClassPoolFactory().
-               create(clazz.getClassPool(), ClassPoolRepository.getInstance());
-         Collection<String> refs = AccessController.doPrivileged(new PrivilegedAction<Collection<String>>() {
-
-            public Collection<String> run()
-            {
-               return clazz.getRefClasses();
-            }});
-         
-         for (String ref : refs)
-         {
-            if (ref.startsWith(PACKAGE_REPLACEMENT_CHILD) || ref.startsWith(PACKAGE_REPLACEMENT_PARENT))
-            {
-               if (ref.endsWith("Caller"))
-               {
-                  continue;
-               }
-               CtClass ctRef = pool.get(ref);
-               CtField[] fields = ctRef.getDeclaredFields();
-               for (CtField fld : fields)
-               {
-                  conv.replaceFieldRead(fld, ctRef, getFieldReadWrapperName(fld.getName()));
-                  conv.replaceFieldWrite(fld, ctRef, getFieldWriteWrapperName(fld.getName()));
-               }
-               conv.replaceNew(ctRef, ctRef, getConstructorName(ctRef));
-            }
-         }
-         clazz.instrument(conv);
-      }
-
-      private String getFieldReadWrapperName(String fieldName)
-      {
-         return fieldName + "_read";
-      }
-
-      private String getFieldWriteWrapperName(String fieldName)
-      {
-         return fieldName + "_write";
-      }
-
-      private String getConstructorName(CtClass clazz)
-      {
-         return clazz.getSimpleName() + "_new";
-      }
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,1069 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_D;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_C;
-
-import java.util.ArrayList;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.CtMethod;
-import javassist.NotFoundException;
-import junit.framework.Test;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.test.classpool.common.ClassFactory;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithRepositoryTestCase extends JBossClClassPoolTest
-{
-   final static String STRING = String.class.getName();
-   
-   public ClassPoolWithRepositoryTestCase(String name)
-   {
-      super(name);
-   }
-
-   
-   public static Test suite()
-   {
-      return suite(ClassPoolWithRepositoryTestCase.class);
-   }
-   
-   public void testGlobalScope() throws Exception
-   {
-      ClassPool poolA = null;
-      ClassPool poolB = null;
-      try
-      {
-         poolA = createClassPool("A", true, JAR_A_1);
-         poolB = createClassPool("B", true, JAR_B_1);
-         try
-         {
-            CtClass aFromA = poolA.get(CLASS_A);
-            assertNotNull(aFromA);
-            CtClass bFromA = poolA.get(CLASS_B);
-            assertNotNull(bFromA);
-            CtClass aFromB = poolB.get(CLASS_A);
-            CtClass bFromB = poolB.get(CLASS_B);
-            assertSame(aFromA, aFromB);
-            assertSame(poolA, aFromA.getClassPool());
-            assertSame(poolB, bFromB.getClassPool());
-
-            checkCanLoadString(poolA, poolB);
-         }
-         finally
-         {
-            unregisterClassPool(poolB);
-         }
-         CtClass aFromA = poolA.get(CLASS_A);
-         assertNotNull(aFromA);
-
-         assertCannotLoadCtClass(CLASS_B, poolA);
-      }
-      finally
-      {
-         unregisterClassPool(poolA);
-      }
-   }
-   
-   public void testChildDomain() throws Exception
-   {
-      ClassPool poolA = null;
-      ClassPool poolB = null;
-      ClassLoaderDomain childDomain = null;
-      ClassPool poolC = null;
-      try
-      {
-         poolA = createClassPool("A", true, JAR_A_1);
-         poolB = createClassPool("B", true, JAR_B_1);
-         poolC = createChildDomainParentFirstClassPool("C", "CHILD", true, JAR_C_1);
-         
-         childDomain = getChildDomainForPool(poolC);
-         assertNotNull(childDomain);
-         assertSame(system.getDefaultDomain(), childDomain.getParent());
-
-         CtClass aFromA = poolA.get(CLASS_A);
-         assertNotNull(aFromA);
-         CtClass bFromB = poolB.get(CLASS_B);
-         assertNotNull(bFromB);
-         CtClass cFromC = poolC.get(CLASS_C);
-         assertNotNull(cFromC);
-         CtClass aFromC = poolC.get(CLASS_A);
-         assertNotNull(aFromC);
-         CtClass bFromC = poolC.get(CLASS_B);
-         assertNotNull(bFromC);
-         
-         assertSame(aFromA, aFromC);
-         assertSame(bFromB, bFromC);
-         assertSame(poolA, aFromA.getClassPool());
-         assertSame(poolB, bFromB.getClassPool());
-         assertSame(poolC, cFromC.getClassPool());
-         
-         assertCannotLoadCtClass(CLASS_C, poolA);
-         assertCannotLoadCtClass(CLASS_C, poolB);
-
-         checkCanLoadString(poolA, poolB);
-         checkCanLoadString(poolB, poolC);
-      }
-      finally
-      {
-         unregisterClassPool(poolA);
-         unregisterClassPool(poolB);
-         unregisterClassPool(poolC);
-         unregisterDomain(childDomain.getName());
-      }
-   }
-   
-   public void testSiblingDomains() throws Exception
-   {
-      ClassPool poolA = null;
-      ClassPool poolB = null;
-      ClassLoaderDomain domainA = null;
-      ClassLoaderDomain domainB = null;
-      try
-      {
-         poolA = createChildDomainParentFirstClassPool("A", "ChildA", true, JAR_A_1);
-         poolB = createChildDomainParentLastClassPool("B", "ChildB", true, JAR_B_1);
-
-         domainA = getChildDomainForPool(poolA);
-         assertNotNull(domainA);
-         assertSame(system.getDefaultDomain(), domainA.getParent());
-         domainB = getChildDomainForPool(poolB);
-         assertNotNull(domainB);
-         assertSame(system.getDefaultDomain(), domainB.getParent());
-         assertNotSame(domainA, domainB);
-
-         CtClass clazzA = poolA.get(CLASS_A);
-         assertSame(poolA, clazzA.getClassPool());
-         CtClass clazzB = poolB.get(CLASS_B);
-         assertSame(poolB, clazzB.getClassPool());
-         assertCannotLoadCtClass(CLASS_B, poolA);
-         assertCannotLoadCtClass(CLASS_A, poolB);
-
-         checkCanLoadString(poolA, poolB);
-      }
-      finally
-      {
-         unregisterClassPool(poolA);
-         unregisterClassPool(poolB);
-         unregisterDomain(poolA);
-         unregisterDomain(poolB);
-      }
-   }
-   
-   public void testChildWithNewClassesInParent() throws Exception
-   {
-      ClassPool globalPool = null;
-      ClassPool scopedPool = null;
-      try
-      {
-         scopedPool = createChildDomainParentFirstClassPool("SCOPED", "SCOPED", true, JAR_B_1);
-         assertCannotLoadCtClass(CLASS_A, scopedPool);
-         
-         globalPool = createClassPool("GLOBAL", true, JAR_A_1);
-
-         CtClass aFromChild = scopedPool.get(CLASS_A);
-         assertNotNull(aFromChild);
-         CtClass aFromParent = globalPool.get(CLASS_A);
-         assertNotNull(aFromParent);
-         assertSame(aFromChild, aFromParent);
-         assertSame(globalPool, aFromParent.getClassPool());
-      }
-      finally
-      {
-         unregisterClassPool(globalPool);
-         unregisterClassPool(scopedPool);
-         unregisterDomain(scopedPool);
-      }
-   }
-   
-   public void testChildOverrideWithParentDelegation() throws Exception
-   {
-      ClassPool globalPool = null;
-      ClassPool scopedPool = null;
-      try
-      {
-         globalPool = createClassPool("GLOBAL", true, JAR_A_1);
-         scopedPool = createChildDomainParentFirstClassPool("SCOPED", "SCOPED", true, JAR_B_1);
-         CtClass aFromParent = globalPool.get(CLASS_A);
-         assertNotNull(aFromParent);
-         CtClass aFromChild = scopedPool.get(CLASS_A);
-         assertNotNull(aFromChild);
-         assertSame(aFromParent, aFromChild);
-         assertSame(globalPool, aFromParent.getClassPool());
-      }
-      finally
-      {
-         unregisterClassPool(globalPool);
-         unregisterClassPool(scopedPool);
-         unregisterDomain(scopedPool);
-      }
-   }
-   
-   public void testURLChildOfGlobalUcl() throws Exception
-   {
-      ClassPool global = null;
-      ClassPool childA = null;
-      ClassPool childB = null;
-      try
-      {
-         global = createClassPool("GLOBAL", true, JAR_A_1);
-         childA = createChildURLClassPool(global, JAR_B_1);
-         
-         CtClass aFromA = childA.get(CLASS_A);
-         assertSame(global, aFromA.getClassPool());
-         CtClass bFromA = childA.get(CLASS_B);
-         assertSame(childA, bFromA.getClassPool());
-         
-         childB = createChildURLClassPool(global, JAR_A_2);
-         CtClass aFromB = childB.get(CLASS_A);
-         assertSame(global, aFromB.getClassPool());
-      }
-      finally
-      {
-         unregisterClassPool(global);
-         unregisterClassPool(childA);
-         unregisterClassPool(childB);
-      }
-   }
-   
-   public void testChildOverrideWithNoParentDelegation() throws Exception
-   {
-      ClassPool globalPool = null;
-      ClassPool scopedPool = null;
-      try
-      {
-         globalPool = createClassPool("GLOBAL", true, JAR_A_1);
-         scopedPool = createChildDomainParentLastClassPool("CHILD", "CHILD", true, JAR_A_1);
-         CtClass aFromParent = globalPool.get(CLASS_A);
-         assertNotNull(aFromParent);
-         CtClass aFromChild = scopedPool.get(CLASS_A);
-         assertNotNull(aFromChild);
-         assertNotSame(aFromParent, aFromChild);
-         assertSame(globalPool, aFromParent.getClassPool());
-         assertSame(scopedPool, aFromChild.getClassPool());
-      }
-      finally
-      {
-         unregisterClassPool(globalPool);
-         unregisterClassPool(scopedPool);
-         unregisterDomain(scopedPool);
-      }
-   }
-
-
-   public void testUndeploySibling() throws Exception
-   {
-      ClassPool poolA = null;
-      ClassPool poolB = null;
-      try
-      {
-         try
-         {
-            poolA = createClassPool("A", true, JAR_A_1);
-            assertCannotLoadCtClass(CLASS_B, poolA);
-            
-            poolB = createClassPool("B", true, JAR_B_1);
-            CtClass bFromA = poolA.get(CLASS_B);
-            assertSame(poolB, bFromA.getClassPool());
-         }
-         finally
-         {
-            unregisterClassPool(poolB);
-         }
-         assertCannotLoadCtClass(CLASS_B, poolA);
-      }
-      finally
-      {
-         unregisterClassPool(poolA);
-      }
-   }
-
-   
-   public void testUndeployParentDomainClassLoader() throws Exception
-   {
-      ClassPool globalA = null;
-      ClassPool globalB = null;
-      ClassPool child = null;
-      try
-      {
-         try
-         {
-            globalA = createClassPool("A", true, JAR_A_1);
-            assertCannotLoadCtClass(CLASS_B, globalA);
-            
-            child = createChildDomainParentLastClassPool("C", "C", true, JAR_C_1);
-            assertCannotLoadCtClass(CLASS_B, child);
-            
-            globalB = createClassPool("B", true, JAR_B_1);
-            CtClass bFromChild = child.get(CLASS_B);
-            CtClass bFromA = globalA.get(CLASS_B);
-            assertSame(globalB, bFromA.getClassPool());
-            assertSame(bFromA, bFromChild);
-         }
-         finally
-         {
-            unregisterClassPool(globalB);
-         }
-         assertCannotLoadCtClass(CLASS_B, child);
-      }
-      finally
-      {
-         unregisterClassPool(globalA);
-         unregisterClassPool(child);
-         unregisterDomain(child);
-      }
-   }
-   
-   
-   public void testSeveralLevelsOfDomain() throws Exception
-   {
-      ClassPool parent = null;
-      ClassPool cl1B = null;
-      ClassPool cl1C = null;
-      ClassPool cl2B = null;
-      ClassPool cl2C = null;
-      ClassPool cl11A = null;
-      ClassPool cl11B = null;
-      ClassPool cl11C = null;
-      ClassPool cl12A = null;
-      ClassPool cl12B = null;
-      ClassPool cl12C = null;
-      
-      try
-      {
-         parent = createClassPool("A", true, JAR_A_1);
-         CtClass aFromParent = parent.get(CLASS_A);
-         assertSame(parent, aFromParent.getClassPool());
-         
-         final String domain1 = "1";
-         cl1B = createChildDomainParentFirstClassPool("1B", domain1, true, JAR_B_1);
-         cl1C =  createChildDomainParentFirstClassPool("1C", domain1, true, JAR_C_1);
-         CtClass aFrom1B = cl1B.get(CLASS_A);
-         CtClass bFrom1B = cl1B.get(CLASS_B);
-         CtClass cFrom1B = cl1B.get(CLASS_C);
-         CtClass aFrom1C = cl1C.get(CLASS_A);
-         CtClass bFrom1C = cl1C.get(CLASS_B);
-         CtClass cFrom1C = cl1C.get(CLASS_C);
-         assertSame(aFromParent, aFrom1B);
-         assertSame(aFromParent, aFrom1C);
-         assertSame(bFrom1B, bFrom1C);
-         assertSame(cFrom1B, cFrom1C);
-         assertSame(cl1B, bFrom1B.getClassPool());
-         assertSame(cl1C, cFrom1B.getClassPool());
-         
-         
-         final String domain2 = "2";
-         cl2B = createChildDomainParentFirstClassPool("2B", domain2, true, JAR_B_1);
-         cl2C = createChildDomainParentFirstClassPool("2C", domain2, true, JAR_C_1);
-         CtClass aFrom2B = cl2B.get(CLASS_A);
-         CtClass bFrom2B = cl2B.get(CLASS_B);
-         CtClass cFrom2B = cl2B.get(CLASS_C);
-         CtClass aFrom2C = cl2C.get(CLASS_A);
-         CtClass bFrom2C = cl2C.get(CLASS_B);
-         CtClass cFrom2C = cl2C.get(CLASS_C);
-         assertSame(aFromParent, aFrom2B);
-         assertSame(aFromParent, aFrom2C);
-         assertSame(bFrom2B, bFrom2C);
-         assertSame(cFrom2B, cFrom2C);
-         assertSame(cl2B, bFrom2B.getClassPool());
-         assertSame(cl2C, cFrom2B.getClassPool());
-         assertNotSame(bFrom1B, bFrom2B);
-         assertNotSame(bFrom2C, bFrom1C);
-         assertNotSame(cFrom2C, cFrom1C);
-         
-         final String domain11 = "11";
-         cl11A = createChildDomainParentFirstClassPool("11A", domain11, domain1, true, JAR_A_2);
-         cl11B = createChildDomainParentFirstClassPool("11B", domain11, domain1, true, JAR_B_2);
-         cl11C = createChildDomainParentFirstClassPool("11C", domain11, domain1, true, JAR_C_2);
-         final String domain12 = "12";
-         cl12A = createChildDomainParentLastClassPool("12A", domain12, domain1, true, JAR_A_2);
-         cl12B = createChildDomainParentLastClassPool("12B", domain12, domain1, true, JAR_B_2);
-         cl12C = createChildDomainParentLastClassPool("12C", domain12, domain1, true, JAR_C_2);
-         CtClass aFrom11A = cl11A.get(CLASS_A);
-         CtClass aFrom11B = cl11B.get(CLASS_A);
-         CtClass aFrom11C = cl11C.get(CLASS_A);
-         assertSame(aFromParent, aFrom11A);
-         assertSame(aFromParent, aFrom11B);
-         assertSame(aFromParent, aFrom11C);
-         CtClass aFrom12A = cl12A.get(CLASS_A);
-         CtClass aFrom12B = cl12B.get(CLASS_A);
-         CtClass aFrom12C = cl12C.get(CLASS_A);
-         assertNotSame(aFromParent, aFrom12A);
-         assertSame(aFrom12A, aFrom12B);
-         assertSame(aFrom12A, aFrom12C);
-         assertSame(cl12A, aFrom12A.getClassPool());
-         
-         CtClass bFrom11A = cl11A.get(CLASS_B);
-         CtClass bFrom11B = cl11B.get(CLASS_B);
-         CtClass bFrom11C = cl11C.get(CLASS_B);
-         CtClass cFrom11A = cl11A.get(CLASS_C);
-         CtClass cFrom11B = cl11B.get(CLASS_C);
-         CtClass cFrom11C = cl11C.get(CLASS_C);
-         assertSame(bFrom11A, bFrom11B);
-         assertSame(bFrom11A, bFrom11C);
-         assertSame(cl1B, bFrom11B.getClassPool());
-         assertSame(cFrom11A, cFrom11B);
-         assertSame(cFrom11A, cFrom11C);
-         assertSame(cl1C, cFrom11C.getClassPool());
-         
-         CtClass bFrom12A = cl12A.get(CLASS_B);
-         CtClass bFrom12B = cl12B.get(CLASS_B);
-         CtClass bFrom12C = cl12C.get(CLASS_B);
-         CtClass cFrom12A = cl12A.get(CLASS_C);
-         CtClass cFrom12B = cl12B.get(CLASS_C);
-         CtClass cFrom12C = cl12C.get(CLASS_C);
-         assertSame(bFrom12A, bFrom12B);
-         assertSame(bFrom12A, bFrom12C);
-         assertSame(cl12B, bFrom12B.getClassPool());
-         assertSame(cFrom12A, cFrom12B);
-         assertSame(cFrom12A, cFrom12C);
-         assertSame(cl12C, cFrom12C.getClassPool());
-         assertNotSame(bFrom11B, bFrom12B);
-         assertNotSame(cFrom11C, cFrom12C);
-      }
-      finally
-      {
-         unregisterClassPool(parent);
-         unregisterClassPool(cl1B);
-         unregisterClassPool(cl1C);
-         unregisterClassPool(cl2B);
-         unregisterClassPool(cl2C);
-         unregisterClassPool(cl11A);
-         unregisterClassPool(cl11B);
-         unregisterClassPool(cl11C);
-         unregisterClassPool(cl12A);
-         unregisterClassPool(cl12B);
-         unregisterClassPool(cl12C);
-         
-         unregisterDomain(cl12A);
-         unregisterDomain(cl11A);
-         unregisterDomain(cl2B);
-         unregisterDomain(cl1B);
-      }
-   }
-
-   
-   public void testUclLoaderOrdering() throws Exception
-   {
-      ClassPool globalA = null;
-      ClassPool globalB = null;
-      ClassPool globalC = null;
-      try
-      {
-         globalA = createClassPool("A", true, JAR_A_1);
-         globalB = createClassPool("B", true, JAR_A_1);
-         globalC = createClassPool("C", true, JAR_A_1);
-         
-         CtClass aFromA = globalA.get(CLASS_A);
-         CtClass aFromB = globalB.get(CLASS_A);
-         CtClass aFromC = globalC.get(CLASS_A);
-         assertSame(aFromA, aFromB);
-         assertSame(aFromA, aFromC);
-         assertSame(globalA, aFromA.getClassPool());
-      }
-      finally
-      {
-         unregisterClassPool(globalA);
-         unregisterClassPool(globalB);
-         unregisterClassPool(globalC);
-      }
-   }
-
-   public void testSimpleGeneratingClass() throws Exception
-   {
-   
-      ClassPool global = null;
-      try
-      {
-         final String classname = CLASS_A + "XYZ";
-         global = createClassPool("A", true, JAR_A_1);
-         CtClass newCtClass = global.makeClass(classname);
-         Class<?> newClass = newCtClass.toClass();
-         Class<?> foundClass = global.getClassLoader().loadClass(classname);
-         assertSame(newClass, foundClass);
-      }
-      finally
-      {
-         unregisterClassPool(global);
-      }
-   }
-
-   public void testGeneratingClassAndFindInSameDomain() throws Exception
-   {
-      ClassPool globalA = null;
-      ClassPool globalB = null;
-      try
-      {
-         final String classnameA = PACKAGE_A + ".NewClassA";
-         final String classnameB = PACKAGE_B + ".NewClassB";
-         globalA = createClassPool("A", true, JAR_A_1);
-         globalB = createClassPool("B", true, JAR_B_1);
-         
-         CtClass newCtClassA = globalA.makeClass(classnameA);
-         Class<?> newClassA = newCtClassA.toClass();
-         assertSame(globalA.getClassLoader(), newClassA.getClassLoader());
-         assertSame(newClassA, globalA.getClassLoader().loadClass(classnameA));
-         assertSame(newClassA, globalB.getClassLoader().loadClass(classnameA));
-
-         CtClass newCtClassB = globalB.makeClass(classnameB);
-         Class<?> newClassB = newCtClassB.toClass();
-         assertSame(globalB.getClassLoader(), newClassB.getClassLoader());
-         assertSame(newClassB, globalA.getClassLoader().loadClass(classnameB));
-         assertSame(newClassB, globalB.getClassLoader().loadClass(classnameB));
-      }
-      finally
-      {
-         unregisterClassPool(globalA);
-         unregisterClassPool(globalB);
-      }
-   }
-
-   public void testGeneratingClassAndFindPreviouslyBlacklistedInSameDomain() throws Exception
-   {
-      ClassPool globalA = null;
-      ClassPool globalB = null;
-      try
-      {
-         final String classnameA = PACKAGE_A + ".NewClassA";
-         final String classnameB = PACKAGE_B + ".NewClassB";
-         globalA = createClassPool("A", true, JAR_A_1);
-         globalB = createClassPool("B", true, JAR_B_1);
-
-         assertCannotLoadClass(classnameA, globalA.getClassLoader());
-         assertCannotLoadClass(classnameB, globalA.getClassLoader());
-         assertCannotLoadClass(classnameA, globalB.getClassLoader());
-         assertCannotLoadClass(classnameB, globalB.getClassLoader());
-         
-         CtClass newCtClassA = globalA.makeClass(classnameA);
-         Class<?> newClassA = newCtClassA.toClass();
-         assertSame(globalA.getClassLoader(), newClassA.getClassLoader());
-         assertSame(newClassA, globalA.getClassLoader().loadClass(classnameA));
-         assertSame(newClassA, globalB.getClassLoader().loadClass(classnameA));
-
-         CtClass newCtClassB = globalB.makeClass(classnameB);
-         Class<?> newClassB = newCtClassB.toClass();
-         assertSame(globalB.getClassLoader(), newClassB.getClassLoader());
-         assertSame(newClassB, globalA.getClassLoader().loadClass(classnameB));
-         assertSame(newClassB, globalB.getClassLoader().loadClass(classnameB));
-      }
-      finally
-      {
-         unregisterClassPool(globalA);
-         unregisterClassPool(globalB);
-      }
-   }
-
-   public void testGeneratingCrossDomainClassHierarchy() throws Exception
-   {
-      ClassPool global = null;
-      ClassPool child1 = null;
-      ClassPool child2 = null;
-      try
-      {
-         final String parentName = PACKAGE_A + ".Parent";
-         final String childName = PACKAGE_C + ".Child";
-         global = createClassPool("A", true, JAR_A_1);
-         child1 = createChildDomainParentLastClassPool("C1", "C1", true, JAR_B_1);
-         child2 = createChildDomainParentLastClassPool("C2", "C2", "C1", true, JAR_C_1);
-         
-         assertCannotLoadCtClass(parentName, global);
-         assertCannotLoadCtClass(parentName, child1);
-         assertCannotLoadCtClass(parentName, child2);
-         assertCannotLoadCtClass(childName, child2);
-         
-         CtClass parentClass = global.makeClass(parentName);
-         
-         CtClass childClass = child2.makeClass(childName);
-         childClass.setSuperclass(parentClass);
-         
-         CtClass parentFromGlobal = global.get(parentName);
-         assertSame(global, parentFromGlobal.getClassPool());
-         assertSame(parentClass, parentFromGlobal);
-         
-         CtClass childFromChild2 = child2.get(childName);
-         assertSame(child2, childFromChild2.getClassPool());
-         assertSame(childClass, childFromChild2);
-         
-         assertCannotLoadCtClass(childName, global);
-         assertCannotLoadCtClass(childName, child1);
-         
-         CtClass parentFromChildA = childClass.getSuperclass();
-         assertSame(parentClass, parentFromChildA);
-       
-         CtClass parentFromChildB = child2.get(parentName);
-         assertSame(parentClass, parentFromChildB);
-         
-         Class<?> parentClazz = parentClass.toClass();
-         assertSame(global.getClassLoader(), parentClazz.getClassLoader());
-         
-         Class<?> childClazz = childClass.toClass();
-         assertSame(child2.getClassLoader(), childClazz.getClassLoader());
-         
-         Class<?> parentClazzFromParent = global.getClassLoader().loadClass(parentName);
-         assertSame(parentClazz, parentClazzFromParent);
-         
-         Class<?> parentClazzFromChild = child2.getClassLoader().loadClass(parentName);
-         assertSame(parentClazz, parentClazzFromChild);
-         
-         Class<?> childClazzFromChild = child2.getClassLoader().loadClass(childName);
-         assertSame(childClazz, childClazzFromChild);
-      }
-      finally
-      {
-         unregisterClassPool(global);
-         unregisterClassPool(child1);
-         unregisterClassPool(child2);
-         unregisterDomain(child1);
-         unregisterDomain(child2);
-      }
-   }
-   
-   public void testGeneratingClassInMyPackagesInDelegatingPool() throws Exception
-   {
-      ClassPool globalA = null;
-      ClassPool globalB = null;
-      ClassPool child = null;
-      try
-      {
-         final String aClassName = PACKAGE_A + ".Parent";
-         final String bClassName = PACKAGE_B + ".BClazz";
-         globalA = createClassPool("A", true, JAR_A_1);
-         globalB = createClassPool("B", true, JAR_B_1);
-         child = createChildURLClassPool(globalA, JAR_C_1);
-         
-         
-         assertCannotLoadCtClass(aClassName, globalA);
-         assertCannotLoadCtClass(aClassName, globalB);
-         assertCannotLoadCtClass(aClassName, child);
-         assertCannotLoadCtClass(bClassName, globalA);
-         assertCannotLoadCtClass(bClassName, globalB);
-         assertCannotLoadCtClass(bClassName, child);
-         
-         CtClass a = globalA.makeClass(aClassName);
-         CtClass b = globalB.makeClass(bClassName);
-         
-         CtClass aFromA = globalA.get(aClassName);
-         assertSame(a, aFromA);
-         assertSame(globalA, aFromA.getClassPool());
-         CtClass aFromB = globalB.get(aClassName);
-         assertSame(a, aFromB);
-         CtClass bFromA = globalA.get(bClassName);
-         assertSame(b, bFromA);
-         assertSame(globalB, bFromA.getClassPool());
-         CtClass bFromB = globalB.get(bClassName);
-         assertSame(b, bFromB);
-         CtClass aFromChild = child.get(aClassName);
-         assertSame(a, aFromChild);
-         CtClass bFromChild = child.get(bClassName);
-         assertSame(b, bFromChild);
-         
-         Class<?> clazzA = a.toClass();
-         assertSame(globalA.getClassLoader(), clazzA.getClassLoader());
-         
-         Class<?> clazzB = b.toClass();
-         assertSame(globalB.getClassLoader(), clazzB.getClassLoader());
-         
-         Class<?> clazzAFromA = globalA.getClassLoader().loadClass(aClassName);
-         assertSame(clazzA, clazzAFromA);
-         Class<?> clazzAFromB = globalB.getClassLoader().loadClass(aClassName);
-         assertSame(clazzA, clazzAFromB);
-         Class<?> clazzAFromChild = child.getClassLoader().loadClass(aClassName);
-         assertSame(clazzA, clazzAFromChild);
-         
-         Class<?> clazzBFromA = globalA.getClassLoader().loadClass(bClassName);
-         assertSame(clazzB, clazzBFromA);
-         Class<?> clazzBFromB = globalB.getClassLoader().loadClass(bClassName);
-         assertSame(clazzB, clazzBFromB);
-         Class<?> clazzBFromChild = child.getClassLoader().loadClass(bClassName);
-         assertSame(clazzB, clazzBFromChild);
-      }
-      finally
-      {
-         unregisterClassPool(globalA);
-         unregisterClassPool(globalB);
-         unregisterClassPool(child);
-      }
-   }
-   
-   public void testCanLoadArrayCtClass() throws Exception
-   {
-      ClassPool poolA = null;
-      ClassPool poolB = null;
-      try
-      {
-         poolA = createClassPool("A", true, JAR_A_1);
-         poolB = createClassPool("B", true, JAR_B_1);
-         accessCanLoadCtArray(poolA, poolB);
-         accessCanLoadCtArray(poolA, poolB);
-      }
-      finally
-      {
-         unregisterClassPool(poolA);
-         unregisterClassPool(poolB);
-      }
-   }
-   
-   private void accessCanLoadCtArray(ClassPool poolA, ClassPool poolB) throws Exception
-   {
-      poolA.get(String.class.getName() + "[][]");
-      CtClass a = poolA.get(CLASS_A);
-      CtClass aArray = poolA.get(CLASS_A + "[]");
-      CtClass bArray = poolA.get(CLASS_B + "[][]");
-      CtClass b = poolA.get(CLASS_B);
-      
-      CtClass byteClassA = poolA.get("byte");
-      CtClass byteClassB = poolB.get("byte");
-      assertSame(byteClassA, byteClassB);
-      assertNotSame(poolA, byteClassA.getClassPool());
-      assertNotSame(poolB, byteClassA.getClassPool());
-      CtClass intArrayClass = poolA.get("int[]");
-      CtClass intClass = poolB.get("int");
-      assertSame(intClass, intArrayClass.getComponentType());
-      assertSame(byteClassA.getClassPool(), intClass.getClassPool());
-      
-      
-      
-      assertTrue(aArray.isArray());
-      assertSame(a, aArray.getComponentType());
-      assertTrue(bArray.isArray());
-      assertTrue(bArray.getComponentType().isArray());
-      assertSame(b, bArray.getComponentType().getComponentType());
-      assertNotSame(aArray.getClassPool(), bArray.getClassPool());
-      assertSame(poolA, aArray.getClassPool());
-      assertSame(poolB, bArray.getClassPool());
-      assertSame(a.getClassPool(), aArray.getClassPool());
-      assertSame(b.getClassPool(), bArray.getClassPool());
-   }
-
-   public void testClassLoaderWithParentClassLoader() throws Exception
-   {
-      ClassPool parent = createChildURLClassPool(null, JAR_B_1);
-      ClassPool global = null;
-      try
-      {
-         global = createChildDomainParentFirstClassPool("A", "A", true, parent, JAR_A_1);
-         CtClass aFromGlobal = global.get(CLASS_A);
-         assertSame(global, aFromGlobal.getClassPool());
-         CtClass bFromGlobal = global.get(CLASS_B);
-         assertSame(parent, bFromGlobal.getClassPool());
-         CtClass bFromParent = parent.get(CLASS_B);
-         assertSame(bFromGlobal, bFromParent);
-         assertCannotLoadCtClass(CLASS_A, parent);
-      }
-      finally
-      {
-         unregisterClassPool(global);
-         unregisterClassPool(parent);
-         unregisterDomain(global);
-      }
-   }
-
-   public void testClassLoaderWithParentClassLoaderAndCrossReference() throws Exception
-   {
-      ClassPool parent = createChildURLClassPool(null, JAR_B_1);
-      ClassPool global = null;
-      try
-      {
-         global = createChildDomainParentLastClassPool("D", "D", true, parent, JAR_D);
-         CtClass dFromGlobal = global.get(CLASS_D);
-         assertSame(global, dFromGlobal.getClassPool());
-         CtClass bFromGlobal = global.get(CLASS_B);
-         assertSame(parent, bFromGlobal.getClassPool());
-         CtClass bFromParent = parent.get(CLASS_B);
-         assertSame(bFromGlobal, bFromParent);
-         assertCannotLoadCtClass(CLASS_D, parent);
-         
-         CtMethod method = dFromGlobal.getDeclaredMethod("getB");
-         assertSame(method.getReturnType(), bFromParent);
-         
-      }
-      finally
-      {
-         unregisterClassPool(global);
-         unregisterClassPool(parent);
-         unregisterDomain(global);
-      }
-   }
-   
-   public void testClassLoaderWithParentClassLoaderAndSameClassInDomain() throws Exception
-   {
-      ClassPool parent = createChildURLClassPool(null, JAR_B_1);
-      ClassPool globalA = null;
-      ClassPool globalB = null;
-      ClassPool globalC = null;
-      try
-      {
-         final String domain = "CHILD";
-         globalA = createChildDomainParentFirstClassPool("A", domain, true, parent, JAR_A_1);
-         CtClass aFromGlobal = globalA.get(CLASS_A);
-         assertSame(globalA, aFromGlobal.getClassPool());
-         CtClass bFromGlobalA = globalA.get(CLASS_B);
-         assertSame(parent, bFromGlobalA.getClassPool());
-
-         globalB = createChildDomainParentFirstClassPool("B", domain, true, parent, JAR_B_2);
-         CtClass bFromParent = parent.get(CLASS_B);
-         assertSame(parent, bFromParent.getClassPool());
-         assertSame(bFromGlobalA, bFromParent);
-         
-         CtClass bFromGlobalB = globalB.get(CLASS_B);
-         assertSame(bFromGlobalB, bFromParent);
-         
-         globalC = createChildDomainParentLastClassPool("C", domain + "2", true, parent, JAR_B_2);
-         assertLoadCtClass(CLASS_B, globalC);
-      }
-      finally
-      {
-         unregisterClassPool(globalA);
-         unregisterClassPool(globalB);
-         unregisterClassPool(globalC);
-         unregisterClassPool(parent);
-         unregisterDomain(globalA);
-         unregisterDomain(globalC);
-      }
-   }
-
-   public void testCreatedClassInSamePackage() throws Exception
-   {
-      ClassPool globalPoolA = null;
-      ClassPool globalPoolB = null;
-      try
-      {
-         globalPoolA = createClassPool("A", true, JAR_A_1);
-         globalPoolB = createClassPool("B", true, JAR_B_1);
-         
-         ClassLoader loaderA = globalPoolA.getClassLoader();
-         ClassLoader loaderB = globalPoolB.getClassLoader();
-         
-         Class<?> classA = loaderA.loadClass(CLASS_A);
-         Class<?> classB = loaderB.loadClass(CLASS_B);
-         
-         Object createdA = ClassFactory.create(classA, loaderA);
-         Object createdB = ClassFactory.create(classB, loaderB);
-         
-         Class<?> createdClassA = createdA.getClass();
-         Class<?> createdClassB = createdB.getClass();
-         
-         assertTrue(classA.isAssignableFrom(createdClassA));
-         assertTrue(classB.isAssignableFrom(createdClassB));
-         assertTrue(createdClassA.getName().startsWith(PACKAGE_A));
-         assertTrue(createdClassB.getName().startsWith(PACKAGE_B));
-         
-         assertSame(createdClassA, loaderA.loadClass(createdClassA.getName()));
-         assertSame(createdClassB, loaderA.loadClass(createdClassB.getName()));
-         assertSame(createdClassA, loaderB.loadClass(createdClassA.getName()));
-         assertSame(createdClassB, loaderB.loadClass(createdClassB.getName()));
-      }
-      finally
-      {
-         unregisterClassPool(globalPoolA);
-         unregisterClassPool(globalPoolB);
-      }
-   }
-
-   /*public void testMakeContainerProxyInSamePackage() throws Exception
-   {
-      ClassPool globalPoolA = null;
-      ClassPool globalPoolB = null;
-      try
-      {
-         globalPoolA = createClassPool("A", true, JAR_A_1);
-         globalPoolB = createClassPool("B", true, JAR_B_1);
-         
-         ClassLoader loaderA = globalPoolA.getClassLoader();
-         ClassLoader loaderB = globalPoolB.getClassLoader();
-         
-         loaderA.loadClass(ProxyTemplate.class.getName());
-
-         Object proxyA = assertMakeContainerProxy(loaderA.loadClass(CLASS_A), loaderA);
-         Object proxyB = assertMakeContainerProxy(loaderB.loadClass(CLASS_B), loaderB);
-         
-         Class<?> clazzA = proxyA.getClass();
-         Class<?> clazzB = proxyB.getClass();
-         
-         assertTrue(AspectManaged.class.isAssignableFrom(clazzA));
-         assertTrue(AspectManaged.class.isAssignableFrom(clazzB));
-         assertTrue(clazzA.getName().startsWith(PACKAGE_A));
-         assertTrue(clazzB.getName().startsWith(PACKAGE_B));
-         
-         assertSame(clazzA, loaderA.loadClass(clazzA.getName()));
-         assertSame(clazzB, loaderA.loadClass(clazzB.getName()));
-         assertSame(clazzA, loaderB.loadClass(clazzA.getName()));
-         assertSame(clazzB, loaderB.loadClass(clazzB.getName()));
-      }
-      finally
-      {
-         unregisterClassPool(globalPoolA);
-         unregisterClassPool(globalPoolB);
-      }
-   }*/
-   
-   /*public void testMakeContainerProxyForSystemClass() throws Exception
-   {
-      ClassPool globalPoolA = null;
-      ClassPool globalPoolB = null;
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-         createModule("ModuleA").
-         createPackage(PACKAGE_A).
-         createPackage(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE);
-         globalPoolA = createClassPool("A", true, builderA, JAR_A_1);
-         
-         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-         createModule("ModuleB").
-         createPackage(PACKAGE_B).
-         createPackage(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE);
-         globalPoolB = createClassPool("B", true, builderB, JAR_B_1);
-         
-         ClassLoader loaderA = globalPoolA.getClassLoader();
-         ClassLoader loaderB = globalPoolB.getClassLoader();
-
-         loaderA.loadClass(ProxyTemplate.class.getName());
-
-         Object proxyA = assertMakeContainerProxy(ArrayList.class, loaderA);
-         Object proxyB = assertMakeContainerProxy(ArrayList.class, loaderB);
-         
-         Class<?> clazzA = proxyA.getClass();
-         Class<?> clazzB = proxyB.getClass();
-         
-         assertTrue(AspectManaged.class.isAssignableFrom(clazzA));
-         assertTrue(AspectManaged.class.isAssignableFrom(clazzB));
-         assertTrue(clazzA.getName().startsWith(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE));
-         assertTrue(clazzB.getName().startsWith(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE));
-         
-         assertSame(clazzA, loaderA.loadClass(clazzA.getName()));
-         assertSame(clazzB, loaderA.loadClass(clazzB.getName()));
-         assertSame(clazzA, loaderB.loadClass(clazzA.getName()));
-         assertSame(clazzB, loaderB.loadClass(clazzB.getName()));
-      }
-      finally
-      {
-         unregisterClassPool(globalPoolA);
-         unregisterClassPool(globalPoolB);
-      }
-   }*/
-   
-   public void testCreateClassForSystemClass() throws Exception
-   {
-      ClassPool globalPoolA = null;
-      ClassPool globalPoolB = null;
-      try
-      {
-         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
-         createModule("ModuleA").
-         createPackage(PACKAGE_A).
-         createPackage(ClassFactory.PACKAGE);
-         globalPoolA = createClassPool("A", true, builderA, JAR_A_1);
-         
-         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
-         createModule("ModuleB").
-         createPackage(PACKAGE_B).
-         createPackage(ClassFactory.PACKAGE);
-         globalPoolB = createClassPool("B", true, builderB, JAR_B_1);
-         
-         ClassLoader loaderA = globalPoolA.getClassLoader();
-         ClassLoader loaderB = globalPoolB.getClassLoader();
-
-         Object createdA = ClassFactory.create(ArrayList.class, loaderA);
-         Object createdB = ClassFactory.create(ArrayList.class, loaderB);
-         
-         Class<?> createdClassA = createdA.getClass();
-         Class<?> createdClassB = createdB.getClass();
-         
-         assertTrue(ArrayList.class.isAssignableFrom(createdClassA));
-         assertTrue(ArrayList.class.isAssignableFrom(createdClassB));
-         assertTrue(createdClassA.getName().startsWith(ClassFactory.PACKAGE));
-         assertTrue(createdClassB.getName().startsWith(ClassFactory.PACKAGE));
-         
-         assertSame(createdClassA, loaderA.loadClass(createdClassA.getName()));
-         assertSame(createdClassB, loaderA.loadClass(createdClassB.getName()));
-         assertSame(createdClassA, loaderB.loadClass(createdClassA.getName()));
-         assertSame(createdClassB, loaderB.loadClass(createdClassB.getName()));
-      }
-      finally
-      {
-         unregisterClassPool(globalPoolA);
-         unregisterClassPool(globalPoolB);
-      }
-   }
-   
-   /*private Object assertMakeContainerProxy(Class<?> parent, ClassLoader loader) throws Exception
-   {
-      AOPProxyFactoryParameters params = new AOPProxyFactoryParameters();
-      params.setProxiedClass(parent);
-      params.setTarget(parent.newInstance());
-      params.setClassLoader(loader);
-      params.setInterfaces(new Class<?>[] {java.io.Serializable.class});
-      GeneratedAOPProxyFactory factory = new GeneratedAOPProxyFactory();
-      Object proxy = factory.createAdvisedProxy(params);
-      assertFalse(parent.getName() == proxy.getClass().getName());
-      assertSame(loader, proxy.getClass().getClassLoader());
-      return proxy;
-   }*/
-   
-   /*private static final String PROXY_PACKAGE = "org.test.classpool.proxy";
-   private static final String PROXY_CLASS = PROXY_PACKAGE + ".Proxy";
-   private static int counter = 0;
-   
-   private Object assertMakeSimpleProxy(Class<?> parent, ClassLoader loader) throws Exception
-   {
-      //AOPProxyFactoryParameters params = new AOPProxyFactoryParameters();
-      //params.setProxiedClass(parent);
-      //params.setTarget(parent.newInstance());
-      //params.setClassLoader(loader);
-      ClassPool pool = ClassPoolRepository.getInstance().getRegisteredCLs().get(loader);
-      CtClass ctClazz = pool.makeClass(PROXY_CLASS + counter++);
-      ctClazz.setSuperclass(pool.get(parent.getName()));
-      Class<?> clazz = pool.toClass(ctClazz);
-      //params.setInterfaces(new Class<?>[] {java.io.Serializable.class});
-      //GeneratedAOPProxyFactory factory = new GeneratedAOPProxyFactory();
-      //Object proxy = factory.createAdvisedProxy(params);
-      //assertFalse(parent.getName() == proxy.getClass().getName());
-      assertSame(loader, clazz.getClassLoader());
-      //return proxy;
-      return clazz.newInstance();
-   }*/
-
-   private void checkCanLoadString(ClassPool poolA, ClassPool poolB) throws NotFoundException
-   {
-      CtClass strA = poolA.getCtClass(STRING);
-      CtClass strB = poolB.getCtClass(STRING);
-      assertSame(strA, strB);
-      assertSame(strB.getClassPool(), strA.getClassPool());
-      assertNotSame(poolA, strA.getClassPool());
-      assertNotSame(poolB, strB.getClassPool());
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithUsesPackageTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithUsesPackageTestCase.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithUsesPackageTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,112 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import javassist.ClassPool;
-import javassist.CtClass;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Reproduces ClassLoaderWithUsesPackageSanityTestCase 
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithUsesPackageTestCase extends JBossClClassPoolTest
-{
-
-   public ClassPoolWithUsesPackageTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassPoolWithUsesPackageTestCase.class);
-   }
-
-   public void testUsesImport() throws Exception
-   {
-      ClassPool clA1 = null;
-      Result rA1 = new Result();
-      try
-      {
-         BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
-            createModule("a1").
-            createPackage(PACKAGE_A);
-         clA1 = createClassPool(rA1, "A1", builderA1, JAR_A_1);
-         CtClass classA = assertLoadCtClass(CLASS_A, clA1);
-
-         ClassPool clA2 = null;
-         Result rA2 = new Result();
-         try
-         {
-            BundleInfoBuilder builderA2 = BundleInfoBuilder.getBuilder().
-            createModule("a2").
-            createUsesPackage(PACKAGE_A);
-
-            clA2 = createClassPool(rA2, "A2", builderA2, JAR_A_1);
-            CtClass classA1 = assertLoadCtClass(CLASS_A, clA1);
-            assertSame(classA, classA1);
-            classA1 = assertLoadCtClass(CLASS_A, clA2, clA1);
-            assertSame(classA, classA1);
-         }
-         finally
-         {
-            unregisterClassPool(clA2);
-         }
-         assertNoClassLoader(rA2);
-         CtClass classA1 = assertLoadCtClass(CLASS_A, clA1);
-         assertSame(classA, classA1);
-      }
-      finally
-      {
-         unregisterClassPool(clA1);
-      }
-      assertNoClassLoader(rA1);
-   }
-   
-   public void testUsesNoImport() throws Exception
-   {
-      ClassPool clA1 = null;
-      Result rA1 = new Result();
-      try
-      {
-         BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
-            createModule("a1").
-            createUsesPackage(PACKAGE_A);
-         clA1 = createClassPool(rA1, "A1", builderA1, JAR_A_1);
-         assertLoadCtClass(CLASS_A, clA1);
-      }
-      finally
-      {
-         unregisterClassPool(clA1);
-      }
-      assertNoClassLoader(rA1);
-   }
-
-}

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/DependencyTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/DependencyTest.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/DependencyTest.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,248 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
+
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.NoSuchClassLoaderException;
+
+/**
+ * Contains tests for dependency test scenarios,such as dependency on modules and on packages. 
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class DependencyTest<C, L> extends JBossClClassPoolTest<C, L>
+{
+   public DependencyTest(String name)
+   {
+      super(name);
+   }
+
+   public void testImportNoVersionCheck() throws Exception
+   {
+      CLDeploymentBuilder clBuilderA = createExportCLBuilder("A");
+      
+      CLDeploymentBuilder clBuilderB = createRequireCLBuilder();
+      
+      assertRequiredModule(clBuilderA, clBuilderB);
+   }
+   
+   public void testImportVersionCheck() throws Exception
+   {
+      CLDeploymentBuilder clBuilderA = createExportCLBuilder("A", "1.0.0");
+      CLDeploymentBuilder clBuilderB = createRequireCLBuilder(new VersionRange("1.0.0", "2.0.0"));
+      
+      assertRequiredModule(clBuilderA, clBuilderB);
+   }
+
+   public void testImportVersionCheckFailed() throws Exception
+   {
+      CLDeploymentBuilder clBuilderA = createExportCLBuilder("A", "3.0.0");
+      L loaderA = testScenario.createLoader(clBuilderA);
+      
+      C classA = testScenario.loadClass(loaderA, CLASS_A);
+      testScenario.cannotLoadClass(loaderA, CLASS_B);
+      
+      CLDeploymentBuilder clBuilderB = createRequireCLBuilder(new VersionRange("1.0.0", "2.0.0"));
+      try
+      {
+         testScenario.createLoader(clBuilderB);
+         fail("Should not have been able to create loader");
+      }
+      catch(NoSuchClassLoaderException expected) {}
+      
+      testScenario.cannotGetLoader(clBuilderB);
+      C classA1 = testScenario.loadClass(loaderA, CLASS_A);
+      assertSame(classA, classA1);
+      testScenario.cannotLoadClass(loaderA, CLASS_B);
+   }
+   
+   //These are my extra tests
+   public abstract void testSeveralModulesWithSamePackages() throws Exception;
+   
+ //These are my extra tests
+   public void testSeveralModulesWithSamePackages(String exporterLoader) throws Exception
+   {
+      CLDeploymentBuilder clAModuleXBuilder = createExportCLBuilder("X");
+      CLDeploymentBuilder clAModuleABuilder = createExportCLBuilder("A");
+      CLDeploymentBuilder clAModuleYBuilder = createExportCLBuilder("Y");
+      CLDeploymentBuilder clBuilderB = createRequireCLBuilder();
+      
+      int exporterLoaderIndex = 0;
+      if (exporterLoader.equals("X"))
+      {
+         exporterLoaderIndex = 1;
+      }
+      else if (exporterLoader.equals("A"))
+      {
+         exporterLoaderIndex = 2;
+      }
+      else if (exporterLoader.equals("Y"))
+      {
+         exporterLoaderIndex = 3;
+      }
+      else
+      {
+         throw new IllegalStateException("Exporter loader should be one of: \"X\", \"A\" or \"Y\"");
+      }
+      assertRequireModule(clAModuleXBuilder, clAModuleABuilder,
+            clAModuleYBuilder, clBuilderB, exporterLoaderIndex);
+   }
+
+   public void testSeveralModulesWithSameNamesDifferentVersions() throws Exception
+   {
+      CLDeploymentBuilder clAModuleA1Builder = createExportCLBuilder("X", "1.0.0");
+      CLDeploymentBuilder clAModuleA2Builder = createExportCLBuilder("A", "2.0.0");
+      CLDeploymentBuilder clAModuleA3Builder = createExportCLBuilder("Y", "3.0.0");
+      CLDeploymentBuilder clBuilderB = createRequireCLBuilder(
+            new VersionRange("2.0.0", true, "3.0.0", false));
+      
+      assertRequireModule(clAModuleA1Builder, clAModuleA2Builder,
+            clAModuleA3Builder, clBuilderB, 2);
+   }
+   
+   private void assertRequiredModule(CLDeploymentBuilder clBuilderA,
+         CLDeploymentBuilder clBuilderB) throws NoSuchClassLoaderException,
+         Exception
+   {
+      L loaderA = testScenario.createLoader(clBuilderA);
+      testScenario.cannotLoadClass(loaderA, CLASS_B);
+      C aFromA = testScenario.loadClass(loaderA, CLASS_A);
+      
+      L loaderB = testScenario.createLoader(clBuilderB);
+      
+      C aFromA1 = testScenario.loadClass(loaderA, CLASS_A);
+      assertSame(aFromA, aFromA1);
+      
+      testScenario.cannotLoadClass(loaderA, CLASS_B);
+      testScenario.loadClass(loaderB, CLASS_B);
+      
+      C aFromB = testScenario.loadClass(loaderB, loaderA, CLASS_A);
+      assertSame(aFromA, aFromB);
+      
+      testScenario.destroyLoader(clBuilderB);
+      
+      aFromA1 = testScenario.loadClass(loaderA, CLASS_A);
+      assertSame(aFromA, aFromA1);
+      testScenario.cannotLoadClass(loaderA, CLASS_B);
+   }
+   
+   private void assertRequireModule(CLDeploymentBuilder moduleBuilder1,
+         CLDeploymentBuilder moduleBuilder2,
+         CLDeploymentBuilder moduleBuilder3, CLDeploymentBuilder clBuilder,
+         int exporterModule)
+         throws NoSuchClassLoaderException, Exception
+   {
+      L moduleLoader1 = testScenario.createLoader(moduleBuilder1);
+      L moduleLoader2 = testScenario.createLoader(moduleBuilder2);
+      L moduleLoader3 = testScenario.createLoader(moduleBuilder3);
+      
+      C classA1 = testScenario.loadClass(moduleLoader1, CLASS_A);
+      C classA2 = testScenario.loadClass(moduleLoader2, CLASS_A);
+      C classA3 = testScenario.loadClass(moduleLoader3, CLASS_A);
+      testScenario.cannotLoadClass(moduleLoader1, CLASS_B);
+      testScenario.cannotLoadClass(moduleLoader2, CLASS_B);
+      testScenario.cannotLoadClass(moduleLoader3, CLASS_B);
+      
+      
+      L loaderB = testScenario.createLoader(clBuilder);
+      
+      C classA1_ = testScenario.loadClass(moduleLoader1, CLASS_A);
+      assertSame(classA1, classA1_);
+      C classA2_ = testScenario.loadClass(moduleLoader2, CLASS_A);
+      assertSame(classA2, classA2_);
+      C classA3_ = testScenario.loadClass(moduleLoader3, CLASS_A);
+      assertSame(classA3, classA3_);
+      testScenario.cannotLoadClass(moduleLoader1, CLASS_B);
+      testScenario.cannotLoadClass(moduleLoader2, CLASS_B);
+      testScenario.cannotLoadClass(moduleLoader3, CLASS_B);
+      
+      testScenario.loadClass(loaderB, CLASS_B);
+      L exporterLoader = null;
+      C exporterLoaderClass = null;
+      switch(exporterModule)
+      {
+         case 1:
+            exporterLoader = moduleLoader1;
+            exporterLoaderClass = classA1;
+            break;
+         case 2:
+            exporterLoader = moduleLoader2;
+            exporterLoaderClass = classA2;
+            break;
+         case 3:
+            exporterLoader = moduleLoader3;
+            exporterLoaderClass = classA3;
+            break;
+         default: throw new IllegalStateException("Exporter loader should range from 1 to 3");
+      }
+      C aFromB = testScenario.loadClass(loaderB, exporterLoader, CLASS_A);
+      assertSame(aFromB, exporterLoaderClass);
+
+      testScenario.destroyLoader(clBuilder);
+      
+      classA1_ = testScenario.loadClass(moduleLoader1, CLASS_A);
+      assertSame(classA1, classA1_);
+      classA2_ = testScenario.loadClass(moduleLoader2, CLASS_A);
+      assertSame(classA2, classA2_);
+      classA3_ = testScenario.loadClass(moduleLoader3, CLASS_A);
+      assertSame(classA3, classA3_);
+      testScenario.cannotLoadClass(moduleLoader1, CLASS_B);
+      testScenario.cannotLoadClass(moduleLoader2, CLASS_B);
+      testScenario.cannotLoadClass(moduleLoader3, CLASS_B);
+   }
+
+
+
+   private CLDeploymentBuilder createExportCLBuilder(String name)
+   {
+      return createExportCLBuilder(name, null);
+   }
+   
+   private CLDeploymentBuilder createExportCLBuilder(String name, String version)
+   {
+      CLDeploymentBuilder clBuilderA = new CLDeploymentBuilder(name, JAR_A_1);
+      createExportCapabilities(clBuilderA, "Module" + name, version);
+      return clBuilderA;
+   }
+   
+   protected abstract void createExportCapabilities(CLDeploymentBuilder clBuilderA, String moduleName, String version);
+   
+   private CLDeploymentBuilder createRequireCLBuilder()
+   {
+      return createRequireCLBuilder(null);
+   }
+   
+   private CLDeploymentBuilder createRequireCLBuilder(VersionRange requiredVersion)
+   {
+      CLDeploymentBuilder clBuilderB = new CLDeploymentBuilder("B", JAR_B_1);
+      createRequireCapabilities(clBuilderB, requiredVersion);
+      return clBuilderB;
+   }
+ 
+   protected abstract void createRequireCapabilities(CLDeploymentBuilder clBuilderB, VersionRange version);
+}


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/DependencyTest.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainClassPoolTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainClassPoolTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the hierarchical domain tests against a class pool test scenario.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class HierarchicalDomainClassPoolTestCase extends
+      HierarchicalDomainTest<CtClass, ClassPool>
+{
+   public static Test suite()
+   {
+      return new TestSuite(HierarchicalDomainClassPoolTestCase.class);
+   }
+
+   public HierarchicalDomainClassPoolTestCase(String name)
+   {
+      super(name);
+   }
+   
+   @Override
+   protected TestScenario<CtClass, ClassPool> getTestScenario()
+   {
+      return new ClassPoolTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainClassPoolTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainSanityTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainSanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the hierarchical domain tests against a sanity test scenario (for class loader
+ * behavior sanity checking).
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class HierarchicalDomainSanityTestCase extends
+      HierarchicalDomainTest<Class<?>, ClassLoader>
+{
+   public static Test suite()
+   {
+      return new TestSuite(HierarchicalDomainSanityTestCase.class);
+   }
+
+   public HierarchicalDomainSanityTestCase(String name)
+   {
+      super(name);
+   }
+   
+   @Override
+   protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+   {
+      return new SanityTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainSanityTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainTest.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainTest.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,293 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
+
+import static org.jboss.classloader.spi.ClassLoaderSystem.DEFAULT_DOMAIN_NAME;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.NoSuchClassLoaderException;
+
+/**
+ * Reproduces org.jboss.test.classloading.dependency.test.HierarchicalDomainUnitTestCase using
+ * our test framework.
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class HierarchicalDomainTest<C, L> extends JBossClClassPoolTest<C, L>
+{
+   private static final String PARENT_DOMAIN = "ParentDomain";
+   private static final String CHILD_DOMAIN = "ChildDomain";
+   
+   public HierarchicalDomainTest(String name)
+   {
+      super(name);
+   }
+   
+   public void testParentFirst() throws Exception
+   {
+      testParentTwoChildren(true, false);
+   }
+   
+   public void testParentFirstImportAll() throws Exception
+   {
+      testParentTwoChildren(true, true);
+   }
+   
+   public void testParentLast() throws Exception
+   {
+      testParentTwoChildren(false, false);
+   }
+   
+   public void testParentLastImportAll() throws Exception
+   {
+      testParentTwoChildren(false, true);
+   }
+
+   public void testParentLastNotInChild() throws Exception
+   {
+      CLDeploymentBuilder parentCLBuilder = createParentCLBuilder();
+      L parentLoader = testScenario.createLoader(parentCLBuilder);
+      assertCanLoadAButNotB(parentLoader);
+      
+      CLDeploymentBuilder childCLBuilder = createChildCLBuilder(false, DEFAULT_DOMAIN_NAME);
+      L childLoader = testScenario.createLoader(childCLBuilder);
+      assertHierarchicalDomain(parentLoader, childLoader);
+   }
+
+   
+   public void testParentFirstWrongWayAround() throws Exception
+   {
+      testParentWrongWayAround(true);
+   }
+   
+   public void testParentLastWrongWayAround() throws Exception
+   {
+      testParentWrongWayAround(false);
+   }
+   
+   public void testParentRedeploy() throws Exception
+   {
+      CLDeploymentBuilder childCLBuilder = createChildCLBuilder(true, DEFAULT_DOMAIN_NAME);
+      try
+      {
+         testScenario.createLoader(childCLBuilder);
+         fail("Should be no loader");
+      }
+      catch(NoSuchClassLoaderException e) {}
+      testScenario.cannotGetLoader(childCLBuilder);
+
+      CLDeploymentBuilder parentCLBuilder = createParentCLBuilder();
+      L parentLoader = testScenario.createLoader(parentCLBuilder);
+      assertCanLoadAButNotB(parentLoader);
+      
+      L childLoader = testScenario.getLoader(childCLBuilder);
+      assertHierarchicalDomain(parentLoader, childLoader);
+      
+      assertRedeploy(childCLBuilder, parentCLBuilder);
+   }
+
+   public void testParentOtherDomain() throws Exception
+   {
+      CLDeploymentBuilder parentCLBuilder = createParentCLBuilderWithDomain();
+      L parentLoader = testScenario.createLoader(parentCLBuilder);
+      assertCanLoadAButNotB(parentLoader);
+      
+      CLDeploymentBuilder childCLBuilder = createChildCLBuilder(true, PARENT_DOMAIN);
+      L childLoader = testScenario.createLoader(childCLBuilder);
+      
+      assertHierarchicalDomain(parentLoader, childLoader);
+   }
+   
+   public void testParentOtherDomainLazy() throws Exception
+   {
+      CLDeploymentBuilder childCLBuilder = createChildCLBuilder(true, PARENT_DOMAIN);
+      try
+      {
+         testScenario.createLoader(childCLBuilder);
+         fail("Should be no loader");
+      }
+      catch(NoSuchClassLoaderException e) {}
+      testScenario.cannotGetLoader(childCLBuilder);
+      
+      CLDeploymentBuilder parentCLBuilder = createParentCLBuilderWithDomain();
+      L parentLoader = testScenario.createLoader(parentCLBuilder);
+      assertCanLoadAButNotB(parentLoader);
+      
+      L childLoader = testScenario.getLoader(childCLBuilder);
+      assertHierarchicalDomain(parentLoader, childLoader);
+   }
+
+   public void testParentRedeployOtherDomain() throws Exception
+   {
+      CLDeploymentBuilder childCLBuilder = createChildCLBuilder(true, PARENT_DOMAIN);
+      try
+      {
+         testScenario.createLoader(childCLBuilder);
+         fail("Should be no loader");
+      }
+      catch(NoSuchClassLoaderException e) {}
+      testScenario.cannotGetLoader(childCLBuilder);
+      
+      CLDeploymentBuilder parentCLBuilder = createParentCLBuilderWithDomain();
+      L parentLoader = testScenario.createLoader(parentCLBuilder);
+      assertCanLoadAButNotB(parentLoader);
+      
+      L childLoader = testScenario.getLoader(childCLBuilder);
+      assertHierarchicalDomain(parentLoader, childLoader);
+      
+      assertRedeploy(childCLBuilder, parentCLBuilder);
+   }
+
+   private void testParentTwoChildren(boolean parentFirst, boolean childImportAll)
+   throws NoSuchClassLoaderException, Exception
+   {
+      CLDeploymentBuilder parentCLBuilder = createParentCLBuilder();
+      L parentLoader = testScenario.createLoader(parentCLBuilder);
+      assertCanLoadAButNotB(parentLoader);
+
+      CLDeploymentBuilder childCLBuilderA = new CLDeploymentBuilder("aChild", JAR_A_2);
+      childCLBuilderA.createDomain(CHILD_DOMAIN, parentFirst);
+      L childLoaderA = testScenario.createLoader(childCLBuilderA);
+      assertCanLoadAButNotB(parentLoader);
+      if (parentFirst)
+      {
+         assertCanLoadAButNotB(childLoaderA, parentLoader);
+      }
+      else
+      {
+         assertCanLoadAButNotB(childLoaderA);
+      }
+
+      CLDeploymentBuilder childCLBuilderB = createChildCLBuilder(childImportAll);
+      L childLoaderB = testScenario.createLoader(childCLBuilderB);
+      if (parentFirst)
+      {
+         testScenario.loadClass(childLoaderA, parentLoader, CLASS_A);
+      }
+      else
+      {
+         testScenario.loadClass(childLoaderA, CLASS_A);
+      }
+      if (childImportAll)
+      {
+         testScenario.loadClass(childLoaderA, childLoaderB, CLASS_B);
+      }
+      else
+      {
+         testScenario.cannotLoadClass(childLoaderA, CLASS_B);
+      }
+      testScenario.loadClass(childLoaderB, CLASS_B);
+      testScenario.loadClass(childLoaderB, parentFirst? parentLoader: childLoaderA, CLASS_A);
+   }
+
+   private void testParentWrongWayAround(boolean parentFirst) throws Exception
+   {
+      CLDeploymentBuilder childBuilder = createChildCLBuilder(parentFirst, DEFAULT_DOMAIN_NAME);
+      try
+      {
+         testScenario.createLoader(childBuilder);
+         fail("Should be no loader");
+      }
+      catch(NoSuchClassLoaderException e) {}
+      testScenario.cannotGetLoader(childBuilder);
+      
+      CLDeploymentBuilder parentBuilder = createParentCLBuilder();
+      L parentLoader = testScenario.createLoader(parentBuilder);
+      assertCanLoadAButNotB(parentLoader);
+      
+      L childLoader = testScenario.getLoader(childBuilder);
+      assertHierarchicalDomain(parentLoader, childLoader);
+   }
+   
+   
+   private void assertRedeploy(CLDeploymentBuilder childCLBuilder,
+         CLDeploymentBuilder parentCLBuilder)
+         throws NoSuchClassLoaderException, Exception
+   {
+      L parentLoader;
+      L childLoader;
+      testScenario.destroyLoader(parentCLBuilder);
+
+      testScenario.cannotGetLoader(parentCLBuilder);
+      testScenario.cannotGetLoader(childCLBuilder);
+      
+      parentLoader = testScenario.createLoader(parentCLBuilder);
+      assertCanLoadAButNotB(parentLoader);
+      
+      childLoader = testScenario.getLoader(childCLBuilder);
+      assertHierarchicalDomain(parentLoader, childLoader);
+   }
+   
+   private CLDeploymentBuilder createParentCLBuilder()
+   {
+      return new CLDeploymentBuilder("aParent", JAR_A_1);
+   }
+   
+   private CLDeploymentBuilder createParentCLBuilderWithDomain()
+   {
+      CLDeploymentBuilder parentCLBuilder = createParentCLBuilder();
+      parentCLBuilder.createDomain(PARENT_DOMAIN, true);
+      return parentCLBuilder;
+   }
+   
+   private CLDeploymentBuilder createChildCLBuilder(boolean importAll)
+   {
+      CLDeploymentBuilder childCLBuilderB = new CLDeploymentBuilder("b", JAR_B_1);
+      childCLBuilderB.setDomain(CHILD_DOMAIN);
+      childCLBuilderB.createRequirePackage(PACKAGE_A);
+      childCLBuilderB.setImportAll(importAll);
+      return childCLBuilderB;
+   }
+
+   private CLDeploymentBuilder createChildCLBuilder(boolean parentFirst, String parentDomain)
+   {
+      CLDeploymentBuilder childBuilder = new CLDeploymentBuilder("b", JAR_B_1);
+      childBuilder.createDomain(CHILD_DOMAIN, parentDomain, parentFirst);
+      childBuilder.createRequirePackage(PACKAGE_A);
+      childBuilder.setImportAll(false);
+      return childBuilder;
+   }
+   
+   private void assertCanLoadAButNotB(L parentLoader) throws Exception
+   {
+      assertCanLoadAButNotB(parentLoader, parentLoader);
+   }
+
+   private void assertCanLoadAButNotB(L parentLoader, L actualLoader) throws Exception
+   {
+      testScenario.loadClass(parentLoader, actualLoader, CLASS_A);
+      testScenario.cannotLoadClass(parentLoader, CLASS_B);
+   }
+   
+   private void assertHierarchicalDomain(L parentLoader, L childLoader)
+         throws Exception
+   {
+      assertCanLoadAButNotB(parentLoader);
+      testScenario.loadClass(childLoader, CLASS_B);
+      testScenario.loadClass(childLoader, parentLoader, CLASS_A);
+   }
+}


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainTest.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderClassPoolTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderClassPoolTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,59 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the hierarchical parent loader tests against a class pool test scenario.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class HierarchicalParentLoaderClassPoolTestCase extends
+   HierarchicalParentLoaderTest<CtClass, ClassPool>
+{
+   public static Test suite()
+   {
+      return new TestSuite(HierarchicalParentLoaderClassPoolTestCase.class);
+   }
+
+   public HierarchicalParentLoaderClassPoolTestCase(String name)
+   {
+      super(name);
+   }
+   /* (non-Javadoc)
+    * @see org.jboss.test.classpool.jbosscl.test.HierarchicalParentLoaderTest#getTestScenario()
+    */
+   @Override
+   protected TestScenario<CtClass, ClassPool> getTestScenario()
+   {
+      return new ClassPoolTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderClassPoolTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderSanityTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderSanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+
+/**
+ * Executes the hierarchical parent loader tests against a sanity test scenario (for class
+ * loader behavior sanity checking).
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class HierarchicalParentLoaderSanityTestCase extends
+      HierarchicalParentLoaderTest<Class<?>, ClassLoader>
+{
+   public static Test suite()
+   {
+      return new TestSuite(HierarchicalParentLoaderSanityTestCase.class);
+   }
+
+   public HierarchicalParentLoaderSanityTestCase(String name)
+   {
+      super(name);
+   }
+   
+   @Override
+   protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+   {
+      return new SanityTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderSanityTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderTest.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderTest.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,116 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
+
+
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+
+import java.net.URL;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ParentPolicy;
+import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.DomainRegistry;
+import org.jboss.test.classpool.support.NoMatchClassFilter;
+
+/**
+ * Reproduces org.jboss.test.classloader.domain.test.HierarchicalParentLoaderUnitTestCase using
+ * our test framework.
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class HierarchicalParentLoaderTest<C, L> extends JBossClClassPoolTest<C, L>
+{
+   public HierarchicalParentLoaderTest(String name)
+   {
+      super(name);
+   }
+
+   public void testHierarchyBefore() throws Exception
+   {
+      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.BEFORE, true);
+   }
+   
+   
+   public void testHierarchyBeforeNotFound() throws Exception
+   {
+      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.BEFORE, false, false);
+   }
+   
+   public void testHierarchyAfterNotReached() throws Exception
+   {
+      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.AFTER_BUT_JAVA_BEFORE, false);
+   }
+   
+   public void testHierarchyAfterReached() throws Exception
+   {
+      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.AFTER_BUT_JAVA_BEFORE, null, true);
+   }
+   
+   public void testHierarchyFiltered() throws Exception
+   {
+      NoMatchClassFilter filter = new NoMatchClassFilter(CLASS_A);
+      runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, new ParentPolicy(filter, ClassFilter.NOTHING), false);
+
+      assertTrue("Should have been filtered", filter.filtered);
+   }
+
+
+   private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean expectedParent) throws Exception
+   {
+      runTest(parentParentPolicy, childParentPolicy, true, JAR_A_2, expectedParent);
+   }
+   
+   private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean createParent, boolean expectedParent) throws Exception
+   {
+      runTest(parentParentPolicy, childParentPolicy, createParent, JAR_A_2, expectedParent);
+   }
+   
+   private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, URL url, boolean expectedParent) throws Exception
+   {
+      runTest(parentParentPolicy, childParentPolicy, true, url, expectedParent);
+   }
+   
+   private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean createParent, URL childURL, boolean expectedParent) throws Exception
+   {
+      final String parentName = "parent";
+      final String childName = "child";
+      ClassLoaderDomain parent = system.createAndRegisterDomain(parentName, parentParentPolicy);
+      DomainRegistry.registerDomain(parent);
+      ClassLoaderDomain child = system.createAndRegisterDomain(childName, childParentPolicy, parent);
+      DomainRegistry.registerDomain(child);
+      L parentLoader = null;
+      if (createParent)
+      {
+         CLDeploymentBuilder parentCLBuilder = new CLDeploymentBuilder("ParentLoader", JAR_A_1);
+         parentCLBuilder.setDomain(parentName);
+         parentLoader = testScenario.createLoader(parentCLBuilder);
+      }
+      CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("ChildLoader", childURL);
+      childCLBuilder.setDomain(childName);
+      L childLoader = testScenario.createLoader(childCLBuilder);
+      testScenario.loadClass(childLoader, expectedParent ? parentLoader : childLoader, CLASS_A);
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderTest.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolDelegatingTestSuite.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolDelegatingTestSuite.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolDelegatingTestSuite.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -41,15 +41,16 @@
    {
       TestSuite suite = new TestSuite("JBoss-cl Pool Tests");
       
-      suite.addTest(ClassPoolWithRepositoryTestCase.suite());
-      suite.addTest(ClassPoolWithModuleDependencyTestCase.suite());
-      suite.addTest(ClassPoolWithPackageDependencyTestCase.suite());
-      suite.addTest(ClassPoolWithReExportModuleTestCase.suite());
-      suite.addTest(ClassPoolWithReExportPackageTestCase.suite());
-      suite.addTest(ClassPoolWithUsesPackageTestCase.suite());
-      suite.addTest(ClassPoolWithHierarchicalDomainTestCase.suite());
-      suite.addTest(ClassPoolWithHierarchicalParentLoaderTestCase.suite());
-      suite.addTest(ClassPoolWithReplaceReferencesTestCase.suite());
+      suite.addTest(ArchiveClassPoolTestCase.suite());
+      suite.addTest(RepositoryClassPoolTestCase.suite());
+      suite.addTest(ModuleDependencyClassPoolTestCase.suite());
+      suite.addTest(PackageDependencyClassPoolTestCase.suite());
+      suite.addTest(ReExportModuleClassPoolTestCase.suite());
+      suite.addTest(ReExportPackageClassPoolTestCase.suite());
+      suite.addTest(UsesPackageClassPoolTestCase.suite());
+      suite.addTest(HierarchicalDomainClassPoolTestCase.suite());
+      suite.addTest(HierarchicalParentLoaderClassPoolTestCase.suite());
+      suite.addTest(ReplaceReferencesClassPoolTestCase.suite());
       return suite;
    }
 

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolSanityTestSuite.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolSanityTestSuite.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolSanityTestSuite.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -41,14 +41,15 @@
    {
       TestSuite suite = new TestSuite("JBoss-cl Sanity Tests");
       
-      suite.addTest(ClassLoaderWithRepositorySanityTestCase.suite());
-      suite.addTest(ClassLoaderWithModuleDependencySanityTestCase.suite());
-      suite.addTest(ClassLoaderWithPackageDependencySanityTestCase.suite());
-      suite.addTest(ClassLoaderWithReExportModuleSanityTestCase.suite());
-      suite.addTest(ClassLoaderWithReExportPackageSanityTestCase.suite());
-      suite.addTest(ClassLoaderWithUsesPackageSanityTestCase.suite());
-      suite.addTest(ClassLoaderWithHierarchicalDomainSanityTestCase.suite());
-      suite.addTest(ClassLoaderWithHierarchicalParentLoaderSanityTestCase.suite());
+      suite.addTest(ArchiveSanityTestCase.suite());
+      suite.addTest(RepositorySanityTestCase.suite());
+      suite.addTest(ModuleDependencySanityTestCase.suite());
+      suite.addTest(PackageDependencySanityTestCase.suite());
+      suite.addTest(ReExportModuleSanityTestCase.suite());
+      suite.addTest(ReExportPackageSanityTestCase.suite());
+      suite.addTest(UsesPackageSanityTestCase.suite());
+      suite.addTest(HierarchicalDomainSanityTestCase.suite());
+      suite.addTest(HierarchicalParentLoaderSanityTestCase.suite());
 
       return suite;
    }

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -23,38 +23,17 @@
 
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.WeakHashMap;
 
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.NotFoundException;
 import junit.framework.Test;
 
 import org.jboss.aop.AspectManager;
-import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
-import org.jboss.classloader.spi.ClassLoaderDomain;
 import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloading.plugins.metadata.PackageCapability;
-import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.classloading.spi.metadata.Capability;
-import org.jboss.classpool.plugins.as5.VFSClassLoaderDomainRegistry;
-import org.jboss.classpool.spi.ClassPoolRepository;
-import org.jboss.kernel.plugins.deployment.AbstractKernelDeployment;
+import org.jboss.dependency.spi.ControllerState;
 import org.jboss.kernel.spi.deployment.KernelDeployment;
 import org.jboss.test.AbstractTestCaseWithSetup;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
+import org.jboss.test.classpool.support.MicrocontainerFacade;
 import org.jboss.test.classpool.support.SupportClasses;
-import org.jboss.test.classpool.support.TestVFSClassLoaderFactory;
-import org.jboss.test.classpool.support.TestVFSClassLoaderFactoryFactory;
+import org.jboss.test.classpool.support.TestScenario;
 import org.jboss.test.kernel.junit.MicrocontainerTest;
 import org.jboss.virtual.VFS;
 
@@ -65,7 +44,7 @@
  * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
  * @version $Revision$
  */
-public class JBossClClassPoolTest extends MicrocontainerTest
+public abstract class JBossClClassPoolTest<C, L> extends MicrocontainerTest
 {
    /****** STATIC ***************************************************************************/
    
@@ -76,10 +55,36 @@
    public final static URL JAR_C_1 = getURLRelativeToProjectRoot(SupportClasses.JAR_C_1);
    public final static URL JAR_C_2 = getURLRelativeToProjectRoot(SupportClasses.JAR_C_2);
    public final static URL JAR_D = getURLRelativeToProjectRoot(SupportClasses.JAR_D);
+// TODO refactorate this, extracting this from this class
+   // TODO move the jars to a directory of their own (such as target/test-archives)
+   public final static URL SIMPLE_JAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_JAR);
+   public final static URL SIMPLE_SAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_SAR);
+   public final static URL EJB_JAR = getURLRelativeToProjectRoot(SupportClasses.EJB_JAR);
+   public final static URL SIMPLE_WAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_WAR);
+   public final static URL SIMPLE_EAR_JAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_JAR);
+   public final static URL SIMPLE_EAR_SAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_SAR);
+   public final static URL SIMPLE_EAR_EJB = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_EJB);
+   public final static URL SIMPLE_EAR_LIB1 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_LIB1);
+   public final static URL SIMPLE_EAR_LIB2 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_LIB2);
+   public final static URL SIMPLE_EAR_WAR1 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR1);
+   public final static URL SIMPLE_EAR_WAR1_CP = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR1_CP);
+   public final static URL SIMPLE_EAR_WAR1_LIB = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR1_LIB);
+   public final static URL SIMPLE_EAR_WAR2 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR2);
+   public final static URL SIMPLE_EAR_WAR2_CP = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR2_CP);
+   public final static URL SIMPLE_EAR_WAR2_LIB = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR2_LIB);
+   public final static URL EAR_UTIL1 = getURLRelativeToProjectRoot(SupportClasses.EAR_UTIL1);
+   public final static URL EAR_UTIL2 = getURLRelativeToProjectRoot(SupportClasses.EAR_UTIL2);
+   public final static URL EAR_WAR = getURLRelativeToProjectRoot(SupportClasses.EAR_WAR);
+   public final static URL EAR_WAR_CP = getURLRelativeToProjectRoot(SupportClasses.EAR_WAR_CP);
+   public final static URL EAR_JAR = getURLRelativeToProjectRoot(SupportClasses.EAR_JAR);
+   public final static URL SERVLET_JAR = getURLRelativeToProjectRoot(SupportClasses.SERVLET_JAR);
+   public final static URL PTD_EAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_EAR_LIB);
+   public final static URL PTD_JSF_WAR = getURLRelativeToProjectRoot(SupportClasses.PTD_JSF_WAR);
+   public final static URL PTD_JSF_WAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_JSF_WAR_LIB);
+   public final static URL PTD_WS_WAR = getURLRelativeToProjectRoot(SupportClasses.PTD_WS_WAR);
+   public final static URL PTD_WS_WAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_WS_WAR_LIB);
+   public final static URL EXCLUDED_CLASSPATH = getURLRelativeToProjectRoot(SupportClasses.EXCLUDED_CLASSPATH);
    
-   /** A strong reference to the URL classloaders so that they are not garbage collected */
-   private final static Set<URLClassLoader> registeredURLClassLoaders = new HashSet<URLClassLoader>();
-
    public static Test suite(Class<?> clazz)
    {
       return AbstractTestCaseWithSetup.suite(clazz);
@@ -116,26 +121,9 @@
    
    /****** HELPER FIELDS ********************************************************************/
    
-   /** The ClassPool repository */
-   protected ClassPoolRepository repository;
-   
    /** The classloader helper */
    protected ClassLoaderSystem system;
    
-   /** The domain registry */
-   protected VFSClassLoaderDomainRegistry domainRegistry;
-   
-   /**
-    *  Contains the same domains contained in dmoainRegistry. The difference is that 
-    *  This map is cleaned up later than domainRegistry.
-    */
-   private Map<ClassLoader, ClassLoaderDomain> scopedChildDomainsByLoader = new WeakHashMap<ClassLoader, ClassLoaderDomain>();
-   
-   /**
-    * Keeps track of KernelDeployments
-    */
-   private LoaderNameDeploymentRegistry loaderNameDeploymentRegistry = new LoaderNameDeploymentRegistry();
-   
    /****** CONSTRUCTOR **********************************************************************/
    
    /**
@@ -149,6 +137,10 @@
    
    /****** OVERRIDDEN METHODS ***************************************************************/
 
+   protected TestScenario<C, L> testScenario; 
+   
+   protected abstract TestScenario<C, L> getTestScenario();
+   
    @Override
    protected void setUp() throws Exception
    {
@@ -156,618 +148,23 @@
       deploy("/org/jboss/test/classpool/jbosscl/Common.xml");
       VFS.init();
       system = (ClassLoaderSystem) getBean("ClassLoaderSystem");
-      domainRegistry = (VFSClassLoaderDomainRegistry) getBean("ClassLoaderScopingPolicy");
-      repository = (ClassPoolRepository) getBean("ClassPoolRepository");
+      this.testScenario = getTestScenario();
    }
 
    @Override
    protected void tearDown() throws Exception
    {
+      this.testScenario.destroyLoaders();
       undeploy("/org/jboss/test/classpool/jbosscl/Common.xml");
       super.tearDown();
    }
 
-   /****** CREATE CLASSLOADER METHODS ***************************************************/
-   
-   protected ClassLoader createClassLoader(String name, boolean importAll, URL... urls) throws Exception
-   {
-      return createClassLoader(null, name, importAll, urls);
-   }
-   
-   protected ClassLoader createClassLoader(Result result, String name, boolean importAll, URL... urls) throws Exception
-   {
-      return this.createClassLoader(result, name, importAll, (String) null, urls);
-   }
-   
-   protected ClassLoader createClassLoader(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception
-   {
-      TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, urls);
-      if (packageCapability != null)
-      {
-         Capability capability = new PackageCapability(packageCapability);
-         factory.setCapabilities(Collections.singletonList(capability));
-      }
-      return createClassLoader(result, factory);
-   }
-
-   protected ClassLoader createClassLoader(Result result, String name, boolean importAll, URL[] excludes, URL... urls) throws Exception
-   {
-      TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, excludes, urls);
-      return createClassLoader(result, factory);
-   }
-   
-   protected ClassLoader createClassLoader(Result result, String name, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      return createClassLoader(result, name, false, builder, urls);
-   }
-   
-   protected ClassLoader createClassLoader(Result result, String name, boolean importAll, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, builder, urls);
-      return createClassLoader(result, factory);
-   }
-   
-   protected ClassLoader createChildDomainParentFirstClassLoader(String name, String domainName, boolean importAll, URL... urls) throws Exception
-   {
-      return createChildDomainParentFirstClassLoader((Result)null, name, domainName, importAll, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
-   {
-      return createChildDomainParentFirstClassLoader(result, name, domainName, importAll, (ClassLoader) null, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, boolean importAll, String packageCapability, URL... urls) throws Exception
-   {
-      return createChildDomainParentFirstClassLoader(result, name, domainName, importAll, (ClassLoader) null, packageCapability, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentFirstClassLoader(String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
-   {
-      return createChildDomainParentFirstClassLoader(null, name, domainName, importAll, parent, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
-   {
-      return createChildDomainClassLoader(result, name, domainName, null, true, importAll, parent, null, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, String packageCapability, URL... urls) throws Exception
-   {
-      return createChildDomainClassLoader(result, name, domainName, null, true, importAll, parent, packageCapability, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentFirstClassLoader(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
-   {
-      return createChildDomainParentFirstClassLoader(null, name, domainName, parentDomainName, importAll, null, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, String packageCapability, URL... urls) throws Exception
-   {
-      return createChildDomainClassLoader(result, name, domainName, parentDomainName, true, importAll, null, packageCapability, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentLastClassLoader(String name, String domainName, boolean importAll, URL... urls) throws Exception
-   {
-      return createChildDomainParentLastClassLoader((Result)null, name, domainName, importAll, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
-   {
-      return createChildDomainParentLastClassLoader(result, name, domainName, importAll, (ClassLoader) null, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, boolean importAll, URL[] excludes, URL... urls) throws Exception
-   {
-      return createChildDomainParentLastClassLoader(result, name, domainName, importAll, null, excludes, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentLastClassLoader(String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
-   {
-      return createChildDomainParentLastClassLoader(null, name, domainName, importAll, parent, urls);
-   }
-
-   protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
-   {
-      return createChildDomainClassLoader(result, name, domainName, null, false, importAll, parent, null, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, URL[] excludes, URL... urls) throws Exception
-   {
-      return createChildDomainClassLoader(result, name, domainName, null, false, importAll, parent, null, excludes, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentLastClassLoader(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
-   {
-      return createChildDomainParentLastClassLoader(null, name, domainName, parentDomainName, importAll, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
-   {
-      return createChildDomainClassLoader(result, name, domainName, parentDomainName, false, importAll, null, null, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      return createChildDomainParentFirstClassLoader(result, name, domainName, null, builder, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, String parentDomainName, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      return createChildDomainClassLoader(result, name, domainName, parentDomainName, builder, true, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      return createChildDomainParentLastClassLoader(result, name, domainName, null, builder, urls);
-   }
-   
-   protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, String parentDomainName, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      return createChildDomainClassLoader(result, name, domainName, parentDomainName, builder, false, urls);
-   }
-   
-   protected ClassLoader createChildDomainClassLoader(String name, String domainName, String parentDomainName, BundleInfoBuilder builder, boolean parentFirst, URL... urls) throws Exception
-   {
-      return createChildDomainClassLoader(null, name, domainName, parentDomainName, builder, parentFirst, urls);
-   }
-   
-   private ClassLoader createChildDomainClassLoader(Result result, String name, String domainName, String parentDomainName, boolean parentFirst, boolean importAll, ClassLoader parent, String packageCapability, URL... urls) throws Exception
-   {
-      return createChildDomainClassLoader(result, name, domainName, parentDomainName, parentFirst, importAll, parent, packageCapability, (URL[]) null, urls);
-   }
-   
-   private ClassLoader createChildDomainClassLoader(Result result, String name, String domainName, String parentDomainName, boolean parentFirst, boolean importAll, ClassLoader parent, String packageCapability, URL[] excludes, URL... urls) throws Exception
-   {
-      TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, domainName, parentDomainName, parentFirst, urls);
-      if (packageCapability != null)
-      {
-         Capability capability = new PackageCapability(packageCapability);
-         factory.setCapabilities(Collections.singletonList(capability));
-      }
-      ClassLoader classLoader = createClassLoader(result, factory, parent);
-      registerDomainAndLoader(classLoader, domainName);
-      return classLoader;
-   }
-   
-   private ClassLoader createChildDomainClassLoader(Result result, String name, String domainName, String parentDomainName, BundleInfoBuilder builder, boolean parentFirst, URL... urls) throws Exception
-   {
-      TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, domainName, parentDomainName, builder, parentFirst, urls);
-      ClassLoader classLoader = createClassLoader(result, factory);
-      registerDomainAndLoader(classLoader, domainName);
-      return classLoader;
-   }
-
-   private void registerDomainAndLoader(ClassLoader classLoader, String domainName)
-   {
-      ClassLoaderDomain domain = system.getDomain(domainName);
-      scopedChildDomainsByLoader.put(classLoader, domain);
-   }
-   
-   protected ClassLoader createChildURLClassLoader(ClassLoader parent, URL url)
-   {
-      URLClassLoader cl = new URLClassLoader(new URL[] {url}, parent);
-      registeredURLClassLoaders.add(cl);
-      return cl;
-   }
-   
-   private ClassLoader createClassLoader(Result result, TestVFSClassLoaderFactory factory) throws Exception
-   {
-      return createClassLoader(result, factory, null);
-   }
-   
-   private ClassLoader createClassLoader(Result result, TestVFSClassLoaderFactory factory, ClassLoader parent) throws Exception
-   {
-      if (parent != null)
-      {
-         factory.setParent(parent);
-      }
-      
-      KernelDeployment deployment = install(factory);
-      loaderNameDeploymentRegistry.registerDeployment(factory.getName(), deployment);
-      if (result != null)
-      {
-         result.setFactory(factory);
-      }
-      ClassLoader loader = assertClassLoader(factory, parent);
-      return loader;
-   }
-   
-   private KernelDeployment install(TestVFSClassLoaderFactory metaData) throws Exception
-   {
-      AbstractKernelDeployment deployment = new AbstractKernelDeployment();
-      deployment.setName(metaData.getName() + ":" + metaData.getVersion());
-      deployment.setBeanFactories(Collections.singletonList((BeanMetaDataFactory) metaData));
-      deploy(deployment);
-      return deployment;
-   }
-
-   /****** DOMAIN-RELATED METHODS *******************************************************/
-   
-   /**
-    * Here since we cannot access this via the classloading api
-    */
-   protected ClassLoaderDomain getChildDomainForLoader(ClassLoader loader)
-   {
-      //(scopedChildDomainsByLoader.get(loader) != domainRegistry.getClassLoaderDomainForLoader(loader))
-      // this statement is true only when the module has already been cleaned up from domainRegistry
-      // that's why we need another collection here
-      return scopedChildDomainsByLoader.get(loader);
-   }
-   
-   protected ClassLoaderDomain getChildDomainForPool(ClassPool pool)
-   {
-      return getChildDomainForLoader(pool.getClassLoader());
-   }
-
-   /****** CLASSPOOL METHODS ************************************************************/
-   
-   protected ClassPool createClassPool(String name, boolean importAll, URL... urls) throws Exception
-   {
-      return createClassPool(null, name, importAll, urls);
-   }
-   
-   protected ClassPool createClassPool(Result result, String name, boolean importAll, URL... urls) throws Exception
-   {
-      return createClassPool(result, name, importAll, (String) null, urls);
-   }
-   
-   protected ClassPool createClassPool(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception
-   {
-      ClassLoader loader = createClassLoader(result, name, importAll, packageCapability, urls);
-      return assertRegisterClassLoader(loader);
-   }
-   
-   protected ClassPool createClassPool(Result result, String name, boolean importAll, URL[] excludes, URL... urls) throws Exception
-   {
-      ClassLoader loader = createClassLoader(result, name, importAll, excludes, urls);
-      return assertRegisterClassLoader(loader);
-   }
-   
-   protected ClassPool createClassPool(Result result, String name, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      return createClassPool(result, name, false, builder, urls);
-   }
-   
-   protected ClassPool createClassPool(String name, boolean importAll, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      return createClassPool(null, name, importAll, builder, urls);
-   }
-
-   private ClassPool createClassPool(Result result, String name, boolean importAll, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, builder, urls);
-      ClassLoader loader = createClassLoader(result, factory);
-      return assertRegisterClassLoader(loader);
-   }
-
-   protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, boolean importAll, URL... urls) throws Exception
-   {
-      return createChildDomainParentFirstClassPool((Result)null, name, domainName, importAll, urls);
-   }
-   
-   protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
-   {
-      ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, importAll, urls);
-      return assertRegisterClassLoader(loader);
-   }
-   
-   protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, boolean importAll, String packageCapability, URL... urls) throws Exception
-   {
-      ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, importAll, packageCapability, urls);
-      return assertRegisterClassLoader(loader);
-   }
-   
-   protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
-   {
-      return createChildDomainParentFirstClassPool(null, name, domainName, importAll, parent, urls);
-   }
-
-   private ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
-   {
-      ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, importAll, parent.getClassLoader(), urls);
-      return assertRegisterClassLoader(loader);
-   }
-   
-   protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
-   {
-      return createChildDomainParentFirstClassPool(null, name, domainName, parentDomainName, importAll, urls);
-   }
-   
-   protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
-   {
-      return createChildDomainParentFirstClassPool(result, name, domainName, parentDomainName, importAll, null, urls);
-   }
-   
-   protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, String packageCapability, URL... urls) throws Exception
-   {
-      ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, importAll, packageCapability, urls);
-      return assertRegisterClassLoader(loader);
-   }
-
-   protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, boolean importAll, URL... urls) throws Exception
-   {
-      return createChildDomainParentLastClassPool((Result)null, name, domainName, importAll, urls);
-   }
-   
-   protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
-   {
-      ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, importAll, urls);
-      return assertRegisterClassLoader(loader);
-   }
-
-   protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, boolean importAll, URL[] excludes, URL... urls) throws Exception
-   {
-      ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, importAll, excludes, urls);
-      return assertRegisterClassLoader(loader);
-   }
-   
-   protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
-   {
-      return createChildDomainParentLastClassPool(null, name, domainName, importAll, parent, urls);
-   }
-
-   protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
-   {
-      ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, importAll, parent.getClassLoader(), urls);
-      return assertRegisterClassLoader(loader);
-   }
-
-   protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
-   {
-      return createChildDomainParentLastClassPool(null, name, domainName, parentDomainName, importAll, urls);
-   }
-   
-   protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
-   {
-      ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, parentDomainName, importAll, urls);
-      return assertRegisterClassLoader(loader);
-   }
-   
-   protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, builder, urls);
-      return assertRegisterClassLoader(loader);
-   }
-   
-   protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, builder, urls);
-      return assertRegisterClassLoader(loader);
-   }
-
-   protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, builder, urls);
-      return assertRegisterClassLoader(loader);
-   }
-
-   protected ClassPool createChildURLClassPool(ClassPool parent, URL url)
-   {
-      ClassLoader parentLoader = null;
-      if (parent != null)
-      {
-         parentLoader = parent.getClassLoader();
-      }
-      ClassLoader loader = createChildURLClassLoader(parentLoader, url);
-      return assertRegisterClassLoader(loader);
-   }
-   
-   private ClassPool assertRegisterClassLoader(ClassLoader loader)
-   {
-      ClassPool classPool = repository.registerClassLoader(loader);
-      assertNotNull(classPool);
-      assertBootstrap(classPool, String.class, Class.class, ClassLoader.class, Object.class,
-            Collection.class, List.class, Map.class, URL.class);
-      return classPool;
-   }
-   
-   private void assertBootstrap(ClassPool classPool, Class<?>... classes)
-   {
-      assertSameClassPool(null, classPool, int.class, boolean.class, byte.class, short.class,
-            long.class, float.class, double.class, char.class, void.class);
-      assertSameClassPool(ClassPool.getDefault(), classPool, classes);
-      
-   }
-
-   private void assertSameClassPool(ClassPool expectedClassPool, ClassPool classPool,
-         Class<?>... classes)
-   {
-      for (Class<?> clazz: classes)
-      {
-         CtClass ctClass = null;
-         try
-         {
-            ctClass = classPool.getCtClass(clazz.getName());
-         } catch (NotFoundException e)
-         {
-            e.printStackTrace();
-            fail(e.getMessage());
-         }
-         assertSame("Class " + clazz.getName() + " loaded by unexpected class pool ",
-               expectedClassPool, ctClass.getClassPool());
-      }
-   }
-   
-   /****** REGISTER & UNREGISTER METHODS ************************************************/
-   
-   /**
-    * This method does nothing but can be overriden by a subclass.
-    * 
-    * @param module the module that has been created.
-    */
-   protected void registerModule(Module module)
-   {
-      // do nothing, as this is already handled by ClassPool creation
-      // override this one only if you are not using ClassPools and need
-      // to have domainRegistry compliant with the modules/cls created
-   }
-   
-   /**
-    * Unregister a domain
-    * 
-    * @param name the class loader domain
-    */
-   protected void unregisterDomain(ClassLoaderDomain domain)
-   {
-      if (domain != null)
-      {
-         ClassLoaderDomain registeredDomain = system.getDomain(domain.getName());
-         if (registeredDomain == null)
-            throw new IllegalStateException("Domain is not registered: " + domain.getName());
-         if (registeredDomain != domain)
-            throw new IllegalStateException(domain + " is not the same as " + registeredDomain);
-         system.unregisterDomain(domain);
-      }
-   }
-   
-   /**
-    * Unregister a domain
-    * 
-    * @param name the class loader
-    */
-   protected void unregisterDomain(ClassLoader loader)
-   {
-      if (loader != null)
-      {
-         ClassLoaderDomain domain = getChildDomainForLoader(loader);
-         unregisterDomain(domain);
-      }
-   }
-
-   /**
-    * Unregister a domain
-    * 
-    * @param name the class pool
-    */
-   protected void unregisterDomain(ClassPool pool)
-   {
-      if (pool != null)
-      {
-         ClassLoaderDomain domain = getChildDomainForPool(pool);
-         unregisterDomain(domain);
-      }
-   }
-   
-   /**
-    * Unregister a domain
-    * 
-    * @param name the domain name
-    */
-   protected void unregisterDomain(String name)
-   {
-      if (name != null)
-      {
-         ClassLoaderDomain registeredDomain = system.getDomain(name);
-         unregisterDomain(registeredDomain);
-      }
-   }
-
-   /**
-    * Unregister a clas pool 
-    * @param pool the class pool
-    * @throws Exception
-    */
-   protected void unregisterClassPool(ClassPool pool)
-   {
-      if (pool != null)
-      {
-         ClassLoader loader = pool.getClassLoader();
-         repository.unregisterClassLoader(loader);
-         if (loader != null)
-         {
-            unregisterClassLoader(loader);
-         }
-      }
-   }
-
-   /**
-    * Unregisters a class loader
-    * 
-    * @param classLoader the classloader
-    * @throws Exception
-    */
-   protected void unregisterClassLoader(ClassLoader classLoader)
-   {
-      if (classLoader != null)
-      {
-         if (registeredURLClassLoaders.remove(classLoader) == false)
-         {
-            KernelDeployment deployment = loaderNameDeploymentRegistry.unregisterDeployment(classLoader);
-            unregisterDeployment(deployment);
-         }
-      }
-   }
-   
-   /**
-    * Unregisters a class loader.
-    * 
-    * @param name the class loader name
-    * @throws Exception
-    */
-   protected void unregisterClassLoader(String name)
-   {
-      KernelDeployment deployment = loaderNameDeploymentRegistry.unregisterDeployment(name);
-      unregisterDeployment(deployment);
-   }
-   
-   private void unregisterDeployment(KernelDeployment deployment)
-   {
-      if (deployment != null)
-      {
-         undeploy(deployment);
-      }
-   }
-
    /****** ASSERT METHODS ***************************************************************/
    
-   protected void assertModule(ClassLoader loader)
+   private void assertCannotLoadClass(String className, ClassLoader cl)
    {
-      ClassLoaderDomain domainForLoader = getChildDomainForLoader(loader);
-      if (domainForLoader == null)
-      {
-         domainForLoader = system.getDefaultDomain();
-      }
-      assertNotNull(domainForLoader);
-      
-      ClassLoaderDomain domainForModule = domainRegistry.getClassLoaderDomainForLoader(loader);
-      assertNotNull(domainForModule);
-      assertSame(domainForLoader, domainForModule);
-      
-      Module module = domainRegistry.getModule(loader);
-      assertNotNull(module);
-      assertEquals(domainForModule.getName(), module.getDomainName());
-      assertEquals(domainForModule.getParentDomainName(), module.getParentDomainName());
-   }
-   
-   protected ClassLoader assertClassLoader(TestVFSClassLoaderFactory factory) throws Exception
-   {
-      return assertClassLoader(factory, null);
-   }
-   
-   protected ClassLoader assertClassLoader(TestVFSClassLoaderFactory factory, ClassLoader parent) throws Exception
-   {
       try
       {
-         Object obj = getBean(getContextName(factory));
-         ClassLoader loader = assertInstanceOf(obj, ClassLoader.class);
-         
-         Module module = assertModule(getContextName(factory));
-         registerModule(module);
-         loaderNameDeploymentRegistry.registerLoaderName(factory.getName(), loader);
-         
-         return loader;
-      }
-      catch (IllegalStateException e)
-      {
-         throw new NoSuchClassLoaderException(e);
-      }
-   }
-   
-   protected void assertCannotLoadClass(String className, ClassLoader cl)
-   {
-      try
-      {
          cl.loadClass(className);
          fail("Should not have been able to load " + className);
       }
@@ -776,155 +173,7 @@
       }
    }
    
-   protected void assertCannotLoadCtClass(String className, ClassPool pool)
-   {
-      try
-      {
-         pool.get(className);
-      }
-      catch(NotFoundException e)
-      {
-      }
-   }
 
-   protected void assertCannotLoadClass(String className, ClassLoaderDomain domain)
-   {
-      try
-      {
-         Class<?> clazz = domain.loadClass(className);
-         if (clazz == null)
-         {
-            return;
-         }
-         fail("Should not have been able to load " + className);
-      }
-      catch(Exception expected)
-      {
-      }
-   }
-   
-   protected void assertNoClassLoader(Result result)
-   {
-      if (result == null)
-      {
-         throw new IllegalStateException("Null result");
-      }
-      assertNoClassLoader(getContextName(result.getFactory()));
-   }
-  
-   protected void assertNoClassPool(Result result) throws Exception
-   {
-      if (result == null)
-      {
-         throw new IllegalStateException("Null result");
-      }
-      assertNoClassLoader(getContextName(result.getFactory()));
-   }
-   
-   protected void assertNoClassLoader(String name)
-   {
-      try
-      {
-         Object bean = getBean(name, null);
-         if (bean != null)
-            fail("Should not be here: " + bean);
-      }
-      catch (Throwable t)
-      {
-         checkThrowable(IllegalStateException.class, t);
-      }
-   }
-   
-   private String getContextName(TestVFSClassLoaderFactory factory)
-   {
-      String contextName = factory.getContextName();
-      if (contextName == null)
-         contextName = factory.getName() + ":" + factory.getVersion();
-      return contextName;
-   }
-
-   
-   protected ClassPool assertClassPool(TestVFSClassLoaderFactory factory) throws Exception
-   {
-      ClassLoader loader = assertClassLoader(factory);
-      return assertRegisterClassLoader(loader);
-   }
-   
-   protected Class<?> assertLoadClass(String name, ClassLoader initiating) throws Exception
-   {
-      return assertLoadClass(name, initiating, initiating);
-   }
-   
-   protected Class<?> assertLoadClass(String name, ClassLoader initiating, ClassLoader expected) throws Exception
-   {
-      Class<?> clazz = initiating.loadClass(name);
-      if (expected != null)
-      {
-         assertSame(expected, clazz.getClassLoader());
-      }
-      return clazz;
-   }
-
-   protected CtClass assertLoadCtClass(String name, ClassPool initiating) throws Exception
-   {
-      return assertLoadCtClass(name, initiating, initiating);
-   }
-   
-   protected CtClass assertLoadCtClass(String name, ClassPool initiating, ClassPool expected) throws Exception
-   {
-      CtClass clazz = initiating.get(name);
-      if (expected != null)
-      {
-         assertSame(expected, clazz.getClassPool());
-      }
-      
-      //Load twice to test both create and cache
-      clazz = initiating.get(name);
-      if (expected != null)
-      {
-         assertSame(expected, clazz.getClassPool());
-      }
-      
-      assertLoadCtClassArray(name, clazz, initiating, expected);
-      
-      return clazz;
-   }
-   
-   private void assertLoadCtClassArray(String name, CtClass clazz, ClassPool initiating, ClassPool expected) throws Exception
-   {
-      assertLoadCtClassArray(name, clazz, 1, initiating, expected);
-      assertLoadCtClassArray(name, clazz, 2, initiating, expected);
-   }
-   
-   private void assertLoadCtClassArray(String name, CtClass clazz, int dimensions, ClassPool initiating, ClassPool expected) throws Exception
-   {
-      String arrayName = name;
-      for (int i = 0 ; i < dimensions ; i++)
-      {
-         arrayName = arrayName + "[]";
-      }
-      CtClass array = initiating.get(arrayName);
-      
-      if (expected != null)
-      {
-         assertSame(expected, array.getClassPool());
-      }
-      
-      assertSame(clazz.getClassPool(), array.getClassPool());
-      
-      CtClass type = array;
-      for (int i = 0 ; i < dimensions ; i++)
-      {
-         type = type.getComponentType();
-      }
-      assertSame(type, clazz);
-   }
-
-   protected Module assertModule(String contextName)
-   {
-      return assertBean(contextName + "$MODULE", Module.class);
-   }
-
    /****** TEST METHOD ******************************************************************/
    
    /**
@@ -939,47 +188,36 @@
    
    /****** AUXILIARY INTERNAL CLASS *****************************************************/
    
-   static class NoSuchClassLoaderException extends Exception
+   protected MicrocontainerFacade getMicrocontainerFacade()
    {
-      private static final long serialVersionUID = 1L;
-
-      public NoSuchClassLoaderException(Exception e)
-      {
-         super(e);
-      }
+      return new MicrocontainerFacadeImpl();
    }
    
-   private static class LoaderNameDeploymentRegistry
+   private class MicrocontainerFacadeImpl implements MicrocontainerFacade
    {
-      private Map<String, KernelDeployment> deploymentsByName = new HashMap<String, KernelDeployment>();
-      
-      private Map<ClassLoader, String> namesByLoader = new HashMap<ClassLoader, String>();
-
-      private void registerDeployment(String name, KernelDeployment deployment)
+      public void deploy(KernelDeployment deployment) throws Exception
       {
-         if (!deploymentsByName.containsKey(name))
-         {
-            deploymentsByName.put(name, deployment);
-         }
+         JBossClClassPoolTest.this.deploy(deployment);
       }
-      
-      private void registerLoaderName(String name, ClassLoader loader)
+   
+      public Object getBean(Object name)
       {
-         if (loader != null)
-         {
-            namesByLoader.put(loader, name);
-         }
+         return JBossClClassPoolTest.this.getBean(name);
       }
+   
+      public Object getBean(Object name, ControllerState state)
+      {
+         return JBossClClassPoolTest.this.getBean(name, state);
+      }
       
-      private KernelDeployment unregisterDeployment(String name)
+      public <T> T assertBean(Object name, Class<T> expected)
       {
-         return deploymentsByName.remove(name);
+         return JBossClClassPoolTest.this.assertBean(name, expected);
       }
       
-      private KernelDeployment unregisterDeployment(ClassLoader loader)
+      public void undeploy(KernelDeployment deployment)
       {
-         String name = namesByLoader.remove(loader);
-         return unregisterDeployment(name);
+         JBossClClassPoolTest.this.undeploy(deployment);
       }
    }
-}
+}
\ No newline at end of file

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyClassPoolTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyClassPoolTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the module dependency tests against a class pool test scenario.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ModuleDependencyClassPoolTestCase extends ModuleDependencyTest<CtClass, ClassPool>
+{
+   public static Test suite()
+   {
+      return new TestSuite(ModuleDependencyClassPoolTestCase.class);
+   }
+
+   public ModuleDependencyClassPoolTestCase(String name)
+   {
+      super(name);
+   }
+   
+   @Override
+   protected TestScenario<CtClass, ClassPool> getTestScenario()
+   {
+      return new ClassPoolTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyClassPoolTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencySanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencySanityTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencySanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,54 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the module dependency tests against a sanity test scenario (for class loader
+ * behavior sanity checking).
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ModuleDependencySanityTestCase extends ModuleDependencyTest<Class<?>, ClassLoader>
+{
+   public static Test suite()
+   {
+      return new TestSuite(ModuleDependencySanityTestCase.class);
+   }
+
+   public ModuleDependencySanityTestCase(String name)
+   {
+      super(name);
+   }
+   
+   @Override
+   protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+   {
+      return new SanityTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencySanityTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyTest.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyTest.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,82 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
+
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Reproduces org.jboss.test.classloading.vfs.metadata.test.ModuleDependencyUnitTestCase using
+ * our test framework. The original tests are testImportNoVersionCheck, testImportVersionCheck
+ * and testImportVersionCheckFailed.
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class ModuleDependencyTest<C, L> extends DependencyTest<C, L>
+{
+   public ModuleDependencyTest(String name)
+   {
+      super(name);
+   }
+
+   public void testSeveralModulesWithSamePackages() throws Exception
+   {
+      testSeveralModulesWithSamePackages("A");
+   }
+   
+   @Override
+   protected void createExportCapabilities(CLDeploymentBuilder clBuilderA, String moduleName,
+         String version)
+   {
+      if (version == null)
+      {
+         clBuilderA.createModule(moduleName);
+      }
+      else
+      {
+         clBuilderA.createModule(moduleName, version);
+      }
+      clBuilderA.createPackage(PACKAGE_A);
+      clBuilderA.setImportAll(false);
+   }
+   
+   @Override
+   protected void createRequireCapabilities(CLDeploymentBuilder clBuilderB, VersionRange version)
+   {
+      if (version == null)
+      {
+         clBuilderB.createRequireModule("ModuleA");
+      }
+      else
+      {
+         clBuilderB.createRequireModule("ModuleA", version);
+      }
+      clBuilderB.createModule("ModuleB");
+      clBuilderB.createPackage(PACKAGE_B);
+      clBuilderB.setImportAll(false);
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyTest.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyClassPoolTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyClassPoolTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the package dependency tests against a class pool test scenario.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class PackageDependencyClassPoolTestCase extends
+   PackageDependencyTest<CtClass, ClassPool>
+{
+   public static Test suite()
+   {
+      return new TestSuite(PackageDependencyClassPoolTestCase.class);
+   }
+
+   public PackageDependencyClassPoolTestCase(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected TestScenario<CtClass, ClassPool> getTestScenario()
+   {
+      return new ClassPoolTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyClassPoolTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencySanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencySanityTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencySanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the package dependency tests against a sanity test scenario (for class loader
+ * behavior sanity checking).
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class PackageDependencySanityTestCase extends
+   PackageDependencyTest<Class<?>, ClassLoader>
+{
+   public static Test suite()
+   {
+      return new TestSuite(PackageDependencySanityTestCase.class);
+   }
+
+   public PackageDependencySanityTestCase(String name)
+   {
+      super(name);
+   }
+   
+   
+   @Override
+   protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+   {
+      return new SanityTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencySanityTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyTest.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyTest.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,82 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
+
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Reproduces org.jboss.test.classloading.vfs.metadata.test.PackageDependencyUnitTestCase using
+ * our test framework. The original tests are testImportNoVersionCheck, testImportVersionCheck
+ * and testImportVersionCheckFailed.
+ * 
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision$
+ */
+public abstract class PackageDependencyTest<C, L> extends DependencyTest<C, L>
+{
+   public PackageDependencyTest(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   public void testSeveralModulesWithSamePackages() throws Exception
+   {
+      testSeveralModulesWithSamePackages("X");
+   }
+   
+   @Override
+   protected void createExportCapabilities(CLDeploymentBuilder clBuilderA, String moduleName,
+         String version)
+   {
+      clBuilderA.createModule(moduleName);
+      if (version == null)
+      {
+         clBuilderA.createPackage(PACKAGE_A);
+      }
+      else
+      {
+         clBuilderA.createPackage(PACKAGE_A, version);
+      }
+      clBuilderA.setImportAll(false);
+   }
+   
+   @Override
+   protected void createRequireCapabilities(CLDeploymentBuilder clBuilderB, VersionRange version)
+   {
+      if (version == null)
+      {
+         clBuilderB.createRequirePackage(PACKAGE_A);
+      }
+      else
+      {
+         clBuilderB.createRequirePackage(PACKAGE_A, version);
+      }
+      clBuilderB.createPackage(PACKAGE_B);
+      clBuilderB.setImportAll(false);
+   }
+}


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyTest.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleClassPoolTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleClassPoolTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the ReExportModule tests against a class pool test scenario.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ReExportModuleClassPoolTestCase extends
+      ReExportModuleTest<CtClass, ClassPool>
+{
+   public static Test suite()
+   {
+      return new TestSuite(ReExportModuleClassPoolTestCase.class);
+   }
+
+   public ReExportModuleClassPoolTestCase(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected TestScenario<CtClass, ClassPool> getTestScenario()
+   {
+      return new ClassPoolTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleClassPoolTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleSanityTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleSanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the ReExportModule tests against a sanity test scenario (for class loader behavior
+ * sanity checking).
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ReExportModuleSanityTestCase extends
+      ReExportModuleTest<Class<?>, ClassLoader>
+{
+   public static Test suite()
+   {
+      return new TestSuite(ReExportModuleSanityTestCase.class);
+   }
+
+   public ReExportModuleSanityTestCase(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+   {
+      return new SanityTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleSanityTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleTest.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleTest.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,46 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
+
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Reproduces org.jboss.test.classloading.vfs.metadata.test.ReExportPackageUnitTestCase using
+ * our test framework.
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class ReExportModuleTest<C, L> extends ReExportTest<C, L>
+{
+   public ReExportModuleTest(String name)
+   {
+      super(name);
+   }
+   
+   @Override
+   protected void createReExport(CLDeploymentBuilder clBuilder)
+   {
+      clBuilder.createReExportModule(MODULE_A);
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleTest.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageClassPoolTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageClassPoolTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the ReExportPackage tests against a class pool test scenario.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ReExportPackageClassPoolTestCase extends
+      ReExportPackageTest<CtClass, ClassPool>
+{
+   public static Test suite()
+   {
+      return new TestSuite(ReExportPackageClassPoolTestCase.class);
+   }
+
+   public ReExportPackageClassPoolTestCase(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected TestScenario<CtClass, ClassPool> getTestScenario()
+   {
+      return new ClassPoolTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageClassPoolTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageSanityTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageSanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the ReExportPackage tests against a sanity test scenario (for class loader behavior
+ * sanity checking).
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ReExportPackageSanityTestCase extends
+      ReExportPackageTest<Class<?>, ClassLoader>
+{
+   public static Test suite()
+   {
+      return new TestSuite(ReExportPackageSanityTestCase.class);
+   }
+
+   public ReExportPackageSanityTestCase(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+   {
+      return new SanityTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageSanityTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageTest.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageTest.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,48 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Reproduces org.jboss.test.classloading.vfs.metadata.test.ReExportPackageUnitTestCase using
+ * our test framework.
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class ReExportPackageTest<C, L> extends ReExportTest<C, L>
+{
+   public ReExportPackageTest(String name)
+   {
+      super(name);
+   }
+   
+   @Override
+   protected void createReExport(CLDeploymentBuilder clBuilder)
+   {
+      clBuilder.createReExportPackage(PACKAGE_A);
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageTest.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportTest.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportTest.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,142 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
+
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Contains tests for reExport test scenarios, such as reExportModule and ReExportPackage. 
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class ReExportTest<C, L> extends JBossClClassPoolTest<C, L>
+{
+   protected static final String MODULE_B = "b";
+   protected static final String MODULE_A = "a";
+   
+   
+   public ReExportTest(String name)
+   {
+      super(name);
+   }
+   public void testReExport() throws Exception
+   {
+      assertReExport(true);
+   }
+   
+   public void testNoReExport() throws Exception
+   {
+      assertReExport(false);
+   }
+   
+   private void assertReExport(boolean reExport) throws Exception
+   {
+      CLDeploymentBuilder clBuilderA = new CLDeploymentBuilder("A", JAR_A_1);
+      clBuilderA.createModule(MODULE_A).createPackage(PACKAGE_A).setImportAll(false);
+      L loaderA = testScenario.createLoader(clBuilderA);
+      
+      C classA = testScenario.loadClass(loaderA, CLASS_A);
+      testScenario.cannotLoadClass(loaderA, CLASS_B);
+      testScenario.cannotLoadClass(loaderA, CLASS_C);
+      
+      CLDeploymentBuilder clBuilderB = new CLDeploymentBuilder("B", JAR_B_1);
+      clBuilderB.createModule(MODULE_B).createPackage(PACKAGE_B).setImportAll(false);
+      createReExport(clBuilderB);
+      L loaderB = testScenario.createLoader(clBuilderB);
+      
+      C classA1 = testScenario.loadClass(loaderA, CLASS_A);
+      assertSame(classA, classA1);
+      testScenario.cannotLoadClass(loaderA, CLASS_B);
+      testScenario.cannotLoadClass(loaderA, CLASS_C);
+      
+      classA1 = testScenario.loadClass(loaderB, loaderA, CLASS_A);
+      assertSame(classA, classA1);
+      C classB = testScenario.loadClass(loaderB, CLASS_B);
+      testScenario.cannotLoadClass(loaderB, CLASS_C);
+      
+      CLDeploymentBuilder clBuilderC = new CLDeploymentBuilder("C", JAR_C_1);
+      clBuilderC.setImportAll(false);
+      if (reExport)
+      {
+         clBuilderC.createRequireModule(MODULE_B);
+      }
+      else
+      {
+         clBuilderC.createRequirePackage(PACKAGE_B);
+      }
+      L loaderC = testScenario.createLoader(clBuilderC);
+      
+      classA1 = testScenario.loadClass(loaderA, CLASS_A);
+      assertSame(classA, classA1);
+      testScenario.cannotLoadClass(loaderA, CLASS_B);
+      testScenario.cannotLoadClass(loaderA, CLASS_C);
+      
+      classA1 = testScenario.loadClass(loaderB, loaderA, CLASS_A);
+      assertSame(classA, classA1);
+      C classB1 = testScenario.loadClass(loaderB, CLASS_B);
+      assertSame(classB, classB1);
+      testScenario.cannotLoadClass(loaderB, CLASS_C);
+      
+      if (reExport)
+      {
+         classA1 = testScenario.loadClass(loaderC, loaderA, CLASS_A);
+         assertSame(classA, classA1);
+      }
+      else
+      {
+         testScenario.cannotLoadClass(loaderC, CLASS_A);
+      }
+      classB1 = testScenario.loadClass(loaderC, loaderB, CLASS_B);
+      assertSame(classB, classB1);
+      testScenario.loadClass(loaderC, CLASS_C);
+      
+      testScenario.destroyLoader(clBuilderC);
+      
+      classA1 = testScenario.loadClass(loaderA, CLASS_A);
+      assertSame(classA, classA1);
+      testScenario.cannotLoadClass(loaderA, CLASS_B);
+      testScenario.cannotLoadClass(loaderA, CLASS_C);
+      
+      classA1 = testScenario.loadClass(loaderB, loaderA, CLASS_A);
+      assertSame(classA, classA1);
+      classB1 = testScenario.loadClass(loaderB, CLASS_B);
+      assertSame(classB, classB1);
+      testScenario.cannotLoadClass(loaderB, CLASS_C);
+      
+      testScenario.destroyLoader(clBuilderB);
+      
+      classA1 = testScenario.loadClass(loaderA, CLASS_A);
+      assertSame(classA, classA1);
+      testScenario.cannotLoadClass(loaderA, CLASS_B);
+      testScenario.cannotLoadClass(loaderA, CLASS_C);
+   }
+   
+   protected abstract void createReExport(CLDeploymentBuilder clBuilder);
+}


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportTest.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReplaceReferencesClassPoolTestCase.java (from rev 96653, projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java)
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReplaceReferencesClassPoolTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReplaceReferencesClassPoolTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,333 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_ROOT;
+
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.ProtectionDomain;
+import java.util.Collection;
+
+import javassist.ClassPool;
+import javassist.CodeConverter;
+import javassist.CtClass;
+import javassist.CtConstructor;
+import javassist.CtField;
+import javassist.CtMethod;
+import javassist.CtNewMethod;
+import javassist.Modifier;
+import javassist.scopedpool.ScopedClassPool;
+import junit.framework.Test;
+
+import org.jboss.classloading.spi.DomainClassLoader;
+import org.jboss.classpool.spi.ClassPoolRepository;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.util.loading.Translator;
+
+/**
+ * Test that field/constructor wrapper replacement works since there were some problems in AS5
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ReplaceReferencesClassPoolTestCase extends JBossClClassPoolTest<CtClass, ClassPool>
+{
+   final static String STRING = String.class.getName();
+
+   public final static URL JAR_PARENT = getURLRelativeToProjectRoot("/replacereferences-parent.jar");
+
+   public final static URL JAR_CHILD = getURLRelativeToProjectRoot("/replacereferences-child.jar");
+
+   public final static String PACKAGE_REPLACEMENT = PACKAGE_ROOT + ".replacereferences";
+
+   public final static String PACKAGE_REPLACEMENT_CHILD = PACKAGE_REPLACEMENT + ".child";
+
+   public final static String PACKAGE_REPLACEMENT_PARENT = PACKAGE_REPLACEMENT + ".parent";
+
+   public final static String CLASS_INVOKED = PACKAGE_REPLACEMENT + ".Invoked";
+
+   public final static String CLASS_PARENT_CALLER = PACKAGE_REPLACEMENT_PARENT + ".ParentCaller";
+
+   public final static String CLASS_CHILD_CALLER = PACKAGE_REPLACEMENT_CHILD + ".ChildCaller";
+
+   public final String x = "org.jboss.test.classpool.support.excluded";
+
+   private final static Translator TRANSLATOR = new MyTranslator();
+
+   public ReplaceReferencesClassPoolTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(ReplaceReferencesClassPoolTestCase.class);
+   }
+   
+   @Override
+   protected TestScenario<CtClass, ClassPool> getTestScenario()
+   {
+      return new ClassPoolTestScenario(getMicrocontainerFacade());
+   }
+   
+   @Override
+   @SuppressWarnings("all")
+   public void setUp() throws Exception
+   {
+      super.setUp();
+      system.setTranslator(TRANSLATOR);
+   }
+   
+   @Override
+   @SuppressWarnings("all")
+   public void tearDown() throws Exception
+   {
+      system.setTranslator(null);
+      super.tearDown();
+   }
+   
+   public void testParentLoadedParentDelegation() throws Exception
+   {
+      ClassPool globalPool = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_PARENT));
+      CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("SCOPED", JAR_CHILD);
+      childCLBuilder.createDomain("SCOPED", true);
+      ClassPool scopedPool = testScenario.createLoader(childCLBuilder);
+      
+      loadClassAndRunTest(CLASS_PARENT_CALLER, globalPool.getClassLoader());
+      loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
+   }
+
+   public void testParentLoadedNoParentDelegation() throws Exception
+   {
+      ClassPool globalPool = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_PARENT));
+      CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("SCOPED", JAR_CHILD);
+      childCLBuilder.createDomain("SCOPED", false);
+      ClassPool scopedPool = testScenario.createLoader(childCLBuilder);
+      
+      loadClassAndRunTest(CLASS_PARENT_CALLER, globalPool.getClassLoader());
+      loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
+   }
+
+   public void testParentNotLoadedParentDelegation() throws Exception
+   {
+      testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_PARENT));
+      CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("SCOPED", JAR_CHILD);
+      childCLBuilder.createDomain("SCOPED", true);
+      ClassPool scopedPool = testScenario.createLoader(childCLBuilder);
+      
+      loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
+   }
+
+   public void testParentNotLoadedNoParentDelegation() throws Exception
+   {
+      testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_PARENT));
+      CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("SCOPED", JAR_CHILD);
+      childCLBuilder.createDomain("SCOPED", false);
+      ClassPool scopedPool = testScenario.createLoader(childCLBuilder);
+      
+      loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
+   }
+
+   private void loadClassAndRunTest(String classname, ClassLoader loader) throws Exception
+   {
+      Class<?> caller = loader.loadClass(classname);
+      Method m = caller.getMethod("test");
+      m.invoke(null, new Object[]
+      {});
+   }
+
+   final static class MyTranslator implements Translator
+   {
+      public void unregisterClassLoader(DomainClassLoader loader)
+      {
+      }
+
+      public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined,
+            ProtectionDomain protectionDomain, byte[] classfileBuffer) throws Exception
+      {
+         if (!className.startsWith(PACKAGE_REPLACEMENT))
+         {
+            return null;
+         }
+         if (className.endsWith("Invoked"))
+         {
+            return null;
+         }
+
+         ClassPool pool = ClassPoolRepository.getInstance().registerClassLoader(loader);
+         CtClass clazz = pool.get(className);
+         if (className.endsWith("Caller"))
+         {
+            instrumentReplaceReferences(clazz);
+         }
+         else
+         {
+            instrumentCreateWrappers(clazz);
+         }
+
+         if (clazz.isModified())
+         {
+            return clazz.toBytecode();
+         }
+         return null;
+      }
+
+      private CtClass instrumentCreateWrappers(CtClass clazz)
+      {
+         try
+         {
+            if (!clazz.getName().startsWith(PACKAGE_REPLACEMENT))
+            {
+               return clazz;
+            }
+            addWrappersToClass(clazz);
+         }
+         catch (Exception e)
+         {
+            System.err.println("Exception creating wrappers for " + clazz);
+            e.printStackTrace();
+         }
+         return clazz;
+      }
+
+      private CtClass instrumentReplaceReferences(CtClass clazz) throws Exception
+      {
+         if (!clazz.getName().startsWith(PACKAGE_REPLACEMENT))
+         {
+            return clazz;
+         }
+         replaceReferences(clazz);
+         return clazz;
+      }
+
+      public void unregisterClassLoader(ClassLoader loader)
+      {
+      }
+
+      private void addWrappersToClass(CtClass clazz) throws Exception
+      {
+         addFieldWrappers(clazz);
+         addConstructorWrappers(clazz);
+      }
+
+      private void addFieldWrappers(CtClass clazz) throws Exception
+      {
+         CtClass objectCt = clazz.getClassPool().getCtClass(Object.class.getName());
+
+         for (CtField field : clazz.getFields())
+         {
+            if (field.getDeclaringClass() == objectCt)
+            {
+               continue;
+            }
+            CtMethod rmethod = 
+               CtNewMethod.make(
+                     Modifier.PUBLIC | Modifier.STATIC,
+                     CtClass.intType, 
+                     getFieldReadWrapperName(field.getName()),
+                     new CtClass[]{objectCt}, 
+                     null, 
+                     "{" + CLASS_INVOKED + ".invoked = true; return ((" + clazz.getName() + ")$1)." + field.getName() + ";}", 
+                     clazz);
+            clazz.addMethod(rmethod);
+
+
+            CtMethod wmethod = 
+               CtNewMethod.make(
+                     Modifier.PUBLIC | Modifier.STATIC,
+                     CtClass.voidType, 
+                     getFieldWriteWrapperName(field.getName()),
+                     new CtClass[]{objectCt, field.getType()}, 
+                     null,
+                     "{" + CLASS_INVOKED + ".invoked = true; ((" + clazz.getName() + ")$1)." + field.getName() + "=(int)$2;}", 
+                     clazz);
+            clazz.addMethod(wmethod);
+         }
+      }
+
+      private void addConstructorWrappers(CtClass clazz) throws Exception
+      {
+         for (CtConstructor ctor : clazz.getConstructors())
+         {
+            CtMethod wrapper = CtNewMethod.make(clazz, getConstructorName(clazz), ctor.getParameterTypes(), null,
+                  "{" + CLASS_INVOKED + ".invoked = true; return new " + clazz.getName() + "($$);}", clazz);
+            wrapper.setModifiers(Modifier.PUBLIC | Modifier.STATIC);
+            clazz.addMethod(wrapper);
+         }
+      }
+
+      private void replaceReferences(final CtClass clazz) throws Exception
+      {
+         CodeConverter conv = new CodeConverter();
+         ScopedClassPool pool = ClassPoolRepository.getInstance().getClassPoolFactory().
+               create(clazz.getClassPool(), ClassPoolRepository.getInstance());
+         Collection<String> refs = AccessController.doPrivileged(new PrivilegedAction<Collection<String>>() {
+
+            @SuppressWarnings("all")
+            public Collection<String> run()
+            {
+               return clazz.getRefClasses();
+            }});
+         
+         for (String ref : refs)
+         {
+            if (ref.startsWith(PACKAGE_REPLACEMENT_CHILD) || ref.startsWith(PACKAGE_REPLACEMENT_PARENT))
+            {
+               if (ref.endsWith("Caller"))
+               {
+                  continue;
+               }
+               CtClass ctRef = pool.get(ref);
+               CtField[] fields = ctRef.getDeclaredFields();
+               for (CtField fld : fields)
+               {
+                  conv.replaceFieldRead(fld, ctRef, getFieldReadWrapperName(fld.getName()));
+                  conv.replaceFieldWrite(fld, ctRef, getFieldWriteWrapperName(fld.getName()));
+               }
+               conv.replaceNew(ctRef, ctRef, getConstructorName(ctRef));
+            }
+         }
+         clazz.instrument(conv);
+      }
+
+      private String getFieldReadWrapperName(String fieldName)
+      {
+         return fieldName + "_read";
+      }
+
+      private String getFieldWriteWrapperName(String fieldName)
+      {
+         return fieldName + "_write";
+      }
+
+      private String getConstructorName(CtClass clazz)
+      {
+         return clazz.getSimpleName() + "_new";
+      }
+   }
+}

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryClassPoolTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryClassPoolTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,285 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
+
+import java.util.ArrayList;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.common.ClassFactory;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the repository tests against a class pool test scenario.
+ * This class also contains extra tests that are targeted expecifically to ClassPools.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class RepositoryClassPoolTestCase extends RepositoryTest<CtClass, ClassPool>
+{
+   public static Test suite()
+   {
+      return new TestSuite(RepositoryClassPoolTestCase.class);
+   }
+
+   public RepositoryClassPoolTestCase(String name)
+   {
+      super(name);
+   }
+   
+   @Override
+   protected TestScenario<CtClass, ClassPool> getTestScenario()
+   {
+      return new ClassPoolTestScenario(getMicrocontainerFacade());
+   }
+   
+   public void testCanLoadArrayCtClass() throws Exception
+   {
+      ClassPool poolA = testScenario.createLoader(new CLDeploymentBuilder("A", JAR_A_1));
+      ClassPool poolB = testScenario.createLoader(new CLDeploymentBuilder("B", JAR_B_1));
+      accessCanLoadCtArray(poolA, poolB);
+      accessCanLoadCtArray(poolA, poolB);
+   }
+   
+   private void accessCanLoadCtArray(ClassPool poolA, ClassPool poolB) throws Exception
+   {
+      poolA.get(String.class.getName() + "[][]");
+      CtClass a = poolA.get(CLASS_A);
+      CtClass aArray = poolA.get(CLASS_A + "[]");
+      CtClass bArray = poolA.get(CLASS_B + "[][]");
+      CtClass b = poolA.get(CLASS_B);
+      
+      CtClass byteClassA = poolA.get("byte");
+      CtClass byteClassB = poolB.get("byte");
+      assertSame(byteClassA, byteClassB);
+      assertNotSame(poolA, byteClassA.getClassPool());
+      assertNotSame(poolB, byteClassA.getClassPool());
+      CtClass intArrayClass = poolA.get("int[]");
+      CtClass intClass = poolB.get("int");
+      assertSame(intClass, intArrayClass.getComponentType());
+      assertSame(byteClassA.getClassPool(), intClass.getClassPool());
+      
+      
+      
+      assertTrue(aArray.isArray());
+      assertSame(a, aArray.getComponentType());
+      assertTrue(bArray.isArray());
+      assertTrue(bArray.getComponentType().isArray());
+      assertSame(b, bArray.getComponentType().getComponentType());
+      assertNotSame(aArray.getClassPool(), bArray.getClassPool());
+      assertSame(poolA, aArray.getClassPool());
+      assertSame(poolB, bArray.getClassPool());
+      assertSame(a.getClassPool(), aArray.getClassPool());
+      assertSame(b.getClassPool(), bArray.getClassPool());
+   }
+
+  public void testCreatedClassInSamePackage() throws Exception
+   {
+     ClassPool poolA = testScenario.createLoader(new CLDeploymentBuilder("A", JAR_A_1));
+     ClassPool poolB = testScenario.createLoader(new CLDeploymentBuilder("B", JAR_B_1));
+
+     ClassLoader loaderA = poolA.getClassLoader();
+     ClassLoader loaderB = poolB.getClassLoader();
+     
+     Class<?> classA = loaderA.loadClass(CLASS_A);
+     Class<?> classB = loaderB.loadClass(CLASS_B);
+     
+     Object createdA = ClassFactory.create(classA, loaderA);
+     Object createdB = ClassFactory.create(classB, loaderB);
+     
+     Class<?> createdClassA = createdA.getClass();
+     Class<?> createdClassB = createdB.getClass();
+     
+     assertTrue(classA.isAssignableFrom(createdClassA));
+     assertTrue(classB.isAssignableFrom(createdClassB));
+     assertTrue(createdClassA.getName().startsWith(PACKAGE_A));
+     assertTrue(createdClassB.getName().startsWith(PACKAGE_B));
+     
+     assertSame(createdClassA, loaderA.loadClass(createdClassA.getName()));
+     assertSame(createdClassB, loaderA.loadClass(createdClassB.getName()));
+     assertSame(createdClassA, loaderB.loadClass(createdClassA.getName()));
+     assertSame(createdClassB, loaderB.loadClass(createdClassB.getName()));
+   }
+
+   /*public void testMakeContainerProxyInSamePackage() throws Exception
+   {
+      ClassPool globalPoolA = null;
+      ClassPool globalPoolB = null;
+      try
+      {
+         globalPoolA = createClassPool("A", true, JAR_A_1);
+         globalPoolB = createClassPool("B", true, JAR_B_1);
+         
+         ClassLoader loaderA = globalPoolA.getClassLoader();
+         ClassLoader loaderB = globalPoolB.getClassLoader();
+         
+         loaderA.loadClass(ProxyTemplate.class.getName());
+
+         Object proxyA = assertMakeContainerProxy(loaderA.loadClass(CLASS_A), loaderA);
+         Object proxyB = assertMakeContainerProxy(loaderB.loadClass(CLASS_B), loaderB);
+         
+         Class<?> clazzA = proxyA.getClass();
+         Class<?> clazzB = proxyB.getClass();
+         
+         assertTrue(AspectManaged.class.isAssignableFrom(clazzA));
+         assertTrue(AspectManaged.class.isAssignableFrom(clazzB));
+         assertTrue(clazzA.getName().startsWith(PACKAGE_A));
+         assertTrue(clazzB.getName().startsWith(PACKAGE_B));
+         
+         assertSame(clazzA, loaderA.loadClass(clazzA.getName()));
+         assertSame(clazzB, loaderA.loadClass(clazzB.getName()));
+         assertSame(clazzA, loaderB.loadClass(clazzA.getName()));
+         assertSame(clazzB, loaderB.loadClass(clazzB.getName()));
+      }
+      finally
+      {
+         unregisterClassPool(globalPoolA);
+         unregisterClassPool(globalPoolB);
+      }
+   }*/
+   
+   /*public void testMakeContainerProxyForSystemClass() throws Exception
+   {
+      ClassPool globalPoolA = null;
+      ClassPool globalPoolB = null;
+      try
+      {
+         BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
+         createModule("ModuleA").
+         createPackage(PACKAGE_A).
+         createPackage(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE);
+         globalPoolA = createClassPool("A", true, builderA, JAR_A_1);
+         
+         BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
+         createModule("ModuleB").
+         createPackage(PACKAGE_B).
+         createPackage(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE);
+         globalPoolB = createClassPool("B", true, builderB, JAR_B_1);
+         
+         ClassLoader loaderA = globalPoolA.getClassLoader();
+         ClassLoader loaderB = globalPoolB.getClassLoader();
+
+         loaderA.loadClass(ProxyTemplate.class.getName());
+
+         Object proxyA = assertMakeContainerProxy(ArrayList.class, loaderA);
+         Object proxyB = assertMakeContainerProxy(ArrayList.class, loaderB);
+         
+         Class<?> clazzA = proxyA.getClass();
+         Class<?> clazzB = proxyB.getClass();
+         
+         assertTrue(AspectManaged.class.isAssignableFrom(clazzA));
+         assertTrue(AspectManaged.class.isAssignableFrom(clazzB));
+         assertTrue(clazzA.getName().startsWith(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE));
+         assertTrue(clazzB.getName().startsWith(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE));
+         
+         assertSame(clazzA, loaderA.loadClass(clazzA.getName()));
+         assertSame(clazzB, loaderA.loadClass(clazzB.getName()));
+         assertSame(clazzA, loaderB.loadClass(clazzA.getName()));
+         assertSame(clazzB, loaderB.loadClass(clazzB.getName()));
+      }
+      finally
+      {
+         unregisterClassPool(globalPoolA);
+         unregisterClassPool(globalPoolB);
+      }
+   }*/
+   
+   public void testCreateClassForSystemClass() throws Exception
+   {
+      CLDeploymentBuilder clBuilderA = new CLDeploymentBuilder("A", JAR_A_1);
+      clBuilderA.createModule("ModuleA").createPackage(PACKAGE_A);
+      clBuilderA.createPackage(ClassFactory.PACKAGE).setImportAll(true);
+      ClassPool poolA = testScenario.createLoader(clBuilderA);
+      
+      CLDeploymentBuilder clBuilderB = new CLDeploymentBuilder("B", JAR_B_1);
+      clBuilderB.createModule("ModuleB").createPackage(PACKAGE_B);
+      clBuilderB.createPackage(ClassFactory.PACKAGE).setImportAll(true);
+      ClassPool poolB = testScenario.createLoader(clBuilderB);
+
+      ClassLoader loaderA = poolA.getClassLoader();
+      ClassLoader loaderB = poolB.getClassLoader();
+
+      Object createdA = ClassFactory.create(ArrayList.class, loaderA);
+      Object createdB = ClassFactory.create(ArrayList.class, loaderB);
+
+      Class<?> createdClassA = createdA.getClass();
+      Class<?> createdClassB = createdB.getClass();
+
+      assertTrue(ArrayList.class.isAssignableFrom(createdClassA));
+      assertTrue(ArrayList.class.isAssignableFrom(createdClassB));
+      assertTrue(createdClassA.getName().startsWith(ClassFactory.PACKAGE));
+      assertTrue(createdClassB.getName().startsWith(ClassFactory.PACKAGE));
+
+      assertSame(createdClassA, loaderA.loadClass(createdClassA.getName()));
+      assertSame(createdClassB, loaderA.loadClass(createdClassB.getName()));
+      assertSame(createdClassA, loaderB.loadClass(createdClassA.getName()));
+      assertSame(createdClassB, loaderB.loadClass(createdClassB.getName()));
+   }
+   
+   /*private Object assertMakeContainerProxy(Class<?> parent, ClassLoader loader) throws Exception
+   {
+      AOPProxyFactoryParameters params = new AOPProxyFactoryParameters();
+      params.setProxiedClass(parent);
+      params.setTarget(parent.newInstance());
+      params.setClassLoader(loader);
+      params.setInterfaces(new Class<?>[] {java.io.Serializable.class});
+      GeneratedAOPProxyFactory factory = new GeneratedAOPProxyFactory();
+      Object proxy = factory.createAdvisedProxy(params);
+      assertFalse(parent.getName() == proxy.getClass().getName());
+      assertSame(loader, proxy.getClass().getClassLoader());
+      return proxy;
+   }*/
+   
+   /*private static final String PROXY_PACKAGE = "org.test.classpool.proxy";
+   private static final String PROXY_CLASS = PROXY_PACKAGE + ".Proxy";
+   private static int counter = 0;
+   
+   private Object assertMakeSimpleProxy(Class<?> parent, ClassLoader loader) throws Exception
+   {
+      //AOPProxyFactoryParameters params = new AOPProxyFactoryParameters();
+      //params.setProxiedClass(parent);
+      //params.setTarget(parent.newInstance());
+      //params.setClassLoader(loader);
+      ClassPool pool = ClassPoolRepository.getInstance().getRegisteredCLs().get(loader);
+      CtClass ctClazz = pool.makeClass(PROXY_CLASS + counter++);
+      ctClazz.setSuperclass(pool.get(parent.getName()));
+      Class<?> clazz = pool.toClass(ctClazz);
+      //params.setInterfaces(new Class<?>[] {java.io.Serializable.class});
+      //GeneratedAOPProxyFactory factory = new GeneratedAOPProxyFactory();
+      //Object proxy = factory.createAdvisedProxy(params);
+      //assertFalse(parent.getName() == proxy.getClass().getName());
+      assertSame(loader, clazz.getClassLoader());
+      //return proxy;
+      return clazz.newInstance();
+   }*/
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryClassPoolTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositorySanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositorySanityTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositorySanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,54 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the repository tests against a sanity test scenario (for class loader behavior
+ * sanity checking).
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class RepositorySanityTestCase extends RepositoryTest<Class<?>, ClassLoader>
+{
+   public static Test suite()
+   {
+      return new TestSuite(RepositorySanityTestCase.class);
+   }
+
+   public RepositorySanityTestCase(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+   {
+      return new SanityTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositorySanityTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryTest.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryTest.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,388 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_D;
+
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Tests the behaviour of the new classloaders.
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class RepositoryTest<C, L> extends JBossClClassPoolTest<C, L>
+{
+   final static String STRING = String.class.getName();
+   
+   public RepositoryTest(String name)
+   {
+      super(name);
+   }
+
+   
+   public void testGlobalScope() throws Exception
+   {
+      CLDeploymentBuilder clBuilderA = new CLDeploymentBuilder("A", JAR_A_1);
+      L loaderA = testScenario.createLoader(clBuilderA);
+      
+      CLDeploymentBuilder clBuilderB = new CLDeploymentBuilder("B", JAR_B_1);
+      L loaderB = testScenario.createLoader(clBuilderB);
+      
+      C aFromA = testScenario.loadClass(loaderA, CLASS_A);
+      C bFromA = testScenario.loadClass(loaderA, loaderB, CLASS_B);
+      C aFromB = testScenario.loadClass(loaderB, loaderA, CLASS_A);
+      C bFromB = testScenario.loadClass(loaderB, CLASS_B);
+      assertSame(aFromA, aFromB);
+      assertSame(bFromA, bFromB);
+
+      testScenario.destroyLoader(clBuilderB);
+      
+      aFromA = testScenario.loadClass(loaderA, CLASS_A);
+      testScenario.cannotLoadClass(loaderA, CLASS_B);
+   }
+
+   public void testChildDomain() throws Exception
+   {
+      L loaderA = testScenario.createLoader(new CLDeploymentBuilder("A", JAR_A_1));
+      L loaderB = testScenario.createLoader(new CLDeploymentBuilder("B", JAR_B_2));
+      
+      CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("C", JAR_C_1);
+      childCLBuilder.createDomain("CHILD", true);
+      L childLoader = testScenario.createLoader(childCLBuilder);
+      
+      C aFromA = testScenario.loadClass(loaderA, CLASS_A);
+      C bFromB = testScenario.loadClass(loaderB, CLASS_B);
+      testScenario.loadClass(childLoader, CLASS_C);
+      C aFromC = testScenario.loadClass(childLoader, loaderA, CLASS_A);
+      C bFromC = testScenario.loadClass(childLoader, loaderB, CLASS_B);
+      
+      assertSame(aFromA, aFromC);
+      assertSame(bFromB, bFromC);
+      testScenario.cannotLoadClass(loaderA, CLASS_C);
+      testScenario.cannotLoadClass(loaderB, CLASS_C);
+   }
+   
+   public void testSiblingDomains() throws Exception
+   {
+      CLDeploymentBuilder clBuilderA = new CLDeploymentBuilder("A", JAR_A_1);
+      clBuilderA.createDomain("ChildA", true);
+      L loaderA = testScenario.createLoader(clBuilderA);
+      
+      CLDeploymentBuilder clBuilderB = new CLDeploymentBuilder("B", JAR_B_1);
+      clBuilderB.createDomain("ChildB", true);
+      L loaderB = testScenario.createLoader(clBuilderB);
+      
+      testScenario.loadClass(loaderA, CLASS_A);
+      testScenario.loadClass(loaderB, CLASS_B);
+      testScenario.cannotLoadClass(loaderA, CLASS_B);
+      testScenario.cannotLoadClass(loaderB, CLASS_A);
+   }
+   
+   public void testChildWithNewClassesInParent() throws Exception
+   {
+      CLDeploymentBuilder clScopedBuilder = new CLDeploymentBuilder("SCOPED", JAR_B_1);
+      clScopedBuilder.createDomain("SCOPED", true);
+      L scopedLoader = testScenario.createLoader(clScopedBuilder);
+      
+      testScenario.cannotLoadClass(scopedLoader, CLASS_A);
+      
+      L globalLoader = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_A_1));
+      
+      C aFromChild = testScenario.loadClass(scopedLoader, globalLoader, CLASS_A);
+      C aFromParent = testScenario.loadClass(globalLoader, CLASS_A);
+      assertSame(aFromChild, aFromParent);
+   }
+   
+   public void testChildOverrideWithParentDelegation() throws Exception
+   {
+      L globalLoader = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_A_1));
+      
+      CLDeploymentBuilder clScopedBuilder = new CLDeploymentBuilder("SCOPED", JAR_B_1);
+      clScopedBuilder.createDomain("SCOPED", true);
+      L scopedLoader = testScenario.createLoader(clScopedBuilder);
+      
+      C aFromParent = testScenario.loadClass(globalLoader, CLASS_A);
+      C aFromChild = testScenario.loadClass(scopedLoader, globalLoader, CLASS_A);
+      assertSame(aFromParent, aFromChild);
+   }
+   
+   public void testChildOverrideWithNoParentDelegation() throws Exception
+   {
+      L globalLoader = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_A_1));
+      
+      CLDeploymentBuilder clScopedBuilder = new CLDeploymentBuilder("CHILD", JAR_A_1);
+      clScopedBuilder.createDomain("CHILD", false);
+      L scopedLoader = testScenario.createLoader(clScopedBuilder);
+      
+      C aFromParent = testScenario.loadClass(globalLoader, CLASS_A);
+      C aFromChild = testScenario.loadClass(scopedLoader, CLASS_A);
+      assertNotSame(aFromParent, aFromChild);
+   }
+   
+   public void testURLChildOfGlobalUcl() throws Exception
+   {
+      L globalLoader = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_A_1));
+      L childALoader = createChildURLLoader(globalLoader, JAR_B_1);
+      
+      testScenario.loadClass(childALoader, globalLoader, CLASS_A);
+      testScenario.loadClass(childALoader, CLASS_B);
+      
+      L childBLoader = createChildURLLoader(globalLoader, JAR_A_2);
+      testScenario.loadClass(childBLoader, globalLoader, CLASS_A);
+      
+   }
+   
+   public void testUndeploySibling() throws Exception
+   {
+      L globalLoader = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_A_1));
+      testScenario.cannotLoadClass(globalLoader, CLASS_B);
+      
+      CLDeploymentBuilder bCLBuilder = new CLDeploymentBuilder("B", JAR_B_1);
+      L bLoader = testScenario.createLoader(bCLBuilder);
+      testScenario.loadClass(globalLoader, bLoader, CLASS_B);
+      testScenario.destroyLoader(bCLBuilder);
+      testScenario.cannotLoadClass(globalLoader, CLASS_B);
+   }
+
+   
+   public void testUndeployParentDomainClassLoader() throws Exception
+   {
+      L globalLoaderA = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_A_1));
+      testScenario.cannotLoadClass(globalLoaderA, CLASS_B);
+      
+      CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("C", JAR_C_1);
+      childCLBuilder.createDomain("C", false);
+      L childLoader = testScenario.createLoader(childCLBuilder);
+      testScenario.cannotLoadClass(childLoader, CLASS_B);
+      
+      CLDeploymentBuilder globalCLBuilderB = new CLDeploymentBuilder("B", JAR_B_1);
+      L globalLoaderB = testScenario.createLoader(globalCLBuilderB);
+      
+      C bFromChild = testScenario.loadClass(childLoader, globalLoaderB, CLASS_B);
+      C bFromA = testScenario.loadClass(globalLoaderA, globalLoaderB, CLASS_B);
+      assertSame(bFromA, bFromChild);
+      
+      testScenario.destroyLoader(globalCLBuilderB);
+      
+      testScenario.cannotLoadClass(childLoader, CLASS_B);
+   }
+   
+   public void testClassLoaderWithParentClassLoader() throws Exception
+   {
+      L parentLoader = createChildURLLoader((L) null, JAR_B_1);
+      
+      CLDeploymentBuilder globalCLBuilder = new CLDeploymentBuilder("A", JAR_A_1);
+      globalCLBuilder.createDomain("A", testScenario.getClassLoader(parentLoader), true);
+      L globalLoader = testScenario.createLoader(globalCLBuilder);
+      
+      testScenario.loadClass(globalLoader, CLASS_A);
+      C bFromGlobal = testScenario.loadClass(globalLoader, parentLoader, CLASS_B);
+      C bFromParent = testScenario.loadClass(parentLoader, CLASS_B);
+      assertSame(bFromGlobal, bFromParent);
+      testScenario.cannotLoadClass(parentLoader, CLASS_A);
+   }
+   
+   public void testClassLoaderWithParentClassLoaderAndCrossReference() throws Exception
+   {
+      L parentLoader = createChildURLLoader(null, JAR_B_1);
+      
+      CLDeploymentBuilder globalCLBuilder = new CLDeploymentBuilder("D", JAR_D);
+      globalCLBuilder.createDomain("D", testScenario.getClassLoader(parentLoader), true);
+      L globalLoader = testScenario.createLoader(globalCLBuilder);
+      
+      C dFromGlobal = testScenario.loadClass(globalLoader, CLASS_D);
+      C bFromGlobal = testScenario.loadClass(globalLoader, parentLoader, CLASS_B);
+      C bFromParent = testScenario.loadClass(parentLoader, CLASS_B);
+      assertSame(bFromGlobal, bFromParent);
+      testScenario.cannotLoadClass(parentLoader, CLASS_D);
+      
+      C returnType = testScenario.getMethodReturnType(dFromGlobal, "getB");
+      assertSame(returnType, bFromParent);
+   }
+
+   
+   public void testClassLoaderWithParentClassLoaderAndSameClassInDomain() throws Exception
+   {
+      L parentLoader = createChildURLLoader(null, JAR_B_1);
+      
+      String domain = "CHILD";
+      CLDeploymentBuilder globalCLBuilderA = new CLDeploymentBuilder("A", JAR_A_1);
+      globalCLBuilderA.createDomain(domain, testScenario.getClassLoader(parentLoader), true);
+      L globalLoaderA = testScenario.createLoader(globalCLBuilderA);
+      
+      testScenario.loadClass(globalLoaderA, CLASS_A);
+      C bFromGlobalA = testScenario.loadClass(globalLoaderA, parentLoader, CLASS_B);
+      
+      CLDeploymentBuilder globalCLBuilderB = new CLDeploymentBuilder("B", JAR_B_2);
+      globalCLBuilderB.setDomain(domain);
+      L globalLoaderB = testScenario.createLoader(globalCLBuilderB);
+      
+      C bFromParent = testScenario.loadClass(parentLoader, CLASS_B);
+      assertSame(bFromGlobalA, bFromParent);
+      
+      C bFromGlobalB = testScenario.loadClass(globalLoaderB, parentLoader, CLASS_B);
+      assertSame(bFromGlobalB, bFromParent);
+      
+      CLDeploymentBuilder globalCLBuilderC = new CLDeploymentBuilder("C", JAR_B_2);
+      globalCLBuilderC.createDomain(domain + "2", testScenario.getClassLoader(parentLoader), false);
+      L globalLoaderC = testScenario.createLoader(globalCLBuilderC);
+      testScenario.loadClass(globalLoaderC, CLASS_B);
+   }
+
+   public void testSeveralLevelsOfDomain() throws Exception
+   {
+      L parentLoader = testScenario.createLoader(new CLDeploymentBuilder("A", JAR_A_1));
+      C aFromParent = testScenario.loadClass(parentLoader, CLASS_A);
+      
+      String domain1 = "1";
+      CLDeploymentBuilder clDeploymentBuilder1B = new CLDeploymentBuilder("1B", JAR_B_1);
+      clDeploymentBuilder1B.createDomain(domain1, true);
+      L loader1B = testScenario.createLoader(clDeploymentBuilder1B);
+      
+      CLDeploymentBuilder clDeploymentBuilder1C = new CLDeploymentBuilder("1C", JAR_C_1);
+      clDeploymentBuilder1C.setDomain(domain1);
+      L loader1C = testScenario.createLoader(clDeploymentBuilder1C);
+      
+      C aFrom1B = testScenario.loadClass(loader1B, parentLoader, CLASS_A);
+      C bFrom1B = testScenario.loadClass(loader1B, CLASS_B);
+      C cFrom1B = testScenario.loadClass(loader1B, loader1C, CLASS_C);
+      C aFrom1C = testScenario.loadClass(loader1C, parentLoader, CLASS_A);
+      C bFrom1C = testScenario.loadClass(loader1C, loader1B, CLASS_B);
+      C cFrom1C = testScenario.loadClass(loader1C, CLASS_C);
+      assertSame(aFromParent, aFrom1B);
+      assertSame(aFromParent, aFrom1C);
+      assertSame(bFrom1B, bFrom1C);
+      assertSame(cFrom1B, cFrom1C);
+      
+      String domain2 = "2";
+      
+      CLDeploymentBuilder clDeploymentBuilder2B = new CLDeploymentBuilder("2B", JAR_B_1);
+      clDeploymentBuilder2B.createDomain(domain2, true);
+      L loader2B = testScenario.createLoader(clDeploymentBuilder2B);
+      
+      CLDeploymentBuilder clDeploymentBuilder2C = new CLDeploymentBuilder("2C", JAR_C_1);
+      clDeploymentBuilder2C.setDomain(domain2);
+      L loader2C = testScenario.createLoader(clDeploymentBuilder2C);
+      
+      C aFrom2B = testScenario.loadClass(loader2B, parentLoader, CLASS_A);
+      C bFrom2B = testScenario.loadClass(loader2B, CLASS_B);
+      C cFrom2B = testScenario.loadClass(loader2B, loader2C, CLASS_C);
+      C aFrom2C = testScenario.loadClass(loader2C, parentLoader, CLASS_A);
+      C bFrom2C = testScenario.loadClass(loader2C, loader2B, CLASS_B);
+      C cFrom2C = testScenario.loadClass(loader2C, CLASS_C);
+      assertSame(aFromParent, aFrom2B);
+      assertSame(aFromParent, aFrom2C);
+      assertSame(bFrom2B, bFrom2C);
+      assertSame(cFrom2B, cFrom2C);
+      assertNotSame(bFrom1B, bFrom2B);
+      assertNotSame(bFrom2C, bFrom1C);
+      assertNotSame(cFrom2C, cFrom1C);
+      
+      final String domain11 = "11";
+      CLDeploymentBuilder clBuilder11A = new CLDeploymentBuilder("11A", JAR_A_2);
+      clBuilder11A.createDomain(domain11, domain1, true);
+      L loader11A = testScenario.createLoader(clBuilder11A);
+      CLDeploymentBuilder clBuilder11B = new CLDeploymentBuilder("11B", JAR_B_2);
+      clBuilder11B.setDomain(domain11);
+      L loader11B = testScenario.createLoader(clBuilder11B);
+      CLDeploymentBuilder clBuilder11C = new CLDeploymentBuilder("11C", JAR_C_2);
+      clBuilder11C.setDomain(domain11);
+      L loader11C = testScenario.createLoader(clBuilder11C);
+      
+      String domain12 = "12";
+      CLDeploymentBuilder clBuilder12A = new CLDeploymentBuilder("12A", JAR_A_2);
+      clBuilder12A.createDomain(domain12, domain1, false);
+      L loader12A = testScenario.createLoader(clBuilder12A);
+      CLDeploymentBuilder clBuilder12B = new CLDeploymentBuilder("12B", JAR_B_2);
+      clBuilder12B.setDomain(domain12);
+      L loader12B = testScenario.createLoader(clBuilder12B);
+      CLDeploymentBuilder clBuilder12C = new CLDeploymentBuilder("12C", JAR_C_2);
+      clBuilder12C.setDomain(domain12);
+      L loader12C = testScenario.createLoader(clBuilder12C);
+      
+      C aFrom11A = testScenario.loadClass(loader11A, parentLoader, CLASS_A);
+      C aFrom11B = testScenario.loadClass(loader11B, parentLoader, CLASS_A);
+      C aFrom11C = testScenario.loadClass(loader11C, parentLoader, CLASS_A);
+      assertSame(aFromParent, aFrom11A);
+      assertSame(aFromParent, aFrom11B);
+      assertSame(aFromParent, aFrom11C);
+      
+      C aFrom12A = testScenario.loadClass(loader12A, CLASS_A);
+      C aFrom12B = testScenario.loadClass(loader12B, loader12A, CLASS_A);
+      C aFrom12C = testScenario.loadClass(loader12C, loader12A, CLASS_A);
+      assertNotSame(aFromParent, aFrom12A);
+      assertSame(aFrom12A, aFrom12B);
+      assertSame(aFrom12A, aFrom12C);
+      
+      C bFrom11A = testScenario.loadClass(loader11A, loader1B, CLASS_B);
+      C bFrom11B = testScenario.loadClass(loader11B, loader1B, CLASS_B);
+      C bFrom11C = testScenario.loadClass(loader11C, loader1B, CLASS_B);
+      assertSame(bFrom11A, bFrom11B);
+      assertSame(bFrom11A, bFrom11C);
+      
+      C cFrom11A = testScenario.loadClass(loader11A, loader1C, CLASS_C);
+      C cFrom11B = testScenario.loadClass(loader11B, loader1C, CLASS_C);
+      C cFrom11C = testScenario.loadClass(loader11C, loader1C, CLASS_C);
+      assertSame(cFrom11A, cFrom11B);
+      assertSame(cFrom11A, cFrom11C);
+      
+      C bFrom12A = testScenario.loadClass(loader12A, loader12B, CLASS_B);
+      C bFrom12B = testScenario.loadClass(loader12B, CLASS_B);
+      C bFrom12C = testScenario.loadClass(loader12C, loader12B, CLASS_B);
+      assertSame(bFrom12A, bFrom12B);
+      assertSame(bFrom12A, bFrom12C);
+      assertNotSame(bFrom11B, bFrom12B);
+      
+      C cFrom12A = testScenario.loadClass(loader12A, loader12C, CLASS_C);
+      C cFrom12B = testScenario.loadClass(loader12B, loader12C, CLASS_C);
+      C cFrom12C = testScenario.loadClass(loader12C, CLASS_C);
+      assertSame(cFrom12A, cFrom12B);
+      assertSame(cFrom12A, cFrom12C);
+      assertNotSame(cFrom11C, cFrom12C);
+   }
+   
+   public void testUclLoaderOrdering() throws Exception
+   {
+      L globalLoaderA1 = testScenario.createLoader(new CLDeploymentBuilder("A1", JAR_A_1));
+      L globalLoaderA2 = testScenario.createLoader(new CLDeploymentBuilder("A2", JAR_A_1));
+      L globalLoaderA3 = testScenario.createLoader(new CLDeploymentBuilder("A3", JAR_A_1));
+      
+      testScenario.loadClass(globalLoaderA1, CLASS_A);
+      testScenario.loadClass(globalLoaderA2, globalLoaderA1, CLASS_A);
+      testScenario.loadClass(globalLoaderA3, globalLoaderA1, CLASS_A);
+   }
+   
+   protected L createChildURLLoader(L parentLoader, URL url)
+   {
+      ClassLoader parentClassLoader = parentLoader == null? null: testScenario.getClassLoader(parentLoader);
+      return testScenario.getLoader(new URLClassLoader(new URL[] {url}, parentClassLoader));
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryTest.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/SanityTestScenario.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/SanityTestScenario.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/SanityTestScenario.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,149 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, 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.classpool.jbosscl.test;
-
-import java.net.URL;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
- * @version $Revision$
- */
-
-public class SanityTestScenario extends TestScenario<Class<?>, ClassLoader>
-{
-   private JBossClClassPoolTest test = null;
-   
-   public SanityTestScenario(JBossClClassPoolTest test)
-   {
-      this.test = test;
-   }
-   
-   public ClassLoader cloneLoader(Class<?> clazz)
-   {
-      return clazz.getClassLoader();
-   }
-   
-   public ClassLoader getLoader(ClassLoader classLoader)
-   {
-      return classLoader;
-   }
-   
-   public ClassLoader getClassLoader(ClassLoader loader)
-   {
-      return loader;
-   }
-   
-   public String getClassName(Class<?> clazz)
-   {
-      return clazz.getName();
-   }
-   
-   public Class<?> loadClass(ClassLoader loader, ClassLoader expected, String className) throws Exception
-   {
-      return test.assertLoadClass(className, loader, expected);
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.test.classpool.support.TestClassLoader#createLoader(org.jboss.test.classpool.support.Result, java.lang.String, boolean, java.net.URL[])
-    */
-   public ClassLoader createLoader(Result result, String name,
-         boolean importAll, URL... urls) throws Exception
-   {
-      return test.createClassLoader(result, name, importAll, urls);
-   }
-   
-   public ClassLoader createLoader(Result result, String name, boolean importAll, URL[] excludes, URL... urls) throws Exception
-   {
-      return test.createClassLoader(result, name, importAll, excludes, urls);
-   }
-   
-   public ClassLoader createLoader(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception
-   {
-      return test.createClassLoader(result, name, importAll, packageCapability, urls);
-   }
-   
-   public ClassLoader createLoader(Result result, String name, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      return test.createClassLoader(result, name, builder, urls);
-   }
-   
-   public ClassLoader createChildDomainParentFirstLoader(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentFirstClassLoader(result, name, domainName, importAll, urls);
-   }
-   
-   public ClassLoader createChildDomainParentFirstLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, importAll, null, urls);
-   }
-   
-   public ClassLoader createChildDomainParentFirstLoader(Result result, String name, String domainName, boolean importAll, String packageCapability, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentFirstClassLoader(result, name, domainName, importAll, packageCapability, urls);
-   }
-   
-   public ClassLoader createChildDomainParentFirstLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, String packageCapability, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, importAll, packageCapability, urls);
-   }
-   
-   public ClassLoader createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll,
-         URL... urls) throws Exception
-   {
-      return test.createChildDomainParentLastClassLoader(result, name, domainName, importAll,urls);
-   }
-   
-   public ClassLoader createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentLastClassLoader(result, name, domainName, importAll, parent, urls);
-   }
-   
-   public ClassLoader createChildDomainParentLastLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentLastClassLoader(result, name, domainName, parentDomainName, importAll, urls);
-   }
-
-   public ClassLoader createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll, URL[] excludes, URL... urls) throws Exception
-   {
-      return test.createChildDomainParentLastClassLoader(result, name, domainName, importAll, excludes, urls);
-   }
-   public Class<?> getMethodReturnType(Class<?> clazz, String methodName) throws Exception
-   {
-      return clazz.getDeclaredMethod(methodName).getReturnType();
-   }
-   
-   /* (non-Javadoc)
-    * @see org.jboss.test.classpool.jbosscl.test.TestClassLoader#unregister(java.lang.Object)
-    */
-   public void unregister(ClassLoader classLoader, Result result)
-   {
-      if (classLoader != null)
-      {
-         test.unregisterClassLoader(classLoader);
-         test.assertNoClassLoader(result);
-      }
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/TestScenario.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/TestScenario.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/TestScenario.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,63 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, 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.classpool.jbosscl.test;
-
-import java.net.URL;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
- * @version $Revision$
- */
-
-public abstract class TestScenario<C,L>
-{
-   public abstract L cloneLoader(C clazz);
-   public abstract L getLoader(ClassLoader classLoader);
-   public abstract ClassLoader getClassLoader(L loader);
-   public abstract String getClassName(C clazz);
-   public abstract L createLoader(Result result, String name, boolean importAll, URL... urls) throws Exception;
-   public abstract L createLoader(Result result, String name, boolean importAll, URL[] excludes, URL... urls) throws Exception;
-   public abstract L createLoader(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception;
-   public abstract L createLoader(Result result, String name, BundleInfoBuilder builder, URL... urls) throws Exception;
-   public abstract L createChildDomainParentFirstLoader(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception;
-   public abstract L createChildDomainParentFirstLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception;
-   public abstract L createChildDomainParentFirstLoader(Result result, String name, String domainName, boolean importAll, String packageCapability, URL... urls) throws Exception;
-   public abstract L createChildDomainParentFirstLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, String packageCapability, URL... urls) throws Exception;
-   public abstract L createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll, L parent, URL... urls) throws Exception;
-   public abstract L createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll,
-         URL... urls) throws Exception;
-   public abstract L createChildDomainParentLastLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception;
-   public abstract L createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll, URL[] excludes, URL... urls) throws Exception;
-   
-   public C loadClass(L loader, String className) throws Exception
-   {
-      return loadClass(loader, loader, className);
-   }
-   public abstract C loadClass(L loader, L loader2, String className) throws Exception;
-   public abstract C getMethodReturnType(C clazz, String methodName) throws Exception;
-   public abstract void unregister(L loader, Result result);
-   
-}
\ No newline at end of file

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageClassPoolTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageClassPoolTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the uses package tests against a class pool test scenario.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class UsesPackageClassPoolTestCase extends UsesPackageTest<CtClass, ClassPool>
+{
+   public static Test suite()
+   {
+      return new TestSuite(UsesPackageClassPoolTestCase.class);
+   }
+
+   public UsesPackageClassPoolTestCase(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected TestScenario<CtClass, ClassPool> getTestScenario()
+   {
+      return new ClassPoolTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageClassPoolTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageSanityTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageSanityTestCase.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.jbosscl.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the uses package tests against a sanity test scenario (for class loader behavior
+ * sanity checking).
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class UsesPackageSanityTestCase extends UsesPackageTest<Class<?>, ClassLoader>
+{
+   public static Test suite()
+   {
+      return new TestSuite(UsesPackageSanityTestCase.class);
+   }
+
+   public UsesPackageSanityTestCase(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+   {
+      return new SanityTestScenario(getMicrocontainerFacade());
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageSanityTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageTest.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageTest.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file 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.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Reproduces org.jboss.test.classloading.vfs.metadata.test.UsesPackageUnitTestCase using our
+ * test framework.
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class UsesPackageTest<C, L> extends JBossClClassPoolTest<C, L>
+{
+   public UsesPackageTest(String name)
+   {
+      super(name);
+   }
+
+   public void testUsesImport() throws Exception
+   {
+      CLDeploymentBuilder clBuilderA1 = new CLDeploymentBuilder("A1", JAR_A_1);
+      clBuilderA1.createModule("a1").createPackage(PACKAGE_A).setImportAll(false);
+      L loaderA1 = testScenario.createLoader(clBuilderA1);
+      C classA = testScenario.loadClass(loaderA1, CLASS_A);
+      
+      CLDeploymentBuilder clBuilderA2 = new CLDeploymentBuilder("A2", JAR_A_1);
+      clBuilderA2.createModule("a2").createUsesPackage(PACKAGE_A).setImportAll(false);
+      L loaderA2 = testScenario.createLoader(clBuilderA2);
+      
+      C classA1 = testScenario.loadClass(loaderA1, CLASS_A);
+      assertSame(classA, classA1);
+      classA1 = testScenario.loadClass(loaderA2, loaderA1, CLASS_A);
+      assertSame(classA, classA1);
+      
+      testScenario.destroyLoader(clBuilderA2);
+      
+      classA1 = testScenario.loadClass(loaderA1, CLASS_A);
+      assertSame(classA, classA1);
+   }
+   
+   public void testUsesNoImport() throws Exception
+   {
+      CLDeploymentBuilder clBuilder = new CLDeploymentBuilder("A1", JAR_A_1);
+      clBuilder.createModule("a1").createUsesPackage(PACKAGE_A).setImportAll(false);
+      L loader = testScenario.createLoader(clBuilder);
+      testScenario.loadClass(loader, CLASS_A);
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageTest.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,118 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.support;
-
-import java.security.CodeSource;
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.security.SecurityPermission;
-import java.util.Enumeration;
-import java.util.PropertyPermission;
-
-import org.jboss.test.security.TestsPolicyPlugin;
-
-/**
- * The original TestPolicyPlugin reuses the underlying PermissionCollection. This causes problems
- * for tests creating several ProtectionDomains, since the ProtectionDomain's constructor 
- * marks the PolicyCollection as read-only so we get errors
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class AlwaysWritablePermissionCollectionTestPolicyPlugin extends TestsPolicyPlugin
-{
-   public AlwaysWritablePermissionCollectionTestPolicyPlugin(Class<?> clazz)
-   {
-      super(clazz);
-   }
-
-   public synchronized PermissionCollection getPermissions(CodeSource codesource)
-   {
-      return new AlwaysWritablePermissionCollection(super.getPermissions(codesource));
-   }
-   
-   public static void initialisePlugin()
-   {
-      System.setProperty("org.jboss.test.security.PolicyPlugin", AlwaysWritablePermissionCollectionTestPolicyPlugin.class.getName());
-   }
-   
-   public static void cleanupPlugin()
-   {
-      System.clearProperty("org.jboss.test.security.PolicyPlugin");
-   }
-   
-   private static class AlwaysWritablePermissionCollection extends PermissionCollection
-   {
-      private static final long serialVersionUID = 1L;
-      
-      volatile PermissionCollection lastDelegate;
-      volatile PermissionCollection delegate;
-      
-      final static Permission GET_POLICY = new SecurityPermission("getPolicy");
-      final static Permission PARENT_PKGS = new PropertyPermission("jboss.test.parent.pkgs", "read");
-      
-      private AlwaysWritablePermissionCollection(PermissionCollection delegate)
-      {
-         this.delegate = delegate;
-      }
-
-      public void add(Permission permission)
-      {
-         delegate.add(permission);
-      }
-
-      public Enumeration<Permission> elements()
-      {
-         return delegate.elements();
-      }
-
-      public boolean equals(Object obj)
-      {
-         return delegate.equals(obj);
-      }
-
-      public int hashCode()
-      {
-         return delegate.hashCode();
-      }
-
-      public boolean implies(Permission permission)
-      {
-         return delegate.implies(permission);
-      }
-
-      public boolean isReadOnly()
-      {
-         return delegate.isReadOnly();
-      }
-
-      public void setReadOnly()
-      {
-         //ignore
-      }
-
-      public String toString()
-      {
-         return delegate.toString();
-      }
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/BundleInfoBuilder.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/BundleInfoBuilder.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/BundleInfoBuilder.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,179 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.support;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jboss.classloading.spi.metadata.Capability;
-import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
-import org.jboss.classloading.spi.metadata.Requirement;
-import org.jboss.classloading.spi.version.VersionRange;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class BundleInfoBuilder
-{
-   static ClassLoadingMetaDataFactory clmdf = ClassLoadingMetaDataFactory.getInstance();
-   
-   List<Capability> capabilities = new ArrayList<Capability>();
-   List<Requirement> requirements = new ArrayList<Requirement>();
-   
-   private BundleInfoBuilder()
-   {
-      
-   }
-   
-   public static BundleInfoBuilder getBuilder()
-   {
-      return new BundleInfoBuilder();
-   }
-   
-   public BundleInfoBuilder createModule(String name)
-   {
-      capabilities.add(clmdf.createModule(name));
-      return this;
-   }
-   
-   public BundleInfoBuilder createModule(String name, Object version)
-   {
-      capabilities.add(clmdf.createModule(name, version));
-      return this;
-   }
-   
-   public BundleInfoBuilder createRequireModule(String name)
-   {
-      requirements.add(clmdf.createRequireModule(name, null));
-      return this;
-   }
-
-   public BundleInfoBuilder createRequireModule(String name, VersionRange versionRange)
-   {
-      requirements.add(clmdf.createRequireModule(name, versionRange));
-      return this;
-   }
-
-   public BundleInfoBuilder createRequireModule(String name, VersionRange versionRange, boolean optional, boolean reExport, boolean dynamic)
-   {
-      requirements.add(clmdf.createRequireModule(name, versionRange, optional, reExport, dynamic));
-      return this;
-   }
-
-   public BundleInfoBuilder createPackage(String name)
-   {
-      capabilities.add(clmdf.createPackage(name));
-      return this;
-   }
-
-   public BundleInfoBuilder createPackage(String name, Object version)
-   {
-      capabilities.add(clmdf.createPackage(name, version));
-      return this;
-   }
-
-   public BundleInfoBuilder createRequirePackage(String name)
-   {
-      requirements.add(clmdf.createRequirePackage(name));
-      return this;
-   }
-
-   public BundleInfoBuilder createRequirePackage(String name, VersionRange versionRange)
-   {
-      requirements.add(clmdf.createRequirePackage(name, versionRange));
-      return this;
-   }
-
-   public BundleInfoBuilder createRequirePackage(String name, VersionRange versionRange, boolean optional, boolean reExport, boolean dynamic)
-   {
-      requirements.add(clmdf.createRequirePackage(name, versionRange, optional, reExport, dynamic));
-      return this;
-   }
-
-   public BundleInfoBuilder createReExportModule(String name)
-   {
-      requirements.add(clmdf.createReExportModule(name));
-      return this;
-   }
-
-   public BundleInfoBuilder createReExportModule(String name, VersionRange versionRange)
-   {
-      requirements.add(clmdf.createReExportModule(name, versionRange));
-      return this;
-   }
-
-   public BundleInfoBuilder createReExportModule(String name, VersionRange versionRange, boolean optional)
-   {
-      requirements.add(clmdf.createReExportModule(name, versionRange, optional));
-      return this;
-   }
-
-   public BundleInfoBuilder createReExportPackage(String name)
-   {
-      requirements.add(clmdf.createReExportPackage(name));
-      return this;
-   }
-
-   public BundleInfoBuilder createReExportPackage(String name, VersionRange versionRange)
-   {
-      requirements.add(clmdf.createReExportPackage(name, versionRange));
-      return this;
-   }
-
-   public BundleInfoBuilder createReExportPackage(String name, VersionRange versionRange, boolean optional)
-   {
-      requirements.add(clmdf.createReExportPackage(name, versionRange, optional));
-      return this;
-   }
-   
-   public BundleInfoBuilder createUsesPackage(String name)
-   {
-      requirements.add(clmdf.createUsesPackage(name));
-      return this;
-   }
-
-   public BundleInfoBuilder createUsesPackage(String name, VersionRange versionRange)
-   {
-      requirements.add(clmdf.createUsesPackage(name, versionRange));
-      return this;
-   }
-
-   public BundleInfoBuilder createUsesPackage(String name, VersionRange versionRange, boolean reExport)
-   {
-      requirements.add(clmdf.createUsesPackage(name, versionRange, reExport));
-      return this;
-   }
-
-   
-   
-   public List<Capability> getCapabilities()
-   {
-      return capabilities;
-   }
-   
-   public List<Requirement> getRequirements()
-   {
-      return requirements;
-   }
-}

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CLDeploymentBuilder.java (from rev 94892, projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/BundleInfoBuilder.java)
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CLDeploymentBuilder.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CLDeploymentBuilder.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,392 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.classpool.support;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloading.spi.metadata.Capability;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.metadata.ExportAll;
+import org.jboss.classloading.spi.metadata.Requirement;
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.kernel.plugins.deployment.AbstractKernelDeployment;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision$
+ */
+public class CLDeploymentBuilder
+{
+   private static ClassLoadingMetaDataFactory clmdf = ClassLoadingMetaDataFactory.getInstance();
+   
+   List<Capability> capabilities = new ArrayList<Capability>();
+   List<Requirement> requirements = new ArrayList<Requirement>();
+   
+   private String name;
+   private URL[] urls;
+   private URL[] excludes;
+   private boolean importAll;
+   private String domainName;
+   private String parentDomainName;
+   private boolean parentFirst;
+   private ClassLoader parent;
+   boolean domainDefined = false;
+   boolean domainCreated = false;
+   
+   boolean deploymentCreated = false;
+   private KernelDeployment kernelDeployment = null;
+   
+   private VFSClassLoaderFactory metaDataFactory;
+   
+   public CLDeploymentBuilder(String name, URL... urls)
+   {
+      this.name = name;
+      this.urls = urls;
+      this.importAll = true;
+   }
+   
+   private CLDeploymentBuilder()   {
+      
+   }
+   
+   public static CLDeploymentBuilder getBuilder()
+   {
+      return new CLDeploymentBuilder();
+   }
+   
+   public String getName()
+   {
+      return this.name;
+   }
+   
+   public void setExcludes(URL... urls)
+   {
+      this.excludes = urls;
+   }
+   
+   // TODO automatically call this after a createModule/createanything?
+   public void setImportAll(boolean importAll)
+   {
+      this.importAll = importAll;
+   }
+   
+   // TODO set synchronized on all methods
+   public void createDomain(String domain, String parentDomain, boolean parentFirst)
+   {
+      if (DomainRegistry.contains(domain))
+      {
+         throw new IllegalStateException("Domain " + domain + " already exists");
+      }
+      DomainRegistry.registerDomain(domain);
+      domainCreated = true;
+      this.setDomain(domain, parentDomain, parentFirst);
+   }
+   
+   public void createDomain(String domain, boolean parentFirst)
+   {
+      this.createDomain(domain, (String) null, parentFirst);
+   }
+   
+   public boolean isDomainCreated()
+   {
+      return this.domainCreated;
+   }
+   
+   // TODO is parent related to parent domain for real?
+   public void createDomain(String domain, ClassLoader parent, boolean parentFirst)
+   {
+      this.createDomain(domain, (String) null, parentFirst);
+      this.setParent(parent);
+   }
+   
+   public void setDomain(String domainName)
+   {
+      setDomain(domainName, null, false);
+   }
+   
+   private void setDomain(String domain, String parentDomain, boolean parentFirst)
+   {
+      if (domainDefined)
+      {
+         throw new IllegalStateException("Duplicate definition of domain for CLDeployment " +
+               this.getName());
+      }
+      this.domainName = domain;
+      this.parentDomainName = parentDomain;
+      this.parentFirst = parentFirst;
+      domainDefined = true;
+   }
+   
+   public String getDomain()
+   {
+      return this.domainName;
+   }
+   
+   public void setParent(ClassLoader parent)
+   {
+      this.parent = parent;
+   }
+   
+   public CLDeploymentBuilder createModule(String name)
+   {
+      capabilities.add(clmdf.createModule(name));
+      return this;
+   }
+   
+   public CLDeploymentBuilder createModule(String name, Object version)
+   {
+      capabilities.add(clmdf.createModule(name, version));
+      return this;
+   }
+   
+   public CLDeploymentBuilder createRequireModule(String name)
+   {
+      requirements.add(clmdf.createRequireModule(name, null));
+      return this;
+   }
+
+   public CLDeploymentBuilder createRequireModule(String name, VersionRange versionRange)
+   {
+      requirements.add(clmdf.createRequireModule(name, versionRange));
+      return this;
+   }
+
+   public CLDeploymentBuilder createRequireModule(String name, VersionRange versionRange, boolean optional, boolean reExport, boolean dynamic)
+   {
+      requirements.add(clmdf.createRequireModule(name, versionRange, optional, reExport, dynamic));
+      return this;
+   }
+
+   public CLDeploymentBuilder createPackage(String name)
+   {
+      capabilities.add(clmdf.createPackage(name));
+      return this;
+   }
+
+   public CLDeploymentBuilder createPackage(String name, Object version)
+   {
+      capabilities.add(clmdf.createPackage(name, version));
+      return this;
+   }
+
+   public CLDeploymentBuilder createRequirePackage(String name)
+   {
+      requirements.add(clmdf.createRequirePackage(name));
+      return this;
+   }
+
+   public CLDeploymentBuilder createRequirePackage(String name, VersionRange versionRange)
+   {
+      requirements.add(clmdf.createRequirePackage(name, versionRange));
+      return this;
+   }
+
+   public CLDeploymentBuilder createRequirePackage(String name, VersionRange versionRange, boolean optional, boolean reExport, boolean dynamic)
+   {
+      requirements.add(clmdf.createRequirePackage(name, versionRange, optional, reExport, dynamic));
+      return this;
+   }
+
+   public CLDeploymentBuilder createReExportModule(String name)
+   {
+      requirements.add(clmdf.createReExportModule(name));
+      return this;
+   }
+
+   public CLDeploymentBuilder createReExportModule(String name, VersionRange versionRange)
+   {
+      requirements.add(clmdf.createReExportModule(name, versionRange));
+      return this;
+   }
+
+   public CLDeploymentBuilder createReExportModule(String name, VersionRange versionRange, boolean optional)
+   {
+      requirements.add(clmdf.createReExportModule(name, versionRange, optional));
+      return this;
+   }
+
+   public CLDeploymentBuilder createReExportPackage(String name)
+   {
+      requirements.add(clmdf.createReExportPackage(name));
+      return this;
+   }
+
+   public CLDeploymentBuilder createReExportPackage(String name, VersionRange versionRange)
+   {
+      requirements.add(clmdf.createReExportPackage(name, versionRange));
+      return this;
+   }
+
+   public CLDeploymentBuilder createReExportPackage(String name, VersionRange versionRange, boolean optional)
+   {
+      requirements.add(clmdf.createReExportPackage(name, versionRange, optional));
+      return this;
+   }
+   
+   public CLDeploymentBuilder createUsesPackage(String name)
+   {
+      requirements.add(clmdf.createUsesPackage(name));
+      return this;
+   }
+
+   public CLDeploymentBuilder createUsesPackage(String name, VersionRange versionRange)
+   {
+      requirements.add(clmdf.createUsesPackage(name, versionRange));
+      return this;
+   }
+
+   public CLDeploymentBuilder createUsesPackage(String name, VersionRange versionRange, boolean reExport)
+   {
+      requirements.add(clmdf.createUsesPackage(name, versionRange, reExport));
+      return this;
+   }
+   
+   public synchronized KernelDeployment createDeployment()
+   {
+      Assert.assertFalse("Duplicate deployment created", deploymentCreated);
+      if (metaDataFactory == null)
+      {
+         metaDataFactory = createMetaDataFactory();
+      }
+      AbstractKernelDeployment deployment = new AbstractKernelDeployment();
+      deployment.setName(metaDataFactory.getName() + ":" + metaDataFactory.getVersion());
+      deployment.setBeanFactories(Collections.singletonList((BeanMetaDataFactory) metaDataFactory));
+      deploymentCreated = true;
+      this.kernelDeployment = deployment;
+      return deployment;
+   }
+   
+   public synchronized KernelDeployment getDeployment()
+   {
+      return this.kernelDeployment;
+   }
+   
+   public synchronized KernelDeployment undeploy()
+   {
+      this.deploymentCreated = false;
+      return this.kernelDeployment;
+   }
+
+   public VFSClassLoaderFactory getMetaDataFactory()
+   {
+      Assert.assertNotNull("MetaDataFactory can be retrieved only after deployment creation.",
+            metaDataFactory);
+      return metaDataFactory;
+   }
+
+   private VFSClassLoaderFactory createMetaDataFactory()
+   {
+      
+      TestVFSClassLoaderFactory factory = new TestVFSClassLoaderFactory();
+      factory.setName(name);
+      factory.setImportAll(importAll);
+      if (importAll)
+      {
+         factory.setExportAll(ExportAll.NON_EMPTY);
+      }
+      factory.setRoots(urlsToStringList(urls));
+      factory.setExcludedRoots(urlsToStringList(excludes));
+
+      if (capabilities != null && !capabilities.isEmpty())
+      {
+         factory.getCapabilities().setCapabilities(capabilities);
+      }
+      if (requirements != null && !requirements.isEmpty())
+      {
+         factory.getRequirements().setRequirements(requirements);
+      }
+      setupDomain(factory, domainName, parentDomainName, parentFirst);
+      if (parent != null)
+      {
+         factory.setParent(parent);
+      }
+      return factory;
+   }
+   
+   
+   public ClassLoader getParent()
+   {
+      return this.parent;
+   }
+   
+   private static void setupDomain(ClassLoadingMetaData md, String domainName, String parentDomainName, boolean parentFirst)
+   {
+      if (domainName != null)
+      {
+         md.setDomain(domainName);
+         md.setJ2seClassLoadingCompliance(parentFirst);
+         if (parentDomainName != null)
+         {
+            md.setParentDomain(parentDomainName);
+         }
+         else
+         {
+            md.setParentDomain(ClassLoaderSystem.DEFAULT_DOMAIN_NAME);
+         }
+      }
+      else
+      {
+         md.setDomain(ClassLoaderSystem.DEFAULT_DOMAIN_NAME);
+      }
+   }
+   
+   public List<Capability> getCapabilities()
+   {
+      return capabilities;
+   }
+   
+   public List<Requirement> getRequirements()
+   {
+      return requirements;
+   }
+   
+   private static List<String> urlsToStringList(URL... urls)
+   {
+      if (urls == null)
+      {
+         return null;
+      }
+      List<String> urlList = new ArrayList<String>(urls.length);
+      if (urls.length > 0)
+      {
+         for (URL url : urls)
+         {
+            if (url != null)
+            {
+               urlList.add(url.toString());
+            }
+         }
+      }
+      return urlList;
+   }
+}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CapabilityInfo.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CapabilityInfo.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CapabilityInfo.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,42 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.support;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class CapabilityInfo extends ModuleOrPackageInfo
-{
-   public CapabilityInfo(String name, Object version)
-   {
-      // FIXME ModuleCapabilityInfo constructor
-      super(name, version);
-   }
-
-   public CapabilityInfo(String name)
-   {
-      // FIXME ModuleCapabilityInfo constructor
-      super(name);
-   }
-}

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassPoolTestScenario.java (from rev 97064, projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolTestScenario.java)
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassPoolTestScenario.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassPoolTestScenario.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,196 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.support;
+
+import java.net.URL;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.NotFoundException;
+import junit.framework.Assert;
+
+import org.jboss.classpool.spi.ClassPoolRepository;
+import org.jboss.test.classpool.support.MicrocontainerFacade;
+
+/**
+ * This scenario is used by class pool test cases. All the operations performed using this
+ * scenario are executed over CtClasses and ClassPools.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ClassPoolTestScenario extends TestScenario<CtClass, ClassPool>
+{
+   /** The ClassPool repository */
+   protected ClassPoolRepository repository;
+   
+   
+   public ClassPoolTestScenario(MicrocontainerFacade microcontainer)
+   {
+      super(microcontainer);
+      repository = (ClassPoolRepository) microcontainer.getBean("ClassPoolRepository");
+   }
+   
+   @Override
+   public ClassPool getLoader(CtClass clazz)
+   {
+      return assertRegisterClassLoader(clazz.getClassPool().getClassLoader());
+   }
+   
+   @Override
+   public ClassPool getLoader(ClassLoader classLoader)
+   {
+      return assertRegisterClassLoader(classLoader);
+   }
+   
+   @Override
+   public ClassLoader getClassLoader(ClassPool classPool)
+   {
+      return classPool.getClassLoader();
+   }
+   
+   @Override
+   public CtClass loadClass(ClassPool classPool, ClassPool expectedClassPool, String className)
+      throws Exception
+   {
+      Class<?> clazz = assertLoadClass(className, classPool.getClassLoader(), expectedClassPool.getClassLoader());
+      CtClass ctClass = assertLoadCtClass(className, classPool, expectedClassPool);
+      Assert.assertEquals(className, ctClass.getName());
+      Assert.assertEquals("Class has been loaded by the wrong class loader: " + className,
+            clazz.getClassLoader(), ctClass.getClassPool().getClassLoader());
+      return ctClass;
+   }
+   
+   @Override
+   public void cannotLoadClass(ClassPool classPool, String className)
+   {
+      try
+      {
+         classPool.getCtClass(className);
+         Assert.fail("Should not have been able to load " + className);
+      }
+      catch(NotFoundException expected){}
+   }
+   
+   @Override
+   public CtClass getMethodReturnType(CtClass clazz, String methodName) throws Exception
+   {
+      return clazz.getDeclaredMethod(methodName).getReturnType();
+   }
+   
+   /********* HELPER METHODS ***************************************************************/
+   
+   private ClassPool assertRegisterClassLoader(ClassLoader loader)
+   {
+      ClassPool classPool = repository.registerClassLoader(loader);
+      Assert.assertNotNull(classPool);
+      assertBootstrap(classPool, String.class, Class.class, ClassLoader.class, Object.class,
+            Collection.class, List.class, Map.class, URL.class);
+      return classPool;
+   }
+   
+   private void assertBootstrap(ClassPool classPool, Class<?>... classes)
+   {
+      assertSameClassPool(null, classPool, int.class, boolean.class, byte.class, short.class,
+            long.class, float.class, double.class, char.class, void.class);
+      assertSameClassPool(ClassPool.getDefault(), classPool, classes);
+      
+   }
+   
+   private void assertSameClassPool(ClassPool expectedClassPool, ClassPool classPool,
+         Class<?>... classes)
+   {
+      for (Class<?> clazz: classes)
+      {
+         CtClass ctClass = null;
+         try
+         {
+            ctClass = classPool.getCtClass(clazz.getName());
+         } catch (NotFoundException e)
+         {
+            e.printStackTrace();
+            Assert.fail(e.getMessage());
+         }
+         Assert.assertSame("Class " + clazz.getName() + " loaded by unexpected class pool ",
+               expectedClassPool, ctClass.getClassPool());
+      }
+   }
+   
+   protected CtClass assertLoadCtClass(String name, ClassPool initiating, ClassPool expected) throws Exception
+   {
+      CtClass clazz = initiating.get(name);
+      if (expected != null)
+      {
+         Assert.assertSame(expected, clazz.getClassPool());
+      }
+      //Load twice to test both create and cache
+      clazz = initiating.get(name);
+      if (expected != null)
+      {
+         Assert.assertSame(expected, clazz.getClassPool());
+      }
+      
+      assertLoadCtClassArray(name, clazz, initiating, expected);
+      
+      return clazz;
+   }
+   
+   private void assertLoadCtClassArray(String name, CtClass clazz, ClassPool initiating, ClassPool expected) throws Exception
+   {
+      assertLoadCtClassArray(name, clazz, 1, initiating, expected);
+      assertLoadCtClassArray(name, clazz, 2, initiating, expected);
+   }
+   
+   private void assertLoadCtClassArray(String name, CtClass clazz, int dimensions, ClassPool initiating, ClassPool expected) throws Exception
+   {
+      String arrayName = name;
+      for (int i = 0 ; i < dimensions ; i++)
+      {
+         arrayName = arrayName + "[]";
+      }
+      CtClass array = initiating.get(arrayName);
+      
+      if (expected != null)
+      {
+         Assert.assertSame(expected, array.getClassPool());
+      }
+      
+      Assert.assertSame(clazz.getClassPool(), array.getClassPool());
+      
+      CtClass type = array;
+      for (int i = 0 ; i < dimensions ; i++)
+      {
+         type = type.getComponentType();
+      }
+      Assert.assertSame(type, clazz);
+   }
+   
+   @Override
+   protected void destroy(ClassLoader classLoader)
+   {
+      repository.unregisterClassLoader(classLoader);
+      super.destroy(classLoader);
+   }
+}

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/DomainRegistry.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/DomainRegistry.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/DomainRegistry.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,64 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.support;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+
+/**
+ * All domains to be cleaned up should be registered here.
+ * This registry is automatically populated by
+ * {@link TestScenario#createLoader(CLDeploymentBuilder)}.
+ * However, if a test creates a domain manually, the domain must be registered here for
+ * proper clean up.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class DomainRegistry
+{
+   private static final Map<String, ClassLoaderDomain> domains = new HashMap<String, ClassLoaderDomain>();
+ 
+   public static synchronized boolean contains(String domainName)
+   {
+      return domains.containsKey(domainName);
+   }
+   
+   public static synchronized void registerDomain(String domain)
+   {
+      domains.put(domain, null);
+   }
+   
+   public static synchronized void registerDomain(ClassLoaderDomain domain)
+   {
+      domains.put(domain.getName(), domain);
+   }
+   
+   public static synchronized Map<String, ClassLoaderDomain> clear()
+   {
+      Map<String, ClassLoaderDomain> registeredDomains = new HashMap<String, ClassLoaderDomain>(domains);
+      domains.clear();
+      return registeredDomains;
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/DomainRegistry.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/LoaderRegistry.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/LoaderRegistry.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/LoaderRegistry.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,153 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.support;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+import junit.framework.Assert;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.base.BaseClassLoader;
+import org.jboss.classloading.spi.dependency.Module;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.classpool.plugins.as5.VFSClassLoaderDomainRegistry;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.logging.Logger;
+import org.jboss.test.AbstractTestCase;
+
+/**
+ * Registry used by TestScenario to keep track of created class loaders and to perform
+ * proper cleanup.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ * @version $Revision$
+ */
+class LoaderRegistry
+{
+   /** The classloader helper */
+   protected ClassLoaderSystem system;
+   
+   /** The domain registry */
+   protected VFSClassLoaderDomainRegistry domainRegistry;
+   
+   /** The microcontainer facade */
+   private MicrocontainerFacade microcontainer;
+   
+   /**
+    *  Contains the same domains contained in domainRegistry. The difference is that 
+    *  this map is cleaned up later than domainRegistry.
+    */
+   private Map<ClassLoader, ClassLoaderDomain> scopedChildDomainsByLoader = new WeakHashMap<ClassLoader, ClassLoaderDomain>();
+
+   /** List of classLoaders */
+   private Map<String, ClassLoader> classLoaders = new HashMap<String, ClassLoader>();
+   
+   /** Deployments */
+   private Map<String, KernelDeployment> deploymentsByName = new HashMap<String, KernelDeployment>();
+   
+   
+   public LoaderRegistry(MicrocontainerFacade microcontainer)
+   {
+      this.microcontainer = microcontainer;
+      this.system = (ClassLoaderSystem) microcontainer.getBean("ClassLoaderSystem");
+      this.domainRegistry = (VFSClassLoaderDomainRegistry) microcontainer.getBean(
+            "ClassLoaderScopingPolicy");
+   }
+   
+   public void registerDeployment(CLDeploymentBuilder clDeploymentBuilder)
+   {
+      KernelDeployment deployment = clDeploymentBuilder.getDeployment();
+      VFSClassLoaderFactory factory = clDeploymentBuilder.getMetaDataFactory();
+      deploymentsByName.put(factory.getContextName()  + "$MODULE", deployment);
+      String domainName = factory.getDomain();
+      if (clDeploymentBuilder.isDomainCreated())
+      {
+         ClassLoaderDomain domain = system.getDomain(domainName);
+         if (domain != null)
+         {
+            Logger.getLogger(AbstractTestCase.class).debug("Registering domain " + domain);
+            DomainRegistry.registerDomain(domain);
+            if (factory.getParentDomain() == null ||
+                  factory.getParentDomain().equals(ClassLoaderSystem.DEFAULT_DOMAIN_NAME))
+            {
+               Assert.assertNull(domain.getParentDomain());
+            }
+            else
+            {
+               Assert.assertNotNull(domain.getParentDomainName());
+               Assert.assertEquals(factory.getParentDomain(), domain.getParentDomainName());
+            }
+         }
+      }
+   }
+   
+   public void registerClassLoader(ClassLoader classLoader, CLDeploymentBuilder clDeploymentBuilder)
+   {
+      VFSClassLoaderFactory factory = clDeploymentBuilder.getMetaDataFactory();
+      String name =  factory.getContextName() + "$MODULE";
+      Module module = microcontainer.assertBean(name, Module.class);
+      domainRegistry.initMapsForModule(module);
+      scopedChildDomainsByLoader.put(classLoader, system.getDomain(factory.getDomain()));
+      classLoaders.put(name, classLoader);
+   }
+   
+   public synchronized void unregisterDeployment(CLDeploymentBuilder clDeploymentBuilder) throws Exception
+   {
+      String contextName = clDeploymentBuilder.getMetaDataFactory().getContextName();
+      String name = contextName + "$MODULE";
+      ClassLoader classLoader = (ClassLoader) microcontainer.getBean(contextName);
+      deploymentsByName.remove(name);
+      scopedChildDomainsByLoader.remove(classLoader);
+      classLoaders.remove(name);
+      if (clDeploymentBuilder.isDomainCreated())
+      {
+         ClassLoaderDomain domain = scopedChildDomainsByLoader.get(classLoader);
+         DomainRegistry.registerDomain(domain.getName());
+         system.unregisterDomain(domain);
+      }
+   }
+   
+   public KernelDeployment unregisterDeployment(ClassLoader classLoader)
+   {
+      String name = ((BaseClassLoader) classLoader).getName();
+      classLoaders.remove(name);
+      return deploymentsByName.remove(name);
+   }
+   
+   public Collection<ClassLoader> getClassLoaders()
+   {
+      return new ArrayList<ClassLoader>(classLoaders.values());
+   }
+   
+   public ClassLoaderDomain getDomainForClassLoader(ClassLoader loader)
+   {
+      //(scopedChildDomainsByLoader.get(loader) != domainRegistry.getClassLoaderDomainForLoader(loader))
+      // this statement is true only when the module has already been cleaned up from domainRegistry
+      // that's why we need another collection here
+      return scopedChildDomainsByLoader.get(loader);
+   }
+}


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/LoaderRegistry.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ModuleOrPackageInfo.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ModuleOrPackageInfo.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ModuleOrPackageInfo.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,55 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.support;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public abstract class ModuleOrPackageInfo
-{
-   private String name;
-   
-   private Object version;
-
-   public ModuleOrPackageInfo(String name, Object version)
-   {
-      this.name = name;
-      this.version = version;
-   }
-
-   public ModuleOrPackageInfo(String name)
-   {
-      this(name, null);
-   }
-
-   public String getName()
-   {
-      return name;
-   }
-
-   public Object getVersion()
-   {
-      return version;
-   }
-}

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoSuchClassLoaderException.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoSuchClassLoaderException.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoSuchClassLoaderException.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,38 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.support;
+
+/**
+ * Indicates that a class loader is not completely deployed.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class NoSuchClassLoaderException extends Exception
+{
+   private static final long serialVersionUID = 1873358454130997423L;
+
+   public NoSuchClassLoaderException(Exception e)
+   {
+      super(e);
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoSuchClassLoaderException.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/RequirementInfo.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/RequirementInfo.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/RequirementInfo.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,75 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.support;
-
-import org.jboss.classloading.spi.version.VersionRange;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class RequirementInfo extends ModuleOrPackageInfo
-{
-   boolean optional;
-   boolean reExport;
-   boolean dynamic;
-   
-   public RequirementInfo(String name, VersionRange range)
-   {
-      super(name, range);
-   }
-
-   public RequirementInfo(String name)
-   {
-      super(name);
-   }
-
-   public RequirementInfo(String name, VersionRange range, boolean optional, boolean reExport, boolean dynamic)
-   {
-      super(name, range);
-      this.optional = optional;
-      this.reExport = reExport;
-      this.dynamic = dynamic;
-   }
-   
-   @Override
-   public VersionRange getVersion()
-   {
-      return (VersionRange)super.getVersion();
-   }
-
-   public boolean isOptional()
-   {
-      return optional;
-   }
-
-   public boolean isReExport()
-   {
-      return reExport;
-   }
-
-   public boolean isDynamic()
-   {
-      return dynamic;
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/Result.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/Result.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/Result.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,42 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.support;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class Result
-{
-   private TestVFSClassLoaderFactory factory;
-
-   public TestVFSClassLoaderFactory getFactory()
-   {
-      return factory;
-   }
-
-   public void setFactory(TestVFSClassLoaderFactory factory)
-   {
-      this.factory = factory;
-   }
-}

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SanityTestScenario.java (from rev 97064, projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/SanityTestScenario.java)
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SanityTestScenario.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SanityTestScenario.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,83 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.support;
+
+import junit.framework.Assert;
+
+import org.jboss.test.classpool.support.MicrocontainerFacade;
+
+/**
+ * This scenario is used by sanity tests, i.e., tests that check whether the class loaders
+ * represented by class pools actually behave as expected.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class SanityTestScenario extends TestScenario<Class<?>, ClassLoader>
+{
+   
+   public SanityTestScenario(MicrocontainerFacade microcontainer)
+   {
+      super(microcontainer);
+   }
+   
+   @Override
+   public ClassLoader getLoader(Class<?> clazz)
+   {
+      return clazz.getClassLoader();
+   }
+   
+   @Override
+   public ClassLoader getLoader(ClassLoader classLoader)
+   {
+      return classLoader;
+   }
+   
+   @Override
+   public ClassLoader getClassLoader(ClassLoader loader)
+   {
+      return loader;
+   }
+   
+   @Override
+   public Class<?> loadClass(ClassLoader loader, ClassLoader expected, String className) throws Exception
+   {
+      return assertLoadClass(className, loader, expected);
+   }
+   
+   @Override
+   public void cannotLoadClass(ClassLoader classLoader, String className)
+   {
+      try
+      {
+         classLoader.loadClass(className);
+         Assert.fail("Should not have been able to load " + className);
+      }
+      catch(ClassNotFoundException expected){}
+   }
+
+   @Override
+   public Class<?> getMethodReturnType(Class<?> clazz, String methodName) throws Exception
+   {
+      return clazz.getDeclaredMethod(methodName).getReturnType();
+   }
+}
\ No newline at end of file

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -100,5 +100,12 @@
    public final static String CLASS_CRM = PACKAGE_CRM + ".CrmFacade";
    public final static String CLASS_TIF = PACKAGE_TIF + ".TIFTester";
    
+   private static final String[] SUPPORT_CLASSES = new String[]{CLASS_A, CLASS_B, CLASS_C,
+      CLASS_D, CLASS_PLAIN, CLASS_MBEAN, CLASS_SLS_BEAN, CLASS_SLS_INTERFACE, CLASS_SERVLET,
+      CLASS_JSF, CLASS_UTIL, CLASS_EXT, CLASS_UI, CLASS_CRM, CLASS_TIF};
    
+   public static final String[] getAllSupportClasses()
+   {
+      return SUPPORT_CLASSES;
+   }
 }
\ No newline at end of file

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java (from rev 97064, projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/TestScenario.java)
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,336 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, 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.classpool.support;
+
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.base.BaseClassLoader;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.classpool.plugins.as5.VFSClassLoaderDomainRegistry;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.logging.Logger;
+import org.jboss.test.AbstractTestCase;
+
+/**
+ * Abstracts the concept of loader (L) and classes (C).
+ * This class allows the implementation of tests that don't rely on the actual type of
+ * L and C.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ * @see SanityTestScenario
+ * @see ClassPoolTestScenario
+ */
+
+public abstract class TestScenario<C,L>
+{
+   /** The classloader helper */
+   protected ClassLoaderSystem system;
+   /** The domain registry */
+   protected VFSClassLoaderDomainRegistry domainRegistry;
+   /** The Microcontanier Facade */
+   private MicrocontainerFacade microcontainer;
+   /** The loader registry */
+   private LoaderRegistry loaderRegistry;
+   
+   /**
+    * Constructor.
+    * 
+    * @param mc used by this test to perform deploy/undeploy operations
+    */
+   public TestScenario(MicrocontainerFacade mc)
+   {
+      this.microcontainer = mc;
+      this.system = (ClassLoaderSystem) mc.getBean("ClassLoaderSystem");
+      domainRegistry = (VFSClassLoaderDomainRegistry) mc.getBean("ClassLoaderScopingPolicy");
+      this.loaderRegistry = new LoaderRegistry(mc);
+   }
+   
+   /**
+    * Creates a loader.
+    * 
+    * @param classLoaderBuilder the class loader deployment builder that contains all
+    *                           the info necessary for the creation of a loader
+    * @return                   the created loader
+    * @throws NoSuchClassLoaderException indicates that the deployment is not sucessfull. The
+    *                                    class loader is not created at this moment
+    * @throws Exception any erros that should not be treated
+    */
+   public L createLoader(CLDeploymentBuilder classLoaderBuilder) throws NoSuchClassLoaderException, Exception
+   {
+      KernelDeployment deployment = classLoaderBuilder.createDeployment();
+      microcontainer.deploy(deployment);
+      VFSClassLoaderFactory factory = classLoaderBuilder.getMetaDataFactory();
+      factory.setContextName(getContextName(factory));
+      loaderRegistry.registerDeployment(classLoaderBuilder);
+      ClassLoader classLoader = getClassLoader(classLoaderBuilder);
+      return getLoader(classLoader);
+   }
+   
+   /**
+    * Destroys the loader corresponding to classLoaderBuilder.
+    * This method can be invoked only after the loader has been
+    * {@link #createLoader(CLDeploymentBuilder) created}.
+    * 
+    * @param classLoaderBuilder           contains information regarding the loader to be
+    *                                     destroyed.
+    * @throws Exception
+    * @see #createLoader(CLDeploymentBuilder)
+    */
+   public void destroyLoader(CLDeploymentBuilder classLoaderBuilder) throws Exception
+   {
+      loaderRegistry.unregisterDeployment(classLoaderBuilder);
+      microcontainer.undeploy(classLoaderBuilder.undeploy());
+      cannotGetLoader(classLoaderBuilder);
+   }
+   
+   /**
+    * Destroy all loaders that have been created so far (except for loaders that have already
+    * been {@link #destroyLoader(CLDeploymentBuilder) destroyed}).
+    */
+   public void destroyLoaders()
+   {
+      destroyClassLoaders();
+      unregisterDomains();
+      assertCannotLoaderSupportClasses();
+   }
+
+   /**
+    * Returns the loader corresponding to {@code classLoaderBuilder}. This method can be
+    * invoked only after {@code #createLoader(CLDeploymentBuilder)}.
+    * 
+    * @param classLoaderBuilder   contains all the info related to the loader to be retrieved
+    * @return                     the loader equivalent to {@code classLoaderBuilder}
+    * @throws Exception
+    * @see {@link #createLoader(CLDeploymentBuilder)}
+    */
+   public L getLoader(CLDeploymentBuilder classLoaderBuilder) throws Exception
+   {
+      ClassLoader classLoader = getClassLoader(classLoaderBuilder);
+      return getLoader(classLoader);
+   }
+   
+   /**
+    * Checks that this the loader corresponding to {@code classLoaderBuilder} is no longer
+    * available on the test scenario.
+    * 
+    * @param classLoaderBuilder identifies the loader that is going to be verified
+    * @throws Exception
+    */
+   public void cannotGetLoader(CLDeploymentBuilder classLoaderBuilder) throws Exception
+   {
+      String name = getContextName(classLoaderBuilder.getMetaDataFactory());
+      try
+      {
+         Object bean = microcontainer.getBean(name, null);
+         if (bean != null)
+            Assert.fail("Should not be here: " + bean);
+      }
+      catch (Throwable t)
+      {
+         AbstractTestCase.checkThrowable(IllegalStateException.class, t);
+      }
+   }
+   
+   /**
+    * Returns the loader that loaded {@code clazz}.
+    * 
+    * @param clazz a class that has been previously loaded
+    * @return the loader that loaded {@code clazz}
+    */
+   public abstract L getLoader(C clazz);
+   
+   /**
+    * Returns the loader corresponding to {@code classLoader}.
+    * 
+    * @param classLoader a class loader
+    * @return the loader that represents {code classLoader}
+    */
+   public abstract L getLoader(ClassLoader classLoader);
+   
+   /**
+    * Returns the class loader corresponding to {@code loader}.
+    * 
+    * @param loader a loader
+    * @return  the class loader that is represented by loader
+    */
+   public abstract ClassLoader getClassLoader(L loader);
+   
+   /**
+    * Checks that {@code loader} can load {@code className} and returns the loaded class.
+    * Also verifies that the loader associated with the loaded class is {@code loader}.
+    * 
+    * @param loader     a loader
+    * @param className  the name of the class to be loaded
+    * @return           the class loaded by {@code loader}
+    * @throws Exception
+    */
+   public C loadClass(L loader, String className) throws Exception
+   {
+      return loadClass(loader, loader, className);
+   }
+   
+   /**
+    * Checks that {@code loader} can load {@code className} and returns the loaded class.
+    * Also verifies that the loader associated with the loaded class is {@code expected}.
+    * 
+    * @param initiating    the loader that will be used for loading {@code className}
+    * @param expected      the actual loader that is associated with the loaded class
+    * @param className  the name of the class to be loaded
+    * @return           the loaded class
+    * @throws Exception
+    */
+   public abstract C loadClass(L initiating, L expected, String className) throws Exception;
+   
+   /**
+    * Checks that {@code loader} cannot load class {@code className}.
+    * 
+    * @param loader    a loader
+    * @param className the name of the class that can't be loaded by {@code loader}
+    */
+   public abstract void cannotLoadClass(L loader, String className);
+   
+   /**
+    * Returns the return type of a method declared in {@code clazz}.
+    * 
+    * @param clazz      the class that contains the method
+    * @param methodName the name of the method
+    * @return           the return type of the method
+    * @throws Exception
+    */
+   public abstract C getMethodReturnType(C clazz, String methodName) throws Exception;
+   
+   
+   
+   /************* HELPER METHODS **********************************************************/
+   
+   protected ClassLoader getClassLoader(CLDeploymentBuilder classLoaderBuilder)
+   throws Exception
+   {
+      VFSClassLoaderFactory factory = classLoaderBuilder.getMetaDataFactory();
+      try
+      {
+         Object obj = microcontainer.getBean(factory.getContextName());
+         Assert.assertTrue(obj instanceof ClassLoader);
+         ClassLoader classLoader = (ClassLoader) obj;
+         loaderRegistry.registerClassLoader(classLoader, classLoaderBuilder);
+         return classLoader;
+      }
+      catch (IllegalStateException e)
+      {
+         throw new NoSuchClassLoaderException(e);
+      }
+   }
+   
+   private void assertCannotLoaderSupportClasses()
+   {
+      ClassLoaderDomain domain = system.getDefaultDomain();
+      for (String className: SupportClasses.getAllSupportClasses())
+      {
+         try
+         {
+            Class<?> clazz = domain.loadClass(className);
+            if (clazz == null)
+            {
+               continue;
+            }
+            Assert.fail("Should not have been able to load " + className);
+         }
+         catch(Exception expected)
+         {
+         }
+      }
+   }
+
+   private void unregisterDomains()
+   {
+      for(Map.Entry<String, ClassLoaderDomain> entry: DomainRegistry.clear().entrySet())
+      {
+         ClassLoaderDomain domain = entry.getValue();
+         if (domain != null)
+         {
+            Logger.getLogger(AbstractTestCase.class).debug("Unregistering domain " + domain);
+            ClassLoaderDomain registeredDomain = system.getDomain(domain.getName());
+            if (registeredDomain == null)
+               throw new IllegalStateException("Domain is not registered: " + domain.getName());
+            if (registeredDomain != domain)
+               throw new IllegalStateException(domain + " is not the same as " + registeredDomain);
+         }
+         else
+         {
+            domain = system.getDomain(entry.getKey());
+            if (domain == null)
+            {
+               continue;
+            }
+         }
+         system.unregisterDomain(domain);
+      }
+   }
+
+   private void destroyClassLoaders()
+   {
+      for (ClassLoader classLoader: loaderRegistry.getClassLoaders())
+      {
+         destroy(classLoader);
+         try
+         {
+            Object bean = microcontainer.getBean(((BaseClassLoader) classLoader).getName(), null);
+            if (bean != null)
+               Assert.fail("Should not be here: " + bean);
+         }
+         catch (Throwable t)
+         {
+            AbstractTestCase.checkThrowable(IllegalStateException.class, t);
+         }
+      }
+   }
+
+   
+   protected Class<?> assertLoadClass(String className, ClassLoader initiating, ClassLoader expected) throws Exception
+   {
+      Class<?> clazz = initiating.loadClass(className);
+      if (expected != null)
+      {
+         Assert.assertSame(expected, clazz.getClassLoader());
+      }
+      return clazz;
+   }
+   
+   protected void destroy(ClassLoader classLoader)
+   {
+      KernelDeployment deployment = loaderRegistry.unregisterDeployment(classLoader);
+      microcontainer.undeploy(deployment);
+   }
+   
+   private String getContextName(VFSClassLoaderFactory factory)
+   {
+      String contextName = factory.getContextName();
+      if (contextName == null)
+         contextName = factory.getName() + ":" + factory.getVersion();
+      return contextName;
+   }
+}
\ No newline at end of file

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactory.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactory.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,24 +1,24 @@
 /*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.
-*/ 
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file 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.classpool.support;
 
 import java.util.Arrays;
@@ -31,11 +31,13 @@
 import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
 
 /**
+ * VFSClassLoaderFactory used by the tests
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
  * @version $Revision$
  */
-public class TestVFSClassLoaderFactory extends VFSClassLoaderFactory
+class TestVFSClassLoaderFactory extends VFSClassLoaderFactory
 {
    private static final long serialVersionUID = 1L;
    
@@ -123,4 +125,4 @@
       }
       return result;
    }
-}
+}
\ No newline at end of file

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactoryFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactoryFactory.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactoryFactory.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,175 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.classpool.support;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
-import org.jboss.classloading.spi.metadata.ExportAll;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class TestVFSClassLoaderFactoryFactory
-{
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, URL... urls)
-   {
-      return createClassLoaderFactory(name, importAll, null, false, urls);
-   }
-   
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, URL[] excludes, URL... urls)
-   {
-      return createClassLoaderFactory(name, importAll, null, false, excludes, urls);
-   }
-   
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, BundleInfoBuilder builder, URL... urls) throws Exception
-   {
-      return createClassLoaderFactory(name, importAll, null, null, builder, false, null, urls);
-   }
-   
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, BundleInfoBuilder builder, URL[] excludes, URL... urls) throws Exception
-   {
-      return createClassLoaderFactory(name, importAll, null, null, builder, false, excludes, urls);
-   }
-   
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, String domainName, BundleInfoBuilder builder, boolean parentFirst, URL... urls) throws Exception
-   {
-      return createClassLoaderFactory(name, domainName, null, builder, parentFirst, urls);
-   }
-   
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, String domainName, BundleInfoBuilder builder, boolean parentFirst, URL[] excludes, URL... urls) throws Exception
-   {
-      return createClassLoaderFactory(name, domainName, null, builder, parentFirst, excludes, urls);
-   }
-   
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, String domainName, String parentDomainName, BundleInfoBuilder builder, boolean parentFirst, URL... urls) throws Exception
-   {
-      return createClassLoaderFactory(name, false, domainName, parentDomainName, builder, false, null, urls);
-   }
-   
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, String domainName, String parentDomainName, BundleInfoBuilder builder, boolean parentFirst, URL[] excludes, URL... urls) throws Exception
-   {
-      return createClassLoaderFactory(name, false, domainName, parentDomainName, builder, false, excludes, urls);
-   }
-
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String moduleName, URL... urls) throws Exception
-   {
-      return createClassLoaderFactory(name, importAll, null, false, urls);
-   }
-   
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String moduleName, URL[] excludes, URL... urls) throws Exception
-   {
-      return createClassLoaderFactory(name, importAll, null, false, excludes, urls);
-   }
-   
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String domainName, boolean parentFirst, URL... urls)
-   {
-      return createClassLoaderFactory(name, importAll, domainName, null, parentFirst, urls);
-   }
-   
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String domainName, boolean parentFirst, URL[] excludes, URL... urls)
-   {
-      return createClassLoaderFactory(name, importAll, domainName, null, parentFirst, excludes, urls);
-   }
-
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String domainName, String parentDomainName, boolean parentFirst, URL... urls)
-   {
-      return createClassLoaderFactory(name, importAll, domainName, parentDomainName, null, parentFirst, null, urls);
-   }
-   
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String domainName, String parentDomainName, boolean parentFirst, URL[] excludes, URL... urls)
-   {
-      return createClassLoaderFactory(name, importAll, domainName, parentDomainName, null, parentFirst, excludes, urls);
-   }
-   
-   public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String domainName, String parentDomainName, BundleInfoBuilder builder, boolean parentFirst, URL[] excludes, URL... urls)
-   {
-      TestVFSClassLoaderFactory factory = new TestVFSClassLoaderFactory();
-      factory.setName(name);
-      factory.setImportAll(importAll);
-      if (importAll)
-      {
-         factory.setExportAll(ExportAll.NON_EMPTY);
-      }
-      factory.setRoots(urlsToStringList(urls));
-      factory.setExcludedRoots(urlsToStringList(excludes));
-      addCapabilitiesAndRequirements(factory, builder);
-      setupDomain(factory, domainName, parentDomainName, parentFirst);
-      return factory;
-   }
-
-   private static void addCapabilitiesAndRequirements(ClassLoadingMetaData md, BundleInfoBuilder builder)
-   {
-      if (builder != null)
-      {
-         md.getCapabilities().setCapabilities(builder.getCapabilities());
-         md.getRequirements().setRequirements(builder.getRequirements());
-      }
-   }
-
-   private static void setupDomain(ClassLoadingMetaData md, String domainName, String parentDomainName, boolean parentFirst)
-   {
-      if (domainName != null)
-      {
-         md.setDomain(domainName);
-         md.setJ2seClassLoadingCompliance(parentFirst);
-         if (parentDomainName != null)
-         {
-            md.setParentDomain(parentDomainName);
-         }
-         else
-         {
-            md.setParentDomain(ClassLoaderSystem.DEFAULT_DOMAIN_NAME);
-         }
-      }
-      else
-      {
-         md.setDomain(ClassLoaderSystem.DEFAULT_DOMAIN_NAME);
-      }
-   }
-   
-   private static List<String> urlsToStringList(URL... urls)
-   {
-      if (urls == null)
-      {
-         return null;
-      }
-      List<String> urlList = new ArrayList<String>(urls.length);
-      if (urls.length > 0)
-      {
-         for (URL url : urls)
-         {
-            if (url != null)
-            {
-               urlList.add(url.toString());
-            }
-         }
-      }
-      return urlList;
-   }
-
-}

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java	2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java	2009-11-30 21:37:56 UTC (rev 97186)
@@ -38,8 +38,10 @@
 import org.jboss.virtual.VirtualFile;
 
 /**
+ * VFSClassLoaderPolicyModule used by tests.
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
  * @version $Revision$
  */
 public class TestVFSClassLoaderPolicyModule extends VFSClassLoaderPolicyModule




More information about the jboss-cvs-commits mailing list