[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