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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Dec 1 18:18:07 EST 2009


Author: flavia.rainone at jboss.com
Date: 2009-12-01 18:18:06 -0500 (Tue, 01 Dec 2009)
New Revision: 97265

Added:
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/CLDeploymentBuilder.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/ClassPoolTestScenario.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/DomainRegistry.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/LoaderRegistry.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/NoMatchClassFilter.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/NoSuchClassLoaderException.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/SanityTestScenario.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/TestScenario.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/TestVFSClassLoaderFactory.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/TestVFSClassLoaderPolicyModule.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassFactory.java
Removed:
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/common/
   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/NoMatchClassFilter.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
   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
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/ArchiveSanityTestCase.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/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/JBossClClassPoolTest.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/test/ParentFirstDelegatingClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentLastDelegatingClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/ucl/test/UclDelegatingClassPoolTestCase.java
Log:
[JBREFLECT-74] Placed support classes in the appropriate packages.

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/CLDeploymentBuilder.java (from rev 97186, 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/jbosscl/support/CLDeploymentBuilder.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/CLDeploymentBuilder.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -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.jbosscl.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;
+   }
+}

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/ClassPoolTestScenario.java (from rev 97186, 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/jbosscl/support/ClassPoolTestScenario.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/ClassPoolTestScenario.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -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.jbosscl.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);
+   }
+}

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/DomainRegistry.java (from rev 97186, 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/jbosscl/support/DomainRegistry.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/DomainRegistry.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -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.jbosscl.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

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/LoaderRegistry.java (from rev 97187, 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/jbosscl/support/LoaderRegistry.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/LoaderRegistry.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -0,0 +1,157 @@
+/*
+ * 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.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;
+import org.jboss.test.classpool.support.MicrocontainerFacade;
+
+/**
+ * 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);
+         if (domain != null)
+         {
+            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);
+   }
+}

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/NoMatchClassFilter.java (from rev 94892, projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoMatchClassFilter.java)
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/NoMatchClassFilter.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/NoMatchClassFilter.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -0,0 +1,70 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, 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.support;
+
+import org.jboss.classloader.plugins.ClassLoaderUtils;
+import org.jboss.classloader.spi.filter.ClassFilter;
+
+/**
+ * NoMatchClassFilter.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision$
+ */
+public class NoMatchClassFilter implements ClassFilter
+{
+   String className;
+   
+   public boolean filtered = false;
+   
+   public NoMatchClassFilter(String classname)
+   {
+      this.className = classname;
+   }
+   
+   public boolean matchesClassName(String className)
+   {
+      if (this.className.equals(className))
+      {
+         filtered = true;
+         return false;
+      }
+      return true;
+   }
+   
+   public boolean matchesResourcePath(String resourcePath)
+   {
+      if (ClassLoaderUtils.classNameToPath(this.className).equals(resourcePath))
+      {
+         filtered = true;
+         return false;
+      }
+      return true;
+   }
+   
+   public boolean matchesPackageName(String packageName)
+   {
+      if (ClassLoaderUtils.getClassPackageName(this.className).equals(packageName))
+         return false;
+      return true;
+   }
+}

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/NoSuchClassLoaderException.java (from rev 97186, 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/jbosscl/support/NoSuchClassLoaderException.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/NoSuchClassLoaderException.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -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.jbosscl.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

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/SanityTestScenario.java (from rev 97186, 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/jbosscl/support/SanityTestScenario.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/SanityTestScenario.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -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.jbosscl.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

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/TestScenario.java (from rev 97186, projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java)
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/TestScenario.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/TestScenario.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -0,0 +1,338 @@
+/*
+ * 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.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;
+import org.jboss.test.classpool.support.MicrocontainerFacade;
+import org.jboss.test.classpool.support.SupportClasses;
+
+/**
+ * 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

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/TestVFSClassLoaderFactory.java (from rev 97186, 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/jbosscl/support/TestVFSClassLoaderFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/TestVFSClassLoaderFactory.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -0,0 +1,128 @@
+/*
+ * 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.support;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloading.spi.vfs.dependency.VFSClassLoaderPolicyModule;
+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$
+ */
+class TestVFSClassLoaderFactory extends VFSClassLoaderFactory
+{
+   private static final long serialVersionUID = 1L;
+   
+   private ClassLoader parent;
+   private List<String> excludedRoots;
+
+   @Override
+   protected Class<? extends VFSClassLoaderPolicyModule> getModuleClass()
+   {
+      return TestVFSClassLoaderPolicyModule.class;
+   }
+   
+   public void setParent(ClassLoader parent)
+   {
+      this.parent = parent;
+   }
+   
+   public void setExcludedRoots(List<String> excludedRoots)
+   {
+      this.excludedRoots = excludedRoots;
+   }
+   
+   @Override
+   public List<BeanMetaData> getBeans()
+   {
+   
+      List<BeanMetaData> result = super.getBeans();
+      boolean overwriteClassLoader = parent != null;
+      boolean overwriteModule = this.excludedRoots != null && !this.excludedRoots.isEmpty();
+      if (overwriteClassLoader || overwriteModule)
+      {
+         //We need to modify the Module factory method used to create the classloader to pass in the parent
+         if (result.size() != 2)
+         {
+            throw new IllegalStateException("Expected size=2, was " + result.size());
+         }
+      
+         BeanMetaData classLoader = null;
+         BeanMetaData module = null;
+         for (BeanMetaData bean : result)
+         {
+            if (bean.getBean().equals(ClassLoader.class.getName()))
+            {
+               classLoader = bean;
+            }
+            else
+            {
+               module = bean;
+            }
+         }
+         
+         if (module == null)
+         {
+            throw new IllegalStateException("Could not find module");
+         }
+         if (classLoader == null)
+         {
+            throw new IllegalStateException("Could not find module");
+         }
+         String moduleName = module.getName();
+
+         if (overwriteClassLoader)
+         {
+            BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(classLoader.getName(), ClassLoader.class.getName());
+            builder.setNoClassLoader();
+            builder.setFactory(module.getName());
+            builder.setFactoryMethod("registerClassLoaderPolicy");
+            builder.addConstructorParameter(ClassLoaderSystem.class.getName(), builder.createInject(getClassLoaderSystemName()));
+            builder.addConstructorParameter(ClassLoader.class.getName(), parent);
+            classLoader = builder.getBeanMetaData();
+         }
+         if (overwriteModule)
+         {
+            // Create the module
+            BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(moduleName, getModuleClass().getName());
+            builder.addConstructorParameter(VFSClassLoaderFactory.class.getName(), this);
+            builder.addConstructorParameter(String.class.getName(), moduleName);
+            builder.addPropertyMetaData("roots", getRoots());
+            builder.addPropertyMetaData("excludedRoots", this.excludedRoots);
+            builder.setNoClassLoader();
+            builder.addUninstall("removeClassLoader");
+            module = builder.getBeanMetaData();
+         }
+         result = Arrays.asList(classLoader, module);
+      }
+      return result;
+   }
+}
\ No newline at end of file

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/TestVFSClassLoaderPolicyModule.java (from rev 97186, 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/jbosscl/support/TestVFSClassLoaderPolicyModule.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/TestVFSClassLoaderPolicyModule.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -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.support;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.jboss.classloading.spi.vfs.dependency.VFSClassLoaderPolicyModule;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy;
+import org.jboss.util.id.GUID;
+import org.jboss.virtual.MemoryFileFactory;
+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
+{
+   private static final long serialVersionUID = 1;
+   
+   
+   /** In AS we need a URL to create the temporary files */
+   URL dynamicClassRoot;
+   VirtualFile classes;
+   private List<String> excludedRoots;
+   
+   public TestVFSClassLoaderPolicyModule(VFSClassLoaderFactory classLoadingMetaData, String contextName)
+   {
+      // FIXME TesetMockClassLoaderPolicyModule constructor
+      super(classLoadingMetaData, contextName);
+   }
+   
+   public void setExcludedRoots(List<String> excludedRoots)
+   {
+      this.excludedRoots = excludedRoots;
+   }
+
+   /**
+    * Get/Create the vfs memory file where we will create dynamic classes
+    */
+   @Override
+   public URL getDynamicClassRoot()
+   {
+      initDynamicClassRoot();
+      return dynamicClassRoot;
+   }
+   
+   /**
+    * Prepend the dynamic URL location to the classpath
+    */
+   @Override
+   protected VirtualFile[] determineVFSRoots()
+   {
+      initDynamicClassRoot();
+      Map<Integer, String> truncatedRootPaths = truncateArchiveNestedPaths(this.getRoots());
+      VirtualFile[] roots = super.determineVFSRoots();
+      restoreArchiveNestedPaths(truncatedRootPaths, roots);
+      VirtualFile[] newRoots = new VirtualFile[roots.length + 1];
+      newRoots[0] = classes;
+      System.arraycopy(roots, 0, newRoots, 1, roots.length);
+      return newRoots;
+   }
+   
+   @Override
+   // FIXME code copied from determinePolicy method in super class
+   protected VFSClassLoaderPolicy determinePolicy()
+   {
+      VirtualFile[] roots = determineVFSRoots();
+
+      // these are the only lines that are different from super class's determinePolicy()
+      VirtualFile[] excludedRoots = determineVFSExcludedRoots();
+      VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(
+            getContextName(), roots, excludedRoots);
+
+      String[] packageNames = getPackageNames();
+      policy.setExportedPackages(packageNames);
+      policy.setIncluded(getIncluded());
+      policy.setExcluded(getExcluded());
+      policy.setExcludedExport(getExcludedExport());
+      policy.setExportAll(getExportAll());
+      policy.setImportAll(isImportAll());
+      policy.setCacheable(isCacheable());
+      policy.setBlackListable(isBlackListable());
+      policy.setDelegates(getDelegates());
+      return policy;
+   }
+
+   protected VirtualFile[] determineVFSExcludedRoots()
+   {
+      if (this.excludedRoots == null || this.excludedRoots.isEmpty())
+      {
+         return new VirtualFile[0];
+      }
+      Map<Integer, String> truncatedRootPaths = truncateArchiveNestedPaths(this.excludedRoots);
+      VirtualFile[] roots = determineVFSRoots(this.excludedRoots);
+      restoreArchiveNestedPaths(truncatedRootPaths, roots);
+      return roots;
+   }
+   
+   // FIXME: code copied from determineVFSRoots method in superclass
+   protected VirtualFile[] determineVFSRoots(List<String> roots)
+   {
+      if (roots == null)
+      {
+         return new VirtualFile[0];
+      }
+      VirtualFile[] vfsRoots = new VirtualFile[roots.size()];
+      for (int i = 0; i < roots.size(); ++i)
+      {
+         String root = roots.get(i);
+         try
+         {
+            URI uri = new URI(root);
+            vfsRoots[i] = getVirtualFile(uri);
+         }
+         catch (RuntimeException e)
+         {
+            throw e;
+         }
+         catch (Exception e)
+         {
+            throw new RuntimeException("Error creating VFS file for " + root, e);
+         }
+      }
+      return vfsRoots;
+   }
+   
+   private synchronized void initDynamicClassRoot()
+   {
+      if (dynamicClassRoot == null)
+      {
+         try
+         {
+            dynamicClassRoot = new URL("vfsmemory", GUID.asString(), "");
+            classes = MemoryFileFactory.createRoot(dynamicClassRoot).getRoot();
+         }
+         catch (Exception e)
+         {
+            throw new RuntimeException(e);
+         }
+      }
+   }
+
+   /**
+    * This method truncated nested archives classpath.
+    * For example, the "/home/user_name/jboss-classpool/target/mywar.war/META-INF/classes"
+    * is replaced by "/home/user_name/jboss-classpool/target/mywar.war"
+    * The truncation is only performed on paths that involve subdirectories of archive files.
+    * 
+    * @param paths a list of paths. After this method is executed, this list will contain the
+    *              truncated paths
+    * @return a map that can be used to restore the truncated paths by invoking
+    *         {@code #restoreArchiveNestedPaths(Map, VirtualFile[])}
+    */
+   private Map<Integer, String> truncateArchiveNestedPaths(List<String> paths)
+   {
+      Map<Integer, String> truncatedRootPaths = new HashMap<Integer, String>();
+      for (ListIterator<String> listIterator = paths.listIterator(); listIterator.hasNext();)
+      {
+         int rootIndex = listIterator.nextIndex();
+         String root = listIterator.next();
+         int archiveIndex = root.indexOf('.');
+         int lastSlash = archiveIndex > 0? root.indexOf('/', archiveIndex): -1;
+         if (lastSlash > 0)
+         {
+            listIterator.set(root.substring(0, lastSlash));
+            root = root.substring(lastSlash + 1);
+            if (root != null)
+            {
+               truncatedRootPaths.put(rootIndex, root);
+            }
+         }
+      }
+      return truncatedRootPaths;
+   }
+   
+   /**
+    * Restores the truncated paths.
+    * 
+    * @param truncatedPaths the result of a previous truncation
+    *                       ({@see #truncateArchiveNestedPaths(List)}).
+    * @param paths a list of virtual files representing the truncated paths. Every virtual file
+    *              in this array that corresponds to a previously truncated path will be
+    *              replaced the virtual file that represent the original path.
+    */
+   private void restoreArchiveNestedPaths(
+         Map<Integer, String> truncatedPaths, VirtualFile[] paths)
+   {
+      for (Entry<Integer, String> truncatedPath: truncatedPaths.entrySet())
+      {
+         int pathIndex = truncatedPath.getKey();
+         VirtualFile file = paths[pathIndex];
+         String path = truncatedPath.getValue();
+         do
+         {
+            int archiveIndex = path.indexOf('.');
+            int lastSlash = archiveIndex > 0? path.indexOf('/', archiveIndex): -1;
+            try
+            {
+               if (lastSlash > 0)
+               {
+                  file = file.getChild(path.substring(0, lastSlash));
+                  path = path.substring(lastSlash + 1);
+               }
+               else
+               {
+                  file = file.getChild(path);
+                  path = null;
+               }
+            } catch (IOException e)
+            {
+               throw new RuntimeException("Can't find path " + path + " on root " + file, e);
+            }
+         } while(path != null);
+         paths[pathIndex] = 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-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -26,8 +26,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 /**
  * Executes the archive tests against a class pool test scenario.

Modified: 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/ArchiveSanityTestCase.java	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveSanityTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -24,8 +24,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.SanityTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 /**
  * Executes the archive tests against a sanity test scenario (for class loader behavior sanity

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-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveTest.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -88,7 +88,7 @@
 
 import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
 import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
-import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
 import org.jboss.test.classpool.support.SupportClasses;
 
 /**

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/DependencyTest.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -27,8 +27,8 @@
 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;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.jbosscl.support.NoSuchClassLoaderException;
 
 /**
  * Contains tests for dependency test scenarios,such as dependency on modules and on packages. 

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -26,8 +26,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 
 /**

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainSanityTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -24,8 +24,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.SanityTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 
 /**

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainTest.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -29,8 +29,8 @@
 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;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.jbosscl.support.NoSuchClassLoaderException;
 
 /**
  * Reproduces org.jboss.test.classloading.dependency.test.HierarchicalDomainUnitTestCase using

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -26,8 +26,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 
 /**

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderSanityTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -24,8 +24,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.SanityTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 
 

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderTest.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -31,9 +31,9 @@
 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;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.jbosscl.support.DomainRegistry;
+import org.jboss.test.classpool.jbosscl.support.NoMatchClassFilter;
 
 /**
  * Reproduces org.jboss.test.classloader.domain.test.HierarchicalParentLoaderUnitTestCase using

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-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -28,9 +28,9 @@
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.kernel.spi.deployment.KernelDeployment;
 import org.jboss.test.AbstractTestCaseWithSetup;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 import org.jboss.test.classpool.support.MicrocontainerFacade;
 import org.jboss.test.classpool.support.SupportClasses;
-import org.jboss.test.classpool.support.TestScenario;
 import org.jboss.test.kernel.junit.MicrocontainerTest;
 import org.jboss.virtual.VFS;
 

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -26,8 +26,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 
 /**

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencySanityTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -24,8 +24,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.SanityTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 /**
  * Executes the module dependency tests against a sanity test scenario (for class loader

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyTest.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -25,7 +25,7 @@
 import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
 
 import org.jboss.classloading.spi.version.VersionRange;
-import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
 
 /**
  * Reproduces org.jboss.test.classloading.vfs.metadata.test.ModuleDependencyUnitTestCase using

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -26,8 +26,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 /**
  * Executes the package dependency tests against a class pool test scenario.

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencySanityTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -24,8 +24,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.SanityTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 /**
  * Executes the package dependency tests against a sanity test scenario (for class loader

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyTest.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -25,7 +25,7 @@
 import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
 
 import org.jboss.classloading.spi.version.VersionRange;
-import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
 
 /**
  * Reproduces org.jboss.test.classloading.vfs.metadata.test.PackageDependencyUnitTestCase using

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -26,8 +26,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 
 /**

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleSanityTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -24,8 +24,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.SanityTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 
 /**

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleTest.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -21,7 +21,7 @@
 */ 
 package org.jboss.test.classpool.jbosscl.test;
 
-import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
 
 /**
  * Reproduces org.jboss.test.classloading.vfs.metadata.test.ReExportPackageUnitTestCase using

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -26,8 +26,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 /**
  * Executes the ReExportPackage tests against a class pool test scenario.

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageSanityTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -24,8 +24,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.SanityTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 
 /**

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageTest.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -23,7 +23,7 @@
 
 import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
 
-import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
 
 /**
  * Reproduces org.jboss.test.classloading.vfs.metadata.test.ReExportPackageUnitTestCase using

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportTest.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -30,7 +30,7 @@
 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;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
 
 /**
  * Contains tests for reExport test scenarios, such as reExportModule and ReExportPackage. 

Modified: 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/ReplaceReferencesClassPoolTestCase.java	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReplaceReferencesClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -44,10 +44,10 @@
 
 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.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 import org.jboss.test.classpool.support.SupportClasses;
-import org.jboss.test.classpool.support.TestScenario;
 import org.jboss.util.loading.Translator;
 
 /**

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -35,10 +35,10 @@
 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;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.support.ClassFactory;
 
 /**
  * Executes the repository tests against a class pool test scenario.

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositorySanityTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -24,8 +24,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.SanityTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 /**
  * Executes the repository tests against a sanity test scenario (for class loader behavior

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryTest.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -36,7 +36,7 @@
 import java.net.URL;
 import java.net.URLClassLoader;
 
-import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
 
 /**
  * Tests the behaviour of the new classloaders.

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -26,8 +26,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 
 /**

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageSanityTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -24,8 +24,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.support.SanityTestScenario;
-import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
+import org.jboss.test.classpool.jbosscl.support.TestScenario;
 
 
 /**

Modified: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageTest.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -25,7 +25,7 @@
 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;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
 
 /**
  * Reproduces org.jboss.test.classloading.vfs.metadata.test.UsesPackageUnitTestCase using our

Deleted: 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/CLDeploymentBuilder.java	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CLDeploymentBuilder.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -1,392 +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.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;
-   }
-}

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassFactory.java (from rev 94892, projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/common/ClassFactory.java)
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassFactory.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassFactory.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -0,0 +1,114 @@
+/*
+ * 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 javassist.CannotCompileException;
+import javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Assert;
+
+import org.jboss.classpool.spi.AbstractClassPool;
+import org.jboss.classpool.spi.ClassPoolRepository;
+
+/**
+ * @author  <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ClassFactory
+{
+   public static final String PACKAGE = "org.test.classpool.proxy";
+   private static final String CLASS = "Proxy";
+   private static int counter = 0;
+   
+   public static Object create(Class<?> parent, ClassLoader loader) throws Exception
+   {
+      String packageName = parent.getPackage().getName();
+      if (!packageName.startsWith("java.") && !packageName.startsWith("sun."))
+      {
+         packageName += ".";
+      }
+      else
+      {
+         packageName = PACKAGE + ".";
+      }
+      String className = packageName + CLASS + counter++;
+      ClassPool pool = ClassPoolRepository.getInstance().getRegisteredCLs().get(loader);
+      try
+      {
+         registerGeneratedClass(pool, className);
+         CtClass ctClazz = pool.makeClass(packageName + CLASS + counter++);
+         ctClazz.setSuperclass(pool.get(parent.getName()));
+         Class<?> clazz = pool.toClass(ctClazz);
+         Assert.assertSame(loader, clazz.getClassLoader());
+         return clazz.newInstance();
+      }
+      catch(RuntimeException re)
+      {
+         unregisterGeneratedClass(pool, className);
+         throw re;
+      }
+   }
+   
+   /**
+    * Utility method to make a new class in a pool. It makes sure that the class is registered with the pool, so others can find it.
+    */
+   public static CtClass create(ClassPool pool, String name)
+   {
+      registerGeneratedClass(pool, name);
+      return pool.makeClass(name);
+   }
+   
+   /**
+    * Utility method to make a new class in a pool. It makes sure that the class is registered with the pool, so others can find it.
+    */
+   public static CtClass createNested(CtClass outer, String name, boolean isStatic) throws CannotCompileException
+   {
+      final String classname = outer.getName() + "$" + name;
+      try
+      {
+         registerGeneratedClass(outer.getClassPool(), classname);
+         CtClass inner = outer.makeNestedClass(name, true);
+         return inner;
+      }
+      catch (RuntimeException e)
+      {
+         unregisterGeneratedClass(outer.getClassPool(), classname);
+         throw e;
+      }
+   }
+   
+   private static void registerGeneratedClass(ClassPool pool, String name)
+   {
+      if (pool != null && pool instanceof AbstractClassPool)
+      {
+         ((AbstractClassPool) pool).registerGeneratedClass(name);
+      }
+   }
+   
+   private static void unregisterGeneratedClass(ClassPool pool, String name)
+   {
+      if (pool != null && pool instanceof AbstractClassPool)
+      {
+         ((AbstractClassPool) pool).doneGeneratingClass(name);
+      }
+   }
+}

Deleted: 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/ClassPoolTestScenario.java	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassPoolTestScenario.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -1,196 +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.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);
-   }
-}

Deleted: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/DomainRegistry.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -1,64 +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.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

Deleted: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/LoaderRegistry.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -1,156 +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.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);
-         if (domain != null)
-         {
-            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);
-   }
-}

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoMatchClassFilter.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoMatchClassFilter.java	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoMatchClassFilter.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -1,70 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2007, 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.classloader.plugins.ClassLoaderUtils;
-import org.jboss.classloader.spi.filter.ClassFilter;
-
-/**
- * NoMatchClassFilter.
- * 
- * @author <a href="adrian at jboss.com">Adrian Brock</a>
- * @version $Revision$
- */
-public class NoMatchClassFilter implements ClassFilter
-{
-   String className;
-   
-   public boolean filtered = false;
-   
-   public NoMatchClassFilter(String classname)
-   {
-      this.className = classname;
-   }
-   
-   public boolean matchesClassName(String className)
-   {
-      if (this.className.equals(className))
-      {
-         filtered = true;
-         return false;
-      }
-      return true;
-   }
-   
-   public boolean matchesResourcePath(String resourcePath)
-   {
-      if (ClassLoaderUtils.classNameToPath(this.className).equals(resourcePath))
-      {
-         filtered = true;
-         return false;
-      }
-      return true;
-   }
-   
-   public boolean matchesPackageName(String packageName)
-   {
-      if (ClassLoaderUtils.getClassPackageName(this.className).equals(packageName))
-         return false;
-      return true;
-   }
-}

Deleted: 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	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoSuchClassLoaderException.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -1,38 +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.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

Deleted: 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/SanityTestScenario.java	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SanityTestScenario.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -1,83 +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.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

Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -1,336 +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.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

Deleted: 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-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactory.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -1,128 +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.Arrays;
-import java.util.List;
-
-import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloading.spi.vfs.dependency.VFSClassLoaderPolicyModule;
-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$
- */
-class TestVFSClassLoaderFactory extends VFSClassLoaderFactory
-{
-   private static final long serialVersionUID = 1L;
-   
-   private ClassLoader parent;
-   private List<String> excludedRoots;
-
-   @Override
-   protected Class<? extends VFSClassLoaderPolicyModule> getModuleClass()
-   {
-      return TestVFSClassLoaderPolicyModule.class;
-   }
-   
-   public void setParent(ClassLoader parent)
-   {
-      this.parent = parent;
-   }
-   
-   public void setExcludedRoots(List<String> excludedRoots)
-   {
-      this.excludedRoots = excludedRoots;
-   }
-   
-   @Override
-   public List<BeanMetaData> getBeans()
-   {
-   
-      List<BeanMetaData> result = super.getBeans();
-      boolean overwriteClassLoader = parent != null;
-      boolean overwriteModule = this.excludedRoots != null && !this.excludedRoots.isEmpty();
-      if (overwriteClassLoader || overwriteModule)
-      {
-         //We need to modify the Module factory method used to create the classloader to pass in the parent
-         if (result.size() != 2)
-         {
-            throw new IllegalStateException("Expected size=2, was " + result.size());
-         }
-      
-         BeanMetaData classLoader = null;
-         BeanMetaData module = null;
-         for (BeanMetaData bean : result)
-         {
-            if (bean.getBean().equals(ClassLoader.class.getName()))
-            {
-               classLoader = bean;
-            }
-            else
-            {
-               module = bean;
-            }
-         }
-         
-         if (module == null)
-         {
-            throw new IllegalStateException("Could not find module");
-         }
-         if (classLoader == null)
-         {
-            throw new IllegalStateException("Could not find module");
-         }
-         String moduleName = module.getName();
-
-         if (overwriteClassLoader)
-         {
-            BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(classLoader.getName(), ClassLoader.class.getName());
-            builder.setNoClassLoader();
-            builder.setFactory(module.getName());
-            builder.setFactoryMethod("registerClassLoaderPolicy");
-            builder.addConstructorParameter(ClassLoaderSystem.class.getName(), builder.createInject(getClassLoaderSystemName()));
-            builder.addConstructorParameter(ClassLoader.class.getName(), parent);
-            classLoader = builder.getBeanMetaData();
-         }
-         if (overwriteModule)
-         {
-            // Create the module
-            BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(moduleName, getModuleClass().getName());
-            builder.addConstructorParameter(VFSClassLoaderFactory.class.getName(), this);
-            builder.addConstructorParameter(String.class.getName(), moduleName);
-            builder.addPropertyMetaData("roots", getRoots());
-            builder.addPropertyMetaData("excludedRoots", this.excludedRoots);
-            builder.setNoClassLoader();
-            builder.addUninstall("removeClassLoader");
-            module = builder.getBeanMetaData();
-         }
-         result = Arrays.asList(classLoader, module);
-      }
-      return result;
-   }
-}
\ No newline at end of file

Deleted: 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-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -1,248 +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.io.IOException;
-import java.net.URI;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.jboss.classloading.spi.vfs.dependency.VFSClassLoaderPolicyModule;
-import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
-import org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy;
-import org.jboss.util.id.GUID;
-import org.jboss.virtual.MemoryFileFactory;
-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
-{
-   private static final long serialVersionUID = 1;
-   
-   
-   /** In AS we need a URL to create the temporary files */
-   URL dynamicClassRoot;
-   VirtualFile classes;
-   private List<String> excludedRoots;
-   
-   public TestVFSClassLoaderPolicyModule(VFSClassLoaderFactory classLoadingMetaData, String contextName)
-   {
-      // FIXME TesetMockClassLoaderPolicyModule constructor
-      super(classLoadingMetaData, contextName);
-   }
-   
-   public void setExcludedRoots(List<String> excludedRoots)
-   {
-      this.excludedRoots = excludedRoots;
-   }
-
-   /**
-    * Get/Create the vfs memory file where we will create dynamic classes
-    */
-   @Override
-   public URL getDynamicClassRoot()
-   {
-      initDynamicClassRoot();
-      return dynamicClassRoot;
-   }
-   
-   /**
-    * Prepend the dynamic URL location to the classpath
-    */
-   @Override
-   protected VirtualFile[] determineVFSRoots()
-   {
-      initDynamicClassRoot();
-      Map<Integer, String> truncatedRootPaths = truncateArchiveNestedPaths(this.getRoots());
-      VirtualFile[] roots = super.determineVFSRoots();
-      restoreArchiveNestedPaths(truncatedRootPaths, roots);
-      VirtualFile[] newRoots = new VirtualFile[roots.length + 1];
-      newRoots[0] = classes;
-      System.arraycopy(roots, 0, newRoots, 1, roots.length);
-      return newRoots;
-   }
-   
-   @Override
-   // FIXME code copied from determinePolicy method in super class
-   protected VFSClassLoaderPolicy determinePolicy()
-   {
-      VirtualFile[] roots = determineVFSRoots();
-
-      // these are the only lines that are different from super class's determinePolicy()
-      VirtualFile[] excludedRoots = determineVFSExcludedRoots();
-      VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(
-            getContextName(), roots, excludedRoots);
-
-      String[] packageNames = getPackageNames();
-      policy.setExportedPackages(packageNames);
-      policy.setIncluded(getIncluded());
-      policy.setExcluded(getExcluded());
-      policy.setExcludedExport(getExcludedExport());
-      policy.setExportAll(getExportAll());
-      policy.setImportAll(isImportAll());
-      policy.setCacheable(isCacheable());
-      policy.setBlackListable(isBlackListable());
-      policy.setDelegates(getDelegates());
-      return policy;
-   }
-
-   protected VirtualFile[] determineVFSExcludedRoots()
-   {
-      if (this.excludedRoots == null || this.excludedRoots.isEmpty())
-      {
-         return new VirtualFile[0];
-      }
-      Map<Integer, String> truncatedRootPaths = truncateArchiveNestedPaths(this.excludedRoots);
-      VirtualFile[] roots = determineVFSRoots(this.excludedRoots);
-      restoreArchiveNestedPaths(truncatedRootPaths, roots);
-      return roots;
-   }
-   
-   // FIXME: code copied from determineVFSRoots method in superclass
-   protected VirtualFile[] determineVFSRoots(List<String> roots)
-   {
-      if (roots == null)
-      {
-         return new VirtualFile[0];
-      }
-      VirtualFile[] vfsRoots = new VirtualFile[roots.size()];
-      for (int i = 0; i < roots.size(); ++i)
-      {
-         String root = roots.get(i);
-         try
-         {
-            URI uri = new URI(root);
-            vfsRoots[i] = getVirtualFile(uri);
-         }
-         catch (RuntimeException e)
-         {
-            throw e;
-         }
-         catch (Exception e)
-         {
-            throw new RuntimeException("Error creating VFS file for " + root, e);
-         }
-      }
-      return vfsRoots;
-   }
-   
-   private synchronized void initDynamicClassRoot()
-   {
-      if (dynamicClassRoot == null)
-      {
-         try
-         {
-            dynamicClassRoot = new URL("vfsmemory", GUID.asString(), "");
-            classes = MemoryFileFactory.createRoot(dynamicClassRoot).getRoot();
-         }
-         catch (Exception e)
-         {
-            throw new RuntimeException(e);
-         }
-      }
-   }
-
-   /**
-    * This method truncated nested archives classpath.
-    * For example, the "/home/user_name/jboss-classpool/target/mywar.war/META-INF/classes"
-    * is replaced by "/home/user_name/jboss-classpool/target/mywar.war"
-    * The truncation is only performed on paths that involve subdirectories of archive files.
-    * 
-    * @param paths a list of paths. After this method is executed, this list will contain the
-    *              truncated paths
-    * @return a map that can be used to restore the truncated paths by invoking
-    *         {@code #restoreArchiveNestedPaths(Map, VirtualFile[])}
-    */
-   private Map<Integer, String> truncateArchiveNestedPaths(List<String> paths)
-   {
-      Map<Integer, String> truncatedRootPaths = new HashMap<Integer, String>();
-      for (ListIterator<String> listIterator = paths.listIterator(); listIterator.hasNext();)
-      {
-         int rootIndex = listIterator.nextIndex();
-         String root = listIterator.next();
-         int archiveIndex = root.indexOf('.');
-         int lastSlash = archiveIndex > 0? root.indexOf('/', archiveIndex): -1;
-         if (lastSlash > 0)
-         {
-            listIterator.set(root.substring(0, lastSlash));
-            root = root.substring(lastSlash + 1);
-            if (root != null)
-            {
-               truncatedRootPaths.put(rootIndex, root);
-            }
-         }
-      }
-      return truncatedRootPaths;
-   }
-   
-   /**
-    * Restores the truncated paths.
-    * 
-    * @param truncatedPaths the result of a previous truncation
-    *                       ({@see #truncateArchiveNestedPaths(List)}).
-    * @param paths a list of virtual files representing the truncated paths. Every virtual file
-    *              in this array that corresponds to a previously truncated path will be
-    *              replaced the virtual file that represent the original path.
-    */
-   private void restoreArchiveNestedPaths(
-         Map<Integer, String> truncatedPaths, VirtualFile[] paths)
-   {
-      for (Entry<Integer, String> truncatedPath: truncatedPaths.entrySet())
-      {
-         int pathIndex = truncatedPath.getKey();
-         VirtualFile file = paths[pathIndex];
-         String path = truncatedPath.getValue();
-         do
-         {
-            int archiveIndex = path.indexOf('.');
-            int lastSlash = archiveIndex > 0? path.indexOf('/', archiveIndex): -1;
-            try
-            {
-               if (lastSlash > 0)
-               {
-                  file = file.getChild(path.substring(0, lastSlash));
-                  path = path.substring(lastSlash + 1);
-               }
-               else
-               {
-                  file = file.getChild(path);
-                  path = null;
-               }
-            } catch (IOException e)
-            {
-               throw new RuntimeException("Can't find path " + path + " on root " + file, e);
-            }
-         } while(path != null);
-         paths[pathIndex] = file;
-      }
-   }
-}

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentFirstDelegatingClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentFirstDelegatingClassPoolTestCase.java	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentFirstDelegatingClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -11,7 +11,7 @@
 import junit.framework.TestSuite;
 
 import org.jboss.classpool.domain.ClassPoolDomain;
-import org.jboss.test.classpool.common.ClassFactory;
+import org.jboss.test.classpool.support.ClassFactory;
 
 
 /*

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentLastDelegatingClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentLastDelegatingClassPoolTestCase.java	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/test/ParentLastDelegatingClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -10,7 +10,7 @@
 import junit.framework.TestSuite;
 
 import org.jboss.classpool.domain.AbstractClassPoolDomain;
-import org.jboss.test.classpool.common.ClassFactory;
+import org.jboss.test.classpool.support.ClassFactory;
 
 
 /*

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/ucl/test/UclDelegatingClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/ucl/test/UclDelegatingClassPoolTestCase.java	2009-12-01 22:53:47 UTC (rev 97264)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/ucl/test/UclDelegatingClassPoolTestCase.java	2009-12-01 23:18:06 UTC (rev 97265)
@@ -39,7 +39,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.test.classpool.common.ClassFactory;
+import org.jboss.test.classpool.support.ClassFactory;
 
 /**
  * 




More information about the jboss-cvs-commits mailing list