[jboss-cvs] JBossAS SVN: r102284 - in projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers: vfs/reflect/support and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Mar 11 06:53:31 EST 2010
Author: alesj
Date: 2010-03-11 06:53:30 -0500 (Thu, 11 Mar 2010)
New Revision: 102284
Added:
projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ClassPoolTestDelegate.java
Removed:
projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/JavassistTestDelegate.java
projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java
Modified:
projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/BootstrapDeployersTestDelegate.java
projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java
projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java
Log:
Refactor Flavia's commit a bit.
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/BootstrapDeployersTestDelegate.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/BootstrapDeployersTestDelegate.java 2010-03-11 11:45:22 UTC (rev 102283)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/BootstrapDeployersTestDelegate.java 2010-03-11 11:53:30 UTC (rev 102284)
@@ -21,11 +21,11 @@
*/
package org.jboss.test.deployers;
-import java.net.URL;
-
import javax.management.MBeanServer;
import javax.management.ObjectName;
+import java.net.URL;
+
import org.jboss.classloader.plugins.ClassLoaderUtils;
import org.jboss.classloader.plugins.filter.PatternClassFilter;
import org.jboss.classloader.spi.ClassLoaderDomain;
@@ -46,6 +46,7 @@
* BootstrapDeployersTestDelegate.
*
* @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
* @version $Revision: 1.1 $
*/
public class BootstrapDeployersTestDelegate extends MicrocontainerTestDelegate
@@ -62,43 +63,27 @@
resolver.mapURIToClass("urn:jboss:classloader:1.0", VFSClassLoaderFactory10.class);
resolver.mapURIToClass("urn:jboss:classloading:1.0", ClassLoadingMetaData10.class);
- // TODO add a negating class filter to jboss-classloader
- ClassFilter classFilter = new ClassFilter()
- {
- /** The serialVersionUID */
- private static final long serialVersionUID = 1L;
-
- String packageName = BootstrapDeployersTest.class.getPackage().getName();
- String packagePath = ClassLoaderUtils.packageNameToPath(BootstrapDeployersTest.class.getName());
- ClassFilter patternFilter = new PatternClassFilter(
- new String[] { packageName + "\\..+" },
- new String[] { packagePath + "/.+" },
- new String[] { packageName, packageName + "\\..*"}
- );
- public boolean matchesClassName(String className)
- {
- return patternFilter.matchesClassName(className) == false;
- }
+ ClassFilter classFilter = createNegatingClassFilter();
+ parentPolicy = new ParentPolicy(classFilter, ClassFilterUtils.NOTHING, "BEFORE");
+ }
- public boolean matchesPackageName(String packageName)
- {
- return patternFilter.matchesPackageName(packageName) == false;
- }
+ protected static ClassFilter createNegatingClassFilter()
+ {
+ return createNegatingClassFilter(BootstrapDeployersTest.class);
+ }
- public boolean matchesResourcePath(String resourcePath)
- {
- return patternFilter.matchesResourcePath(resourcePath) == false;
- }
-
- public String toString()
- {
- return "EXCLUDE " + patternFilter;
- }
- };
-
- parentPolicy = new ParentPolicy(classFilter, ClassFilterUtils.NOTHING, "BEFORE");
+ protected static ClassFilter createNegatingClassFilter(Class<?> clazz)
+ {
+ String packageName = clazz.getPackage().getName();
+ String packagePath = ClassLoaderUtils.packageNameToPath(clazz.getName());
+ ClassFilter patternFilter = new PatternClassFilter(
+ new String[] { packageName + "\\..+" },
+ new String[] { packagePath + "/.+" },
+ new String[] { packageName, packageName + "\\..*"}
+ );
+ return ClassFilterUtils.negatingClassFilter(patternFilter);
}
-
+
public BootstrapDeployersTestDelegate(Class<?> clazz) throws Exception
{
super(clazz);
Copied: projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ClassPoolTestDelegate.java (from rev 102273, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/JavassistTestDelegate.java)
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ClassPoolTestDelegate.java (rev 0)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ClassPoolTestDelegate.java 2010-03-11 11:53:30 UTC (rev 102284)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, 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.deployers.vfs.reflect.support;
+
+import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classpool.base.IsLocalResourcePluginFactoryRegistry;
+import org.jboss.classpool.spi.AbstractClassPoolFactory;
+import org.jboss.test.deployers.BootstrapDeployersTestDelegate;
+import org.jboss.util.loading.Translatable;
+
+import javassist.ClassPool;
+
+/**
+ * ClassPoolTestDelegate, sets a FilteredClassPool as the default ClassPool
+ * of AbstractClassPoolFactory.
+ *
+ * @author <a href="flavia at jboss.com">Flavia Rainone</a>
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
+ * @version $Revision$
+ */
+public class ClassPoolTestDelegate extends BootstrapDeployersTestDelegate
+{
+ private static ClassPool defaultClassPool;
+
+ static
+ {
+ ClassFilter filter = createNegatingClassFilter();
+ defaultClassPool = new FilteredClassPool(AbstractClassPoolFactory.getSystemClassPool(), filter);
+ IsLocalResourcePluginFactoryRegistry.addPluginFactory(Translatable.class, new FilteredIsLocalResourcePluginFactory(filter));
+ }
+
+ public ClassPoolTestDelegate(Class<?> clazz) throws Exception
+ {
+ super(clazz);
+ }
+
+ protected void deploy() throws Exception
+ {
+ super.deploy();
+ AbstractClassPoolFactory.setSystemClassPool(defaultClassPool);
+ }
+}
\ No newline at end of file
Deleted: projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/JavassistTestDelegate.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/JavassistTestDelegate.java 2010-03-11 11:45:22 UTC (rev 102283)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/JavassistTestDelegate.java 2010-03-11 11:53:30 UTC (rev 102284)
@@ -1,103 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, 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.deployers.vfs.reflect.support;
-
-import javassist.ClassPool;
-
-import org.jboss.classloader.plugins.ClassLoaderUtils;
-import org.jboss.classloader.plugins.filter.PatternClassFilter;
-import org.jboss.classloader.spi.filter.ClassFilter;
-import org.jboss.classloading.spi.metadata.ClassLoadingMetaData10;
-import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory10;
-import org.jboss.classpool.base.IsLocalResourcePluginFactoryRegistry;
-import org.jboss.classpool.spi.AbstractClassPoolFactory;
-import org.jboss.test.deployers.BootstrapDeployersTest;
-import org.jboss.test.deployers.BootstrapDeployersTestDelegate;
-import org.jboss.util.loading.Translatable;
-import org.jboss.xb.binding.resolver.MutableSchemaResolver;
-import org.jboss.xb.binding.sunday.unmarshalling.SingletonSchemaResolverFactory;
-
-/**
- * JavassistTestDelegate, sets a FilteredClassPool as the default ClassPool
- * of AbstractClassPoolFactory.
- *
- * @author <a href="flavia at jboss.com">Flavia Rainone</a>
- * @version $Revision$
- */
-public class JavassistTestDelegate extends BootstrapDeployersTestDelegate
-{
- private static ClassPool defaultClassPool;
-
- static
- {
- MutableSchemaResolver resolver = SingletonSchemaResolverFactory.getInstance().getSchemaBindingResolver();
- resolver.mapURIToClass("urn:jboss:classloader:1.0", VFSClassLoaderFactory10.class);
- resolver.mapURIToClass("urn:jboss:classloading:1.0", ClassLoadingMetaData10.class);
-
- // TODO add a negating class filter to jboss-classloader
- ClassFilter classFilter = new ClassFilter()
- {
- /** The serialVersionUID */
- private static final long serialVersionUID = 1L;
-
- String packageName = BootstrapDeployersTest.class.getPackage().getName();
- String packagePath = ClassLoaderUtils.packageNameToPath(BootstrapDeployersTest.class.getName());
- ClassFilter patternFilter = new PatternClassFilter(
- new String[] { packageName + "\\..+" },
- new String[] { packagePath + "/.+" },
- new String[] { packageName, packageName + "\\..*"}
- );
- public boolean matchesClassName(String className)
- {
- return patternFilter.matchesClassName(className) == false;
- }
-
- public boolean matchesPackageName(String packageName)
- {
- return patternFilter.matchesPackageName(packageName) == false;
- }
-
- public boolean matchesResourcePath(String resourcePath)
- {
- return patternFilter.matchesResourcePath(resourcePath) == false;
- }
-
- public String toString()
- {
- return "EXCLUDE " + patternFilter;
- }
- };
- defaultClassPool = new FilteredClassPool(AbstractClassPoolFactory.getSystemClassPool(), classFilter);
- IsLocalResourcePluginFactoryRegistry.addPluginFactory(Translatable.class, new FilteredIsLocalResourcePluginFactory(classFilter));
- }
-
- public JavassistTestDelegate(Class<?> clazz) throws Exception
- {
- super(clazz);
- }
-
- protected void deploy() throws Exception
- {
- super.deploy();
- AbstractClassPoolFactory.setSystemClassPool(defaultClassPool);
- }
-}
\ No newline at end of file
Deleted: projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java 2010-03-11 11:45:22 UTC (rev 102283)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java 2010-03-11 11:53:30 UTC (rev 102284)
@@ -1,182 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, 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.deployers.vfs.reflect.test;
-
-import java.util.Map;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.CtMethod;
-
-import org.jboss.classpool.scoped.ScopedClassPoolRepository;
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
-import org.jboss.reflect.spi.TypeInfoFactory;
-import org.jboss.test.deployers.vfs.reflect.support.JavassistTestDelegate;
-import org.jboss.test.deployers.vfs.reflect.support.jar.PlainJavaBean;
-import org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet;
-import org.jboss.vfs.VirtualFile;
-
-/**
- * Abstract test for ClassPool.
- *
- * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- *
- * @version $Revision$
- */
-public abstract class ClassPoolTest extends ReflectTest
-{
- protected ScopedClassPoolRepository classPoolRepository = null;
-
- protected ClassPoolTest(String name)
- {
- super(name);
- }
-
- public static JavassistTestDelegate getDelegate(Class<?> clazz) throws Exception
- {
- return new JavassistTestDelegate(clazz);
- }
-
- @Override
- public void setUp() throws Exception
- {
- super.setUp();
- classPoolRepository = (ScopedClassPoolRepository) getBean("ClassPoolRepository");
- assertNotNull(classPoolRepository);
- }
-
- @Override
- protected void tearDown() throws Exception
- {
- classPoolRepository = null;
- super.tearDown();
- }
-
- protected TypeInfoFactory createTypeInfoFactory()
- {
- return new JavassistTypeInfoFactory();
- }
-
- protected void assertReflect(VirtualFile file, Map<Class<?>, String> classes) throws Exception
- {
- DeploymentUnit unit = assertDeploy(file);
- try
- {
- for (Map.Entry<Class<?>, String> entry : classes.entrySet())
- {
- DeploymentUnit du = getDeploymentUnit(unit, entry.getValue());
- ClassLoader classLoader = getClassLoader(du);
- Class<?> clazz = entry.getKey();
- String className = clazz.getName();
- // sanity check
- Class<?> loadedClass = assertLoadClass(className, classLoader);
- ClassPool classPool = classPoolRepository.registerClassLoader(classLoader);
- assertNotNull("ClassPool for " + classLoader + " is null", classPool);
- CtClass ctClass = classPool.getCtClass(className);
- assertNotNull("Class" + className + " retrieved from pool " + classPool + " is null", ctClass);
- assertEquals(className, clazz.getName());
- ClassLoader cl = ctClass.getClassPool().getClassLoader();
- assertEquals("Class has been loaded by the wrong class loader: " + clazz.getName(), loadedClass.getClassLoader(), cl);
- }
- }
- finally
- {
- undeploy(unit);
- }
- }
-
- protected void assertSimpleHierarchy(ClassLoader topCL, ClassLoader childCL) throws Exception
- {
- ClassPool classPool = classPoolRepository.registerClassLoader(childCL);
- CtClass ctClass = classPool.getCtClass(AnyServlet.class.getName());
- CtMethod ctMethod = ctClass.getDeclaredMethod("getBean");
- assertNotNull("No such 'getBean' method on " + ctClass, ctMethod);
-
- CtClass returnCtClass = ctMethod.getReturnType();
- classPool = classPoolRepository.registerClassLoader(topCL);
- CtClass returnCtClass2 = classPool.getCtClass(PlainJavaBean.class.getName());
- assertSame(returnCtClass, returnCtClass2);
- }
-
- protected void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass) throws Exception
- {
- ClassPool classPool = classPoolRepository.registerClassLoader(cl);
- CtClass asClass = classPool.getCtClass(anysClass.getName());
- CtClass pjbClass = classPool.getCtClass(PlainJavaBean.class.getName());
- CtClass rtClass = asClass.getDeclaredMethod("getBean").getReturnType();
- assertEquals(pjbClass, rtClass);
- }
-
- protected void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass, Class<?> tifClass) throws Exception
- {
- ClassPool classPool = classPoolRepository.registerClassLoader(cl);
- ClassPool tifClassPool = classPoolRepository.registerClassLoader(tifClass.getClassLoader());
- ClassPool anysClassPool = classPoolRepository.registerClassLoader(anysClass.getClassLoader());
-
- CtClass tifCtClass = tifClassPool.getCtClass(tifClass.getName());
- CtClass tifRT = tifCtClass.getDeclaredMethod("getAnys").getReturnType();
- CtClass asCtClass = anysClassPool.getCtClass(anysClass.getName());
- assertEquals(tifRT, asCtClass);
-
- CtClass pjbCtClass = classPool.getCtClass(PlainJavaBean.class.getName());
- CtClass rtL = asCtClass.getDeclaredMethod("getBean").getReturnType();
- assertEquals(pjbCtClass, rtL);
- }
-
- protected void assertIsolated(ClassLoader cl1, ClassLoader cl2, Class<?> clazz1, Class<?> clazz2) throws Exception
- {
- ClassPool classPool1 = classPoolRepository.registerClassLoader(cl1);
- ClassPool classPool2 = classPoolRepository.registerClassLoader(cl2);
-
- CtClass class1 = classPool1.getCtClass(PlainJavaBean.class.getName());
- CtClass class2 = classPool2.getCtClass(PlainJavaBean.class.getName());
- assertNotSame(class1, class2);
-
- ClassPool classPool3 = classPoolRepository.registerClassLoader(clazz1.getClassLoader());
- CtClass class3 = classPool3.getCtClass(clazz1.getName());
- assertEquals(class1, class3);
-
- ClassPool classPool4 = classPoolRepository.registerClassLoader(clazz2.getClassLoader());
- CtClass class4 = classPool4.getCtClass(clazz2.getName());
- assertEquals(class2, class4);
-
- assertNotSame(class3, class4);
- }
-
- protected void assertDomainHierarchy(ClassLoader topCL, ClassLoader leftCL, ClassLoader rightCL) throws Exception
- {
- ClassPool topClassPool = classPoolRepository.registerClassLoader(topCL);
- ClassPool leftClassPool = classPoolRepository.registerClassLoader(leftCL);
- ClassPool rightClassPool = classPoolRepository.registerClassLoader(rightCL);
- CtClass pjbClass = topClassPool.getCtClass(PlainJavaBean.class.getName());
- CtClass asClassL = leftClassPool.getCtClass(AnyServlet.class.getName());
- CtClass asClassR = rightClassPool.getCtClass(AnyServlet.class.getName());
-
- CtClass rtClassL = asClassL.getDeclaredMethod("getBean").getReturnType();
- assertEquals(pjbClass, rtClassL);
-
- CtClass rtClassR = asClassR.getDeclaredMethod("getBean").getReturnType();
- assertEquals(pjbClass, rtClassR);
- }
-}
\ No newline at end of file
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java 2010-03-11 11:45:22 UTC (rev 102283)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java 2010-03-11 11:53:30 UTC (rev 102284)
@@ -21,6 +21,20 @@
*/
package org.jboss.test.deployers.vfs.reflect.test;
+import java.util.Map;
+
+import org.jboss.classpool.scoped.ScopedClassPoolRepository;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+import org.jboss.test.deployers.vfs.reflect.support.ClassPoolTestDelegate;
+import org.jboss.test.deployers.vfs.reflect.support.jar.PlainJavaBean;
+import org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet;
+import org.jboss.vfs.VirtualFile;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.CtMethod;
import junit.framework.Test;
/**
@@ -31,8 +45,10 @@
*
* @version $Revision$
*/
-public class ClassPoolTestCase extends ClassPoolTest
+public class ClassPoolTestCase extends ReflectTest
{
+ protected ScopedClassPoolRepository classPoolRepository = null;
+
public ClassPoolTestCase(String name)
{
super(name);
@@ -42,4 +58,131 @@
{
return suite(ClassPoolTestCase.class);
}
+
+ public static ClassPoolTestDelegate getDelegate(Class<?> clazz) throws Exception
+ {
+ return new ClassPoolTestDelegate(clazz);
+ }
+
+ @Override
+ public void setUp() throws Exception
+ {
+ super.setUp();
+ classPoolRepository = (ScopedClassPoolRepository) getBean("ClassPoolRepository");
+ assertNotNull(classPoolRepository);
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ classPoolRepository = null;
+ super.tearDown();
+ }
+
+ protected TypeInfoFactory createTypeInfoFactory()
+ {
+ return new JavassistTypeInfoFactory();
+ }
+
+ protected void assertReflect(VirtualFile file, Map<Class<?>, String> classes) throws Exception
+ {
+ DeploymentUnit unit = assertDeploy(file);
+ try
+ {
+ for (Map.Entry<Class<?>, String> entry : classes.entrySet())
+ {
+ DeploymentUnit du = getDeploymentUnit(unit, entry.getValue());
+ ClassLoader classLoader = getClassLoader(du);
+ Class<?> clazz = entry.getKey();
+ String className = clazz.getName();
+ // sanity check
+ Class<?> loadedClass = assertLoadClass(className, classLoader);
+ ClassPool classPool = classPoolRepository.registerClassLoader(classLoader);
+ assertNotNull("ClassPool for " + classLoader + " is null", classPool);
+ CtClass ctClass = classPool.getCtClass(className);
+ assertNotNull("Class" + className + " retrieved from pool " + classPool + " is null", ctClass);
+ assertEquals(className, clazz.getName());
+ ClassLoader cl = ctClass.getClassPool().getClassLoader();
+ assertEquals("Class has been loaded by the wrong class loader: " + clazz.getName(), loadedClass.getClassLoader(), cl);
+ }
+ }
+ finally
+ {
+ undeploy(unit);
+ }
+ }
+
+ protected void assertSimpleHierarchy(ClassLoader topCL, ClassLoader childCL) throws Exception
+ {
+ ClassPool classPool = classPoolRepository.registerClassLoader(childCL);
+ CtClass ctClass = classPool.getCtClass(AnyServlet.class.getName());
+ CtMethod ctMethod = ctClass.getDeclaredMethod("getBean");
+ assertNotNull("No such 'getBean' method on " + ctClass, ctMethod);
+
+ CtClass returnCtClass = ctMethod.getReturnType();
+ classPool = classPoolRepository.registerClassLoader(topCL);
+ CtClass returnCtClass2 = classPool.getCtClass(PlainJavaBean.class.getName());
+ assertSame(returnCtClass, returnCtClass2);
+ }
+
+ protected void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass) throws Exception
+ {
+ ClassPool classPool = classPoolRepository.registerClassLoader(cl);
+ CtClass asClass = classPool.getCtClass(anysClass.getName());
+ CtClass pjbClass = classPool.getCtClass(PlainJavaBean.class.getName());
+ CtClass rtClass = asClass.getDeclaredMethod("getBean").getReturnType();
+ assertEquals(pjbClass, rtClass);
+ }
+
+ protected void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass, Class<?> tifClass) throws Exception
+ {
+ ClassPool classPool = classPoolRepository.registerClassLoader(cl);
+ ClassPool tifClassPool = classPoolRepository.registerClassLoader(tifClass.getClassLoader());
+ ClassPool anysClassPool = classPoolRepository.registerClassLoader(anysClass.getClassLoader());
+
+ CtClass tifCtClass = tifClassPool.getCtClass(tifClass.getName());
+ CtClass tifRT = tifCtClass.getDeclaredMethod("getAnys").getReturnType();
+ CtClass asCtClass = anysClassPool.getCtClass(anysClass.getName());
+ assertEquals(tifRT, asCtClass);
+
+ CtClass pjbCtClass = classPool.getCtClass(PlainJavaBean.class.getName());
+ CtClass rtL = asCtClass.getDeclaredMethod("getBean").getReturnType();
+ assertEquals(pjbCtClass, rtL);
+ }
+
+ protected void assertIsolated(ClassLoader cl1, ClassLoader cl2, Class<?> clazz1, Class<?> clazz2) throws Exception
+ {
+ ClassPool classPool1 = classPoolRepository.registerClassLoader(cl1);
+ ClassPool classPool2 = classPoolRepository.registerClassLoader(cl2);
+
+ CtClass class1 = classPool1.getCtClass(PlainJavaBean.class.getName());
+ CtClass class2 = classPool2.getCtClass(PlainJavaBean.class.getName());
+ assertNotSame(class1, class2);
+
+ ClassPool classPool3 = classPoolRepository.registerClassLoader(clazz1.getClassLoader());
+ CtClass class3 = classPool3.getCtClass(clazz1.getName());
+ assertEquals(class1, class3);
+
+ ClassPool classPool4 = classPoolRepository.registerClassLoader(clazz2.getClassLoader());
+ CtClass class4 = classPool4.getCtClass(clazz2.getName());
+ assertEquals(class2, class4);
+
+ assertNotSame(class3, class4);
+ }
+
+ protected void assertDomainHierarchy(ClassLoader topCL, ClassLoader leftCL, ClassLoader rightCL) throws Exception
+ {
+ ClassPool topClassPool = classPoolRepository.registerClassLoader(topCL);
+ ClassPool leftClassPool = classPoolRepository.registerClassLoader(leftCL);
+ ClassPool rightClassPool = classPoolRepository.registerClassLoader(rightCL);
+ CtClass pjbClass = topClassPool.getCtClass(PlainJavaBean.class.getName());
+ CtClass asClassL = leftClassPool.getCtClass(AnyServlet.class.getName());
+ CtClass asClassR = rightClassPool.getCtClass(AnyServlet.class.getName());
+
+ CtClass rtClassL = asClassL.getDeclaredMethod("getBean").getReturnType();
+ assertEquals(pjbClass, rtClassL);
+
+ CtClass rtClassR = asClassR.getDeclaredMethod("getBean").getReturnType();
+ assertEquals(pjbClass, rtClassR);
+ }
}
\ No newline at end of file
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java 2010-03-11 11:45:22 UTC (rev 102283)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java 2010-03-11 11:53:30 UTC (rev 102284)
@@ -21,12 +21,12 @@
*/
package org.jboss.test.deployers.vfs.reflect.test;
-import junit.framework.Test;
-
import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
import org.jboss.reflect.spi.TypeInfoFactory;
-import org.jboss.test.deployers.vfs.reflect.support.JavassistTestDelegate;
+import org.jboss.test.deployers.vfs.reflect.support.ClassPoolTestDelegate;
+import junit.framework.Test;
+
/**
* Javassist test case for TypeInfo.
*
@@ -41,9 +41,10 @@
super(name);
}
- public static JavassistTestDelegate getDelegate(Class<?> clazz) throws Exception
+ // we need custom classpool handling
+ public static ClassPoolTestDelegate getDelegate(Class<?> clazz) throws Exception
{
- return new JavassistTestDelegate(clazz);
+ return new ClassPoolTestDelegate(clazz);
}
public static Test suite()
More information about the jboss-cvs-commits
mailing list