[jboss-cvs] JBossAS SVN: r97036 - in projects/jboss-classpool/trunk: src/test/java/org/jboss/test/classpool/jbosscl/test and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 26 11:12:30 EST 2009


Author: flavia.rainone at jboss.com
Date: 2009-11-26 11:12:29 -0500 (Thu, 26 Nov 2009)
New Revision: 97036

Modified:
   projects/jboss-classpool/trunk/pom.xml
   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
   projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java
Log:
[JBREFLECT-72] Fixed testIsolatedJars and ported testHierarchyJarsChildFirst and testDomainHierarchy tests.

Modified: projects/jboss-classpool/trunk/pom.xml
===================================================================
--- projects/jboss-classpool/trunk/pom.xml	2009-11-26 16:10:11 UTC (rev 97035)
+++ projects/jboss-classpool/trunk/pom.xml	2009-11-26 16:12:29 UTC (rev 97036)
@@ -156,16 +156,11 @@
                      <include name="org/jboss/test/classpool/support/excluded/jar/**"/>
                   </fileset>  
                 </jar>
-                <jar destfile="${project.build.directory}/j1.jar">
+               <jar destfile="${project.build.directory}/servlet.jar">
                   <fileset dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/jar/**"/>
+                     <include name="org/jboss/test/classpool/support/excluded/web/**"/>
                   </fileset>  
                 </jar>
-                <jar destfile="${project.build.directory}/j2.jar">
-                  <fileset dir="${project.build.testOutputDirectory}">
-                     <include name="org/jboss/test/classpool/support/excluded/jar/**"/>
-                  </fileset>  
-                </jar>
                 <jar destfile="${project.build.directory}/ui.jar">
                   <fileset dir="${project.build.testOutputDirectory}">
                      <include name="org/jboss/test/classpool/support/excluded/ui/**"/>

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-26 16:10:11 UTC (rev 97035)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java	2009-11-26 16:12:29 UTC (rev 97036)
@@ -44,6 +44,8 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
+import org.jboss.classloader.plugins.ClassLoaderUtils;
+import org.jboss.deployers.client.spi.Deployment;
 import org.jboss.test.classpool.support.Result;
 import org.jboss.test.classpool.support.SupportClasses;
 
@@ -78,6 +80,7 @@
    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);
    
    final static String STRING = String.class.getName();
    
@@ -96,14 +99,19 @@
    public void testJar() throws Exception
    {
       ClassPool classPool = null;
+      Result result = new Result();
       try
       {
-         classPool = createClassPool("simple.jar", true, SIMPLE_JAR);
+         classPool = createClassPool(result, "simple.jar", true, SIMPLE_JAR);
          assertClassPool(classPool, CLASS_PLAIN);
       }
       finally
       {
-         unregisterClassPool(classPool);
+         if (classPool != null)
+         {
+            unregisterClassPool(classPool);
+            assertNoClassPool(result);
+         }
       }
    }
    
@@ -118,22 +126,30 @@
       }
       finally
       {
-         unregisterClassPool(classPool);
-         assertNoClassPool(result);
+         if (classPool != null)
+         {
+            unregisterClassPool(classPool);
+            assertNoClassPool(result);
+         }
       }
    }
    
    public void testEjbJar() throws Exception
    {
       ClassPool classPool = null;
+      Result result = new Result();
       try
       {
-         classPool = createClassPool("ejbs.jar", true, EJB_JAR);
+         classPool = createClassPool(result, "ejbs.jar", true, EJB_JAR);
          assertClassPool(classPool, CLASS_SLS_BEAN, CLASS_SLS_INTERFACE);
       }
       finally
       {
-         unregisterClassPool(classPool);
+         if (classPool != null)
+         {
+            unregisterClassPool(classPool);
+            assertNoClassPool(result);
+         }
       }
    }
    
@@ -149,8 +165,11 @@
       }
       finally
       {
-         unregisterClassPool(classPool);
-         assertNoClassPool(result);
+         if (classPool != null)
+         {
+            unregisterClassPool(classPool);
+            assertNoClassPool(result);
+         }
       }
    }
    
@@ -189,12 +208,21 @@
       }
       finally
       {
-         unregisterClassPool(war1ClassPool);
-         assertNoClassPool(war1Result);
-         unregisterClassPool(war2ClassPool);
-         assertNoClassPool(war2Result);
-         unregisterClassPool(earClassPool);
-         assertNoClassPool(earResult);
+         if (war1ClassPool != null)
+         {
+            unregisterClassPool(war1ClassPool);
+            assertNoClassPool(war1Result);
+         }
+         if (war2ClassPool != null)
+         {
+            unregisterClassPool(war2ClassPool);
+            assertNoClassPool(war2Result);
+         }
+         if (earClassPool != null)
+         {
+            unregisterClassPool(earClassPool);
+            assertNoClassPool(earResult);
+         }
       }
    }
    
@@ -209,8 +237,11 @@
       }
       finally
       {
-         unregisterClassPool(earClassPool);
-         assertNoClassPool(earResult);
+         if (earClassPool != null)
+         {
+            unregisterClassPool(earClassPool);
+            assertNoClassPool(earResult);
+         }
       }
    }
    
@@ -232,10 +263,16 @@
       }
       finally
       {
-         unregisterClassPool(warClassPool);
-         assertNoClassPool(warResult);
-         unregisterClassPool(earClassPool);
-         assertNoClassPool(earResult);
+         if (warClassPool != null)
+         {
+            unregisterClassPool(warClassPool);
+            assertNoClassPool(warResult);
+         }
+         if (earClassPool != null)
+         {
+            unregisterClassPool(earClassPool);
+            assertNoClassPool(earResult);
+         }
       }
    }
    
@@ -250,8 +287,11 @@
       }
       finally
       {
-         unregisterClassPool(earClassPool);
-         assertNoClassPool(earResult);
+         if (earClassPool != null)
+         {
+            unregisterClassPool(earClassPool);
+            assertNoClassPool(earResult);
+         }
       }
    }
    
@@ -263,19 +303,88 @@
       Result result2 = new Result();
       try
       {
-         classPool1 = createClassPool(result1, "j1.jar", true, JAR_A_1);
-         classPool2 = createClassPool(result2, "j2.jar", true, JAR_A_2);
+         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
       {
-         unregisterClassPool(classPool1);
-         assertNoClassPool(result1);
-         unregisterClassPool(classPool2);
-         assertNoClassPool(result2);
+         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);
+         }
+      }
+   }
+   
    protected void assertClassPool(ClassPool parentClassPool, String... classNames) throws Exception
    {
       Map<String, ClassPool> map = new HashMap<String, ClassPool>();
@@ -325,8 +434,8 @@
       
       assertFalse(classLoader1.equals(classLoader2));
       Class<?> class1 = assertLoadClass(CLASS_A, classLoader1, classLoader1);
-      // FIXME
-      /*Class<?> class2 = assertLoadClass(CLASS_A, classLoader2, classLoader2);
+
+      Class<?> class2 = assertLoadClass(CLASS_A, classLoader2, classLoader2);
       assertNotSame("Should NOT be the same " + ClassLoaderUtils.classToString(class1) +" and "
             + ClassLoaderUtils.classToString(class2), class1, class2);
       
@@ -342,6 +451,30 @@
       CtClass ctClass4 = classPool4.getCtClass(class2.getName());
       assertEquals(ctClass2, ctClass4);
  
-      assertNotSame(ctClass3, 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);
+
+   }
 }
\ No newline at end of file

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-11-26 16:10:11 UTC (rev 97035)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-11-26 16:12:29 UTC (rev 97036)
@@ -421,7 +421,7 @@
       return createChildDomainParentFirstClassPool(null, name, domainName, parentDomainName, importAll, urls);
    }
    
-   private ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
+   protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
    {
       ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, importAll, urls);
       return assertRegisterClassLoader(loader);
@@ -454,7 +454,7 @@
       return createChildDomainParentLastClassPool(null, name, domainName, parentDomainName, importAll, urls);
    }
    
-   private ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
+   protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
    {
       ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, parentDomainName, importAll, urls);
       return assertRegisterClassLoader(loader);

Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java	2009-11-26 16:10:11 UTC (rev 97035)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java	2009-11-26 16:12:29 UTC (rev 97036)
@@ -57,6 +57,7 @@
    public final static String EAR_WAR = "war-in-ear.ear/simple.war";
    public final static String EAR_WAR_CP = "war-in-ear.ear/simple.war/WEB-INF/classes";
    public final static String EAR_JAR = "jar-in-ear.ear/simple.jar";
+   public final static String SERVLET_JAR = "servlet.jar";
    
    // TODO map the url to the corresponding package
    // TODO automatically replace .war by .war/WEB-INF/classes e lib???




More information about the jboss-cvs-commits mailing list