[jboss-cvs] JBossAS SVN: r97268 - in projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool: jbosscl/test and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Dec 1 19:16:40 EST 2009
Author: flavia.rainone at jboss.com
Date: 2009-12-01 19:16:39 -0500 (Tue, 01 Dec 2009)
New Revision: 97268
Added:
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/JBossCLFactory.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassLoaderFactory.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassLoaderInfo.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/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/ucl/support/UCLFactory.java
Removed:
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/SanityTestScenario.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/TestScenario.java
Modified:
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/DomainRegistry.java
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/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/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/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/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/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/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/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/UsesPackageClassPoolTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageSanityTestCase.java
Log:
[JBREFLECT-74] Created an infrastructure for removing duplicate class test cases from other test packages than jbosscl.
Modified: 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/CLDeploymentBuilder.java 2009-12-01 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/CLDeploymentBuilder.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -39,13 +39,14 @@
import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
import org.jboss.kernel.plugins.deployment.AbstractKernelDeployment;
import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.test.classpool.support.ClassLoaderInfo;
/**
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision$
*/
-public class CLDeploymentBuilder
+public class CLDeploymentBuilder implements ClassLoaderInfo
{
private static ClassLoadingMetaDataFactory clmdf = ClassLoadingMetaDataFactory.getInstance();
@@ -75,15 +76,6 @@
this.importAll = true;
}
- private CLDeploymentBuilder() {
-
- }
-
- public static CLDeploymentBuilder getBuilder()
- {
- return new CLDeploymentBuilder();
- }
-
public String getName()
{
return this.name;
@@ -122,7 +114,6 @@
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);
Deleted: 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/ClassPoolTestScenario.java 2009-12-01 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/ClassPoolTestScenario.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -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.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);
- }
-}
Modified: 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/DomainRegistry.java 2009-12-01 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/DomainRegistry.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -25,6 +25,7 @@
import java.util.Map;
import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.test.classpool.support.TestScenario;
/**
* All domains to be cleaned up should be registered here.
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/JBossCLFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/JBossCLFactory.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/JBossCLFactory.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -0,0 +1,222 @@
+/*
+ * 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.Collection;
+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.ClassLoaderFactory;
+import org.jboss.test.classpool.support.MicrocontainerFacade;
+import org.jboss.test.classpool.support.SupportClasses;
+
+/**
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+
+public class JBossCLFactory implements ClassLoaderFactory<CLDeploymentBuilder>
+{
+ /** 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 JBossCLFactory(MicrocontainerFacade mc)
+ {
+ this.microcontainer = mc;
+ this.system = (ClassLoaderSystem) mc.getBean("ClassLoaderSystem");
+ domainRegistry = (VFSClassLoaderDomainRegistry) mc.getBean("ClassLoaderScopingPolicy");
+ this.loaderRegistry = new LoaderRegistry(mc);
+ }
+
+ public ClassLoader create(CLDeploymentBuilder classLoaderBuilder) throws Exception
+ {
+ KernelDeployment deployment = classLoaderBuilder.createDeployment();
+ microcontainer.deploy(deployment);
+ VFSClassLoaderFactory factory = classLoaderBuilder.getMetaDataFactory();
+ factory.setContextName(getContextName(factory));
+ loaderRegistry.registerDeployment(classLoaderBuilder);
+ return getClassLoader(classLoaderBuilder);
+ }
+
+ public 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);
+ }
+ }
+
+ /**
+ * 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);
+ }
+ }
+
+ public void destroyLoader(CLDeploymentBuilder classLoaderBuilder)
+ throws Exception
+ {
+ loaderRegistry.unregisterDeployment(classLoaderBuilder);
+ microcontainer.undeploy(classLoaderBuilder.undeploy());
+ cannotGetLoader(classLoaderBuilder);
+ }
+
+ public Collection<ClassLoader> getCreatedClassLoaders()
+ {
+ return loaderRegistry.getClassLoaders();
+ }
+
+ public void destroyLoaders()
+ {
+ destroyClassLoaders();
+ unregisterDomains();
+ assertCannotLoadSupportClasses();
+ }
+
+ /************* HELPER METHODS **********************************************************/
+
+ private void assertCannotLoadSupportClasses()
+ {
+ 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 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;
+ }
+}
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/JBossCLFactory.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/SanityTestScenario.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/SanityTestScenario.java 2009-12-01 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/SanityTestScenario.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -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.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
Deleted: 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/TestScenario.java 2009-12-01 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/support/TestScenario.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -1,338 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.classpool.jbosscl.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
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -26,8 +26,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
* Executes the archive tests against a class pool test scenario.
@@ -48,8 +49,8 @@
}
@Override
- protected TestScenario<CtClass, ClassPool> getTestScenario()
+ protected TestScenario<CtClass, ClassPool, CLDeploymentBuilder> getTestScenario()
{
- return new ClassPoolTestScenario(getMicrocontainerFacade());
+ return new ClassPoolTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveSanityTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -24,8 +24,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
* Executes the archive tests against a sanity test scenario (for class loader behavior sanity
@@ -47,8 +48,8 @@
}
@Override
- protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ protected TestScenario<Class<?>, ClassLoader, CLDeploymentBuilder> getTestScenario()
{
- return new SanityTestScenario(getMicrocontainerFacade());
+ return new SanityTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainClassPoolTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -26,8 +26,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
@@ -37,7 +38,7 @@
* @version $Revision$
*/
public class HierarchicalDomainClassPoolTestCase extends
- HierarchicalDomainTest<CtClass, ClassPool>
+ HierarchicalDomainTest<CtClass, ClassPool>
{
public static Test suite()
{
@@ -50,8 +51,8 @@
}
@Override
- protected TestScenario<CtClass, ClassPool> getTestScenario()
+ protected TestScenario<CtClass, ClassPool, CLDeploymentBuilder> getTestScenario()
{
- return new ClassPoolTestScenario(getMicrocontainerFacade());
+ return new ClassPoolTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainSanityTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -24,8 +24,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
@@ -49,8 +50,8 @@
}
@Override
- protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ protected TestScenario<Class<?>, ClassLoader, CLDeploymentBuilder> getTestScenario()
{
- return new SanityTestScenario(getMicrocontainerFacade());
+ return new SanityTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderClassPoolTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -26,8 +26,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
@@ -48,12 +49,10 @@
{
super(name);
}
- /* (non-Javadoc)
- * @see org.jboss.test.classpool.jbosscl.test.HierarchicalParentLoaderTest#getTestScenario()
- */
+
@Override
- protected TestScenario<CtClass, ClassPool> getTestScenario()
+ protected TestScenario<CtClass, ClassPool, CLDeploymentBuilder> getTestScenario()
{
- return new ClassPoolTestScenario(getMicrocontainerFacade());
+ return new ClassPoolTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderSanityTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -24,8 +24,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
@@ -50,8 +51,8 @@
}
@Override
- protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ protected TestScenario<Class<?>, ClassLoader, CLDeploymentBuilder> getTestScenario()
{
- return new SanityTestScenario(getMicrocontainerFacade());
+ return new SanityTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -28,9 +28,12 @@
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.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.jbosscl.support.JBossCLFactory;
+import org.jboss.test.classpool.support.ClassLoaderFactory;
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;
@@ -76,9 +79,9 @@
/****** OVERRIDDEN METHODS ***************************************************************/
- protected TestScenario<C, L> testScenario;
+ protected TestScenario<C, L, CLDeploymentBuilder> testScenario;
- protected abstract TestScenario<C, L> getTestScenario();
+ protected abstract TestScenario<C, L, CLDeploymentBuilder> getTestScenario();
@Override
protected void setUp() throws Exception
@@ -133,8 +136,13 @@
/****** AUXILIARY INTERNAL CLASS *****************************************************/
- protected MicrocontainerFacade getMicrocontainerFacade()
+ protected ClassLoaderFactory<CLDeploymentBuilder> getClassLoaderFactory()
{
+ return new JBossCLFactory(getMicrocontainerFacade());
+ }
+
+ private MicrocontainerFacade getMicrocontainerFacade()
+ {
return new MicrocontainerFacadeImpl();
}
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyClassPoolTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -26,8 +26,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
@@ -49,8 +50,8 @@
}
@Override
- protected TestScenario<CtClass, ClassPool> getTestScenario()
+ protected TestScenario<CtClass, ClassPool, CLDeploymentBuilder> getTestScenario()
{
- return new ClassPoolTestScenario(getMicrocontainerFacade());
+ return new ClassPoolTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencySanityTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -24,8 +24,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
* Executes the module dependency tests against a sanity test scenario (for class loader
@@ -47,8 +48,8 @@
}
@Override
- protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ protected TestScenario<Class<?>, ClassLoader, CLDeploymentBuilder> getTestScenario()
{
- return new SanityTestScenario(getMicrocontainerFacade());
+ return new SanityTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyClassPoolTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -26,8 +26,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
* Executes the package dependency tests against a class pool test scenario.
@@ -35,8 +36,7 @@
* @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
* @version $Revision$
*/
-public class PackageDependencyClassPoolTestCase extends
- PackageDependencyTest<CtClass, ClassPool>
+public class PackageDependencyClassPoolTestCase extends PackageDependencyTest<CtClass, ClassPool>
{
public static Test suite()
{
@@ -49,8 +49,8 @@
}
@Override
- protected TestScenario<CtClass, ClassPool> getTestScenario()
+ protected TestScenario<CtClass, ClassPool, CLDeploymentBuilder> getTestScenario()
{
- return new ClassPoolTestScenario(getMicrocontainerFacade());
+ return new ClassPoolTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencySanityTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -24,8 +24,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
* Executes the package dependency tests against a sanity test scenario (for class loader
@@ -34,8 +35,7 @@
* @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
* @version $Revision$
*/
-public class PackageDependencySanityTestCase extends
- PackageDependencyTest<Class<?>, ClassLoader>
+public class PackageDependencySanityTestCase extends PackageDependencyTest<Class<?>, ClassLoader>
{
public static Test suite()
{
@@ -49,8 +49,8 @@
@Override
- protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ protected TestScenario<Class<?>, ClassLoader, CLDeploymentBuilder> getTestScenario()
{
- return new SanityTestScenario(getMicrocontainerFacade());
+ return new SanityTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleClassPoolTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -26,8 +26,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
@@ -50,8 +51,8 @@
}
@Override
- protected TestScenario<CtClass, ClassPool> getTestScenario()
+ protected TestScenario<CtClass, ClassPool, CLDeploymentBuilder> getTestScenario()
{
- return new ClassPoolTestScenario(getMicrocontainerFacade());
+ return new ClassPoolTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleSanityTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -24,8 +24,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
@@ -35,8 +36,7 @@
* @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
* @version $Revision$
*/
-public class ReExportModuleSanityTestCase extends
- ReExportModuleTest<Class<?>, ClassLoader>
+public class ReExportModuleSanityTestCase extends ReExportModuleTest<Class<?>, ClassLoader>
{
public static Test suite()
{
@@ -49,8 +49,8 @@
}
@Override
- protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ protected TestScenario<Class<?>, ClassLoader, CLDeploymentBuilder> getTestScenario()
{
- return new SanityTestScenario(getMicrocontainerFacade());
+ return new SanityTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageClassPoolTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -26,8 +26,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
* Executes the ReExportPackage tests against a class pool test scenario.
@@ -49,8 +50,8 @@
}
@Override
- protected TestScenario<CtClass, ClassPool> getTestScenario()
+ protected TestScenario<CtClass, ClassPool, CLDeploymentBuilder> getTestScenario()
{
- return new ClassPoolTestScenario(getMicrocontainerFacade());
+ return new ClassPoolTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageSanityTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -24,8 +24,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
@@ -35,8 +36,7 @@
* @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
* @version $Revision$
*/
-public class ReExportPackageSanityTestCase extends
- ReExportPackageTest<Class<?>, ClassLoader>
+public class ReExportPackageSanityTestCase extends ReExportPackageTest<Class<?>, ClassLoader>
{
public static Test suite()
{
@@ -49,8 +49,8 @@
}
@Override
- protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ protected TestScenario<Class<?>, ClassLoader, CLDeploymentBuilder> getTestScenario()
{
- return new SanityTestScenario(getMicrocontainerFacade());
+ return new SanityTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReplaceReferencesClassPoolTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -45,9 +45,9 @@
import org.jboss.classloading.spi.DomainClassLoader;
import org.jboss.classpool.spi.ClassPoolRepository;
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.ClassPoolTestScenario;
import org.jboss.test.classpool.support.SupportClasses;
+import org.jboss.test.classpool.support.TestScenario;
import org.jboss.util.loading.Translator;
/**
@@ -76,9 +76,9 @@
}
@Override
- protected TestScenario<CtClass, ClassPool> getTestScenario()
+ protected TestScenario<CtClass, ClassPool, CLDeploymentBuilder> getTestScenario()
{
- return new ClassPoolTestScenario(getMicrocontainerFacade());
+ return new ClassPoolTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
@Override
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryClassPoolTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -36,9 +36,9 @@
import junit.framework.TestSuite;
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;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
* Executes the repository tests against a class pool test scenario.
@@ -60,9 +60,9 @@
}
@Override
- protected TestScenario<CtClass, ClassPool> getTestScenario()
+ protected TestScenario<CtClass, ClassPool, CLDeploymentBuilder> getTestScenario()
{
- return new ClassPoolTestScenario(getMicrocontainerFacade());
+ return new ClassPoolTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
public void testCanLoadArrayCtClass() throws Exception
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositorySanityTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -24,8 +24,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
* Executes the repository tests against a sanity test scenario (for class loader behavior
@@ -47,8 +48,8 @@
}
@Override
- protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ protected TestScenario<Class<?>, ClassLoader, CLDeploymentBuilder> getTestScenario()
{
- return new SanityTestScenario(getMicrocontainerFacade());
+ return new SanityTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageClassPoolTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -26,8 +26,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.ClassPoolTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
@@ -49,8 +50,8 @@
}
@Override
- protected TestScenario<CtClass, ClassPool> getTestScenario()
+ protected TestScenario<CtClass, ClassPool, CLDeploymentBuilder> getTestScenario()
{
- return new ClassPoolTestScenario(getMicrocontainerFacade());
+ return new ClassPoolTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
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 23:44:03 UTC (rev 97267)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageSanityTestCase.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -24,8 +24,9 @@
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.jboss.test.classpool.jbosscl.support.SanityTestScenario;
-import org.jboss.test.classpool.jbosscl.support.TestScenario;
+import org.jboss.test.classpool.jbosscl.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
/**
@@ -48,8 +49,8 @@
}
@Override
- protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ protected TestScenario<Class<?>, ClassLoader, CLDeploymentBuilder> getTestScenario()
{
- return new SanityTestScenario(getMicrocontainerFacade());
+ return new SanityTestScenario<CLDeploymentBuilder>(getClassLoaderFactory());
}
}
\ No newline at end of file
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassLoaderFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassLoaderFactory.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassLoaderFactory.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -0,0 +1,49 @@
+/*
+ * 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.Collection;
+
+
+/**
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+
+public interface ClassLoaderFactory<I extends ClassLoaderInfo>
+{
+ public ClassLoader create(I classLoaderInfo) throws Exception;
+ public ClassLoader getClassLoader(I classLoaderInfo) throws Exception;
+ public void destroyLoader(I classLoaderInfo) throws Exception;
+ public void destroyLoaders();
+ public Collection<ClassLoader> getCreatedClassLoaders();
+
+ /**
+ * 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(I classLoaderInfo) throws Exception;
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassLoaderFactory.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassLoaderInfo.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassLoaderInfo.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassLoaderInfo.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -0,0 +1,33 @@
+/*
+ * 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;
+
+/**
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+
+public interface ClassLoaderInfo
+{
+
+}
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassLoaderInfo.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassPoolTestScenario.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassPoolTestScenario.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassPoolTestScenario.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -0,0 +1,197 @@
+/*
+ * 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;
+
+/**
+ * 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<I extends ClassLoaderInfo> extends TestScenario<CtClass, ClassPool, I>
+{
+ /** The ClassPool repository */
+ protected ClassPoolRepository repository;
+
+
+ public ClassPoolTestScenario(ClassLoaderFactory<I> classLoaderFactory)
+ {
+ super(classLoaderFactory);
+ repository = ClassPoolRepository.getInstance();
+ }
+
+ @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 preDestroy(Collection<ClassLoader> classLoaders)
+ {
+ for (ClassLoader classLoader: classLoaders)
+ {
+ repository.unregisterClassLoader(classLoader);
+ }
+ }
+}
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassPoolTestScenario.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SanityTestScenario.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SanityTestScenario.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SanityTestScenario.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -0,0 +1,82 @@
+/*
+ * 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;
+
+/**
+ * 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<I extends ClassLoaderInfo> extends TestScenario<Class<?>, ClassLoader, I>
+{
+
+ public SanityTestScenario(ClassLoaderFactory<I> classLoaderFactory)
+ {
+ super(classLoaderFactory);
+ }
+
+ @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
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SanityTestScenario.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -0,0 +1,204 @@
+/*
+ * 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.Collection;
+
+import org.jboss.test.classpool.jbosscl.support.NoSuchClassLoaderException;
+
+import junit.framework.Assert;
+
+
+/**
+ * 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,I extends ClassLoaderInfo>
+{
+ /** The classloader factory */
+ private ClassLoaderFactory<I> classLoaderFactory;
+
+ /**
+ * Constructor.
+ *
+ * @param mc used by this test to perform deploy/undeploy operations
+ */
+ public TestScenario(ClassLoaderFactory<I> classLoaderFactory)
+ {
+ this.classLoaderFactory = classLoaderFactory;
+ }
+
+ /**
+ * Creates a loader.
+ *
+ * @param classLoaderBuilder contains all the info necessary for the creation of a loader
+ * @return the created loader
+ * @throws NoSuchClassLoaderException indicates that the deployment is not successful. The
+ * class loader is not created at this moment
+ * @throws Exception any erros that should not be treated
+ */
+ public L createLoader(I classLoaderInfo) throws NoSuchClassLoaderException, Exception
+ {
+ ClassLoader classLoader = classLoaderFactory.create(classLoaderInfo);
+ return getLoader(classLoader);
+ }
+
+ /**
+ * Destroys the loader corresponding to classLoaderBuilder.
+ * This method can be invoked only after the loader has been
+ * {@link #createLoader(I) created}.
+ *
+ * @param classLoaderInfo contains information regarding the loader to be destroyed.
+ * @throws Exception
+ * @see #createLoader(I)
+ */
+ public void destroyLoader(I classLoaderInfo) throws Exception
+ {
+ classLoaderFactory.destroyLoader(classLoaderInfo);
+ }
+
+ /**
+ * Destroy all loaders that have been created so far (except for loaders that have already
+ * been {@link #destroyLoader(I) destroyed}).
+ */
+ public void destroyLoaders()
+ {
+ preDestroy(classLoaderFactory.getCreatedClassLoaders());
+ classLoaderFactory.destroyLoaders();
+ }
+
+ /**
+ * Returns the loader corresponding to {@code classLoaderBuilder}. This method can be
+ * invoked only after {@code #createLoader(I)}.
+ *
+ * @param classLoaderInfo contains all the info related to the loader to be retrieved
+ * @return the loader equivalent to {@code classLoaderBuilder}
+ * @throws Exception
+ * @see {@link #createLoader(I)}
+ */
+ public L getLoader(I classLoaderInfo) throws Exception
+ {
+ ClassLoader classLoader = classLoaderFactory.getClassLoader(classLoaderInfo);
+ return getLoader(classLoader);
+ }
+
+ /**
+ * Checks that this the loader corresponding to {@code classLoaderBuilder} is no longer
+ * available on the test scenario.
+ *
+ * @param classLoaderInfo identifies the loader that is going to be verified
+ * @throws Exception
+ */
+ public void cannotGetLoader(I classLoaderInfo) throws Exception
+ {
+ classLoaderFactory.cannotGetLoader(classLoaderInfo);
+ }
+
+ /**
+ * 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;
+
+ 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 preDestroy(Collection<ClassLoader> classLoaders)
+ {
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/ucl/support/UCLFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/ucl/support/UCLFactory.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/ucl/support/UCLFactory.java 2009-12-02 00:16:39 UTC (rev 97268)
@@ -0,0 +1,92 @@
+/*
+ * 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.ucl.support;
+
+import java.util.Collection;
+
+import org.jboss.test.classpool.support.ClassLoaderFactory;
+import org.jboss.test.classpool.support.ClassLoaderInfo;
+
+/**
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+
+public class UCLFactory<I extends ClassLoaderInfo> implements ClassLoaderFactory<I>
+{
+
+ /* (non-Javadoc)
+ * @see org.jboss.test.classpool.support.ClassLoaderFactory#cannotGetLoader(org.jboss.test.classpool.support.ClassLoaderInfo)
+ */
+ public void cannotGetLoader(I classLoaderInfo) throws Exception
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.test.classpool.support.ClassLoaderFactory#create(org.jboss.test.classpool.support.ClassLoaderInfo)
+ */
+ public ClassLoader create(I classLoaderInfo) throws Exception
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.test.classpool.support.ClassLoaderFactory#destroyLoader(org.jboss.test.classpool.support.ClassLoaderInfo)
+ */
+ public void destroyLoader(I classLoaderInfo) throws Exception
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.test.classpool.support.ClassLoaderFactory#destroyLoaders()
+ */
+ public void destroyLoaders()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.test.classpool.support.ClassLoaderFactory#getClassLoader(org.jboss.test.classpool.support.ClassLoaderInfo)
+ */
+ public ClassLoader getClassLoader(I classLoaderInfo) throws Exception
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.test.classpool.support.ClassLoaderFactory#getCreatedClassLoaders()
+ */
+ public Collection<ClassLoader> getCreatedClassLoaders()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/ucl/support/UCLFactory.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
More information about the jboss-cvs-commits
mailing list