[jboss-cvs] JBossAS SVN: r103346 - in projects/kernel/trunk: kernel/src/test/java/org/jboss/test/kernel/dependency/support and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Mar 31 11:36:39 EDT 2010


Author: kabir.khan at jboss.com
Date: 2010-03-31 11:36:38 -0400 (Wed, 31 Mar 2010)
New Revision: 103346

Modified:
   projects/kernel/trunk/aop-mc-int/src/test/java/org/jboss/test/microcontainer/test/OverriddenClassLoaderTestCase.java
   projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/support/ClassPoolFactoryImpl.java
Log:
[JBKERNEL-114] Rework test to set up a jboss reflect class pool factory understanding the classloaders for the javassist type infos.

Modified: projects/kernel/trunk/aop-mc-int/src/test/java/org/jboss/test/microcontainer/test/OverriddenClassLoaderTestCase.java
===================================================================
--- projects/kernel/trunk/aop-mc-int/src/test/java/org/jboss/test/microcontainer/test/OverriddenClassLoaderTestCase.java	2010-03-31 15:18:26 UTC (rev 103345)
+++ projects/kernel/trunk/aop-mc-int/src/test/java/org/jboss/test/microcontainer/test/OverriddenClassLoaderTestCase.java	2010-03-31 15:36:38 UTC (rev 103346)
@@ -28,17 +28,24 @@
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.jar.JarEntry;
 import java.util.jar.JarOutputStream;
 import java.util.jar.Manifest;
 
+import javassist.ClassPool;
+
 import junit.framework.Test;
 
 import org.jboss.aop.advice.AspectDefinition;
 import org.jboss.aop.advice.AspectFactory;
 import org.jboss.aop.advice.AspectFactoryWithClassLoader;
 import org.jboss.aop.microcontainer.beans.Aspect;
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactoryImpl;
+import org.jboss.reflect.plugins.javassist.classpool.ClassPoolFactory;
 import org.jboss.test.aop.junit.AOPMicrocontainerTest;
+import org.jboss.test.kernel.dependency.support.ClassPoolFactoryImpl;
 import org.jboss.test.microcontainer.support.ParentLastURLClassLoader;
 import org.jboss.test.microcontainer.support.TestAspect;
 
@@ -93,7 +100,11 @@
       File jarFile = createJar();
       
       URL jarUrl = jarFile.toURL();
-      return new ParentLastURLClassLoader(new URL[] {jarUrl}, getClass().getClassLoader());
+      ClassLoader loader = new ParentLastURLClassLoader(new URL[] {jarUrl}, getClass().getClassLoader());
+      
+      ClassPoolFactoryInstaller.INSTANCE.registerLoader(loader);
+      
+      return loader;
    }
    
    private File createJar() throws Exception
@@ -167,4 +178,45 @@
          }
       }
    }
+
+   @Override
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+      ClassPoolFactoryInstaller.INSTANCE.setUp();
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      super.tearDown();
+      ClassPoolFactoryInstaller.INSTANCE.tearDown();
+   }
+   
+   private static class ClassPoolFactoryInstaller
+   {
+      final static ClassPoolFactoryInstaller INSTANCE = new ClassPoolFactoryInstaller();
+      
+      ClassPoolFactoryImpl classPoolFactory = new ClassPoolFactoryImpl();
+      
+      ClassPoolFactory factory;
+      
+      void registerLoader(ClassLoader loader)
+      {
+         classPoolFactory.addClassLoader(loader);
+      }
+      
+      void setUp()
+      {
+         factory = JavassistTypeInfoFactoryImpl.getPoolFactory();
+         JavassistTypeInfoFactoryImpl.setPoolFactory(classPoolFactory);
+      }
+      
+      void tearDown()
+      {
+         if (factory != null)
+            JavassistTypeInfoFactoryImpl.setPoolFactory(factory);
+         classPoolFactory.clearAllLoaders();
+      }
+   }
 }

Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/support/ClassPoolFactoryImpl.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/support/ClassPoolFactoryImpl.java	2010-03-31 15:18:26 UTC (rev 103345)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/dependency/support/ClassPoolFactoryImpl.java	2010-03-31 15:36:38 UTC (rev 103346)
@@ -59,6 +59,11 @@
       pools.remove(loader);
    }
    
+   public void clearAllLoaders()
+   {
+      pools.clear();
+   }
+   
    public ClassPool getPoolForLoader(ClassLoader classLoader)
    {
       ClassPool pool = pools.get(classLoader);




More information about the jboss-cvs-commits mailing list