[jboss-cvs] JBossAS SVN: r97064 - projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 27 01:29:02 EST 2009


Author: flavia.rainone at jboss.com
Date: 2009-11-27 01:29:02 -0500 (Fri, 27 Nov 2009)
New Revision: 97064

Added:
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassLoaderSanityTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveTest.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolTestScenario.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/SanityTestScenario.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/TestScenario.java
Modified:
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java
Log:
[JREFLECT-73] ArchiveClassPoolTestCase has been refactored in a way that the same tests can be run against both class loaders and classpools.

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassLoaderSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassLoaderSanityTestCase.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassLoaderSanityTestCase.java	2009-11-27 06:29:02 UTC (rev 97064)
@@ -0,0 +1,51 @@
+/*
+ * 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.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+
+public class ArchiveClassLoaderSanityTestCase extends
+      ArchiveTest<Class<?>, ClassLoader>
+{
+   public static Test suite()
+   {
+      return new TestSuite(ArchiveClassLoaderSanityTestCase.class);
+   }
+
+   public ArchiveClassLoaderSanityTestCase(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+   {
+      return new SanityTestScenario(this);
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassLoaderSanityTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

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-11-27 05:18:29 UTC (rev 97063)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java	2009-11-27 06:29:02 UTC (rev 97064)
@@ -21,79 +21,19 @@
  */
 package org.jboss.test.classpool.jbosscl.test;
 
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_CRM;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_EXT;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_JSF;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_MBEAN;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_PLAIN;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_SERVLET;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_SLS_BEAN;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_SLS_INTERFACE;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_TIF;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_UI;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_UTIL;
-
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-
 import javassist.ClassPool;
 import javassist.CtClass;
-import javassist.CtMethod;
-import javassist.NotFoundException;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
-import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
-import org.jboss.classloader.plugins.ClassLoaderUtils;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-import org.jboss.test.classpool.support.SupportClasses;
-
-
-
 /**
  * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
  *
  * @version $Revision$
  */
 
-public class ArchiveClassPoolTestCase extends JBossClClassPoolTest
+public class ArchiveClassPoolTestCase extends ArchiveTest<CtClass, ClassPool>
 {
-   // TODO refactorate this, extracting this from this class
-   // TODO move the jars to a directory of their own (such as target/test-archives)
-   public final static URL SIMPLE_JAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_JAR);
-   public final static URL SIMPLE_SAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_SAR);
-   public final static URL EJB_JAR = getURLRelativeToProjectRoot(SupportClasses.EJB_JAR);
-   public final static URL SIMPLE_WAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_WAR);
-   public final static URL SIMPLE_EAR_JAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_JAR);
-   public final static URL SIMPLE_EAR_SAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_SAR);
-   public final static URL SIMPLE_EAR_EJB = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_EJB);
-   public final static URL SIMPLE_EAR_LIB1 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_LIB1);
-   public final static URL SIMPLE_EAR_LIB2 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_LIB2);
-   public final static URL SIMPLE_EAR_WAR1 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR1);
-   public final static URL SIMPLE_EAR_WAR1_CP = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR1_CP);
-   public final static URL SIMPLE_EAR_WAR1_LIB = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR1_LIB);
-   public final static URL SIMPLE_EAR_WAR2 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR2);
-   public final static URL SIMPLE_EAR_WAR2_CP = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR2_CP);
-   public final static URL SIMPLE_EAR_WAR2_LIB = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR2_LIB);
-   public final static URL EAR_UTIL1 = getURLRelativeToProjectRoot(SupportClasses.EAR_UTIL1);
-   public final static URL EAR_UTIL2 = getURLRelativeToProjectRoot(SupportClasses.EAR_UTIL2);
-   public final static URL EAR_WAR = getURLRelativeToProjectRoot(SupportClasses.EAR_WAR);
-   public final static URL EAR_WAR_CP = getURLRelativeToProjectRoot(SupportClasses.EAR_WAR_CP);
-   public final static URL EAR_JAR = getURLRelativeToProjectRoot(SupportClasses.EAR_JAR);
-   public final static URL SERVLET_JAR = getURLRelativeToProjectRoot(SupportClasses.SERVLET_JAR);
-   public final static URL PTD_EAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_EAR_LIB);
-   public final static URL PTD_JSF_WAR = getURLRelativeToProjectRoot(SupportClasses.PTD_JSF_WAR);
-   public final static URL PTD_JSF_WAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_JSF_WAR_LIB);
-   public final static URL PTD_WS_WAR = getURLRelativeToProjectRoot(SupportClasses.PTD_WS_WAR);
-   public final static URL PTD_WS_WAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_WS_WAR_LIB);
-   public final static URL EXCLUDED_CLASSPATH = getURLRelativeToProjectRoot(SupportClasses.EXCLUDED_CLASSPATH);
-   
-   final static String STRING = String.class.getName();
-   
    public static Test suite()
    {
       return new TestSuite(ArchiveClassPoolTestCase.class);
@@ -104,615 +44,9 @@
       super(name);
    }
    
-   // TODO do an assertNotFound for all classes not included in the package being tested
-   
-   public void testJar() throws Exception
+   @Override
+   protected TestScenario<CtClass, ClassPool> getTestScenario()
    {
-      ClassPool classPool = null;
-      Result result = new Result();
-      try
-      {
-         classPool = createClassPool(result, "simple.jar", true, SIMPLE_JAR);
-         assertClassPool(classPool, CLASS_PLAIN);
-      }
-      finally
-      {
-         if (classPool != null)
-         {
-            unregisterClassPool(classPool);
-            assertNoClassPool(result);
-         }
-      }
+      return new ClassPoolTestScenario(this);
    }
-   
-   public void testSar() throws Exception
-   {
-      ClassPool classPool = null;
-      Result result = new Result();
-      try
-      {
-         classPool = createClassPool(result, "simple.sar", true, SIMPLE_SAR);
-         assertClassPool(classPool, CLASS_MBEAN);
-      }
-      finally
-      {
-         if (classPool != null)
-         {
-            unregisterClassPool(classPool);
-            assertNoClassPool(result);
-         }
-      }
-   }
-   
-   public void testEjbJar() throws Exception
-   {
-      ClassPool classPool = null;
-      Result result = new Result();
-      try
-      {
-         classPool = createClassPool(result, "ejbs.jar", true, EJB_JAR);
-         assertClassPool(classPool, CLASS_SLS_BEAN, CLASS_SLS_INTERFACE);
-      }
-      finally
-      {
-         if (classPool != null)
-         {
-            unregisterClassPool(classPool);
-            assertNoClassPool(result);
-         }
-      }
-   }
-   
-   public void testWar() throws Exception
-   {
-      ClassPool classPool = null;
-      Result result = new Result();
-      try
-      {
-         classPool = createChildDomainParentLastClassPool(result, "simple.war", "simple.war", true,
-               SIMPLE_WAR);
-         assertClassPool(classPool, CLASS_SERVLET);
-      }
-      finally
-      {
-         if (classPool != null)
-         {
-            unregisterClassPool(classPool);
-            assertNoClassPool(result);
-         }
-      }
-   }
-   
-   public void testEar() throws Exception
-   {
-      ClassPool earClassPool = null;
-      ClassPool war1ClassPool = null;
-      ClassPool war2ClassPool = null;
-      Result earResult = new Result();
-      Result war1Result = new Result();
-      Result war2Result = new Result();
-      try
-      {
-         URL[] excludes = {SIMPLE_EAR_WAR1, SIMPLE_EAR_WAR1_CP, SIMPLE_EAR_WAR1_LIB,
-               SIMPLE_EAR_WAR2, SIMPLE_EAR_WAR2_CP, SIMPLE_EAR_WAR2_LIB};
-         earClassPool = createClassPool(earResult, "simple.ear", true, excludes, SIMPLE_EAR_JAR,
-               SIMPLE_EAR_SAR, SIMPLE_EAR_EJB, SIMPLE_EAR_LIB1, SIMPLE_EAR_LIB2);
-         war1ClassPool = createChildDomainParentLastClassPool(war1Result, "simple.ear/simple_ui.war",
-               "simple_ui.war", true, earClassPool, SIMPLE_EAR_WAR1_CP, SIMPLE_EAR_WAR1_LIB);
-         war2ClassPool = createChildDomainParentLastClassPool(war2Result, "simple.ear/jsfapp.war",
-               "simple_ui.war", true, earClassPool, SIMPLE_EAR_WAR2_CP, SIMPLE_EAR_WAR2_LIB);
-         
-         Map<String, ClassPool> classes = new HashMap<String, ClassPool>();
-         classes.put(CLASS_UTIL, earClassPool);
-         classes.put(CLASS_EXT, earClassPool);
-         classes.put(CLASS_PLAIN, earClassPool);
-         classes.put(CLASS_SLS_BEAN, earClassPool);
-         classes.put(CLASS_SLS_INTERFACE, earClassPool);
-         classes.put(CLASS_SERVLET, war1ClassPool);
-         classes.put(CLASS_UI, war1ClassPool);
-         classes.put(CLASS_JSF, war2ClassPool);
-         classes.put(CLASS_CRM, war2ClassPool);
-         classes.put(CLASS_MBEAN, earClassPool);
-         assertClassPool(classes);
-         assertSimpleHierarchy(earClassPool, war1ClassPool);
-      }
-      finally
-      {
-         if (war1ClassPool != null)
-         {
-            unregisterClassPool(war1ClassPool);
-            assertNoClassPool(war1Result);
-         }
-         if (war2ClassPool != null)
-         {
-            unregisterClassPool(war2ClassPool);
-            assertNoClassPool(war2Result);
-         }
-         if (earClassPool != null)
-         {
-            unregisterClassPool(earClassPool);
-            assertNoClassPool(earResult);
-         }
-      }
-   }
-   
-   public void testTopLevelWithUtil() throws Exception
-   {
-      ClassPool earClassPool = null;
-      Result earResult = new Result();
-      try
-      {
-         earClassPool = createClassPool(earResult, "top-level.ear", true, EAR_UTIL1, EAR_UTIL2);
-         assertClassPool(earClassPool, CLASS_UTIL, CLASS_EXT);
-      }
-      finally
-      {
-         if (earClassPool != null)
-         {
-            unregisterClassPool(earClassPool);
-            assertNoClassPool(earResult);
-         }
-      }
-   }
-   
-   public void testWarInEar() throws Exception
-   {
-      ClassPool earClassPool = null;
-      ClassPool warClassPool = null;
-      Result earResult = new Result();
-      Result warResult = new Result();
-      try
-      {
-         URL[] excludes = {EAR_WAR, EAR_WAR_CP};
-         earClassPool = createClassPool(earResult, "war-in-ear.ear", true, excludes);
-         warClassPool = createChildDomainParentLastClassPool(warResult, "war-in-ear.ear/simple.war",
-               "simple.war", true, earClassPool, EAR_WAR_CP);
-         Map<String, ClassPool> classes = new HashMap<String, ClassPool>();
-         classes.put(CLASS_SERVLET, warClassPool);
-         assertClassPool(classes);
-      }
-      finally
-      {
-         if (warClassPool != null)
-         {
-            unregisterClassPool(warClassPool);
-            assertNoClassPool(warResult);
-         }
-         if (earClassPool != null)
-         {
-            unregisterClassPool(earClassPool);
-            assertNoClassPool(earResult);
-         }
-      }
-   }
-   
-   public void testJarInEar() throws Exception
-   {
-      ClassPool earClassPool = null;
-      Result earResult = new Result();
-      try
-      {
-         earClassPool = createClassPool(earResult, "jar-in-ear.ear", true, EAR_JAR);
-         assertClassPool(earClassPool, CLASS_PLAIN);
-      }
-      finally
-      {
-         if (earClassPool != null)
-         {
-            unregisterClassPool(earClassPool);
-            assertNoClassPool(earResult);
-         }
-      }
-   }
-   
-   public void testIsolatedJars() throws Exception
-   {
-      ClassPool classPool1 = null;
-      ClassPool classPool2 = null;
-      Result result1 = new Result();
-      Result result2 = new Result();
-      try
-      {
-         classPool1 = createChildDomainParentFirstClassPool(result1, "a1.jar", "a1.jar_Domain", true, JAR_A_1);
-         classPool2 = createChildDomainParentFirstClassPool(result2, "a2.jar", "a2.jar_Domain", true, JAR_A_2);
-         assertIsolated(classPool1, classPool2);
-      }
-      finally
-      {
-         if (classPool1 != null)
-         {
-            unregisterClassPool(classPool1);
-            assertNoClassPool(result1);
-         }
-         if (classPool2 != null)
-         {
-            unregisterClassPool(classPool2);
-            assertNoClassPool(result2);
-         }
-      }
-   }
-   
-   public void testHierarchyJarsChildFirst() throws Exception
-   {
-      ClassPool classPool1 = null;
-      ClassPool classPool2 = null;
-      Result result1 = new Result();
-      Result result2 = new Result();
-      try
-      {
-         classPool1 = createChildDomainParentFirstClassPool(result1, "a1.jar", "a1.jar_Domain", true, JAR_A_1);
-         classPool2 = createChildDomainParentLastClassPool(result2, "a2.jar", "a2.jar_Domain", "a1.jar_Domain", true, JAR_A_2);
-         assertIsolated(classPool1, classPool2);
-      }
-      finally
-      {
-         if (classPool2 != null)
-         {
-            unregisterClassPool(classPool2);
-            assertNoClassPool(result2);
-         }
-         if (classPool1 != null)
-         {
-            unregisterClassPool(classPool1);
-            assertNoClassPool(result1);
-         }
-      }
-   }
-   
-   public void testDomainHierarchy() throws Exception
-   {
-      ClassPool topClassPool = null;
-      ClassPool leftClassPool = null;
-      ClassPool rightClassPool = null;
-      Result topResult = new Result();
-      Result leftResult = new Result();
-      Result rightResult = new Result();
-      try
-      {
-         // TODO replace a1.jar by the SupportClasses equivalent
-         topClassPool = createChildDomainParentFirstClassPool(topResult, "simple.jar", "simple.jar_Domain", true, SIMPLE_JAR);
-         leftClassPool = createChildDomainParentFirstClassPool(leftResult, "servlet.jarL", "servlet.jar_DomainLeft", "simple.jar_Domain", true, SERVLET_JAR);
-         rightClassPool = createChildDomainParentFirstClassPool(rightResult, "servlet.jarR", "servlet.jar_DomainRight", "simple.jar_Domain", true, SERVLET_JAR);
-         assertDomainHierarchy(topClassPool, leftClassPool, rightClassPool);
-      }
-      finally
-      {
-         if (leftClassPool != null)
-         {
-            unregisterClassPool(leftClassPool);
-            assertNoClassPool(leftResult);
-         }
-         if (rightClassPool != null)
-         {
-            unregisterClassPool(rightClassPool);
-            assertNoClassPool(rightResult);
-         }
-         if (topClassPool != null)
-         {
-            unregisterClassPool(topClassPool);
-            assertNoClassPool(topResult);
-         }
-      }
-   }
-   
-   public void testEar2War() throws Exception
-   {
-      ClassPool topClassPool = null;
-      ClassPool leftClassPool = null;
-      ClassPool rightClassPool = null;
-      Result topResult = new Result();
-      Result leftResult = new Result();
-      Result rightResult = new Result();
-      try
-      {
-         URL[] excludes = {PTD_JSF_WAR, PTD_JSF_WAR_LIB, PTD_WS_WAR, PTD_WS_WAR_LIB};
-         topClassPool = createChildDomainParentLastClassPool(topResult,
-               "ptd-ear-1.0-SNAPSHOT.ear", "ptd-ear-1.0-SNAPSHOT.ear_Domain", true, excludes, PTD_EAR_LIB);
-         leftClassPool = createChildDomainParentFirstClassPool(leftResult, SupportClasses.PTD_JSF_WAR,
-               "ptd-jsf-1.0-SNAPSHOT.war_Domain", "ptd-ear-1.0-SNAPSHOT.ear_Domain", true,
-               PTD_JSF_WAR_LIB);
-         rightClassPool = createChildDomainParentFirstClassPool(rightResult, SupportClasses.PTD_WS_WAR,
-               "ptd-ws-1.0-SNAPSHOT.war_Domain", "ptd-ear-1.0-SNAPSHOT.ear_Domain", true,
-               PTD_WS_WAR_LIB);
-         assertDomainHierarchy(topClassPool, leftClassPool, rightClassPool);
-      }
-      finally
-      {
-         if (leftClassPool != null)
-         {
-            unregisterClassPool(leftClassPool);
-            assertNoClassPool(leftResult);
-         }
-         if (rightClassPool != null)
-         {
-            unregisterClassPool(rightClassPool);
-            assertNoClassPool(rightResult);
-         }
-         if (topClassPool != null)
-         {
-            unregisterClassPool(topClassPool);
-            assertNoClassPool(topResult);
-         }
-      }
-   }
-   
-   public void testJarAndExcludedClassPath() throws Exception
-   {
-      ClassPool jarClassPool = null;
-      ClassPool anysClassPool = null;
-      Result jarResult = new Result();
-      Result anysResult = new Result();
-      try
-      {
-         jarClassPool = createClassPool(jarResult, "simple.jar", true, SIMPLE_JAR);
-         anysClassPool = createClassPool(anysResult, "anys-classloader", true,
-               SupportClasses.PACKAGE_WEB, EXCLUDED_CLASSPATH);
-
-         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("AnyServlet", CLASS_SERVLET);
-         builder.setClassLoader(new AbstractDependencyValueMetaData("anys-classloader:0.0.0"));
-         super.deploy(builder.getBeanMetaData());
-         
-         Object anys = assertBean("AnyServlet", Object.class);
-         Class<?> anysClass = anys.getClass();
-         ClassLoader anysCL = anysClass.getClassLoader();
-         assertSame(anysCL, anysClassPool.getClassLoader());
-         assertNotSame(anysCL, jarClassPool.getClassLoader());
-         assertNonDeploymentModule(jarClassPool, anysClassPool);
-      }
-      finally
-      {
-         if (jarClassPool != null)
-         {
-            unregisterClassPool(jarClassPool);
-            assertNoClassPool(jarResult);
-         }
-         if (anysClassPool != null)
-         {
-            unregisterClassPool(anysClassPool);
-            assertNoClassPool(anysResult);
-         }
-      }
-   }
-   
-   public void testTifHierarchy() throws Exception
-   {
-      ClassPool jarClassPool = null;
-      Result jarResult = new Result();
-      ClassPool anysClassPool = null;
-      ClassPool tifClassPool = null;
-      Result anysResult = new Result();
-      Result tifResult = new Result();
-      try
-      {
-         jarClassPool = createClassPool(jarResult, "simple.jar", true, SIMPLE_JAR);
-         anysClassPool = createChildDomainParentFirstClassPool(anysResult, "anys-classloader",
-               "Anys_Domain",true, SupportClasses.PACKAGE_WEB, EXCLUDED_CLASSPATH);
-         tifClassPool = createChildDomainParentFirstClassPool(tifResult, "tif-classloader",
-               "TIF_Domain", "Anys_Domain",true, SupportClasses.PACKAGE_TIF, EXCLUDED_CLASSPATH);
-         
-         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("AnyServlet", CLASS_SERVLET);
-         builder.setClassLoader(new AbstractDependencyValueMetaData("anys-classloader:0.0.0"));
-         super.deploy(builder.getBeanMetaData());
-         
-         builder = BeanMetaDataBuilder.createBuilder("TifTester", CLASS_TIF);
-         builder.setClassLoader(new AbstractDependencyValueMetaData("tif-classloader:0.0.0"));
-         super.deploy(builder.getBeanMetaData());
-         
-         Object anys = assertBean("AnyServlet", Object.class);
-         Class<?> anysClass = anys.getClass();
-         ClassLoader anysCL = anysClass.getClassLoader();
-
-         Object tif = assertBean("TifTester", Object.class);
-         Class<?> tifClass = tif.getClass();
-         ClassLoader tifCL = tifClass.getClassLoader();
-
-         ClassLoader jarCL = jarClassPool.getClassLoader();
-
-         assertNotSame(jarCL, anysCL);
-         assertNotSame(jarCL, tifCL);
-         assertNotSame(anysCL, tifCL);
-         
-         assertNonDeploymentModule(jarClassPool, anysClassPool, tifClassPool);
-      }
-      finally
-      {
-         if (jarClassPool != null)
-         {
-            unregisterClassPool(jarClassPool);
-            assertNoClassPool(jarResult);
-         }
-         if (tifClassPool != null)
-         {
-            unregisterClassPool(tifClassPool);
-            assertNoClassPool(tifResult);
-         }
-         if (anysClassPool != null)
-         {
-            unregisterClassPool(anysClassPool);
-            assertNoClassPool(anysResult);
-         }
-      }
-   }
-   
-   public void testTifHierarchyWithRequirements() throws Exception
-   {
-      ClassPool jarClassPool = null;
-      Result jarResult = new Result();
-      ClassPool anysClassPool = null;
-      ClassPool tifClassPool = null;
-      Result anysResult = new Result();
-      Result tifResult = new Result();
-      try
-      {
-         jarClassPool = createClassPool(jarResult, "simple.jar", true,
-               SupportClasses.PACKAGE_JAR, SIMPLE_JAR);
-         BundleInfoBuilder bundleBuilder = BundleInfoBuilder.getBuilder();
-         bundleBuilder.createModule("any-classloader:0.0.0$Module").
-            createPackage(SupportClasses.PACKAGE_WEB).
-            createRequirePackage(SupportClasses.PACKAGE_JAR);
-         anysClassPool = createClassPool(anysResult, "anys-classloader",
-               bundleBuilder, EXCLUDED_CLASSPATH);
-         bundleBuilder = BundleInfoBuilder.getBuilder();
-         bundleBuilder.createModule("tif-classloader:0.0.0$Module").
-            createPackage(SupportClasses.PACKAGE_TIF).
-            createRequirePackage(SupportClasses.PACKAGE_WEB);
-         tifClassPool = createClassPool(tifResult, "tif-classloader",
-               bundleBuilder, EXCLUDED_CLASSPATH);
-         
-         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("AnyServlet", CLASS_SERVLET);
-         builder.setClassLoader(new AbstractDependencyValueMetaData("anys-classloader:0.0.0"));
-         super.deploy(builder.getBeanMetaData());
-         
-         builder = BeanMetaDataBuilder.createBuilder("TifTester", CLASS_TIF);
-         builder.setClassLoader(new AbstractDependencyValueMetaData("tif-classloader:0.0.0"));
-         super.deploy(builder.getBeanMetaData());
-         
-         Object anys = assertBean("AnyServlet", Object.class);
-         Class<?> anysClass = anys.getClass();
-         ClassLoader anysCL = anysClass.getClassLoader();
-
-         Object tif = assertBean("TifTester", Object.class);
-         Class<?> tifClass = tif.getClass();
-         ClassLoader tifCL = tifClass.getClassLoader();
-
-         ClassLoader jarCL = jarClassPool.getClassLoader();
-
-         assertNotSame(jarCL, anysCL);
-         assertNotSame(jarCL, tifCL);
-         assertNotSame(anysCL, tifCL);
-         
-         assertNonDeploymentModule(jarClassPool, anysClassPool, tifClassPool);
-      }
-      finally
-      {
-         if (jarClassPool != null)
-         {
-            unregisterClassPool(jarClassPool);
-            assertNoClassPool(jarResult);
-         }
-         if (tifClassPool != null)
-         {
-            unregisterClassPool(tifClassPool);
-            assertNoClassPool(tifResult);
-         }
-         if (anysClassPool != null)
-         {
-            unregisterClassPool(anysClassPool);
-            assertNoClassPool(anysResult);
-         }
-      }
-   }
-   
-   protected void assertClassPool(ClassPool parentClassPool, String... classNames) throws Exception
-   {
-      Map<String, ClassPool> map = new HashMap<String, ClassPool>();
-      for (String className : classNames)
-      {
-         map.put(className, parentClassPool);
-      }
-      assertClassPool(map);
-   }
-   
-   protected void assertClassPool(Map<String, ClassPool> classes) throws Exception
-   {
-      for (Map.Entry<String, ClassPool> entry : classes.entrySet())
-      {
-         String className = entry.getKey();
-         ClassPool classPool = entry.getValue();
-         // sanity check
-         ClassLoader classLoader = classPool.getClassLoader();
-         Class<?> loadedClass = assertLoadClass(className, classLoader);
-         CtClass ctClass = classPool.getCtClass(className);
-         assertNotNull("Class" + className + " retrieved from classloader  " + classLoader + " is null", loadedClass);
-         assertNotNull("Class" + className + " retrieved from pool " + classPool + " is null", ctClass);
-         assertEquals(className, loadedClass.getName());
-         assertEquals(className, ctClass.getName());
-         ClassLoader cl = ctClass.getClassPool().getClassLoader();
-         assertEquals("Class has been loaded by the wrong class loader: " + className,
-               loadedClass.getClassLoader(), cl);
-      }
-   }
-   
-   private void assertSimpleHierarchy(ClassPool topClassPool, ClassPool childClassPool) throws
-      NotFoundException
-   {
-      CtClass ctClass = childClassPool.getCtClass(CLASS_SERVLET);
-      CtMethod ctMethod = ctClass.getDeclaredMethod("getBean");
-      assertNotNull("No such 'getBean' method on " + ctClass, ctMethod);
-
-      CtClass returnCtClass = ctMethod.getReturnType();
-      CtClass returnCtClass2 = topClassPool.getCtClass(CLASS_PLAIN);
-      assertSame(returnCtClass, returnCtClass2);
-   }
-   
-   protected void assertIsolated(ClassPool classPool1, ClassPool classPool2) throws Exception
-   {
-      ClassLoader classLoader1 = classPool1.getClassLoader();;
-      ClassLoader classLoader2 = classPool2.getClassLoader();
-      
-      assertFalse(classLoader1.equals(classLoader2));
-      Class<?> class1 = assertLoadClass(CLASS_A, classLoader1, classLoader1);
-
-      Class<?> class2 = assertLoadClass(CLASS_A, classLoader2, classLoader2);
-      assertNotSame("Should NOT be the same " + ClassLoaderUtils.classToString(class1) +" and "
-            + ClassLoaderUtils.classToString(class2), class1, class2);
-      
-      CtClass ctClass1 = classPool1.getCtClass(CLASS_A);
-      CtClass ctClass2 = classPool2.getCtClass(CLASS_A);
-      assertNotSame(ctClass1, ctClass2);
-      
-      ClassPool classPool3 = repository.registerClassLoader(class1.getClassLoader());
-      CtClass ctClass3 = classPool3.getCtClass(CLASS_A);
-      assertEquals(ctClass1, ctClass3);
-
-      ClassPool classPool4 = repository.registerClassLoader(class2.getClassLoader());
-      CtClass ctClass4 = classPool4.getCtClass(class2.getName());
-      assertEquals(ctClass2, ctClass4);
- 
-      assertNotSame(ctClass3, ctClass4);
-   }
-   
-   protected void assertDomainHierarchy(ClassPool topClassPool, ClassPool leftClassPool, ClassPool rightClassPool) throws Exception
-   {
-      ClassLoader topCL = topClassPool.getClassLoader();
-      ClassLoader leftCL = leftClassPool.getClassLoader();
-      ClassLoader rightCL = rightClassPool.getClassLoader();
-      Class<?> servletClassLeft = assertLoadClass(CLASS_SERVLET, leftCL);
-      Class<?> servletClassRight = assertLoadClass(CLASS_SERVLET, rightCL);
-      assertFalse(servletClassLeft.equals(servletClassRight));
-      Class<?> plainClassLeft = assertLoadClass(CLASS_PLAIN, leftCL, topCL);
-      Class<?> plainClassRight = assertLoadClass(CLASS_PLAIN, rightCL, topCL);
-      assertEquals(plainClassLeft, plainClassRight);
-
-      CtClass plainCtClass = topClassPool.getCtClass(CLASS_PLAIN);
-      CtClass servletCtClassLeft = leftClassPool.getCtClass(CLASS_SERVLET);
-      CtClass servletCtClassRight = rightClassPool.getCtClass(CLASS_SERVLET);
-
-      CtClass returnCtClassLeft = servletCtClassLeft.getDeclaredMethod("getBean").getReturnType();
-      assertEquals(plainCtClass, returnCtClassLeft);
-
-      CtClass returnCtClassRight = servletCtClassRight.getDeclaredMethod("getBean").getReturnType();
-      assertEquals(plainCtClass, returnCtClassRight);
-   }
-   
-   protected void assertNonDeploymentModule(ClassPool jarClassPool, ClassPool anysClassPool) throws Exception
-   {
-      CtClass anysCtClass = jarClassPool.getCtClass(CLASS_SERVLET);
-      CtClass plainCtClass = anysClassPool.getCtClass(CLASS_PLAIN);
-      CtClass returnCtClass = anysCtClass.getDeclaredMethod("getBean").getReturnType();
-      assertEquals(plainCtClass, returnCtClass);
-   }
-   
-   protected void assertNonDeploymentModule(ClassPool classPool, ClassPool anysClassPool,
-         ClassPool tifClassPool) throws Exception
-   {
-      CtClass tifCtClass = tifClassPool.getCtClass(CLASS_TIF);
-      CtClass tifReturn = tifCtClass.getDeclaredMethod("getAnys").getReturnType();
-      CtClass asCtClass = anysClassPool.getCtClass(CLASS_SERVLET);
-      assertEquals(tifReturn, asCtClass);
-
-      CtClass plainCtClass = classPool.getCtClass(CLASS_PLAIN);
-      CtClass plainReturn = asCtClass.getDeclaredMethod("getBean").getReturnType();
-      assertEquals(plainCtClass, plainReturn);
-   }
 }
\ No newline at end of file

Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveTest.java (from rev 97058, 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/ArchiveTest.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveTest.java	2009-11-27 06:29:02 UTC (rev 97064)
@@ -0,0 +1,556 @@
+/*
+ * 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.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_CRM;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_EXT;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_JSF;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_MBEAN;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_PLAIN;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_SERVLET;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_SLS_BEAN;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_SLS_INTERFACE;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_TIF;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_UI;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_UTIL;
+
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.test.classpool.support.BundleInfoBuilder;
+import org.jboss.test.classpool.support.Result;
+import org.jboss.test.classpool.support.SupportClasses;
+
+
+
+/**
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+
+public abstract class ArchiveTest<C, L> extends JBossClClassPoolTest
+{
+   // TODO refactorate this, extracting this from this class
+   // TODO move the jars to a directory of their own (such as target/test-archives)
+   public final static URL SIMPLE_JAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_JAR);
+   public final static URL SIMPLE_SAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_SAR);
+   public final static URL EJB_JAR = getURLRelativeToProjectRoot(SupportClasses.EJB_JAR);
+   public final static URL SIMPLE_WAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_WAR);
+   public final static URL SIMPLE_EAR_JAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_JAR);
+   public final static URL SIMPLE_EAR_SAR = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_SAR);
+   public final static URL SIMPLE_EAR_EJB = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_EJB);
+   public final static URL SIMPLE_EAR_LIB1 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_LIB1);
+   public final static URL SIMPLE_EAR_LIB2 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_LIB2);
+   public final static URL SIMPLE_EAR_WAR1 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR1);
+   public final static URL SIMPLE_EAR_WAR1_CP = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR1_CP);
+   public final static URL SIMPLE_EAR_WAR1_LIB = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR1_LIB);
+   public final static URL SIMPLE_EAR_WAR2 = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR2);
+   public final static URL SIMPLE_EAR_WAR2_CP = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR2_CP);
+   public final static URL SIMPLE_EAR_WAR2_LIB = getURLRelativeToProjectRoot(SupportClasses.SIMPLE_EAR_WAR2_LIB);
+   public final static URL EAR_UTIL1 = getURLRelativeToProjectRoot(SupportClasses.EAR_UTIL1);
+   public final static URL EAR_UTIL2 = getURLRelativeToProjectRoot(SupportClasses.EAR_UTIL2);
+   public final static URL EAR_WAR = getURLRelativeToProjectRoot(SupportClasses.EAR_WAR);
+   public final static URL EAR_WAR_CP = getURLRelativeToProjectRoot(SupportClasses.EAR_WAR_CP);
+   public final static URL EAR_JAR = getURLRelativeToProjectRoot(SupportClasses.EAR_JAR);
+   public final static URL SERVLET_JAR = getURLRelativeToProjectRoot(SupportClasses.SERVLET_JAR);
+   public final static URL PTD_EAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_EAR_LIB);
+   public final static URL PTD_JSF_WAR = getURLRelativeToProjectRoot(SupportClasses.PTD_JSF_WAR);
+   public final static URL PTD_JSF_WAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_JSF_WAR_LIB);
+   public final static URL PTD_WS_WAR = getURLRelativeToProjectRoot(SupportClasses.PTD_WS_WAR);
+   public final static URL PTD_WS_WAR_LIB = getURLRelativeToProjectRoot(SupportClasses.PTD_WS_WAR_LIB);
+   public final static URL EXCLUDED_CLASSPATH = getURLRelativeToProjectRoot(SupportClasses.EXCLUDED_CLASSPATH);
+   
+   final static String STRING = String.class.getName();
+   private TestScenario<C, L> testScenario; 
+   
+   protected abstract TestScenario<C, L> getTestScenario();
+   
+   @Override
+   public void setUp() throws Exception
+   {
+      this.testScenario = getTestScenario();
+      super.setUp();
+   }
+   
+   
+   public ArchiveTest(String name)
+   {
+      super(name);
+   }
+   
+   // TODO do an assertNotFound for all classes not included in the package being tested
+   
+   public void testJar() throws Exception
+   {
+      L loader = null;
+      Result result = new Result();
+      try
+      {
+         loader = testScenario.createLoader(result, "simple.jar", true, SIMPLE_JAR);
+         assertCanLoad(loader, CLASS_PLAIN);
+      }
+      finally
+      {
+         testScenario.unregister(loader, result);
+      }
+   }
+   
+   public void testSar() throws Exception
+   {
+      L loader = null;
+      Result result = new Result();
+      try
+      {
+         loader = testScenario.createLoader(result, "simple.sar", true, SIMPLE_SAR);
+         assertCanLoad(loader, CLASS_MBEAN);
+      }
+      finally
+      {
+         testScenario.unregister(loader, result);
+      }
+   }
+   
+   public void testEjbJar() throws Exception
+   {
+      L loader = null;
+      Result result = new Result();
+      try
+      {
+         loader = testScenario.createLoader(result, "ejbs.jar", true, EJB_JAR);
+         assertCanLoad(loader, CLASS_SLS_BEAN, CLASS_SLS_INTERFACE);
+      }
+      finally
+      {
+         testScenario.unregister(loader, result);
+      }
+   }
+   
+   public void testWar() throws Exception
+   {
+      L loader = null;
+      Result result = new Result();
+      try
+      {
+         loader = testScenario.createChildDomainParentLastLoader(result, "simple.war", "simple.war", true,
+               SIMPLE_WAR);
+         assertCanLoad(loader, CLASS_SERVLET);
+      }
+      finally
+      {
+         testScenario.unregister(loader, result);
+      }
+   }
+   
+   public void testEar() throws Exception
+   {
+      L earLoader = null;
+      L war1Loader = null;
+      L war2Loader = null;
+      Result earResult = new Result();
+      Result war1Result = new Result();
+      Result war2Result = new Result();
+      try
+      {
+         URL[] excludes = {SIMPLE_EAR_WAR1, SIMPLE_EAR_WAR1_CP, SIMPLE_EAR_WAR1_LIB,
+               SIMPLE_EAR_WAR2, SIMPLE_EAR_WAR2_CP, SIMPLE_EAR_WAR2_LIB};
+         earLoader = testScenario.createLoader(earResult, "simple.ear", true, excludes, SIMPLE_EAR_JAR,
+               SIMPLE_EAR_SAR, SIMPLE_EAR_EJB, SIMPLE_EAR_LIB1, SIMPLE_EAR_LIB2);
+         war1Loader = testScenario.createChildDomainParentLastLoader(war1Result, "simple.ear/simple_ui.war",
+               "simple_ui.war", true, earLoader, SIMPLE_EAR_WAR1_CP, SIMPLE_EAR_WAR1_LIB);
+         war2Loader = testScenario.createChildDomainParentLastLoader(war2Result, "simple.ear/jsfapp.war",
+               "simple_ui.war", true, earLoader, SIMPLE_EAR_WAR2_CP, SIMPLE_EAR_WAR2_LIB);
+         
+         Map<String, L> classes = new HashMap<String, L>();
+         classes.put(CLASS_UTIL, earLoader);
+         classes.put(CLASS_EXT, earLoader);
+         classes.put(CLASS_PLAIN, earLoader);
+         classes.put(CLASS_SLS_BEAN, earLoader);
+         classes.put(CLASS_SLS_INTERFACE, earLoader);
+         classes.put(CLASS_SERVLET, war1Loader);
+         classes.put(CLASS_UI, war1Loader);
+         classes.put(CLASS_JSF, war2Loader);
+         classes.put(CLASS_CRM, war2Loader);
+         classes.put(CLASS_MBEAN, earLoader);
+         assertCanLoad(classes);
+         assertSimpleHierarchy(earLoader, war1Loader);
+      }
+      finally
+      {
+         testScenario.unregister(war1Loader, war1Result);
+         testScenario.unregister(war2Loader, war2Result);
+         testScenario.unregister(earLoader, earResult);
+      }
+   }
+   
+   public void testTopLevelWithUtil() throws Exception
+   {
+      L earLoader = null;
+      Result earResult = new Result();
+      try
+      {
+         earLoader = testScenario.createLoader(earResult, "top-level.ear", true, EAR_UTIL1, EAR_UTIL2);
+         assertCanLoad(earLoader, CLASS_UTIL, CLASS_EXT);
+      }
+      finally
+      {
+         testScenario.unregister(earLoader, earResult);
+      }
+   }
+   
+   public void testWarInEar() throws Exception
+   {
+      L earLoader = null;
+      L warLoader = null;
+      Result earResult = new Result();
+      Result warResult = new Result();
+      try
+      {
+         URL[] excludes = {EAR_WAR, EAR_WAR_CP};
+         earLoader = testScenario.createLoader(earResult, "war-in-ear.ear", true, excludes);
+         warLoader = testScenario.createChildDomainParentLastLoader(warResult, "war-in-ear.ear/simple.war",
+               "simple.war", true, earLoader, EAR_WAR_CP);
+         Map<String, L> classes = new HashMap<String, L>();
+         classes.put(CLASS_SERVLET, warLoader);
+         assertCanLoad(classes);
+      }
+      finally
+      {
+         testScenario.unregister(warLoader, warResult);
+         testScenario.unregister(earLoader, earResult);
+      }
+   }
+   
+   public void testJarInEar() throws Exception
+   {
+      L earLoader = null;
+      Result earResult = new Result();
+      try
+      {
+         earLoader = testScenario.createLoader(earResult, "jar-in-ear.ear", true, EAR_JAR);
+         assertCanLoad(earLoader, CLASS_PLAIN);
+      }
+      finally
+      {
+         testScenario.unregister(earLoader, earResult);
+      }
+   }
+   
+   public void testIsolatedJars() throws Exception
+   {
+      L loader1 = null;
+      L loader2 = null;
+      Result result1 = new Result();
+      Result result2 = new Result();
+      try
+      {
+         loader1 = testScenario.createChildDomainParentFirstLoader(result1, "a1.jar", "a1.jar_Domain", true, JAR_A_1);
+         loader2 = testScenario.createChildDomainParentFirstLoader(result2, "a2.jar", "a2.jar_Domain", true, JAR_A_2);
+         assertIsolated(loader1, loader2);
+      }
+      finally
+      {
+         testScenario.unregister(loader1, result1);
+         testScenario.unregister(loader2, result2);
+      }
+   }
+   
+   public void testHierarchyJarsChildFirst() throws Exception
+   {
+      L loader1 = null;
+      L loader2 = null;
+      Result result1 = new Result();
+      Result result2 = new Result();
+      try
+      {
+         loader1 = testScenario.createChildDomainParentFirstLoader(result1, "a1.jar", "a1.jar_Domain", true, JAR_A_1);
+         loader2 = testScenario.createChildDomainParentLastLoader(result2, "a2.jar", "a2.jar_Domain", "a1.jar_Domain", true, JAR_A_2);
+         assertIsolated(loader1, loader2);
+      }
+      finally
+      {
+         testScenario.unregister(loader1, result1);
+         testScenario.unregister(loader2, result2);
+      }
+   }
+   
+   public void testDomainHierarchy() throws Exception
+   {
+      L topLoader = null;
+      L leftLoader = null;
+      L rightLoader = null;
+      Result topResult = new Result();
+      Result leftResult = new Result();
+      Result rightResult = new Result();
+      try
+      {
+         // TODO replace a1.jar by the SupportClasses equivalent
+         topLoader = testScenario.createChildDomainParentFirstLoader(topResult, "simple.jar", "simple.jar_Domain", true, SIMPLE_JAR);
+         leftLoader = testScenario.createChildDomainParentFirstLoader(leftResult, "servlet.jarL", "servlet.jar_DomainLeft", "simple.jar_Domain", true, SERVLET_JAR);
+         rightLoader = testScenario.createChildDomainParentFirstLoader(rightResult, "servlet.jarR", "servlet.jar_DomainRight", "simple.jar_Domain", true, SERVLET_JAR);
+         assertDomainHierarchy(topLoader, leftLoader, rightLoader);
+      }
+      finally
+      {
+         testScenario.unregister(leftLoader, leftResult);
+         testScenario.unregister(rightLoader, rightResult);
+         testScenario.unregister(topLoader, topResult);
+      }
+   }
+   
+   public void testEar2War() throws Exception
+   {
+      L topLoader = null;
+      L leftLoader = null;
+      L rightLoader = null;
+      Result topResult = new Result();
+      Result leftResult = new Result();
+      Result rightResult = new Result();
+      try
+      {
+         URL[] excludes = {PTD_JSF_WAR, PTD_JSF_WAR_LIB, PTD_WS_WAR, PTD_WS_WAR_LIB};
+         topLoader = testScenario.createChildDomainParentLastLoader(topResult,
+               "ptd-ear-1.0-SNAPSHOT.ear", "ptd-ear-1.0-SNAPSHOT.ear_Domain", true, excludes, PTD_EAR_LIB);
+         leftLoader = testScenario.createChildDomainParentFirstLoader(leftResult, SupportClasses.PTD_JSF_WAR,
+               "ptd-jsf-1.0-SNAPSHOT.war_Domain", "ptd-ear-1.0-SNAPSHOT.ear_Domain", true,
+               PTD_JSF_WAR_LIB);
+         rightLoader = testScenario.createChildDomainParentFirstLoader(rightResult, SupportClasses.PTD_WS_WAR,
+               "ptd-ws-1.0-SNAPSHOT.war_Domain", "ptd-ear-1.0-SNAPSHOT.ear_Domain", true,
+               PTD_WS_WAR_LIB);
+         assertDomainHierarchy(topLoader, leftLoader, rightLoader);
+      }
+      finally
+      {
+         testScenario.unregister(leftLoader, leftResult);
+         testScenario.unregister(rightLoader, rightResult);
+         testScenario.unregister(topLoader, topResult);
+      }
+   }
+   
+   public void testJarAndExcludedClassPath() throws Exception
+   {
+      L jarLoader = null;
+      L anysLoader = null;
+      Result jarResult = new Result();
+      Result anysResult = new Result();
+      try
+      {
+         jarLoader = testScenario.createLoader(jarResult, "simple.jar", true, SIMPLE_JAR);
+         anysLoader = testScenario.createLoader(anysResult, "anys-classloader", true,
+               SupportClasses.PACKAGE_WEB, EXCLUDED_CLASSPATH);
+
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("AnyServlet", CLASS_SERVLET);
+         builder.setClassLoader(new AbstractDependencyValueMetaData("anys-classloader:0.0.0"));
+         super.deploy(builder.getBeanMetaData());
+         
+         Object anys = assertBean("AnyServlet", Object.class);
+         Class<?> anysClass = anys.getClass();
+         ClassLoader anysCL = anysClass.getClassLoader();
+         assertSame(anysCL, testScenario.getClassLoader(anysLoader));
+         assertNotSame(anysCL, testScenario.getClassLoader(jarLoader));
+         assertNonDeploymentModule(jarLoader, anysLoader);
+      }
+      finally
+      {
+         testScenario.unregister(jarLoader, jarResult);
+         testScenario.unregister(anysLoader, anysResult);
+      }
+   }
+   
+   public void testTifHierarchy() throws Exception
+   {
+      L jarLoader = null;
+      L anysLoader = null;
+      L tifLoader = null;
+      Result jarResult = new Result();
+      Result anysResult = new Result();
+      Result tifResult = new Result();
+      try
+      {
+         jarLoader = testScenario.createLoader(jarResult, "simple.jar", true, SIMPLE_JAR);
+         anysLoader = testScenario.createChildDomainParentFirstLoader(anysResult, "anys-classloader",
+               "Anys_Domain",true, SupportClasses.PACKAGE_WEB, EXCLUDED_CLASSPATH);
+         tifLoader = testScenario.createChildDomainParentFirstLoader(tifResult, "tif-classloader",
+               "TIF_Domain", "Anys_Domain",true, SupportClasses.PACKAGE_TIF, EXCLUDED_CLASSPATH);
+         
+         createHierarchyBeans(jarLoader);
+         assertNonDeploymentModule(jarLoader, anysLoader, tifLoader);
+      }
+      finally
+      {
+         testScenario.unregister(tifLoader, tifResult);
+         testScenario.unregister(anysLoader, anysResult);
+         testScenario.unregister(jarLoader, jarResult);
+      }
+   }
+
+   public void testTifHierarchyWithRequirements() throws Exception
+   {
+      L jarLoader = null;
+      L anysLoader = null;
+      L tifLoader = null;
+      Result jarResult = new Result();
+      Result anysResult = new Result();
+      Result tifResult = new Result();
+      try
+      {
+         jarLoader = testScenario.createLoader(jarResult, "simple.jar", true,
+               SupportClasses.PACKAGE_JAR, SIMPLE_JAR);
+         BundleInfoBuilder bundleBuilder = BundleInfoBuilder.getBuilder();
+         bundleBuilder.createModule("any-classloader:0.0.0$Module").
+            createPackage(SupportClasses.PACKAGE_WEB).
+            createRequirePackage(SupportClasses.PACKAGE_JAR);
+         anysLoader = testScenario.createLoader(anysResult, "anys-classloader",
+               bundleBuilder, EXCLUDED_CLASSPATH);
+         bundleBuilder = BundleInfoBuilder.getBuilder();
+         bundleBuilder.createModule("tif-classloader:0.0.0$Module").
+            createPackage(SupportClasses.PACKAGE_TIF).
+            createRequirePackage(SupportClasses.PACKAGE_WEB);
+         tifLoader = testScenario.createLoader(tifResult, "tif-classloader",
+               bundleBuilder, EXCLUDED_CLASSPATH);
+         
+         createHierarchyBeans(jarLoader);
+         assertNonDeploymentModule(jarLoader, anysLoader, tifLoader);
+      }
+      finally
+      {
+         testScenario.unregister(tifLoader, tifResult);
+         testScenario.unregister(anysLoader, anysResult);
+         testScenario.unregister(jarLoader, jarResult);
+      }
+   }
+   
+   protected void assertCanLoad(L parentLoader, String... classNames) throws Exception
+   {
+      Map<String, L> map = new HashMap<String, L>();
+      for (String className : classNames)
+      {
+         map.put(className, parentLoader);
+      }
+      assertCanLoad(map);
+   }
+   
+   protected void assertCanLoad(Map<String, L> classes) throws Exception
+   {
+      for (Map.Entry<String, L> entry : classes.entrySet())
+      {
+         String className = entry.getKey();
+         L loader = entry.getValue();
+         testScenario.loadClass(loader, className);
+      }
+   }
+   
+   private void assertSimpleHierarchy(L topLoader, L childLoader) throws
+      Exception
+   {
+      C clazz = testScenario.loadClass(childLoader, CLASS_SERVLET);
+      C returnClass = testScenario.getMethodReturnType(clazz, "getBean");
+      C returnClass2 = testScenario.loadClass(topLoader, CLASS_PLAIN);
+      assertSame(returnClass, returnClass2);
+   }
+   
+   protected void assertIsolated(L loader1, L loader2) throws Exception
+   {
+      assertFalse(loader1.equals(loader2));
+      
+      C class1 = testScenario.loadClass(loader1, CLASS_A);
+      C class2 = testScenario.loadClass(loader2, CLASS_A);
+      assertNotSame("Should NOT be the same " + class1 +" and " + class2, class1, class2);
+      
+      L loader3 = testScenario.cloneLoader(class1);
+      C class3 = testScenario.loadClass(loader3, CLASS_A);
+      assertEquals(class1, class3);
+
+      L loader4 = testScenario.cloneLoader(class2);
+      C class4 = testScenario.loadClass(loader4, CLASS_A);
+      assertEquals(class2, class4);
+      assertNotSame(class3, class4);
+   }
+   
+   protected void assertDomainHierarchy(L topLoader, L leftLoader, L rightLoader) throws Exception
+   {
+      C servletClassLeft = testScenario.loadClass(leftLoader, CLASS_SERVLET);
+      C servletClassRight = testScenario.loadClass(rightLoader, CLASS_SERVLET);
+      assertFalse(servletClassLeft.equals(servletClassRight));
+      C plainClassLeft = testScenario.loadClass(leftLoader, topLoader, CLASS_PLAIN);
+      C plainClassRight = testScenario.loadClass(rightLoader, topLoader, CLASS_PLAIN);
+      assertEquals(plainClassLeft, plainClassRight);
+
+      C plainClass = testScenario.loadClass(topLoader, CLASS_PLAIN);
+      
+      C returnClassLeft = testScenario.getMethodReturnType(servletClassLeft, "getBean");
+      assertEquals(plainClass, returnClassLeft);
+
+      C returnClassRight = testScenario.getMethodReturnType(servletClassRight, "getBean");
+      assertEquals(plainClass, returnClassRight);
+   }
+   
+   protected void assertNonDeploymentModule(L jarLoader, L anysLoader) throws Exception
+   {
+      C anysClass = testScenario.loadClass(jarLoader, anysLoader, CLASS_SERVLET);
+      C plainClass = testScenario.loadClass(anysLoader, jarLoader, CLASS_PLAIN);
+      C returnC = testScenario.getMethodReturnType(anysClass, "getBean");
+      assertEquals(plainClass, returnC);
+   }
+   
+   protected void assertNonDeploymentModule(L loader, L anysLoader,
+         L tifLoader) throws Exception
+   {
+      C tifClass = testScenario.loadClass(tifLoader, CLASS_TIF);
+      C tifReturn = testScenario.getMethodReturnType(tifClass, "getAnys");
+      C servletClass = testScenario.loadClass(anysLoader, CLASS_SERVLET);
+      assertEquals(tifReturn, servletClass);
+
+      C plainClass = testScenario.loadClass(loader, CLASS_PLAIN);
+      C plainReturn = testScenario.getMethodReturnType(servletClass, "getBean");
+      assertEquals(plainClass, plainReturn);
+   }
+   
+   private void createHierarchyBeans(L jarLoader) throws Exception
+   {
+      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("AnyServlet", CLASS_SERVLET);
+      builder.setClassLoader(new AbstractDependencyValueMetaData("anys-classloader:0.0.0"));
+      super.deploy(builder.getBeanMetaData());
+      
+      builder = BeanMetaDataBuilder.createBuilder("TifTester", CLASS_TIF);
+      builder.setClassLoader(new AbstractDependencyValueMetaData("tif-classloader:0.0.0"));
+      super.deploy(builder.getBeanMetaData());
+      
+      Object anys = assertBean("AnyServlet", Object.class);
+      Class<?> anysClass = anys.getClass();
+      ClassLoader anysCL = anysClass.getClassLoader();
+
+      Object tif = assertBean("TifTester", Object.class);
+      Class<?> tifClass = tif.getClass();
+      ClassLoader tifCL = tifClass.getClassLoader();
+
+      ClassLoader jarCL = testScenario.getClassLoader(jarLoader);
+
+      assertNotSame(jarCL, anysCL);
+      assertNotSame(jarCL, tifCL);
+      assertNotSame(anysCL, tifCL);
+   }
+}
\ No newline at end of file

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolTestScenario.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolTestScenario.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolTestScenario.java	2009-11-27 06:29:02 UTC (rev 97064)
@@ -0,0 +1,161 @@
+/*
+ * 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.test;
+
+import java.net.URL;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Assert;
+
+import org.jboss.test.classpool.support.BundleInfoBuilder;
+import org.jboss.test.classpool.support.Result;
+
+/**
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+
+public class ClassPoolTestScenario extends TestScenario<CtClass, ClassPool>
+{
+   /*private static final JavassistTestClassLoader instance = new JavassistTestClassLoader();
+   public static final JavassistTestClassLoader getInstance()
+   {
+      return instance;
+   }*/
+   private JBossClClassPoolTest test = null;
+   
+   public ClassPoolTestScenario(JBossClClassPoolTest test)
+   {
+      this.test = test;
+   }
+   
+   public ClassPool cloneLoader(CtClass clazz)
+   {
+      return test.repository.registerClassLoader(clazz.getClassPool().getClassLoader());
+   }
+   
+   public ClassPool getLoader(ClassLoader classLoader)
+   {
+      return test.repository.registerClassLoader(classLoader);
+   }
+   
+   public ClassLoader getClassLoader(ClassPool classPool)
+   {
+      return classPool.getClassLoader();
+   }
+   
+   public String getClassName(CtClass clazz)
+   {
+      return clazz.getName();
+   }
+   
+   public ClassPool createLoader(Result result, String name, boolean importAll, URL... urls) throws Exception
+   {
+      return test.createClassPool(result, name, importAll, urls);
+   }
+   
+   public ClassPool createLoader(Result result, String name, boolean importAll, URL[] excludes, URL... urls) throws Exception
+   {
+      return test.createClassPool(result, name, importAll, excludes, urls);
+   }
+   
+   public ClassPool createLoader(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception
+   {
+      return test.createClassPool(result, name, importAll, packageCapability, urls);
+   }
+   
+   public ClassPool createLoader(Result result, String name, BundleInfoBuilder builder, URL... urls) throws Exception
+   {
+      return test.createClassPool(result, name, builder, urls);
+   }
+   
+   public ClassPool createChildDomainParentFirstLoader(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentFirstClassPool(result, name, domainName, importAll, urls);
+   }
+   
+   public ClassPool createChildDomainParentFirstLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentFirstClassPool(result, name, domainName, parentDomainName, importAll, urls);
+   }
+   
+   public ClassPool createChildDomainParentFirstLoader(Result result, String name, String domainName, boolean importAll, String packageCapability, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentFirstClassPool(result, name, domainName, importAll, packageCapability, urls);
+   }
+   
+   public ClassPool createChildDomainParentFirstLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, String packageCapability, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentFirstClassPool(result, name, domainName, parentDomainName, importAll, packageCapability, urls);
+   }
+   
+   public ClassPool createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll,
+         URL... urls) throws Exception
+   {
+      return test.createChildDomainParentLastClassPool(result, name, domainName, importAll,urls);
+   }
+   
+   public ClassPool createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentLastClassPool(result, name, domainName, importAll, parent, urls);
+   }
+   
+   public ClassPool createChildDomainParentLastLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentLastClassPool(result, name, domainName, parentDomainName, importAll, urls);
+   }
+   
+   public ClassPool createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll, URL[] excludes, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentLastClassPool(result, name, domainName, importAll, excludes, urls);
+   }
+   
+   public CtClass getMethodReturnType(CtClass clazz, String methodName) throws Exception
+   {
+      return clazz.getDeclaredMethod(methodName).getReturnType();
+   }
+   
+   /* (non-Javadoc)
+    * @see org.jboss.test.classpool.support.TestClassLoader#loadClass(java.lang.Object, java.lang.String)
+    */
+   public CtClass loadClass(ClassPool classPool, ClassPool expectedClassPool, String className) throws Exception
+   {
+      Class<?> clazz = test.assertLoadClass(className, classPool.getClassLoader(), expectedClassPool.getClassLoader());
+      CtClass ctClass = test.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;
+   }
+   
+   public void unregister(ClassPool classPool, Result result)
+   {
+      if (classPool != null)
+      {
+         test.unregisterClassPool(classPool);
+         test.assertNoClassLoader(result);
+      }
+   }
+
+}


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolTestScenario.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

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-11-27 05:18:29 UTC (rev 97063)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-11-27 06:29:02 UTC (rev 97064)
@@ -179,7 +179,7 @@
       return this.createClassLoader(result, name, importAll, (String) null, urls);
    }
    
-   private ClassLoader createClassLoader(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception
+   protected ClassLoader createClassLoader(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception
    {
       TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, urls);
       if (packageCapability != null)
@@ -803,7 +803,7 @@
       }
    }
    
-   protected void assertNoClassLoader(Result result) throws Exception
+   protected void assertNoClassLoader(Result result)
    {
       if (result == null)
       {
@@ -821,7 +821,7 @@
       assertNoClassLoader(getContextName(result.getFactory()));
    }
    
-   protected void assertNoClassLoader(String name) throws Exception
+   protected void assertNoClassLoader(String name)
    {
       try
       {

Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/SanityTestScenario.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/SanityTestScenario.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/SanityTestScenario.java	2009-11-27 06:29:02 UTC (rev 97064)
@@ -0,0 +1,149 @@
+/*
+ * 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.test;
+
+import java.net.URL;
+
+import org.jboss.test.classpool.support.BundleInfoBuilder;
+import org.jboss.test.classpool.support.Result;
+
+/**
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+
+public class SanityTestScenario extends TestScenario<Class<?>, ClassLoader>
+{
+   private JBossClClassPoolTest test = null;
+   
+   public SanityTestScenario(JBossClClassPoolTest test)
+   {
+      this.test = test;
+   }
+   
+   public ClassLoader cloneLoader(Class<?> clazz)
+   {
+      return clazz.getClassLoader();
+   }
+   
+   public ClassLoader getLoader(ClassLoader classLoader)
+   {
+      return classLoader;
+   }
+   
+   public ClassLoader getClassLoader(ClassLoader loader)
+   {
+      return loader;
+   }
+   
+   public String getClassName(Class<?> clazz)
+   {
+      return clazz.getName();
+   }
+   
+   public Class<?> loadClass(ClassLoader loader, ClassLoader expected, String className) throws Exception
+   {
+      return test.assertLoadClass(className, loader, expected);
+   }
+
+   /* (non-Javadoc)
+    * @see org.jboss.test.classpool.support.TestClassLoader#createLoader(org.jboss.test.classpool.support.Result, java.lang.String, boolean, java.net.URL[])
+    */
+   public ClassLoader createLoader(Result result, String name,
+         boolean importAll, URL... urls) throws Exception
+   {
+      return test.createClassLoader(result, name, importAll, urls);
+   }
+   
+   public ClassLoader createLoader(Result result, String name, boolean importAll, URL[] excludes, URL... urls) throws Exception
+   {
+      return test.createClassLoader(result, name, importAll, excludes, urls);
+   }
+   
+   public ClassLoader createLoader(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception
+   {
+      return test.createClassLoader(result, name, importAll, packageCapability, urls);
+   }
+   
+   public ClassLoader createLoader(Result result, String name, BundleInfoBuilder builder, URL... urls) throws Exception
+   {
+      return test.createClassLoader(result, name, builder, urls);
+   }
+   
+   public ClassLoader createChildDomainParentFirstLoader(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentFirstClassLoader(result, name, domainName, importAll, urls);
+   }
+   
+   public ClassLoader createChildDomainParentFirstLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, importAll, null, urls);
+   }
+   
+   public ClassLoader createChildDomainParentFirstLoader(Result result, String name, String domainName, boolean importAll, String packageCapability, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentFirstClassLoader(result, name, domainName, importAll, packageCapability, urls);
+   }
+   
+   public ClassLoader createChildDomainParentFirstLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, String packageCapability, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, importAll, packageCapability, urls);
+   }
+   
+   public ClassLoader createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll,
+         URL... urls) throws Exception
+   {
+      return test.createChildDomainParentLastClassLoader(result, name, domainName, importAll,urls);
+   }
+   
+   public ClassLoader createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentLastClassLoader(result, name, domainName, importAll, parent, urls);
+   }
+   
+   public ClassLoader createChildDomainParentLastLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentLastClassLoader(result, name, domainName, parentDomainName, importAll, urls);
+   }
+
+   public ClassLoader createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll, URL[] excludes, URL... urls) throws Exception
+   {
+      return test.createChildDomainParentLastClassLoader(result, name, domainName, importAll, excludes, urls);
+   }
+   public Class<?> getMethodReturnType(Class<?> clazz, String methodName) throws Exception
+   {
+      return clazz.getDeclaredMethod(methodName).getReturnType();
+   }
+   
+   /* (non-Javadoc)
+    * @see org.jboss.test.classpool.jbosscl.test.TestClassLoader#unregister(java.lang.Object)
+    */
+   public void unregister(ClassLoader classLoader, Result result)
+   {
+      if (classLoader != null)
+      {
+         test.unregisterClassLoader(classLoader);
+         test.assertNoClassLoader(result);
+      }
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/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/jbosscl/test/TestScenario.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/TestScenario.java	                        (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/TestScenario.java	2009-11-27 06:29:02 UTC (rev 97064)
@@ -0,0 +1,63 @@
+/*
+ * 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.test;
+
+import java.net.URL;
+
+import org.jboss.test.classpool.support.BundleInfoBuilder;
+import org.jboss.test.classpool.support.Result;
+
+/**
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+
+public abstract class TestScenario<C,L>
+{
+   public abstract L cloneLoader(C clazz);
+   public abstract L getLoader(ClassLoader classLoader);
+   public abstract ClassLoader getClassLoader(L loader);
+   public abstract String getClassName(C clazz);
+   public abstract L createLoader(Result result, String name, boolean importAll, URL... urls) throws Exception;
+   public abstract L createLoader(Result result, String name, boolean importAll, URL[] excludes, URL... urls) throws Exception;
+   public abstract L createLoader(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception;
+   public abstract L createLoader(Result result, String name, BundleInfoBuilder builder, URL... urls) throws Exception;
+   public abstract L createChildDomainParentFirstLoader(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception;
+   public abstract L createChildDomainParentFirstLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception;
+   public abstract L createChildDomainParentFirstLoader(Result result, String name, String domainName, boolean importAll, String packageCapability, URL... urls) throws Exception;
+   public abstract L createChildDomainParentFirstLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, String packageCapability, URL... urls) throws Exception;
+   public abstract L createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll, L parent, URL... urls) throws Exception;
+   public abstract L createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll,
+         URL... urls) throws Exception;
+   public abstract L createChildDomainParentLastLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception;
+   public abstract L createChildDomainParentLastLoader(Result result, String name, String domainName, boolean importAll, URL[] excludes, URL... urls) throws Exception;
+   
+   public C loadClass(L loader, String className) throws Exception
+   {
+      return loadClass(loader, loader, className);
+   }
+   public abstract C loadClass(L loader, L loader2, String className) throws Exception;
+   public abstract C getMethodReturnType(C clazz, String methodName) throws Exception;
+   public abstract void unregister(L loader, Result result);
+   
+}
\ No newline at end of file


Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/TestScenario.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native




More information about the jboss-cvs-commits mailing list