[jboss-cvs] JBossAS SVN: r97186 - in projects/jboss-classpool/trunk: src/main/java/org/jboss and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Nov 30 16:37:58 EST 2009
Author: flavia.rainone at jboss.com
Date: 2009-11-30 16:37:56 -0500 (Mon, 30 Nov 2009)
New Revision: 97186
Added:
projects/jboss-classpool/trunk/src/main/java/org/jboss/test/
projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/
projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/support/
projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/support/MicrocontainerFacade.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveSanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/DependencyTest.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainClassPoolTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainSanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainTest.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderClassPoolTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderSanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderTest.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyClassPoolTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencySanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyTest.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyClassPoolTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencySanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyTest.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleClassPoolTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleSanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleTest.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageClassPoolTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageSanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageTest.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportTest.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReplaceReferencesClassPoolTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryClassPoolTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositorySanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryTest.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageClassPoolTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageSanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageTest.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CLDeploymentBuilder.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassPoolTestScenario.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/DomainRegistry.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/LoaderRegistry.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoSuchClassLoaderException.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SanityTestScenario.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java
Removed:
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/ClassLoaderWithHierarchicalDomainSanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalParentLoaderSanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithModuleDependencySanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithPackageDependencySanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportModuleSanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportPackageSanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithUsesPackageSanityTestCase.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/ClassPoolWithHierarchicalDomainTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalParentLoaderTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithModuleDependencyTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithPackageDependencyTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportModuleTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportPackageTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithUsesPackageTestCase.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
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/BundleInfoBuilder.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CapabilityInfo.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ModuleOrPackageInfo.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/RequirementInfo.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/Result.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactoryFactory.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/a/
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/b/
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/ArchiveTest.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolDelegatingTestSuite.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolSanityTestSuite.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
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactory.java
projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java
Log:
[JBREFLECT-74] All the duplicate code in the tests has been removed. The cleanup of created classloaders is now performed automatically on tearDown (instead of every test having its own cleanup).
Modified: projects/jboss-classpool/trunk/pom.xml
===================================================================
--- projects/jboss-classpool/trunk/pom.xml 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/pom.xml 2009-11-30 21:37:56 UTC (rev 97186)
@@ -67,7 +67,7 @@
<version>2.4.3</version>
<configuration>
<!-- <useSystemClassLoader>true</useSystemClassLoader> -->
- <testFailureIgnore>true</testFailureIgnore>
+ <testFailureIgnore>false</testFailureIgnore>
<forkMode>always</forkMode>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<includes>
Added: projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/support/MicrocontainerFacade.java
===================================================================
--- projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/support/MicrocontainerFacade.java (rev 0)
+++ projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/support/MicrocontainerFacade.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,45 @@
+/*
+ * 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.support;
+
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+
+/**
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+
+public interface MicrocontainerFacade
+{
+ public void deploy(KernelDeployment deployment) throws Exception;
+
+ public Object getBean(Object name, ControllerState state);
+ public Object getBean(Object name);
+ public <T> T assertBean(Object name, Class<T> expected);
+
+ /**
+ * @param undeploy
+ */
+ public void undeploy(KernelDeployment undeploy);
+}
Property changes on: projects/jboss-classpool/trunk/src/main/java/org/jboss/test/classpool/support/MicrocontainerFacade.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Deleted: 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 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassLoaderSanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,51 +0,0 @@
-/*
- * 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
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-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveClassPoolTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -26,12 +26,15 @@
import junit.framework.Test;
import junit.framework.TestSuite;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
/**
- * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
+ * Executes the archive tests against a class pool test scenario.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
* @version $Revision$
*/
-
public class ArchiveClassPoolTestCase extends ArchiveTest<CtClass, ClassPool>
{
public static Test suite()
@@ -47,6 +50,6 @@
@Override
protected TestScenario<CtClass, ClassPool> getTestScenario()
{
- return new ClassPoolTestScenario(this);
+ return new ClassPoolTestScenario(getMicrocontainerFacade());
}
}
\ No newline at end of file
Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveSanityTestCase.java (from rev 97064, 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/ArchiveSanityTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveSanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,54 @@
+/*
+ * 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;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the archive tests against a sanity test scenario (for class loader behavior sanity
+ * checking).
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ArchiveSanityTestCase extends ArchiveTest<Class<?>, ClassLoader>
+{
+ public static Test suite()
+ {
+ return new TestSuite(ArchiveSanityTestCase.class);
+ }
+
+ public ArchiveSanityTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ {
+ return new SanityTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Modified: 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/ArchiveTest.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ArchiveTest.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -34,69 +34,22 @@
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.CLDeploymentBuilder;
import org.jboss.test.classpool.support.SupportClasses;
-
-
/**
+ * This class contains tests ported from deployers-vfs tests.
+ *
* @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
* @version $Revision$
*/
-
-public abstract class ArchiveTest<C, L> extends JBossClClassPoolTest
+public abstract class ArchiveTest<C, L> extends JBossClClassPoolTest<C, L>
{
- // 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);
@@ -106,343 +59,269 @@
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);
- }
+ CLDeploymentBuilder classLoaderBuilder = new CLDeploymentBuilder("simple.jar", SIMPLE_JAR);
+ L loader = testScenario.createLoader(classLoaderBuilder);
+ assertCanLoad(loader, CLASS_PLAIN);
}
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);
- }
+ CLDeploymentBuilder classLoaderBuilder = new CLDeploymentBuilder("simple.sar", SIMPLE_SAR);
+ L loader = testScenario.createLoader(classLoaderBuilder);
+ assertCanLoad(loader, CLASS_MBEAN);
}
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);
- }
+ CLDeploymentBuilder classLoaderBuilder = new CLDeploymentBuilder("ejbs.jar", EJB_JAR);
+ L loader = testScenario.createLoader(classLoaderBuilder);
+ assertCanLoad(loader, CLASS_SLS_BEAN, CLASS_SLS_INTERFACE);
}
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);
- }
+ CLDeploymentBuilder clBuilder = new CLDeploymentBuilder("simple.war", SIMPLE_WAR);
+ clBuilder.createDomain("simple.war", false);
+ L loader = testScenario.createLoader(clBuilder);
+ assertCanLoad(loader, CLASS_SERVLET);
}
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);
- }
+ // create the ear loader
+ CLDeploymentBuilder earCLBuilder = new CLDeploymentBuilder("simple.ear", SIMPLE_EAR_JAR,
+ SIMPLE_EAR_SAR, SIMPLE_EAR_EJB, SIMPLE_EAR_LIB1, SIMPLE_EAR_LIB2);
+ earCLBuilder.setExcludes(SIMPLE_EAR_WAR1, SIMPLE_EAR_WAR1_CP, SIMPLE_EAR_WAR1_LIB,
+ SIMPLE_EAR_WAR2, SIMPLE_EAR_WAR2_CP, SIMPLE_EAR_WAR2_LIB);
+ L earLoader = testScenario.createLoader(earCLBuilder);
+
+ // create the simple_ui.war loader
+ ClassLoader earClassLoader = testScenario.getClassLoader(earLoader);
+ CLDeploymentBuilder war1CLBuilder = new CLDeploymentBuilder(
+ "simple.ear/simple_ui.war", SIMPLE_EAR_WAR1_CP, SIMPLE_EAR_WAR1_LIB);
+ war1CLBuilder.createDomain("simple_ui.war", earClassLoader, false);
+ L war1Loader = testScenario.createLoader(war1CLBuilder);
+
+ // create the jsfapp.war loader
+ CLDeploymentBuilder war2CLBuilder = new CLDeploymentBuilder("simple.ear/jsfapp.war",
+ SIMPLE_EAR_WAR2_CP, SIMPLE_EAR_WAR2_LIB);
+ war2CLBuilder.createDomain("jsfapp.war", earClassLoader, false);
+ L war2Loader = testScenario.createLoader(war2CLBuilder);
+
+ // assert that the loaderse can load the classes
+ 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);
+
+ // assert simple hierarchy
+ assertSimpleHierarchy(earLoader, war1Loader);
}
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);
- }
+ CLDeploymentBuilder clBuilder = new CLDeploymentBuilder("top-level.ear", EAR_UTIL1, EAR_UTIL2);
+ L earLoader = testScenario.createLoader(clBuilder);
+ assertCanLoad(earLoader, CLASS_UTIL, CLASS_EXT);
}
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);
- }
+ // create ear loader
+ CLDeploymentBuilder earCLBuilder = new CLDeploymentBuilder("war-in-ear.ear");
+ earCLBuilder.setExcludes(EAR_WAR, EAR_WAR_CP);
+ L earLoader = testScenario.createLoader(earCLBuilder);
+
+ // create war loader
+ CLDeploymentBuilder warCLBuilder = new CLDeploymentBuilder(
+ "war-in-ear.ear/simple.war", EAR_WAR_CP);
+ warCLBuilder.createDomain("simple.war", testScenario.getClassLoader(earLoader), false);
+ L warLoader = testScenario.createLoader(warCLBuilder);
+
+ // assert warLoader can load CLASS_SERVLET
+ Map<String, L> classes = new HashMap<String, L>();
+ classes.put(CLASS_SERVLET, warLoader);
+ assertCanLoad(classes);
}
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);
- }
+ CLDeploymentBuilder earCLBuilder = new CLDeploymentBuilder("jar-in-ear.ear", EAR_JAR);
+ L earLoader = testScenario.createLoader(earCLBuilder);
+ assertCanLoad(earLoader, CLASS_PLAIN);
}
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);
- }
+ // create a1.jar loader
+ CLDeploymentBuilder cl1Builder = new CLDeploymentBuilder("a1.jar", JAR_A_1);
+ cl1Builder.createDomain("a1.jar_Domain", true);
+ L loader1 = testScenario.createLoader(cl1Builder);
+ // create a2.jar loader
+ CLDeploymentBuilder cl2Builder = new CLDeploymentBuilder("a2.jar", JAR_A_2);
+ cl2Builder.createDomain("a2.jar_Domain", true);
+ L loader2 = testScenario.createLoader(cl2Builder);
+ // assert proper isolation between the loaders
+ assertIsolated(loader1, loader2);
}
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);
- }
+ // creeate a1.jar loader
+ CLDeploymentBuilder clBuilder1 = new CLDeploymentBuilder("a1.jar", JAR_A_1);
+ clBuilder1.createDomain("a1.jar_Domain", true);
+ L loader1 = testScenario.createLoader(clBuilder1);
+
+ // create a2.jar loader
+ CLDeploymentBuilder clBuilder2 = new CLDeploymentBuilder("a2.jar", JAR_A_2);
+ clBuilder2.createDomain("a2.jar_Domain", "a1.jar_Domain", false);
+ L loader2 = testScenario.createLoader(clBuilder2);
+ assertIsolated(loader1, loader2);
}
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);
- }
+ // create simple.jar loader
+ CLDeploymentBuilder topCLBuilder = new CLDeploymentBuilder("simple.jar", SIMPLE_JAR);
+ topCLBuilder.createDomain("simple.jar_Domain", true);
+ L topLoader = testScenario.createLoader(topCLBuilder);
+
+ // create servlet.jar "left" loader
+ CLDeploymentBuilder leftCLBuilder = new CLDeploymentBuilder("servlet.jarL", SERVLET_JAR);
+ leftCLBuilder.createDomain("servlet.jar_LeftDomain", "simple.jar_Domain", true);
+ L leftLoader = testScenario.createLoader(leftCLBuilder);
+
+ // create servlet.jar "right" loader
+ CLDeploymentBuilder rightCLBuilder = new CLDeploymentBuilder("servlet.jarR", SERVLET_JAR);
+ rightCLBuilder.createDomain("servlet.jar_RightDomain", "simple.jar_Domain", true);
+ L rightLoader = testScenario.createLoader(rightCLBuilder);
+
+ // assert domain hierarchy
+ assertDomainHierarchy(topLoader, leftLoader, rightLoader);
}
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,
+ // create ptd-ear-1.0-SNAPSHOT.ear loader
+ CLDeploymentBuilder topCLBuilder = new CLDeploymentBuilder("ptd-ear-1.0-SNAPSHOT.ear",
+ PTD_EAR_LIB);
+ topCLBuilder.createDomain("ptd-ear-1.0-SNAPSHOT.ear_Domain", false);
+ topCLBuilder.setExcludes(PTD_JSF_WAR, PTD_JSF_WAR_LIB, PTD_WS_WAR, PTD_WS_WAR_LIB);
+ L topLoader = testScenario.createLoader(topCLBuilder);
+
+ // create ptd-jsf-1.0.-SNAPSHOT.war loader
+ CLDeploymentBuilder leftCLBuilder = new CLDeploymentBuilder(SupportClasses.PTD_JSF_WAR,
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);
- }
+ leftCLBuilder.createDomain("ptd-jsf-1.0-SNAPSHOT.war_Domain",
+ "ptd-ear-1.0-SNAPSHOT.ear_Domain", true);
+
+ // create ptd-ws-1.0-SNAPSHOT.war loader
+ L leftLoader = testScenario.createLoader(leftCLBuilder);
+ CLDeploymentBuilder rightCLBuilder = new CLDeploymentBuilder(SupportClasses.PTD_WS_WAR,
+ PTD_WS_WAR_LIB);
+ rightCLBuilder.createDomain("ptd-ws-1.0-SNAPSHOT.war_Domain",
+ "ptd-ear-1.0-SNAPSHOT.ear_Domain", true);
+ L rightLoader = testScenario.createLoader(rightCLBuilder);
+
+ // assert domain hierarchy
+ assertDomainHierarchy(topLoader, leftLoader, rightLoader);
}
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);
+ // create simple.jar loader
+ CLDeploymentBuilder jarCLBuilder = new CLDeploymentBuilder("simple.jar", SIMPLE_JAR);
+ L jarLoader = testScenario.createLoader(jarCLBuilder);
+
+ // create anys loader
+ CLDeploymentBuilder anysCLBuilder = new CLDeploymentBuilder("anys-classloader",
+ EXCLUDED_CLASSPATH);
+ anysCLBuilder.createPackage(SupportClasses.PACKAGE_WEB);
+ L anysLoader = testScenario.createLoader(anysCLBuilder);
+
+ // create AnyServlet bean meta data
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("AnyServlet", CLASS_SERVLET);
+ builder.setClassLoader(new AbstractDependencyValueMetaData("anys-classloader:0.0.0"));
+ super.deploy(builder.getBeanMetaData());
- 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);
- }
+ // assert AnyServlet bean
+ Object anys = assertBean("AnyServlet", Object.class);
+ Class<?> anysClass = anys.getClass();
+ ClassLoader anysCL = anysClass.getClassLoader();
+ assertSame(anysCL, testScenario.getClassLoader(anysLoader));
+ assertNotSame(anysCL, testScenario.getClassLoader(jarLoader));
+
+ // assert "nondeployment" module (nomenclature used by corresponding vfs-deployer test)
+ assertNonDeploymentModule(jarLoader, anysLoader);
}
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);
- }
+ // create simple.jar loader
+ CLDeploymentBuilder jarCLBuilder = new CLDeploymentBuilder("simple.jar", SIMPLE_JAR);
+ L jarLoader = testScenario.createLoader(jarCLBuilder);
+
+ // create anys loader
+ CLDeploymentBuilder anysCLBuilder = new CLDeploymentBuilder("anys-classloader",
+ EXCLUDED_CLASSPATH);
+ anysCLBuilder.createDomain("Anys_Domain", true);
+ anysCLBuilder.createPackage(SupportClasses.PACKAGE_WEB);
+ L anysLoader = testScenario.createLoader(anysCLBuilder);
+
+ // create tif loader
+ CLDeploymentBuilder tifCLBuilder = new CLDeploymentBuilder("tif-classloader",
+ EXCLUDED_CLASSPATH);
+ tifCLBuilder.createDomain("TIF_Domain", "Anys_Domain",true);
+ tifCLBuilder.createPackage(SupportClasses.PACKAGE_TIF);
+ L tifLoader = testScenario.createLoader(tifCLBuilder);
+
+ // create AnyServlet and TifTester beans
+ createHierarchyBeans(jarLoader);
+
+ // assert "nondeployment" module (nomenclature used by corresponding vfs-deployer test)
+ assertNonDeploymentModule(jarLoader, anysLoader, tifLoader);
}
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);
- }
+ // create simple.jar loader
+ CLDeploymentBuilder jarCLBuilder = new CLDeploymentBuilder("simple.jar", SIMPLE_JAR);
+ jarCLBuilder.createPackage(SupportClasses.PACKAGE_JAR);
+ L jarLoader = testScenario.createLoader(jarCLBuilder);
+
+ // create anys loader
+ CLDeploymentBuilder anysCLBuilder = new CLDeploymentBuilder("anys-classloader",
+ EXCLUDED_CLASSPATH);
+ anysCLBuilder.createModule("any-classloader:0.0.0$Module");
+ anysCLBuilder.createPackage(SupportClasses.PACKAGE_WEB);
+ anysCLBuilder.createRequirePackage(SupportClasses.PACKAGE_JAR);
+ L anysLoader = testScenario.createLoader(anysCLBuilder);
+
+ // create tif loader
+ CLDeploymentBuilder tifCLBuilder = new CLDeploymentBuilder("tif-classloader",
+ EXCLUDED_CLASSPATH);
+ tifCLBuilder.createModule("tif-classloader:0.0.0$Module");
+ tifCLBuilder.createPackage(SupportClasses.PACKAGE_TIF);
+ tifCLBuilder.createRequirePackage(SupportClasses.PACKAGE_WEB);
+ L tifLoader = testScenario.createLoader(tifCLBuilder);
+
+ // create AnyServlet and TifTester beans
+ createHierarchyBeans(jarLoader);
+
+ // assert "nondeployment" module (nomenclature used by corresponding vfs-deployer test)
+ assertNonDeploymentModule(jarLoader, anysLoader, tifLoader);
}
+ // ASSERT METHODS
+
protected void assertCanLoad(L parentLoader, String... classNames) throws Exception
{
Map<String, L> map = new HashMap<String, L>();
@@ -480,11 +359,11 @@
C class2 = testScenario.loadClass(loader2, CLASS_A);
assertNotSame("Should NOT be the same " + class1 +" and " + class2, class1, class2);
- L loader3 = testScenario.cloneLoader(class1);
+ L loader3 = testScenario.getLoader(class1);
C class3 = testScenario.loadClass(loader3, CLASS_A);
assertEquals(class1, class3);
- L loader4 = testScenario.cloneLoader(class2);
+ L loader4 = testScenario.getLoader(class2);
C class4 = testScenario.loadClass(loader4, CLASS_A);
assertEquals(class2, class4);
assertNotSame(class3, class4);
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalDomainSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalDomainSanityTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalDomainSanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,535 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.dependency.test.HierarchicalDomainUnitTestCase using our test framework,
- * ClassPoolWithHierarchicalDomainSanityTestCase replicates this with the javassist classpools
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithHierarchicalDomainSanityTestCase extends JBossClClassPoolTest
-{
- public ClassLoaderWithHierarchicalDomainSanityTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassLoaderWithHierarchicalDomainSanityTestCase.class);
- }
-
- public void testParentFirst() throws Exception
- {
- ClassLoader clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
-
- ClassLoader clChildA = null;
- Result resultChildA = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- clChildA = createChildDomainParentFirstClassLoader(resultChildA, "aChild", childDomainName, true, JAR_A_2);
- assertLoadClass(CLASS_A, clParentA);
- assertLoadClass(CLASS_A, clChildA, clParentA);
- assertCannotLoadClass(CLASS_B, clChildA);
-
- ClassLoader clB = null;
- Result resultB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, builderB, JAR_B_1);
-
- assertLoadClass(CLASS_A, clParentA);
- assertLoadClass(CLASS_B, clB);
- assertLoadClass(CLASS_A, clB, clParentA);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertNoClassLoader(resultB);
- }
- finally
- {
- unregisterClassLoader(clChildA);
- unregisterDomain(childDomainName);
- }
- assertNoClassLoader(resultChildA);
- }
- finally
- {
- unregisterClassLoader(clParentA);
- }
- assertNoClassLoader(resultParentA);
- }
-
- public void testParentLast() throws Exception
- {
- ClassLoader clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
-
- ClassLoader clChildA = null;
- Result resultChildA = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- clChildA = createChildDomainParentLastClassLoader(resultChildA, "aChild", childDomainName, true, JAR_A_2);
- assertLoadClass(CLASS_A, clParentA);
- assertLoadClass(CLASS_A, clChildA);
- assertCannotLoadClass(CLASS_B, clChildA);
-
- ClassLoader clB = null;
- Result resultB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- clB = createChildDomainParentLastClassLoader(resultB, "b", childDomainName, builderB, JAR_B_1);
-
- assertLoadClass(CLASS_A, clChildA);
- assertLoadClass(CLASS_B, clB);
- assertLoadClass(CLASS_A, clB, clChildA);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertNoClassLoader(resultB);
- }
- finally
- {
- unregisterClassLoader(clChildA);
- unregisterDomain(childDomainName);
- }
- assertNoClassLoader(resultChildA);
- }
- finally
- {
- unregisterClassLoader(clParentA);
- }
- assertNoClassLoader(resultParentA);
- }
-
- public void testParentLastNotInChild() throws Exception
- {
- ClassLoader clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
-
- ClassLoader clB = null;
- Result resultB = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- clB = createChildDomainParentLastClassLoader(resultB, "b", childDomainName, builderB, JAR_B_1);
-
- assertLoadClass(CLASS_A, clParentA);
- assertLoadClass(CLASS_B, clB);
- assertLoadClass(CLASS_A, clB, clParentA);
- }
- finally
- {
- unregisterClassLoader(clB);
- unregisterDomain(childDomainName);
- }
- assertNoClassLoader(resultB);
- }
- finally
- {
- unregisterClassLoader(clParentA);
- }
- assertNoClassLoader(resultParentA);
- }
-
- public void testParentFirstWrongWayAround() throws Exception
- {
- ClassLoader clB = null;
- Result resultB = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- try
- {
- clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, builderB, JAR_B_1);
- fail("Should be no loader");
- }
- catch(NoSuchClassLoaderException e)
- {
- }
- assertNoClassLoader(resultB);
-
- ClassLoader clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
-
- clB = assertClassLoader(resultB.getFactory());
- assertLoadClass(CLASS_A, clParentA);
- assertLoadClass(CLASS_A, clB, clParentA);
- assertLoadClass(CLASS_B, clB);
- }
- finally
- {
- unregisterClassLoader(clParentA);
- }
- assertNoClassLoader(resultParentA);
- }
- finally
- {
- unregisterClassLoader(clB);
- unregisterDomain(childDomainName);
- }
- assertNoClassLoader(resultB);
- }
-
- public void testParentLastWrongWayAround() throws Exception
- {
- ClassLoader clB = null;
- Result resultB = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- try
- {
- clB = createChildDomainParentLastClassLoader(resultB, "b", childDomainName, builderB, JAR_B_1);
- fail("Should be no loader");
- }
- catch(NoSuchClassLoaderException e)
- {
- }
- assertNoClassLoader(resultB);
-
- ClassLoader clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
-
- clB = assertClassLoader(resultB.getFactory());
- assertLoadClass(CLASS_A, clParentA);
- assertLoadClass(CLASS_A, clB, clParentA);
- assertLoadClass(CLASS_B, clB);
- }
- finally
- {
- unregisterClassLoader(clParentA);
- }
- assertNoClassLoader(resultParentA);
- }
- finally
- {
- unregisterClassLoader(clB);
- unregisterDomain(childDomainName);
- }
- }
-
- public void testParentRedeploy() throws Exception
- {
- ClassLoader clB = null;
- Result resultB = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- try
- {
- clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, builderB, JAR_B_1);
- fail("Should be no loader");
- }
- catch(NoSuchClassLoaderException e)
- {
- }
- assertNoClassLoader(resultB);
-
- ClassLoader clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
-
- clB = assertClassLoader(resultB.getFactory());
- assertLoadClass(CLASS_A, clParentA);
- assertLoadClass(CLASS_A, clB, clParentA);
- assertLoadClass(CLASS_B, clB);
- }
- finally
- {
- unregisterClassLoader(clParentA);
- }
-
- assertNoClassLoader(resultParentA);
- assertNoClassLoader(resultB);
-
- try
- {
- clParentA = createClassLoader(resultParentA, "aParent", true, JAR_A_1);
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
-
- clB = assertClassLoader(resultB.getFactory());
- assertLoadClass(CLASS_A, clParentA);
- assertLoadClass(CLASS_A, clB, clParentA);
- assertLoadClass(CLASS_B, clB);
- }
- finally
- {
- unregisterClassLoader(clParentA);
- }
- assertNoClassLoader(resultParentA);
- }
- finally
- {
- unregisterClassLoader(clB);
- unregisterDomain(childDomainName);
- }
- assertNoClassLoader(resultB);
- }
-
- public void testParentOtherDomain() throws Exception
- {
- ClassLoader clParentA = null;
- Result resultParentA = new Result();
- final String parentDomainName = "ParentDomain";
- try
- {
- clParentA = createChildDomainParentFirstClassLoader(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
-
- ClassLoader clB = null;
- Result resultB = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
- assertLoadClass(CLASS_A, clParentA);
- assertLoadClass(CLASS_B, clB);
- assertLoadClass(CLASS_A, clB, clParentA);
- }
- finally
- {
- unregisterClassLoader(clB);
- unregisterDomain(childDomainName);
- }
- }
- finally
- {
- unregisterClassLoader(clParentA);
- unregisterDomain(parentDomainName);
- }
- }
-
- // JBREFLECT-65
- public void testParentOtherDomainClassloader() throws Exception
- {
- ClassLoader clParentA = null;
- Result resultParentA = new Result();
- final String parentDomainName = "ParentDomain";
- try
- {
- clParentA = createChildDomainParentFirstClassLoader(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
-
- ClassLoader clB = null;
- Result resultB = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
- assertLoadClass(CLASS_A, clParentA);
- assertLoadClass(CLASS_B, clB);
- assertLoadClass(CLASS_A, clB, clParentA);
- }
- finally
- {
- unregisterClassLoader(clB);
- unregisterDomain(childDomainName);
- }
- }
- finally
- {
- unregisterClassLoader(clParentA);
- unregisterDomain(parentDomainName);
- }
- }
-
- public void testParentOtherDomainLazy() throws Exception
- {
- ClassLoader clB = null;
- Result resultB = new Result();
- final String parentDomainName = "ParentDomain";
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- try
- {
- clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
- fail("Should be no loader");
- }
- catch(NoSuchClassLoaderException e)
- {
- }
- assertNoClassLoader(resultB);
-
- ClassLoader clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createChildDomainParentFirstClassLoader(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
-
- clB = assertClassLoader(resultB.getFactory());
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
- assertLoadClass(CLASS_A, clB, clParentA);
- }
- finally
- {
- unregisterClassLoader(clParentA);
- unregisterDomain(parentDomainName);
- }
- assertNoClassLoader(resultParentA);
- }
- finally
- {
- unregisterClassLoader(clB);
- unregisterDomain(childDomainName);
- }
- assertNoClassLoader(resultB);
- }
-
- public void testParentRedeployOtherDomain() throws Exception
- {
- ClassLoader clB = null;
- Result resultB = new Result();
- final String parentDomainName = "ParentDomain";
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- try
- {
- clB = createChildDomainParentFirstClassLoader(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
- fail("Should be no loader");
- }
- catch(NoSuchClassLoaderException e)
- {
- }
- assertNoClassLoader(resultB);
-
- ClassLoader clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createChildDomainParentFirstClassLoader(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
-
- clB = assertClassLoader(resultB.getFactory());
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
- assertLoadClass(CLASS_A, clB, clParentA);
- }
- finally
- {
- unregisterClassLoader(clParentA);
- unregisterDomain(parentDomainName);
- }
- assertNoClassLoader(resultParentA);
- assertNoClassLoader(resultB);
-
- try
- {
- clParentA = createChildDomainParentFirstClassLoader(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
-
- clB = assertClassLoader(resultB.getFactory());
- assertLoadClass(CLASS_A, clParentA);
- assertCannotLoadClass(CLASS_B, clParentA);
- assertLoadClass(CLASS_A, clB, clParentA);
- }
- finally
- {
- unregisterClassLoader(clParentA);
- unregisterDomain(parentDomainName);
- }
- }
- finally
- {
- unregisterClassLoader(clB);
- unregisterDomain(childDomainName);
- }
- assertNoClassLoader(resultB);
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalParentLoaderSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalParentLoaderSanityTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithHierarchicalParentLoaderSanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,129 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-
-import java.net.URL;
-
-import junit.framework.Test;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloader.spi.filter.ClassFilter;
-import org.jboss.test.classpool.support.NoMatchClassFilter;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloader.domain.test.HierarchicalParentLoaderUnitTestCase using our test framework,
- * ClassPoolWithHierarchicalParentLoaderUnitTestCaseSanityTestCase replicates this with the javassist classpools
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithHierarchicalParentLoaderSanityTestCase extends JBossClClassPoolTest
-{
- public ClassLoaderWithHierarchicalParentLoaderSanityTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassLoaderWithHierarchicalParentLoaderSanityTestCase.class);
- }
-
- public void testHierarchyBefore() throws Exception
- {
- runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.BEFORE, true);
- }
-
-
- public void testHierarchyBeforeNotFound() throws Exception
- {
- runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.BEFORE, false, false);
- }
-
- public void testHierarchyAfterNotReached() throws Exception
- {
- runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.AFTER_BUT_JAVA_BEFORE, false);
- }
-
- public void testHierarchyAfterReached() throws Exception
- {
- runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.AFTER_BUT_JAVA_BEFORE, null, true);
- }
-
- public void testHierarchyFiltered() throws Exception
- {
- NoMatchClassFilter filter = new NoMatchClassFilter(CLASS_A);
- runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, new ParentPolicy(filter, ClassFilter.NOTHING), false);
-
- assertTrue("Should have been filtered", filter.filtered);
- }
-
-
- private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean expectedParent) throws Exception
- {
- runTest(parentParentPolicy, childParentPolicy, true, JAR_A_2, expectedParent);
- }
-
- private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean createParent, boolean expectedParent) throws Exception
- {
- runTest(parentParentPolicy, childParentPolicy, createParent, JAR_A_2, expectedParent);
- }
-
- private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, URL url, boolean expectedParent) throws Exception
- {
- runTest(parentParentPolicy, childParentPolicy, true, url, expectedParent);
- }
-
- private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean createParent, URL childURL, boolean expectedParent) throws Exception
- {
- final String parentName = "parent";
- final String childName = "child";
- ClassLoaderDomain parent = system.createAndRegisterDomain(parentName, parentParentPolicy);
- ClassLoaderDomain child = system.createAndRegisterDomain(childName, childParentPolicy, parent);
-
- ClassLoader parentLoader = null;
- ClassLoader childLoader = null;
- try
- {
- //Since the domain is created first, the first/last flag from these two methods is ignored, instead the
- //policy used when creating the domain is used
- if (createParent)
- {
- parentLoader = createChildDomainParentLastClassLoader("ParentLoader", parentName, true, JAR_A_1);
- }
- childLoader = createChildDomainParentLastClassLoader("ChildLoader", childName, parentName, true, childURL);
- assertLoadClass(CLASS_A, childLoader, expectedParent ? parentLoader : childLoader);
- }
- finally
- {
- unregisterClassLoader(parentLoader);
- unregisterClassLoader(childLoader);
- unregisterDomain(child);
- unregisterDomain(parent);
- }
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithModuleDependencySanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithModuleDependencySanityTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithModuleDependencySanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,357 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import junit.framework.Test;
-
-import org.jboss.classloading.spi.version.VersionRange;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.vfs.metadata.test.ModuleDependencyUnitTestCase using our test framework,
- * the original tests are testImportNoVersionCheck, testImportVersionCheck and testImportVersionCheckFailed.
- * ClassPoolWithModuleDependencyTestCase replicates this with the javassist classpools
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithModuleDependencySanityTestCase extends JBossClClassPoolTest
-{
-
- public ClassLoaderWithModuleDependencySanityTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassLoaderWithModuleDependencySanityTestCase.class);
- }
-
- public void testImportNoVersionCheck() throws Exception
- {
- ClassLoader clA = null;
- Result resultA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA").
- createPackage(PACKAGE_A);
- clA = createClassLoader(resultA, "A", builderA, JAR_A_1);
-
- Class<?> aFromA = assertLoadClass(CLASS_A, clA, clA);
- assertCannotLoadClass(CLASS_B, clA);
-
- ClassLoader clB = null;
- Result resultB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createModule("ModuleB").
- createRequireModule("ModuleA");
- clB = createClassLoader(resultB, "B", builderB, JAR_B_1);
-
- Class<?> aFromA1 = assertLoadClass(CLASS_A, clA, clA);
- assertSame(aFromA, aFromA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertLoadClass(CLASS_B, clB, clB);
- Class<?> aFromB = assertLoadClass(CLASS_A, clB, clA);
- assertSame(aFromA, aFromB);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- Class<?> aFromA1 = assertLoadClass(CLASS_A, clA);
- assertSame(aFromA, aFromA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertNoClassLoader(resultB);
- }
- finally
- {
- unregisterClassLoader(clA);
- }
- assertNoClassLoader(resultA);
- }
-
- public void testImportVersionCheck() throws Exception
- {
- ClassLoader clA = null;
- Result resultA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA", "1.0.0").
- createPackage(PACKAGE_A);
- clA = createClassLoader(resultA, "A", builderA, JAR_A_1);
- Class<?> classA = assertLoadClass(CLASS_A, clA);
- assertCannotLoadClass(CLASS_B, clA);
-
- ClassLoader clB = null;
- Result resultB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequireModule("ModuleA", new VersionRange("1.0.0", "2.0.0")).
- createPackage(PACKAGE_B);
- clB = createClassLoader(resultB, "B", builderB, JAR_B_1);
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertLoadClass(CLASS_B, clB);
- classA1 = assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertNoClassLoader(resultB);
-
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassLoader(clA);
- }
- assertNoClassLoader(resultA);
- }
-
- public void testImportVersionCheckFailed() throws Exception
- {
- ClassLoader clA = null;
- Result resultA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA", "3.0.0").
- createPackage(PACKAGE_A);
- clA = createClassLoader(resultA, "A", builderA, JAR_A_1);
- Class<?> classA = assertLoadClass(CLASS_A, clA);
- assertCannotLoadClass(CLASS_B, clA);
- Result resultB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequireModule("ModuleA", new VersionRange("1.0.0", "2.0.0")).
- createPackage(PACKAGE_B);
- try
- {
- createClassLoader(resultB, "B", builderB, JAR_B_1);
- fail("Should not have been able to create loader");
- }
- catch(NoSuchClassLoaderException expected)
- {
- }
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertNoClassLoader(resultB);
- }
- finally
- {
- unregisterClassLoader("B");
- }
- assertNoClassLoader(resultB);
-
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassLoader(clA);
- }
- assertNoClassLoader(resultA);
- }
-
- //These are my extra tests
- public void testSeveralModulesWithSamePackages() throws Exception
- {
- ClassLoader clAModuleX = null;
- ClassLoader clAModuleA = null;
- ClassLoader clAModuleY = null;
- Result rAX = new Result();
- Result rAA = new Result();
- Result rAY = new Result();
- try
- {
- BundleInfoBuilder builderAX = BundleInfoBuilder.getBuilder().
- createModule("ModuleX").
- createPackage(PACKAGE_A);
- clAModuleX = createClassLoader(rAX, "X", builderAX, JAR_A_1);
-
- BundleInfoBuilder builderAA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA").
- createPackage(PACKAGE_A);
- clAModuleA = createClassLoader(rAA, "A", builderAA, JAR_A_1);
-
- BundleInfoBuilder builderAY = BundleInfoBuilder.getBuilder().
- createModule("ModuleY").
- createPackage(PACKAGE_A);
- clAModuleY = createClassLoader(rAY, "Y", builderAY, JAR_A_1);
-
- Class<?> classAX = assertLoadClass(CLASS_A, clAModuleX);
- Class<?> classAA = assertLoadClass(CLASS_A, clAModuleA);
- Class<?> classAY = assertLoadClass(CLASS_A, clAModuleY);
- assertCannotLoadClass(CLASS_B, clAModuleX);
- assertCannotLoadClass(CLASS_B, clAModuleA);
- assertCannotLoadClass(CLASS_B, clAModuleY);
-
- ClassLoader clB = null;
- Result resultB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequireModule("ModuleA").
- createPackage(PACKAGE_B);
- clB = createClassLoader(resultB, "B", builderB, JAR_B_1);
- Class<?> classAX1 = assertLoadClass(CLASS_A, clAModuleX);
- assertSame(classAX, classAX1);
- Class<?> classAA1 = assertLoadClass(CLASS_A, clAModuleA);
- assertSame(classAA, classAA1);
- Class<?> classAY1 = assertLoadClass(CLASS_A, clAModuleY);
- assertSame(classAY, classAY1);
- assertCannotLoadClass(CLASS_B, clAModuleX);
- assertCannotLoadClass(CLASS_B, clAModuleA);
- assertCannotLoadClass(CLASS_B, clAModuleY);
-
- assertLoadClass(CLASS_B, clB, clB);
- Class<?> aFromB = assertLoadClass(CLASS_A, clB, clAModuleA);
- assertSame(aFromB, classAA);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertNoClassLoader(resultB);
-
- Class<?> classAX1 = assertLoadClass(CLASS_A, clAModuleX);
- assertSame(classAX, classAX1);
- Class<?> classAA1 = assertLoadClass(CLASS_A, clAModuleA);
- assertSame(classAA, classAA1);
- Class<?> classAY1 = assertLoadClass(CLASS_A, clAModuleY);
- assertSame(classAY, classAY1);
- assertCannotLoadClass(CLASS_B, clAModuleX);
- assertCannotLoadClass(CLASS_B, clAModuleA);
- assertCannotLoadClass(CLASS_B, clAModuleY);
- }
- finally
- {
- unregisterClassLoader(clAModuleY);
- unregisterClassLoader(clAModuleA);
- unregisterClassLoader(clAModuleX);
- }
- assertNoClassLoader(rAY);
- assertNoClassLoader(rAA);
- assertNoClassLoader(rAX);
- }
-
- public void testSeveralModulesWithSameNamesDifferentVersions() throws Exception
- {
- ClassLoader clAModuleA1 = null;
- ClassLoader clAModuleA2 = null;
- ClassLoader clAModuleA3 = null;
- Result rA1 = new Result();
- Result rA2 = new Result();
- Result rA3 = new Result();
- try
- {
- BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
- createModule("ModuleA", "1.0.0").
- createPackage(PACKAGE_A);
- clAModuleA1 = createClassLoader(rA1, "X", builderA1, JAR_A_1);
-
- BundleInfoBuilder builderA2 = BundleInfoBuilder.getBuilder().
- createModule("ModuleA", "2.0.0").
- createPackage(PACKAGE_A);
- clAModuleA2 = createClassLoader(rA2, "A", builderA2, JAR_A_1);
-
- BundleInfoBuilder builderA3 = BundleInfoBuilder.getBuilder().
- createModule("ModuleA", "3.0.0").
- createPackage(PACKAGE_A);
- clAModuleA3 = createClassLoader(rA3, "Y", builderA3, JAR_A_1);
-
- Class<?> classAX = assertLoadClass(CLASS_A, clAModuleA1);
- Class<?> classAA = assertLoadClass(CLASS_A, clAModuleA2);
- Class<?> classAY = assertLoadClass(CLASS_A, clAModuleA3);
- assertCannotLoadClass(CLASS_B, clAModuleA1);
- assertCannotLoadClass(CLASS_B, clAModuleA2);
- assertCannotLoadClass(CLASS_B, clAModuleA3);
-
- ClassLoader clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequireModule("ModuleA", new VersionRange("2.0.0", true, "3.0.0", false)).
- createPackage(PACKAGE_B);
- clB = createClassLoader(rB, "B", builderB, JAR_B_1);
- Class<?> classAX1 = assertLoadClass(CLASS_A, clAModuleA1);
- assertSame(classAX, classAX1);
- Class<?> classAA1 = assertLoadClass(CLASS_A, clAModuleA2);
- assertSame(classAA, classAA1);
- Class<?> classAY1 = assertLoadClass(CLASS_A, clAModuleA3);
- assertSame(classAY, classAY1);
- assertCannotLoadClass(CLASS_B, clAModuleA1);
- assertCannotLoadClass(CLASS_B, clAModuleA2);
- assertCannotLoadClass(CLASS_B, clAModuleA3);
-
- assertLoadClass(CLASS_B, clB, clB);
- Class<?> aFromB = assertLoadClass(CLASS_A, clB, clAModuleA2);
- assertSame(aFromB, classAA);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertNoClassLoader(rB);
-
- Class<?> classAX1 = assertLoadClass(CLASS_A, clAModuleA1);
- assertSame(classAX, classAX1);
- Class<?> classAA1 = assertLoadClass(CLASS_A, clAModuleA2);
- assertSame(classAA, classAA1);
- Class<?> classAY1 = assertLoadClass(CLASS_A, clAModuleA3);
- assertSame(classAY, classAY1);
- assertCannotLoadClass(CLASS_B, clAModuleA1);
- assertCannotLoadClass(CLASS_B, clAModuleA2);
- assertCannotLoadClass(CLASS_B, clAModuleA3);
- }
- finally
- {
- unregisterClassLoader(clAModuleA3);
- unregisterClassLoader(clAModuleA2);
- unregisterClassLoader(clAModuleA1);
- }
- assertNoClassLoader(rA1);
- assertNoClassLoader(rA2);
- assertNoClassLoader(rA3);
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithPackageDependencySanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithPackageDependencySanityTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithPackageDependencySanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,272 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import junit.framework.Test;
-
-import org.jboss.classloading.spi.version.VersionRange;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.vfs.metadata.test.PackageDependencyUnitTestCase using our test framework,
- * the original tests are testImportNoVersionCheck, testImportVersionCheck and testImportVersionCheckFailed.
- * ClassPoolWithPackageDependencyTestCase replicates this with the javassist classpools
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithPackageDependencySanityTestCase extends JBossClClassPoolTest
-{
-
- public ClassLoaderWithPackageDependencySanityTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassLoaderWithPackageDependencySanityTestCase.class);
- }
-
- public void testImportNoVersionCheck() throws Exception
- {
- ClassLoader clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA").
- createPackage(PACKAGE_A);
- clA = createClassLoader(rA, "A", builderA, JAR_A_1);
- Class<?> classA = assertLoadClass(CLASS_A, clA);
- assertCannotLoadClass(CLASS_B, clA);
-
- ClassLoader clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createPackage(PACKAGE_B).
- createRequirePackage(PACKAGE_A);
- clB = createClassLoader(rB, "B", builderB, JAR_B_1);
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertLoadClass(CLASS_B, clB);
- Class<?> aFromB = assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, aFromB);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertNoClassLoader(rB);
-
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassLoader(clA);
- }
- assertNoClassLoader(rA);
- }
-
- public void testImportVersionCheck() throws Exception
- {
- ClassLoader clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA").
- createPackage(PACKAGE_A, "1.0.0");
- clA = createClassLoader(rA, "A", builderA, JAR_A_1);
- Class<?> classA = assertLoadClass(CLASS_A, clA);
- assertCannotLoadClass(CLASS_B, clA);
-
- ClassLoader clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createPackage(PACKAGE_B).
- createRequirePackage(PACKAGE_A, new VersionRange("1.0.0", "2.0.0"));
- clB = createClassLoader(rB, "B", builderB, JAR_B_1);
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertLoadClass(CLASS_B, clB);
- Class<?> aFromB = assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, aFromB);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertNoClassLoader(rB);
-
- assertLoadClass(CLASS_A, clA);
- assertCannotLoadClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassLoader(clA);
- }
- assertNoClassLoader(rA);
- }
-
- public void testImportVersionCheckFailed() throws Exception
- {
- ClassLoader clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA").
- createPackage(PACKAGE_A, "3.0.0");
- clA = createClassLoader(rA, "A", builderA, JAR_A_1);
- Class<?> classA = assertLoadClass(CLASS_A, clA);
- assertCannotLoadClass(CLASS_B, clA);
-
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createPackage(PACKAGE_B).
- createRequirePackage(PACKAGE_A, new VersionRange("1.0.0", "2.0.0"));
- try
- {
- createClassLoader(rB, "B", builderB, JAR_B_1);
- fail("Should not have been able to create loader");
- }
- catch(NoSuchClassLoaderException expected)
- {
- }
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassLoader("B");
- }
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassLoader(clA);
- }
- }
-
- //These are mine
-
- public void testSeveralModulesWithSamePackagesDifferentVersions() throws Exception
- {
- ClassLoader clA1 = null;
- ClassLoader clA2 = null;
- ClassLoader clA3 = null;
- Result rA1 = new Result();
- Result rA2 = new Result();
- Result rA3 = new Result();
- try
- {
- BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
- createModule("PackageA").
- createPackage(PACKAGE_A, "1.0.0");
- clA1 = createClassLoader(rA1, "A1", builderA1, JAR_A_1);
-
- BundleInfoBuilder builderA2 = BundleInfoBuilder.getBuilder().
- createModule("PackageA").
- createPackage(PACKAGE_A, "2.0.0");
- clA2 = createClassLoader(rA2, "A2", builderA2, JAR_A_1);
-
- BundleInfoBuilder builderA3 = BundleInfoBuilder.getBuilder().
- createModule("PackageA").
- createPackage(PACKAGE_A, "3.0.0");
- clA3 = createClassLoader(rA3, "A3", builderA3, JAR_A_1);
-
- Class<?> classA1 = assertLoadClass(CLASS_A, clA1);
- Class<?> classA2 = assertLoadClass(CLASS_A, clA2);
- Class<?> classA3 = assertLoadClass(CLASS_A, clA3);
- assertCannotLoadClass(CLASS_B, clA1);
- assertCannotLoadClass(CLASS_B, clA2);
- assertCannotLoadClass(CLASS_B, clA3);
-
- ClassLoader clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createPackage(PACKAGE_B).
- createRequirePackage(PACKAGE_A, new VersionRange("1.0.0", false, "2.0.0", true));
- clB = createClassLoader(rB, "B", builderB, JAR_B_1);
- Class<?> classA11 = assertLoadClass(CLASS_A, clA1);
- assertSame(classA1, classA11);
- Class<?> classA21 = assertLoadClass(CLASS_A, clA2);
- assertSame(classA2, classA21);
- Class<?> classA31 = assertLoadClass(CLASS_A, clA3);
- assertSame(classA3, classA31);
- assertCannotLoadClass(CLASS_B, clA1);
- assertCannotLoadClass(CLASS_B, clA2);
- assertCannotLoadClass(CLASS_B, clA3);
-
- assertLoadClass(CLASS_B, clB);
- Class<?> classAFromB = assertLoadClass(CLASS_A, clB, clA2);
- assertSame(classA2, classAFromB);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertNoClassLoader(rB);
- Class<?> classA11 = assertLoadClass(CLASS_A, clA1);
- assertSame(classA1, classA11);
- Class<?> classA21 = assertLoadClass(CLASS_A, clA2);
- assertSame(classA2, classA21);
- Class<?> classA31 = assertLoadClass(CLASS_A, clA3);
- assertSame(classA3, classA31);
- assertCannotLoadClass(CLASS_B, clA1);
- assertCannotLoadClass(CLASS_B, clA2);
- assertCannotLoadClass(CLASS_B, clA3);
- }
- finally
- {
- unregisterClassLoader(clA3);
- unregisterClassLoader(clA2);
- unregisterClassLoader(clA1);
- }
- assertNoClassLoader(rA1);
- assertNoClassLoader(rA2);
- assertNoClassLoader(rA3);
-
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportModuleSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportModuleSanityTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportModuleSanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,226 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.vfs.metadata.test.ReExportPackageUnitTestCase using our test framework,
- * ClassPoolWithReExportPackageTestCase replicates this with the javassist classpools
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithReExportModuleSanityTestCase extends JBossClClassPoolTest
-{
-
- public ClassLoaderWithReExportModuleSanityTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassLoaderWithReExportModuleSanityTestCase.class);
- }
-
- public void testReExport() throws Exception
- {
- ClassLoader clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("a").
- createPackage(PACKAGE_A);
- clA = createClassLoader(rA, "A", builderA, JAR_A_1);
- Class<?> classA = assertLoadClass(CLASS_A, clA);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
-
- ClassLoader clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createModule("b").
- createPackage(PACKAGE_B).
- createReExportModule("a");
- clB = createClassLoader(rB, "B", builderB, JAR_B_1);
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- assertLoadClass(CLASS_A, clB, clA);
- Class<?> classB = assertLoadClass(CLASS_B, clB);
- assertCannotLoadClass(CLASS_C, clB);
-
- ClassLoader clC = null;
- Result rC = new Result();
- try
- {
- BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
- createRequireModule("b");
- clC = createClassLoader(rC, "C", builderC, JAR_C_1);
-
- classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- classA1 = assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- Class<?> classB1 = assertLoadClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadClass(CLASS_C, clB);
- classA1 = assertLoadClass(CLASS_A, clC, clA);
- assertSame(classA, classA1);
- classB1 = assertLoadClass(CLASS_B, clC, clB);
- assertSame(classB, classB1);
- assertLoadClass(CLASS_C, clC);
- }
- finally
- {
- unregisterClassLoader(clC);
- }
- assertNoClassLoader(rC);
- classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- classA1 = assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- Class<?> classB1 = assertLoadClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadClass(CLASS_C, clB);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertNoClassLoader(rB);
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- }
- finally
- {
- unregisterClassLoader(clA);
- }
- assertNoClassLoader(rA);
- }
-
- public void testNoReExport() throws Exception
- {
- ClassLoader clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("a").
- createPackage(PACKAGE_A);
- clA = createClassLoader(rA, "A", builderA, JAR_A_1);
- Class<?> classA = assertLoadClass(CLASS_A, clA);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
-
- ClassLoader clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createModule("b").
- createPackage(PACKAGE_B).
- createReExportModule("a");
- clB = createClassLoader(rB, "B", builderB, JAR_B_1);
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- classA1 = assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- Class<?> classB = assertLoadClass(CLASS_B, clB);
- assertCannotLoadClass(CLASS_C, clB);
-
- ClassLoader clC = null;
- Result rC = new Result();
- try
- {
- BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_B);
- clC = createClassLoader(rC, "C", builderC, JAR_C_1);
-
- classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- classA1 = assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- Class<?> classB1 = assertLoadClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadClass(CLASS_C, clB);
- assertCannotLoadClass(CLASS_A, clC);
- classB1 = assertLoadClass(CLASS_B, clC, clB);
- assertSame(classB, classB1);
- assertLoadClass(CLASS_C, clC);
- }
- finally
- {
- unregisterClassLoader(clC);
- }
- assertNoClassLoader(rC);
- classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- classA1 = assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- Class<?> classB1 = assertLoadClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadClass(CLASS_C, clB);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertNoClassLoader(rB);
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- }
- finally
- {
- unregisterClassLoader(clA);
- }
- assertNoClassLoader(rA);
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportPackageSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportPackageSanityTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithReExportPackageSanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,229 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.vfs.metadata.test.ReExportModuleUnitTestCase using our test framework,
- * ClassPoolWithReExportModuleTestCase replicates this with the javassist classpools
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithReExportPackageSanityTestCase extends JBossClClassPoolTest
-{
-
- public ClassLoaderWithReExportPackageSanityTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassLoaderWithReExportPackageSanityTestCase.class);
- }
-
- public void testReExport() throws Exception
- {
- ClassLoader clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("a").
- createPackage(PACKAGE_A);
- clA = createClassLoader(rA, "A", builderA, JAR_A_1);
- Class<?> classA = assertLoadClass(CLASS_A, clA);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
-
- ClassLoader clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createModule("b").
- createPackage(PACKAGE_B).
- createReExportPackage(PACKAGE_A);
-
- clB = createClassLoader(rB, "B", builderB, JAR_B_1);
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- classA1 = assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- Class<?> classB = assertLoadClass(CLASS_B, clB);
- assertCannotLoadClass(CLASS_C, clB);
-
- ClassLoader clC = null;
- Result rC = new Result();
- try
- {
- BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
- createRequireModule("b");
- clC = createClassLoader(rC, "C", builderC, JAR_C_1);
-
- classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- classA1 = assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- Class<?> classB1 = assertLoadClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadClass(CLASS_C, clB);
- classA1 = assertLoadClass(CLASS_A, clC, clA);
- assertSame(classA, classA1);
- classB1 = assertLoadClass(CLASS_B, clC, clB);
- assertSame(classB, classB1);
- assertLoadClass(CLASS_C, clC);
- }
- finally
- {
- unregisterClassLoader(clC);
- }
- assertNoClassLoader(rC);
- classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- classA1 = assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- Class<?> classB1 = assertLoadClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadClass(CLASS_C, clB);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertNoClassLoader(rB);
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- }
- finally
- {
- unregisterClassLoader(clA);
- }
- assertNoClassLoader(rA);
- }
-
- public void testNoReExport() throws Exception
- {
- ClassLoader clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("a").
- createPackage(PACKAGE_A);
- clA = createClassLoader(rA, "A", builderA, JAR_A_1);
- Class<?> classA = assertLoadClass(CLASS_A, clA);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
-
- ClassLoader clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createModule("b").
- createPackage(PACKAGE_B).
- createReExportModule("a");
- clB = createClassLoader(rB, "B", builderB, JAR_B_1);
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- Class<?> classB = assertLoadClass(CLASS_B, clB);
- assertCannotLoadClass(CLASS_C, clB);
-
- ClassLoader clC = null;
- Result rC = new Result();
- try
- {
- BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_B);
- clC = createClassLoader(rC, "C", builderC, JAR_C_1);
-
- assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- Class<?> classB1 = assertLoadClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadClass(CLASS_C, clB);
- assertCannotLoadClass(CLASS_A, clC);
- classB1 = assertLoadClass(CLASS_B, clC, clB);
- assertSame(classB, classB1);
- assertLoadClass(CLASS_C, clC);
- }
- finally
- {
- unregisterClassLoader(clC);
- }
- assertNoClassLoader(rC);
- assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- assertLoadClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- Class<?> classB1 = assertLoadClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadClass(CLASS_C, clB);
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertNoClassLoader(rB);
- Class<?> classA1 = assertLoadClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_C, clA);
- }
- finally
- {
- unregisterClassLoader(clA);
- }
- assertNoClassLoader(rA);
-
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithRepositorySanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,594 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_D;
-
-import java.lang.reflect.Method;
-
-import junit.framework.Test;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloading.spi.dependency.Module;
-
-/**
- * Tests the behaviour of the new classloaders
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
- * @version $Revision$
- */
-public class ClassLoaderWithRepositorySanityTestCase extends JBossClClassPoolTest
-{
-
- public ClassLoaderWithRepositorySanityTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassLoaderWithRepositorySanityTestCase.class);
- }
-
- public void testGlobalScope() throws Exception
- {
- ClassLoader clA = null;
- ClassLoader clB = null;
- try
- {
- clA = createClassLoader("A", true, JAR_A_1);
- assertModule(clA);
- clB = createClassLoader("B", true, JAR_B_1);
- assertModule(clB);
- try
- {
- Class<?> aFromA = clA.loadClass(CLASS_A);
- assertNotNull(aFromA);
- Class<?> bFromA = clA.loadClass(CLASS_B);
- assertNotNull(bFromA);
- Class<?> aFromB = clB.loadClass(CLASS_A);
- Class<?> bFromB = clB.loadClass(CLASS_B);
- assertSame(aFromA, aFromB);
- assertSame(bFromA, bFromB);
- assertSame(clA, aFromA.getClassLoader());
- assertSame(clB, bFromB.getClassLoader());
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- Class<?> aFromA = clA.loadClass(CLASS_A);
- assertNotNull(aFromA);
-
- assertCannotLoadClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassLoader(clA);
- }
- assertCannotLoadClass(CLASS_A, system.getDefaultDomain());
- }
-
- public void testChildDomain() throws Exception
- {
- ClassLoader clA = null;
- ClassLoader clB = null;
- ClassLoaderDomain childDomain = null;
- ClassLoader clC = null;
- try
- {
- clA = createClassLoader("A", true, JAR_A_1);
- assertModule(clA);
- clB = createClassLoader("B", true, JAR_B_2);
- assertModule(clB);
- clC = createChildDomainParentFirstClassLoader("C", "CHILD", true, JAR_C_1);
- assertModule(clC);
-
- childDomain = getChildDomainForLoader(clC);
- assertNotNull(childDomain);
- assertSame(system.getDefaultDomain(), childDomain.getParent());
-
- Class<?> aFromA = clA.loadClass(CLASS_A);
- assertNotNull(aFromA);
- Class<?> bFromB = clB.loadClass(CLASS_B);
- assertNotNull(bFromB);
- Class<?> cFromC = clC.loadClass(CLASS_C);
- assertNotNull(cFromC);
- Class<?> aFromC = clC.loadClass(CLASS_A);
- assertNotNull(aFromC);
- Class<?> bFromC = clC.loadClass(CLASS_B);
- assertNotNull(bFromC);
-
- assertSame(aFromA, aFromC);
- assertSame(bFromB, bFromC);
- assertSame(clA, aFromA.getClassLoader());
- assertSame(clB, bFromB.getClassLoader());
- assertSame(clC, cFromC.getClassLoader());
-
- assertCannotLoadClass(CLASS_C, clA);
- assertCannotLoadClass(CLASS_C, clB);
- }
- finally
- {
- unregisterClassLoader(clA);
- unregisterClassLoader(clB);
- unregisterClassLoader(clC);
- unregisterDomain(childDomain);
- }
- }
-
- public void testSiblingDomains() throws Exception
- {
- ClassLoader clA = null;
- ClassLoader clB = null;
- ClassLoaderDomain domainA = null;
- ClassLoaderDomain domainB = null;
- try
- {
- clA = createChildDomainParentFirstClassLoader("A", "ChildA", true, JAR_A_1);
- assertModule(clA);
- clB = createChildDomainParentLastClassLoader("B", "ChildB", true, JAR_B_1);
- assertModule(clB);
-
- domainA = getChildDomainForLoader(clA);
- assertNotNull(domainA);
- assertSame(system.getDefaultDomain(), domainA.getParent());
- domainB = getChildDomainForLoader(clB);
- assertNotNull(domainB);
- assertSame(system.getDefaultDomain(), domainB.getParent());
- assertNotSame(domainA, domainB);
-
- Class<?> clazzA = clA.loadClass(CLASS_A);
- assertSame(clA, clazzA.getClassLoader());
- Class<?> clazzB = clB.loadClass(CLASS_B);
- assertSame(clB, clazzB.getClassLoader());
- assertCannotLoadClass(CLASS_B, clA);
- assertCannotLoadClass(CLASS_A, clB);
- }
- finally
- {
- unregisterClassLoader(clA);
- unregisterClassLoader(clB);
- unregisterDomain(clA);
- unregisterDomain(clB);
- }
- }
-
- public void testChildWithNewClassesInParent() throws Exception
- {
- ClassLoader clGlobal = null;
- ClassLoader clScoped = null;
- try
- {
- clScoped = createChildDomainParentFirstClassLoader("SCOPED", "SCOPED", true, JAR_B_1);
- assertModule(clScoped);
- assertCannotLoadClass(CLASS_A, clScoped);
-
- clGlobal = createClassLoader("GLOBAL", true, JAR_A_1);
- assertModule(clScoped);
- assertModule(clGlobal);
-
- Class<?> aFromChild = clScoped.loadClass(CLASS_A);
- assertNotNull(aFromChild);
- Class<?> aFromParent = clGlobal.loadClass(CLASS_A);
- assertNotNull(aFromParent);
- assertSame(aFromChild, aFromParent);
- assertSame(clGlobal, aFromParent.getClassLoader());
- }
- finally
- {
- unregisterClassLoader(clGlobal);
- unregisterClassLoader(clScoped);
- unregisterDomain(clScoped);
- }
- }
-
- public void testChildOverrideWithParentDelegation() throws Exception
- {
- ClassLoader clGlobal = null;
- ClassLoader clScoped = null;
- try
- {
- clGlobal = createClassLoader("GLOBAL", true, JAR_A_1);
- clScoped = createChildDomainParentFirstClassLoader("SCOPED", "SCOPED", true, JAR_B_1);
- Class<?> aFromParent = clGlobal.loadClass(CLASS_A);
- assertNotNull(aFromParent);
- Class<?> aFromChild = clScoped.loadClass(CLASS_A);
- assertNotNull(aFromChild);
- assertSame(aFromParent, aFromChild);
- assertSame(clGlobal, aFromParent.getClassLoader());
- }
- finally
- {
- unregisterClassLoader(clGlobal);
- unregisterClassLoader(clScoped);
- unregisterDomain(clScoped);
- }
- }
-
- public void testChildOverrideWithNoParentDelegation() throws Exception
- {
- ClassLoader clGlobal = null;
- ClassLoader clScoped = null;
- try
- {
- clGlobal = createClassLoader("GLOBAL", true, JAR_A_1);
- clScoped = createChildDomainParentLastClassLoader("CHILD", "CHILD", true, JAR_A_1);
- Class<?> aFromParent = clGlobal.loadClass(CLASS_A);
- assertNotNull(aFromParent);
- Class<?> aFromChild = clScoped.loadClass(CLASS_A);
- assertNotNull(aFromChild);
- assertNotSame(aFromParent, aFromChild);
- assertSame(clGlobal, aFromParent.getClassLoader());
- assertSame(clScoped, aFromChild.getClassLoader());
- }
- finally
- {
- unregisterClassLoader(clGlobal);
- unregisterClassLoader(clScoped);
- unregisterDomain(clScoped);
- }
- }
-
- public void testURLChildOfGlobalUcl() throws Exception
- {
- ClassLoader clGlobal = null;
- ClassLoader clChildA = null;
- ClassLoader clChildB = null;
- try
- {
- clGlobal = createClassLoader("GLOBAL", true, JAR_A_1);
- clChildA = createChildURLClassLoader(clGlobal, JAR_B_1);
-
- Class<?> aFromA = clChildA.loadClass(CLASS_A);
- assertSame(clGlobal, aFromA.getClassLoader());
- Class<?> bFromA = clChildA.loadClass(CLASS_B);
- assertSame(clChildA, bFromA.getClassLoader());
-
- clChildB = createChildURLClassLoader(clGlobal, JAR_A_2);
- Class<?> aFromB = clChildB.loadClass(CLASS_A);
- assertSame(clGlobal, aFromB.getClassLoader());
- }
- finally
- {
- unregisterClassLoader(clGlobal);
- unregisterClassLoader(clChildA);
- unregisterClassLoader(clChildB);
- }
- }
-
- public void testUndeploySibling() throws Exception
- {
- ClassLoader clA = null;
- ClassLoader clB = null;
- try
- {
- try
- {
- clA = createClassLoader("A", true, JAR_A_1);
- assertCannotLoadClass(CLASS_B, clA);
-
- clB = createClassLoader("B", true, JAR_B_1);
- Class<?> bFromA = clA.loadClass(CLASS_B);
- assertSame(clB, bFromA.getClassLoader());
- }
- finally
- {
- unregisterClassLoader(clB);
- }
- assertCannotLoadClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassLoader(clA);
- }
- }
-
-
- public void testUndeployParentDomainClassLoader() throws Exception
- {
- ClassLoader globalA = null;
- ClassLoader globalB = null;
- ClassLoader child = null;
- try
- {
- try
- {
- globalA = createClassLoader("A", true, JAR_A_1);
- assertCannotLoadClass(CLASS_B, globalA);
-
- child = createChildDomainParentLastClassLoader("C", "C", true, JAR_C_1);
- assertCannotLoadClass(CLASS_B, child);
-
- globalB = createClassLoader("B", true, JAR_B_1);
- Class<?> bFromChild = child.loadClass(CLASS_B);
- Class<?> bFromA = globalA.loadClass(CLASS_B);
- assertSame(globalB, bFromA.getClassLoader());
- assertSame(bFromA, bFromChild);
- }
- finally
- {
- unregisterClassLoader(globalB);
- }
- assertCannotLoadClass(CLASS_B, child);
- }
- finally
- {
- unregisterClassLoader(globalA);
- unregisterClassLoader(child);
- unregisterDomain(getChildDomainForLoader(child));
- }
- }
-
- public void testClassLoaderWithParentClassLoader() throws Exception
- {
- ClassLoader parent = createChildURLClassLoader(null, JAR_B_1);
- ClassLoader global = null;
- try
- {
- global = createChildDomainParentFirstClassLoader("A", "A", true, parent, JAR_A_1);
- Class<?> aFromGlobal = global.loadClass(CLASS_A);
- assertSame(global, aFromGlobal.getClassLoader());
- Class<?> bFromGlobal = global.loadClass(CLASS_B);
- assertSame(parent, bFromGlobal.getClassLoader());
- Class<?> bFromParent = parent.loadClass(CLASS_B);
- assertSame(bFromGlobal, bFromParent);
- assertCannotLoadClass(CLASS_A, parent);
- }
- finally
- {
- unregisterClassLoader(global);
- unregisterClassLoader(parent);
- unregisterDomain(global);
- }
- }
-
- // TODO JBREFLECT-65 undeploy e parent last
-
- public void testClassLoaderWithParentClassLoaderAndCrossReference() throws Exception
- {
- ClassLoader parent = createChildURLClassLoader(null, JAR_B_1);
- ClassLoader global = null;
- try
- {
- global = createChildDomainParentLastClassLoader("D", "D", true, parent, JAR_D);
- Class<?> dFromGlobal = global.loadClass(CLASS_D);
- assertSame(global, dFromGlobal.getClassLoader());
- Class<?> bFromGlobal = global.loadClass(CLASS_B);
- assertSame(parent, bFromGlobal.getClassLoader());
- Class<?> bFromParent = parent.loadClass(CLASS_B);
- assertSame(bFromGlobal, bFromParent);
- assertCannotLoadClass(CLASS_D, parent);
-
- Method method = dFromGlobal.getDeclaredMethod("getB");
- assertSame(method.getReturnType(), bFromParent);
-
- }
- finally
- {
- unregisterClassLoader(global);
- unregisterClassLoader(parent);
- unregisterDomain(global);
- }
- }
-
-
- public void testClassLoaderWithParentClassLoaderAndSameClassInDomain() throws Exception
- {
- ClassLoader parent = createChildURLClassLoader(null, JAR_B_1);
- ClassLoader globalA = null;
- ClassLoader globalB = null;
- ClassLoader globalC = null;
- try
- {
- final String domain = "CHILD";
- globalA = createChildDomainParentFirstClassLoader("A", domain, true, parent, JAR_A_1);
- Class<?> aFromGlobal = globalA.loadClass(CLASS_A);
- assertSame(globalA, aFromGlobal.getClassLoader());
- Class<?> bFromGlobalA = globalA.loadClass(CLASS_B);
- assertSame(parent, bFromGlobalA.getClassLoader());
-
- globalB = createChildDomainParentFirstClassLoader("B", domain, true, parent, JAR_B_2);
- Class<?> bFromParent = parent.loadClass(CLASS_B);
- assertSame(parent, bFromParent.getClassLoader());
- assertSame(bFromGlobalA, bFromParent);
-
- Class<?> bFromGlobalB = globalB.loadClass(CLASS_B);
- assertSame(bFromGlobalB, bFromParent);
-
- globalC = createChildDomainParentLastClassLoader("C", domain + "2", true, parent, JAR_B_2);
- assertLoadClass(CLASS_B, globalC);
- }
- finally
- {
- unregisterClassLoader(globalA);
- unregisterClassLoader(globalB);
- unregisterClassLoader(globalC);
- unregisterClassLoader(parent);
- unregisterDomain(globalA);
- unregisterDomain(globalC);
- }
- }
-
- public void testSeveralLevelsOfDomain() throws Exception
- {
- ClassLoader parent = null;
- ClassLoader cl1B = null;
- ClassLoader cl1C = null;
- ClassLoader cl2B = null;
- ClassLoader cl2C = null;
- ClassLoader cl11A = null;
- ClassLoader cl11B = null;
- ClassLoader cl11C = null;
- ClassLoader cl12A = null;
- ClassLoader cl12B = null;
- ClassLoader cl12C = null;
-
- try
- {
- parent = createClassLoader("A", true, JAR_A_1);
- Class<?> aFromParent = parent.loadClass(CLASS_A);
- assertSame(parent, aFromParent.getClassLoader());
-
- final String domain1 = "1";
- cl1B = createChildDomainParentFirstClassLoader("1B", domain1, true, JAR_B_1);
- cl1C = createChildDomainParentFirstClassLoader("1C", domain1, true, JAR_C_1);
- Class<?> aFrom1B = cl1B.loadClass(CLASS_A);
- Class<?> bFrom1B = cl1B.loadClass(CLASS_B);
- Class<?> cFrom1B = cl1B.loadClass(CLASS_C);
- Class<?> aFrom1C = cl1C.loadClass(CLASS_A);
- Class<?> bFrom1C = cl1C.loadClass(CLASS_B);
- Class<?> cFrom1C = cl1C.loadClass(CLASS_C);
- assertSame(aFromParent, aFrom1B);
- assertSame(aFromParent, aFrom1C);
- assertSame(bFrom1B, bFrom1C);
- assertSame(cFrom1B, cFrom1C);
- assertSame(cl1B, bFrom1B.getClassLoader());
- assertSame(cl1C, cFrom1B.getClassLoader());
-
-
- final String domain2 = "2";
- cl2B = createChildDomainParentFirstClassLoader("2B", domain2, true, JAR_B_1);
- cl2C = createChildDomainParentFirstClassLoader("2C", domain2, true, JAR_C_1);
- Class<?> aFrom2B = cl2B.loadClass(CLASS_A);
- Class<?> bFrom2B = cl2B.loadClass(CLASS_B);
- Class<?> cFrom2B = cl2B.loadClass(CLASS_C);
- Class<?> aFrom2C = cl2C.loadClass(CLASS_A);
- Class<?> bFrom2C = cl2C.loadClass(CLASS_B);
- Class<?> cFrom2C = cl2C.loadClass(CLASS_C);
- assertSame(aFromParent, aFrom2B);
- assertSame(aFromParent, aFrom2C);
- assertSame(bFrom2B, bFrom2C);
- assertSame(cFrom2B, cFrom2C);
- assertSame(cl2B, bFrom2B.getClassLoader());
- assertSame(cl2C, cFrom2B.getClassLoader());
- assertNotSame(bFrom1B, bFrom2B);
- assertNotSame(bFrom2C, bFrom1C);
- assertNotSame(cFrom2C, cFrom1C);
-
- final String domain11 = "11";
- cl11A = createChildDomainParentFirstClassLoader("11A", domain11, domain1, true, JAR_A_2);
- cl11B = createChildDomainParentFirstClassLoader("11B", domain11, domain1, true, JAR_B_2);
- cl11C = createChildDomainParentFirstClassLoader("11C", domain11, domain1, true, JAR_C_2);
- final String domain12 = "12";
- cl12A = createChildDomainParentLastClassLoader("12A", domain12, domain1, true, JAR_A_2);
- cl12B = createChildDomainParentLastClassLoader("12B", domain12, domain1, true, JAR_B_2);
- cl12C = createChildDomainParentLastClassLoader("12C", domain12, domain1, true, JAR_C_2);
- Class<?> aFrom11A = cl11A.loadClass(CLASS_A);
- Class<?> aFrom11B = cl11B.loadClass(CLASS_A);
- Class<?> aFrom11C = cl11C.loadClass(CLASS_A);
- assertSame(aFromParent, aFrom11A);
- assertSame(aFromParent, aFrom11B);
- assertSame(aFromParent, aFrom11C);
- Class<?> aFrom12A = cl12A.loadClass(CLASS_A);
- Class<?> aFrom12B = cl12B.loadClass(CLASS_A);
- Class<?> aFrom12C = cl12C.loadClass(CLASS_A);
- assertNotSame(aFromParent, aFrom12A);
- assertSame(aFrom12A, aFrom12B);
- assertSame(aFrom12A, aFrom12C);
- assertSame(cl12A, aFrom12A.getClassLoader());
-
- Class<?> bFrom11A = cl11A.loadClass(CLASS_B);
- Class<?> bFrom11B = cl11B.loadClass(CLASS_B);
- Class<?> bFrom11C = cl11C.loadClass(CLASS_B);
- Class<?> cFrom11A = cl11A.loadClass(CLASS_C);
- Class<?> cFrom11B = cl11B.loadClass(CLASS_C);
- Class<?> cFrom11C = cl11C.loadClass(CLASS_C);
- assertSame(bFrom11A, bFrom11B);
- assertSame(bFrom11A, bFrom11C);
- assertSame(cl1B, bFrom11B.getClassLoader());
- assertSame(cFrom11A, cFrom11B);
- assertSame(cFrom11A, cFrom11C);
- assertSame(cl1C, cFrom11C.getClassLoader());
-
- Class<?> bFrom12A = cl12A.loadClass(CLASS_B);
- Class<?> bFrom12B = cl12B.loadClass(CLASS_B);
- Class<?> bFrom12C = cl12C.loadClass(CLASS_B);
- Class<?> cFrom12A = cl12A.loadClass(CLASS_C);
- Class<?> cFrom12B = cl12B.loadClass(CLASS_C);
- Class<?> cFrom12C = cl12C.loadClass(CLASS_C);
- assertSame(bFrom12A, bFrom12B);
- assertSame(bFrom12A, bFrom12C);
- assertSame(cl12B, bFrom12B.getClassLoader());
- assertSame(cFrom12A, cFrom12B);
- assertSame(cFrom12A, cFrom12C);
- assertSame(cl12C, cFrom12C.getClassLoader());
- assertNotSame(bFrom11B, bFrom12B);
- assertNotSame(cFrom11C, cFrom12C);
- }
- finally
- {
- unregisterClassLoader(parent);
- unregisterClassLoader(cl1B);
- unregisterClassLoader(cl1C);
- unregisterClassLoader(cl2B);
- unregisterClassLoader(cl2C);
- unregisterClassLoader(cl11A);
- unregisterClassLoader(cl11B);
- unregisterClassLoader(cl11C);
- unregisterClassLoader(cl12A);
- unregisterClassLoader(cl12B);
- unregisterClassLoader(cl12C);
-
- unregisterDomain(cl12A);
- unregisterDomain(cl11A);
- unregisterDomain(cl2B);
- unregisterDomain(cl1B);
- }
- }
-
- public void testUclLoaderOrdering() throws Exception
- {
- ClassLoader globalA = null;
- ClassLoader globalB = null;
- ClassLoader globalC = null;
- try
- {
- globalA = createClassLoader("A1", true, JAR_A_1);
- globalB = createClassLoader("A2", true, JAR_A_1);
- globalC = createClassLoader("A3", true, JAR_A_1);
-
- Class<?> aFromA = globalA.loadClass(CLASS_A);
- Class<?> aFromB = globalB.loadClass(CLASS_A);
- Class<?> aFromC = globalC.loadClass(CLASS_A);
- assertSame(aFromA, aFromB);
- assertSame(aFromA, aFromC);
- assertSame(globalA, aFromA.getClassLoader());
- }
- finally
- {
- unregisterClassLoader(globalA);
- unregisterClassLoader(globalB);
- unregisterClassLoader(globalC);
- }
- }
-
- @Override
- protected void registerModule(Module module)
- {
- domainRegistry.initMapsForModule(module);
- }
-}
\ No newline at end of file
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithUsesPackageSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithUsesPackageSanityTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassLoaderWithUsesPackageSanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,113 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.vfs.metadata.test.UsesPackageUnitTestCase using our test framework,
- * ClassPoolWithUsesPackageTestCase replicates this with the javassist classpools
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassLoaderWithUsesPackageSanityTestCase extends JBossClClassPoolTest
-{
-
- public ClassLoaderWithUsesPackageSanityTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassLoaderWithUsesPackageSanityTestCase.class);
- }
-
- public void testUsesImport() throws Exception
- {
- ClassLoader clA1 = null;
- Result rA1 = new Result();
- try
- {
- BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
- createModule("a1").
- createPackage(PACKAGE_A);
- clA1 = createClassLoader(rA1, "A1", builderA1, JAR_A_1);
- Class<?> classA = assertLoadClass(CLASS_A, clA1);
-
- ClassLoader clA2 = null;
- Result rA2 = new Result();
- try
- {
- BundleInfoBuilder builderA2 = BundleInfoBuilder.getBuilder().
- createModule("a2").
- createUsesPackage(PACKAGE_A);
-
- clA2 = createClassLoader(rA2, "A2", builderA2, JAR_A_1);
- Class<?> classA1 = assertLoadClass(CLASS_A, clA1);
- assertSame(classA, classA1);
- classA1 = assertLoadClass(CLASS_A, clA2, clA1);
- assertSame(classA, classA1);
- }
- finally
- {
- unregisterClassLoader(clA2);
- }
- assertNoClassLoader(rA2);
- assertLoadClass(CLASS_A, clA1);
- }
- finally
- {
- unregisterClassLoader(clA1);
- }
- assertNoClassLoader(rA1);
- //assertCannotLoadClass(this.getClass().getClassLoader(), SupportClasses.CLASS_A);
- }
-
- public void testUsesNoImport() throws Exception
- {
- ClassLoader clA1 = null;
- Result rA1 = new Result();
- try
- {
- BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
- createModule("a1").
- createUsesPackage(PACKAGE_A);
- clA1 = createClassLoader(rA1, "A1", builderA1, JAR_A_1);
- assertLoadClass(CLASS_A, clA1);
- }
- finally
- {
- unregisterClassLoader(clA1);
- }
- assertNoClassLoader(rA1);
- //assertCannotLoadClass(this.getClass().getClassLoader(), SupportClasses.CLASS_A);
- }
-
-}
Deleted: 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 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolTestScenario.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,161 +0,0 @@
-/*
- * 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);
- }
- }
-
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalDomainTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalDomainTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalDomainTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,535 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import javassist.ClassPool;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloading.dependency.test.HierarchicalDomainUnitTestCase using our test framework,
- * ClassPoolWithHierarchicalDomainSanityTestCase replicates this with the javassist classpools
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithHierarchicalDomainTestCase extends JBossClClassPoolTest
-{
- public ClassPoolWithHierarchicalDomainTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassPoolWithHierarchicalDomainTestCase.class);
- }
-
- public void testParentFirst() throws Exception
- {
- ClassPool poolParentA = null;
- Result resultParentA = new Result();
- try
- {
- poolParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
- assertLoadCtClass(CLASS_A, poolParentA);
- assertCannotLoadCtClass(CLASS_B, poolParentA);
-
- ClassPool poolChildA = null;
- Result resultChildA = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- poolChildA = createChildDomainParentFirstClassPool(resultChildA, "aChild", childDomainName, true, JAR_A_2);
- assertLoadCtClass(CLASS_A, poolParentA);
- assertLoadCtClass(CLASS_A, poolChildA, poolParentA);
- assertCannotLoadCtClass(CLASS_B, poolChildA);
-
- ClassPool poolB = null;
- Result resultB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, builderB, JAR_B_1);
-
- assertLoadCtClass(CLASS_A, poolParentA);
- assertLoadCtClass(CLASS_B, poolB);
- assertLoadCtClass(CLASS_A, poolB, poolParentA);
- }
- finally
- {
- unregisterClassPool(poolB);
- }
- assertNoClassPool(resultB);
- }
- finally
- {
- unregisterClassPool(poolChildA);
- unregisterDomain(childDomainName);
- }
- assertNoClassPool(resultChildA);
- }
- finally
- {
- unregisterClassPool(poolParentA);
- }
- assertNoClassPool(resultParentA);
- }
-
- public void testParentLast() throws Exception
- {
- ClassPool clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
-
- ClassPool poolChildA = null;
- Result resultChildA = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- poolChildA = createChildDomainParentLastClassPool(resultChildA, "aChild", childDomainName, true, JAR_A_2);
- assertLoadCtClass(CLASS_A, clParentA);
- assertLoadCtClass(CLASS_A, poolChildA);
- assertCannotLoadCtClass(CLASS_B, poolChildA);
-
- ClassPool poolB = null;
- Result resultB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- poolB = createChildDomainParentLastClassPool(resultB, "b", childDomainName, builderB, JAR_B_1);
-
- assertLoadCtClass(CLASS_A, poolChildA);
- assertLoadCtClass(CLASS_B, poolB);
- assertLoadCtClass(CLASS_A, poolB, poolChildA);
- }
- finally
- {
- unregisterClassPool(poolB);
- }
- assertNoClassPool(resultB);
- }
- finally
- {
- unregisterClassPool(poolChildA);
- unregisterDomain(childDomainName);
- }
- assertNoClassPool(resultChildA);
- }
- finally
- {
- unregisterClassPool(clParentA);
- }
- assertNoClassPool(resultParentA);
- }
-
- public void testParentLastNotInChild() throws Exception
- {
- ClassPool clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
-
- ClassPool poolB = null;
- Result resultB = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- poolB = createChildDomainParentLastClassPool(resultB, "b", childDomainName, builderB, JAR_B_1);
-
- assertLoadCtClass(CLASS_A, clParentA);
- assertLoadCtClass(CLASS_B, poolB);
- assertLoadCtClass(CLASS_A, poolB, clParentA);
- }
- finally
- {
- unregisterClassPool(poolB);
- unregisterDomain(childDomainName);
- }
- assertNoClassPool(resultB);
- }
- finally
- {
- unregisterClassPool(clParentA);
- }
- assertNoClassPool(resultParentA);
- }
-
- public void testParentFirstWrongWayAround() throws Exception
- {
- ClassPool poolB = null;
- Result resultB = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- try
- {
- poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, builderB, JAR_B_1);
- fail("Should be no loader");
- }
- catch(NoSuchClassLoaderException e)
- {
- }
- assertNoClassPool(resultB);
-
- ClassPool clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
-
- poolB = assertClassPool(resultB.getFactory());
- assertLoadCtClass(CLASS_A, clParentA);
- assertLoadCtClass(CLASS_A, poolB, clParentA);
- assertLoadCtClass(CLASS_B, poolB);
- }
- finally
- {
- unregisterClassPool(clParentA);
- }
- assertNoClassPool(resultParentA);
- }
- finally
- {
- unregisterClassPool(poolB);
- unregisterDomain(childDomainName);
- }
- assertNoClassPool(resultB);
- }
-
- public void testParentLastWrongWayAround() throws Exception
- {
- ClassPool poolB = null;
- Result resultB = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- try
- {
- poolB = createChildDomainParentLastClassPool(resultB, "b", childDomainName, builderB, JAR_B_1);
- fail("Should be no loader");
- }
- catch(NoSuchClassLoaderException e)
- {
- }
- assertNoClassPool(resultB);
-
- ClassPool clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
-
- poolB = assertClassPool(resultB.getFactory());
- assertLoadCtClass(CLASS_A, clParentA);
- assertLoadCtClass(CLASS_A, poolB, clParentA);
- assertLoadCtClass(CLASS_B, poolB);
- }
- finally
- {
- unregisterClassPool(clParentA);
- }
- assertNoClassPool(resultParentA);
- }
- finally
- {
- unregisterClassPool(poolB);
- unregisterDomain(childDomainName);
- }
- }
-
- public void testParentRedeploy() throws Exception
- {
- ClassPool poolB = null;
- Result resultB = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- try
- {
- poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, builderB, JAR_B_1);
- fail("Should be no loader");
- }
- catch(NoSuchClassLoaderException e)
- {
- }
- assertNoClassPool(resultB);
-
- ClassPool clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
-
- poolB = assertClassPool(resultB.getFactory());
- assertLoadCtClass(CLASS_A, clParentA);
- assertLoadCtClass(CLASS_A, poolB, clParentA);
- assertLoadCtClass(CLASS_B, poolB);
- }
- finally
- {
- unregisterClassPool(clParentA);
- }
-
- assertNoClassPool(resultParentA);
- assertNoClassPool(resultB);
-
- try
- {
- clParentA = createClassPool(resultParentA, "aParent", true, JAR_A_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
-
- poolB = assertClassPool(resultB.getFactory());
- assertLoadCtClass(CLASS_A, clParentA);
- assertLoadCtClass(CLASS_A, poolB, clParentA);
- assertLoadCtClass(CLASS_B, poolB);
- }
- finally
- {
- unregisterClassPool(clParentA);
- }
- assertNoClassPool(resultParentA);
- }
- finally
- {
- unregisterClassPool(poolB);
- unregisterDomain(childDomainName);
- }
- assertNoClassPool(resultB);
- }
-
- public void testParentOtherDomain() throws Exception
- {
- ClassPool clParentA = null;
- Result resultParentA = new Result();
- final String parentDomainName = "ParentDomain";
- try
- {
- clParentA = createChildDomainParentFirstClassPool(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
-
- ClassPool poolB = null;
- Result resultB = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertLoadCtClass(CLASS_B, poolB);
- assertLoadCtClass(CLASS_A, poolB, clParentA);
- }
- finally
- {
- unregisterClassPool(poolB);
- unregisterDomain(childDomainName);
- }
- }
- finally
- {
- unregisterClassPool(clParentA);
- unregisterDomain(parentDomainName);
- }
- }
-
- public void testParentOtherDomainWithClassLoaderAdapter() throws Exception
- {
- ClassPool clParentA = null;
- Result resultParentA = new Result();
- final String parentDomainName = "ParentDomain";
- try
- {
- clParentA = createChildDomainParentFirstClassPool(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
-
- ClassPool poolB = null;
- Result resultB = new Result();
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertLoadCtClass(CLASS_B, poolB);
- assertLoadCtClass(CLASS_A, poolB, clParentA);
- }
- finally
- {
- unregisterClassPool(poolB);
- unregisterDomain(childDomainName);
- }
- }
- finally
- {
- unregisterClassPool(clParentA);
- unregisterDomain(parentDomainName);
- }
- }
-
- public void testParentOtherDomainLazy() throws Exception
- {
- ClassPool poolB = null;
- Result resultB = new Result();
- final String parentDomainName = "ParentDomain";
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- try
- {
- poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
- fail("Should be no loader");
- }
- catch(NoSuchClassLoaderException e)
- {
- }
- assertNoClassPool(resultB);
-
- ClassPool clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createChildDomainParentFirstClassPool(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
-
- poolB = assertClassPool(resultB.getFactory());
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
- assertLoadCtClass(CLASS_A, poolB, clParentA);
- }
- finally
- {
- unregisterClassPool(clParentA);
- unregisterDomain(parentDomainName);
- }
- assertNoClassPool(resultParentA);
- }
- finally
- {
- unregisterClassPool(poolB);
- unregisterDomain(childDomainName);
- }
- assertNoClassPool(resultB);
- }
-
- public void testParentRedeployOtherDomain() throws Exception
- {
- ClassPool poolB = null;
- Result resultB = new Result();
- final String parentDomainName = "ParentDomain";
- final String childDomainName = "ChildDomain";
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_A);
- try
- {
- poolB = createChildDomainParentFirstClassPool(resultB, "b", childDomainName, parentDomainName, builderB, JAR_B_1);
- fail("Should be no loader");
- }
- catch(NoSuchClassLoaderException e)
- {
- }
- assertNoClassPool(resultB);
-
- ClassPool clParentA = null;
- Result resultParentA = new Result();
- try
- {
- clParentA = createChildDomainParentFirstClassPool(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
-
- poolB = assertClassPool(resultB.getFactory());
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
- assertLoadCtClass(CLASS_A, poolB, clParentA);
- }
- finally
- {
- unregisterClassPool(clParentA);
- unregisterDomain(parentDomainName);
- }
- assertNoClassPool(resultParentA);
- assertNoClassPool(resultB);
-
- try
- {
- clParentA = createChildDomainParentFirstClassPool(resultParentA, "aParent", parentDomainName, true, JAR_A_1);
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
-
- poolB = assertClassPool(resultB.getFactory());
- assertLoadCtClass(CLASS_A, clParentA);
- assertCannotLoadCtClass(CLASS_B, clParentA);
- assertLoadCtClass(CLASS_A, poolB, clParentA);
- }
- finally
- {
- unregisterClassPool(clParentA);
- unregisterDomain(parentDomainName);
- }
- }
- finally
- {
- unregisterClassPool(poolB);
- unregisterDomain(childDomainName);
- }
- assertNoClassPool(resultB);
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalParentLoaderTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalParentLoaderTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithHierarchicalParentLoaderTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,129 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-
-import java.net.URL;
-
-import javassist.ClassPool;
-import junit.framework.Test;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ParentPolicy;
-import org.jboss.classloader.spi.filter.ClassFilter;
-import org.jboss.test.classpool.support.NoMatchClassFilter;
-
-/**
- * Tests the behaviour of the new classloaders so that we can get the same in the new classpools
- * Reproduces org.jboss.test.classloader.domain.test.HierarchicalParentLoaderUnitTestCase using our test framework,
- * ClassPoolWithHierarchicalParentLoaderUnitTestCaseSanityTestCase replicates this with the javassist classpools
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithHierarchicalParentLoaderTestCase extends JBossClClassPoolTest
-{
- public ClassPoolWithHierarchicalParentLoaderTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassPoolWithHierarchicalParentLoaderTestCase.class);
- }
-
- public void testHierarchyBefore() throws Exception
- {
- runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.BEFORE, true);
- }
-
-
- public void testHierarchyBeforeNotFound() throws Exception
- {
- runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.BEFORE, false, false);
- }
-
- public void testHierarchyAfterNotReached() throws Exception
- {
- runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.AFTER_BUT_JAVA_BEFORE, false);
- }
-
- public void testHierarchyAfterReached() throws Exception
- {
- runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.AFTER_BUT_JAVA_BEFORE, null, true);
- }
-
- public void testHierarchyFiltered() throws Exception
- {
- NoMatchClassFilter filter = new NoMatchClassFilter(CLASS_A);
- runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, new ParentPolicy(filter, ClassFilter.NOTHING), false);
-
- assertTrue("Should have been filtered", filter.filtered);
- }
-
-
- private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean expectedParent) throws Exception
- {
- runTest(parentParentPolicy, childParentPolicy, true, JAR_A_2, expectedParent);
- }
-
- private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean createParent, boolean expectedParent) throws Exception
- {
- runTest(parentParentPolicy, childParentPolicy, createParent, JAR_A_2, expectedParent);
- }
-
- private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, URL url, boolean expectedParent) throws Exception
- {
- runTest(parentParentPolicy, childParentPolicy, true, null, expectedParent);
- }
-
- private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean createParent, URL childURL, boolean expectedParent) throws Exception
- {
- final String parentName = "parent";
- final String childName = "child";
- ClassLoaderDomain parent = system.createAndRegisterDomain(parentName, parentParentPolicy);
- ClassLoaderDomain child = system.createAndRegisterDomain(childName, childParentPolicy, parent);
-
- ClassPool parentPool = null;
- ClassPool childPool = null;
- try
- {
- //Since the domain is created first, the first/last flag from these two methods is ignored, instead the
- //policy used when creating the domain is used
- if (createParent)
- {
- parentPool = createChildDomainParentLastClassPool("ParentLoader", parentName, true, JAR_A_1);
- }
- childPool = createChildDomainParentLastClassPool("ChildLoader", childName, parentName, true, childURL);
- assertLoadCtClass(CLASS_A, childPool, expectedParent ? parentPool : childPool);
- }
- finally
- {
- unregisterClassPool(parentPool);
- unregisterClassPool(childPool);
- unregisterDomain(child);
- unregisterDomain(parent);
- }
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithModuleDependencyTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithModuleDependencyTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithModuleDependencyTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,361 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import javassist.ClassPool;
-import javassist.CtClass;
-import junit.framework.Test;
-
-import org.jboss.classloading.spi.version.VersionRange;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Reproduces the behavior found in ClassLoaderWithModuleDependencySanityTestCase
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithModuleDependencyTestCase extends JBossClClassPoolTest
-{
- final static String STRING = String.class.getName();
-
- public ClassPoolWithModuleDependencyTestCase(String name)
- {
- super(name);
- }
-
-
- public static Test suite()
- {
- return suite(ClassPoolWithModuleDependencyTestCase.class);
- }
-
- public void testImportNoVersionCheck() throws Exception
- {
- ClassPool clA = null;
- Result resultA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA").
- createPackage(PACKAGE_A);
- clA = createClassPool(resultA, "A", builderA, JAR_A_1);
-
- CtClass aFromA = assertLoadCtClass(CLASS_A, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
-
- ClassPool clB = null;
- Result resultB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createModule("ModuleB").
- createRequireModule("ModuleA");
- clB = createClassPool(resultB, "B", builderB, JAR_B_1);
-
- CtClass aFromA1 = assertLoadCtClass(CLASS_A, clA, clA);
- assertSame(aFromA, aFromA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertLoadCtClass(CLASS_B, clB, clB);
- CtClass aFromB = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(aFromA, aFromB);
- }
- finally
- {
- unregisterClassPool(clB);
- }
- CtClass aFromA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(aFromA, aFromA1);
- assertCannotLoadCtClass(CLASS_B, clA);
-
- assertNoClassLoader(resultB);
- }
- finally
- {
- unregisterClassPool(clA);
- }
- assertNoClassLoader(resultA);
- }
-
- public void testImportVersionCheck() throws Exception
- {
- ClassPool clA = null;
- Result resultA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA", "1.0.0").
- createPackage(PACKAGE_A);
- clA = createClassPool(resultA, "A", builderA, JAR_A_1);
- CtClass classA = assertLoadCtClass(CLASS_A, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
-
- ClassPool clB = null;
- Result resultB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequireModule("ModuleA", new VersionRange("1.0.0", "2.0.0")).
- createPackage(PACKAGE_B);
- clB = createClassPool(resultB, "B", builderB, JAR_B_1);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertLoadCtClass(CLASS_B, clB);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- }
- finally
- {
- unregisterClassPool(clB);
- }
- assertNoClassLoader(resultB);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassPool(clA);
- }
- assertNoClassLoader(resultA);
- }
-
- public void testImportVersionCheckFailed() throws Exception
- {
- ClassPool clA = null;
- Result resultA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA", "3.0.0").
- createPackage(PACKAGE_A);
- clA = createClassPool(resultA, "A", builderA, JAR_A_1);
- CtClass classA = assertLoadCtClass(CLASS_A, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
- Result resultB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequireModule("ModuleA", new VersionRange("1.0.0", "2.0.0")).
- createPackage(PACKAGE_B);
- try
- {
- createClassPool(resultB, "B", builderB, JAR_B_1);
- fail("Should not have been able to create loader");
- }
- catch(NoSuchClassLoaderException expected)
- {
- }
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertNoClassLoader(resultB);
- }
- finally
- {
- unregisterClassLoader("B");
- }
- assertNoClassLoader(resultB);
-
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassPool(clA);
- }
- assertNoClassLoader(resultA);
- }
-
- //These are my extra tests
- public void testSeveralModulesWithSamePackages() throws Exception
- {
- ClassPool clAModuleX = null;
- ClassPool clAModuleA = null;
- ClassPool clAModuleY = null;
- Result rAX = new Result();
- Result rAA = new Result();
- Result rAY = new Result();
-
- try
- {
- BundleInfoBuilder builderAX = BundleInfoBuilder.getBuilder().
- createModule("ModuleX").
- createPackage(PACKAGE_A);
- clAModuleX = createClassPool(rAX, "X", builderAX, JAR_A_1);
-
- BundleInfoBuilder builderAA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA").
- createPackage(PACKAGE_A);
- clAModuleA = createClassPool(rAA, "A", builderAA, JAR_A_1);
-
- BundleInfoBuilder builderAY = BundleInfoBuilder.getBuilder().
- createModule("ModuleY").
- createPackage(PACKAGE_A);
- clAModuleY = createClassPool(rAY, "Y", builderAY, JAR_A_1);
-
- CtClass classAX = assertLoadCtClass(CLASS_A, clAModuleX);
- CtClass classAA = assertLoadCtClass(CLASS_A, clAModuleA);
- CtClass classAY = assertLoadCtClass(CLASS_A, clAModuleY);
- assertCannotLoadCtClass(CLASS_B, clAModuleX);
- assertCannotLoadCtClass(CLASS_B, clAModuleA);
- assertCannotLoadCtClass(CLASS_B, clAModuleY);
-
- ClassPool clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequireModule("ModuleA").
- createPackage(PACKAGE_B);
- clB = createClassPool(rB, "B", builderB, JAR_B_1);
- CtClass classAX1 = assertLoadCtClass(CLASS_A, clAModuleX);
- assertSame(classAX, classAX1);
- CtClass classAA1 = assertLoadCtClass(CLASS_A, clAModuleA);
- assertSame(classAA, classAA1);
- CtClass classAY1 = assertLoadCtClass(CLASS_A, clAModuleY);
- assertSame(classAY, classAY1);
- assertCannotLoadCtClass(CLASS_B, clAModuleX);
- assertCannotLoadCtClass(CLASS_B, clAModuleA);
- assertCannotLoadCtClass(CLASS_B, clAModuleY);
-
- assertLoadCtClass(CLASS_B, clB, clB);
- CtClass aFromB = assertLoadCtClass(CLASS_A, clB, clAModuleA);
- assertSame(aFromB, classAA);
- }
- finally
- {
- unregisterClassPool(clB);
- }
- assertNoClassLoader(rB);
-
- CtClass classAX1 = assertLoadCtClass(CLASS_A, clAModuleX);
- assertSame(classAX, classAX1);
- CtClass classAA1 = assertLoadCtClass(CLASS_A, clAModuleA);
- assertSame(classAA, classAA1);
- CtClass classAY1 = assertLoadCtClass(CLASS_A, clAModuleY);
- assertSame(classAY, classAY1);
- assertCannotLoadCtClass(CLASS_B, clAModuleX);
- assertCannotLoadCtClass(CLASS_B, clAModuleA);
- assertCannotLoadCtClass(CLASS_B, clAModuleY);
- }
- finally
- {
- unregisterClassPool(clAModuleY);
- unregisterClassPool(clAModuleA);
- unregisterClassPool(clAModuleX);
- }
- assertNoClassLoader(rAY);
- assertNoClassLoader(rAA);
- assertNoClassLoader(rAX);
- }
-
- public void testSeveralModulesWithSameNamesDifferentVersions() throws Exception
- {
- ClassPool clAModuleA1 = null;
- ClassPool clAModuleA2 = null;
- ClassPool clAModuleA3 = null;
- Result rA1 = new Result();
- Result rA2 = new Result();
- Result rA3 = new Result();
-
- try
- {
- BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
- createModule("ModuleA", "1.0.0").
- createPackage(PACKAGE_A);
- clAModuleA1 = createClassPool(rA1, "X", builderA1, JAR_A_1);
-
- BundleInfoBuilder builderA2 = BundleInfoBuilder.getBuilder().
- createModule("ModuleA", "2.0.0").
- createPackage(PACKAGE_A);
- clAModuleA2 = createClassPool(rA2, "A", builderA2, JAR_A_1);
-
- BundleInfoBuilder builderA3 = BundleInfoBuilder.getBuilder().
- createModule("ModuleA", "3.0.0").
- createPackage(PACKAGE_A);
- clAModuleA3 = createClassPool(rA3, "Y", builderA3, JAR_A_1);
-
- CtClass classAX = assertLoadCtClass(CLASS_A, clAModuleA1);
- CtClass classAA = assertLoadCtClass(CLASS_A, clAModuleA2);
- CtClass classAY = assertLoadCtClass(CLASS_A, clAModuleA3);
- assertCannotLoadCtClass(CLASS_B, clAModuleA1);
- assertCannotLoadCtClass(CLASS_B, clAModuleA2);
- assertCannotLoadCtClass(CLASS_B, clAModuleA3);
-
- ClassPool clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createRequireModule("ModuleA", new VersionRange("2.0.0", true, "3.0.0", false)).
- createPackage(PACKAGE_B);
- clB = createClassPool(rB, "B", builderB, JAR_B_1);
- CtClass classAX1 = assertLoadCtClass(CLASS_A, clAModuleA1);
- assertSame(classAX, classAX1);
- CtClass classAA1 = assertLoadCtClass(CLASS_A, clAModuleA2);
- assertSame(classAA, classAA1);
- CtClass classAY1 = assertLoadCtClass(CLASS_A, clAModuleA3);
- assertSame(classAY, classAY1);
- assertCannotLoadCtClass(CLASS_B, clAModuleA1);
- assertCannotLoadCtClass(CLASS_B, clAModuleA2);
- assertCannotLoadCtClass(CLASS_B, clAModuleA3);
-
- assertLoadCtClass(CLASS_B, clB, clB);
- CtClass aFromB = assertLoadCtClass(CLASS_A, clB, clAModuleA2);
- assertSame(aFromB, classAA);
- }
- finally
- {
- unregisterClassPool(clB);
- }
- assertNoClassLoader(rB);
-
- CtClass classAX1 = assertLoadCtClass(CLASS_A, clAModuleA1);
- assertSame(classAX, classAX1);
- CtClass classAA1 = assertLoadCtClass(CLASS_A, clAModuleA2);
- assertSame(classAA, classAA1);
- CtClass classAY1 = assertLoadCtClass(CLASS_A, clAModuleA3);
- assertSame(classAY, classAY1);
- assertCannotLoadCtClass(CLASS_B, clAModuleA1);
- assertCannotLoadCtClass(CLASS_B, clAModuleA2);
- assertCannotLoadCtClass(CLASS_B, clAModuleA3);
- }
- finally
- {
- unregisterClassPool(clAModuleA3);
- unregisterClassPool(clAModuleA2);
- unregisterClassPool(clAModuleA1);
- }
- assertNoClassLoader(rA1);
- assertNoClassLoader(rA2);
- assertNoClassLoader(rA3);
- }
-
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithPackageDependencyTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithPackageDependencyTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithPackageDependencyTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,270 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import javassist.ClassPool;
-import javassist.CtClass;
-import junit.framework.Test;
-
-import org.jboss.classloading.spi.version.VersionRange;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Reproduces the behaviour found in ClassLoaderWithPackageDependencySanityTestCase
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithPackageDependencyTestCase extends JBossClClassPoolTest
-{
-
- public ClassPoolWithPackageDependencyTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassPoolWithPackageDependencyTestCase.class);
- }
-
- public void testImportNoVersionCheck() throws Exception
- {
- ClassPool clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA").
- createPackage(PACKAGE_A);
- clA = createClassPool(rA, "A", builderA, JAR_A_1);
- CtClass classA = assertLoadCtClass(CLASS_A, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
-
- ClassPool clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createPackage(PACKAGE_B).
- createRequirePackage(PACKAGE_A);
- clB = createClassPool(rB, "B", builderB, JAR_B_1);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertLoadCtClass(CLASS_B, clB);
- CtClass aFromB = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, aFromB);
- }
- finally
- {
- unregisterClassPool(clB);
- }
- assertNoClassLoader(rB);
-
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassPool(clA);
- }
- assertNoClassLoader(rA);
- }
-
- public void testImportVersionCheck() throws Exception
- {
- ClassPool clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA").
- createPackage(PACKAGE_A, "1.0.0");
- clA = createClassPool(rA, "A", builderA, JAR_A_1);
- CtClass classA = assertLoadCtClass(CLASS_A, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
-
- ClassPool clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createPackage(PACKAGE_B).
- createRequirePackage(PACKAGE_A, new VersionRange("1.0.0", "2.0.0"));
- clB = createClassPool(rB, "B", builderB, JAR_B_1);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertLoadCtClass(CLASS_B, clB);
- CtClass aFromB = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, aFromB);
- }
- finally
- {
- unregisterClassPool(clB);
- }
- assertNoClassLoader(rB);
-
- assertLoadCtClass(CLASS_A, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassPool(clA);
- }
- assertNoClassLoader(rA);
- }
-
- public void testImportVersionCheckFailed() throws Exception
- {
- ClassPool clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA").
- createPackage(PACKAGE_A, "3.0.0");
- clA = createClassPool(rA, "A", builderA, JAR_A_1);
- CtClass classA = assertLoadCtClass(CLASS_A, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
-
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createPackage(PACKAGE_B).
- createRequirePackage(PACKAGE_A, new VersionRange("1.0.0", "2.0.0"));
- try
- {
- createClassPool(rB, "B", builderB, JAR_B_1);
- fail("Should not have been able to create loader");
- }
- catch(NoSuchClassLoaderException expected)
- {
- }
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassLoader("B");
- }
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- }
- finally
- {
- unregisterClassPool(clA);
- }
- }
-
- //These are mine
-
- public void testSeveralModulesWithSamePackagesDifferentVersions() throws Exception
- {
- ClassPool clA1 = null;
- ClassPool clA2 = null;
- ClassPool clA3 = null;
- Result rA1 = new Result();
- Result rA2 = new Result();
- Result rA3 = new Result();
- try
- {
- BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
- createModule("PackageA").
- createPackage(PACKAGE_A, "1.0.0");
- clA1 = createClassPool(rA1, "A1", builderA1, JAR_A_1);
-
- BundleInfoBuilder builderA2 = BundleInfoBuilder.getBuilder().
- createModule("PackageA").
- createPackage(PACKAGE_A, "2.0.0");
- clA2 = createClassPool(rA2, "A2", builderA2, JAR_A_1);
-
- BundleInfoBuilder builderA3 = BundleInfoBuilder.getBuilder().
- createModule("PackageA").
- createPackage(PACKAGE_A, "3.0.0");
- clA3 = createClassPool(rA3, "A3", builderA3, JAR_A_1);
-
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA1);
- CtClass classA2 = assertLoadCtClass(CLASS_A, clA2);
- CtClass classA3 = assertLoadCtClass(CLASS_A, clA3);
- assertCannotLoadCtClass(CLASS_B, clA1);
- assertCannotLoadCtClass(CLASS_B, clA2);
- assertCannotLoadCtClass(CLASS_B, clA3);
-
- ClassPool clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createPackage(PACKAGE_B).
- createRequirePackage(PACKAGE_A, new VersionRange("1.0.0", false, "2.0.0", true));
- clB = createClassPool(rB, "B", builderB, JAR_B_1);
- CtClass classA11 = assertLoadCtClass(CLASS_A, clA1);
- assertSame(classA1, classA11);
- CtClass classA21 = assertLoadCtClass(CLASS_A, clA2);
- assertSame(classA2, classA21);
- CtClass classA31 = assertLoadCtClass(CLASS_A, clA3);
- assertSame(classA3, classA31);
- assertCannotLoadCtClass(CLASS_B, clA1);
- assertCannotLoadCtClass(CLASS_B, clA2);
- assertCannotLoadCtClass(CLASS_B, clA3);
-
- assertLoadCtClass(CLASS_B, clB);
- CtClass classAFromB = assertLoadCtClass(CLASS_A, clB, clA2);
- assertSame(classA2, classAFromB);
- }
- finally
- {
- unregisterClassPool(clB);
- }
- assertNoClassLoader(rB);
- CtClass classA11 = assertLoadCtClass(CLASS_A, clA1);
- assertSame(classA1, classA11);
- CtClass classA21 = assertLoadCtClass(CLASS_A, clA2);
- assertSame(classA2, classA21);
- CtClass classA31 = assertLoadCtClass(CLASS_A, clA3);
- assertSame(classA3, classA31);
- assertCannotLoadCtClass(CLASS_B, clA1);
- assertCannotLoadCtClass(CLASS_B, clA2);
- assertCannotLoadCtClass(CLASS_B, clA3);
- }
- finally
- {
- unregisterClassPool(clA3);
- unregisterClassPool(clA2);
- unregisterClassPool(clA1);
- }
- assertNoClassLoader(rA1);
- assertNoClassLoader(rA2);
- assertNoClassLoader(rA3);
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportModuleTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportModuleTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportModuleTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,227 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import javassist.ClassPool;
-import javassist.CtClass;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Reproduces the behaviour of ClassLoaderWithReExportModuleSanityTestCase
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithReExportModuleTestCase extends JBossClClassPoolTest
-{
-
- public ClassPoolWithReExportModuleTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassPoolWithReExportModuleTestCase.class);
- }
-
- public void testReExport() throws Exception
- {
- ClassPool clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("a").
- createPackage(PACKAGE_A);
- clA = createClassPool(rA, "A", builderA, JAR_A_1);
- CtClass classA = assertLoadCtClass(CLASS_A, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
-
- ClassPool clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createModule("b").
- createPackage(PACKAGE_B).
- createReExportModule("a");
- clB = createClassPool(rB, "B", builderB, JAR_B_1);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- CtClass classB = assertLoadCtClass(CLASS_B, clB);
- assertCannotLoadCtClass(CLASS_C, clB);
-
- ClassPool clC = null;
- Result rC = new Result();
- try
- {
- BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
- createRequireModule("b");
- clC = createClassPool(rC, "C", builderC, JAR_C_1);
-
- classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadCtClass(CLASS_C, clB);
- classA1 = assertLoadCtClass(CLASS_A, clC, clA);
- assertSame(classA, classA1);
- classB1 = assertLoadCtClass(CLASS_B, clC, clB);
- assertSame(classB, classB1);
- assertLoadCtClass(CLASS_C, clC);
- }
- finally
- {
- unregisterClassPool(clC);
- }
- assertNoClassLoader(rC);
- classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadCtClass(CLASS_C, clB);
- }
- finally
- {
- unregisterClassPool(clB);
- }
- assertNoClassLoader(rB);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- }
- finally
- {
- unregisterClassPool(clA);
- }
- assertNoClassLoader(rA);
- }
-
- public void testNoReExport() throws Exception
- {
- ClassPool clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("a").
- createPackage(PACKAGE_A);
- clA = createClassPool(rA, "A", builderA, JAR_A_1);
- CtClass classA = assertLoadCtClass(CLASS_A, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
-
- ClassPool clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createModule("b").
- createPackage(PACKAGE_B).
- createReExportModule("a");
- clB = createClassPool(rB, "B", builderB, JAR_B_1);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- CtClass classB = assertLoadCtClass(CLASS_B, clB);
- assertCannotLoadCtClass(CLASS_C, clB);
-
- ClassPool clC = null;
- Result rC = new Result();
- try
- {
- BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_B);
- clC = createClassPool(rC, "C", builderC, JAR_C_1);
-
- classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadCtClass(CLASS_C, clB);
- assertCannotLoadCtClass(CLASS_A, clC);
- classB1 = assertLoadCtClass(CLASS_B, clC, clB);
- assertSame(classB, classB1);
- assertLoadCtClass(CLASS_C, clC);
- }
- finally
- {
- unregisterClassPool(clC);
- }
- assertNoClassLoader(rC);
- classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadCtClass(CLASS_C, clB);
- }
- finally
- {
- unregisterClassPool(clB);
- }
- assertNoClassLoader(rB);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- }
- finally
- {
- unregisterClassPool(clA);
- }
- assertNoClassLoader(rA);
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportPackageTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportPackageTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReExportPackageTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,228 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import javassist.ClassPool;
-import javassist.CtClass;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Reproduces ClassLoaderWithReExportPackageSanityTestCase
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithReExportPackageTestCase extends JBossClClassPoolTest
-{
-
- public ClassPoolWithReExportPackageTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassPoolWithReExportPackageTestCase.class);
- }
-
- public void testReExport() throws Exception
- {
- ClassPool clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("a").
- createPackage(PACKAGE_A);
- clA = createClassPool(rA, "A", builderA, JAR_A_1);
- CtClass classA = assertLoadCtClass(CLASS_A, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
-
- ClassPool clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createModule("b").
- createPackage(PACKAGE_B).
- createReExportPackage(PACKAGE_A);
-
- clB = createClassPool(rB, "B", builderB, JAR_B_1);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- CtClass classB = assertLoadCtClass(CLASS_B, clB);
- assertCannotLoadCtClass(CLASS_C, clB);
-
- ClassPool clC = null;
- Result rC = new Result();
- try
- {
- BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
- createRequireModule("b");
- clC = createClassPool(rC, "C", builderC, JAR_C_1);
-
- classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadCtClass(CLASS_C, clB);
- classA1 = assertLoadCtClass(CLASS_A, clC, clA);
- assertSame(classA, classA1);
- classB1 = assertLoadCtClass(CLASS_B, clC, clB);
- assertSame(classB, classB1);
- assertLoadCtClass(CLASS_C, clC);
- }
- finally
- {
- unregisterClassPool(clC);
- }
- assertNoClassLoader(rC);
- classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadCtClass(CLASS_C, clB);
- }
- finally
- {
- unregisterClassPool(clB);
- }
- assertNoClassLoader(rB);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- }
- finally
- {
- unregisterClassPool(clA);
- }
- assertNoClassLoader(rA);
- }
-
- public void testNoReExport() throws Exception
- {
- ClassPool clA = null;
- Result rA = new Result();
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("a").
- createPackage(PACKAGE_A);
- clA = createClassPool(rA, "A", builderA, JAR_A_1);
- CtClass classA = assertLoadCtClass(CLASS_A, clA);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
-
- ClassPool clB = null;
- Result rB = new Result();
- try
- {
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createModule("b").
- createPackage(PACKAGE_B).
- createReExportModule("a");
- clB = createClassPool(rB, "B", builderB, JAR_B_1);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- CtClass classB = assertLoadCtClass(CLASS_B, clB);
- assertCannotLoadCtClass(CLASS_C, clB);
-
- ClassPool clC = null;
- Result rC = new Result();
- try
- {
- BundleInfoBuilder builderC = BundleInfoBuilder.getBuilder().
- createRequirePackage(PACKAGE_B);
- clC = createClassPool(rC, "C", builderC, JAR_C_1);
-
- classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadCtClass(CLASS_C, clB);
- assertCannotLoadCtClass(CLASS_A, clC);
- classB1 = assertLoadCtClass(CLASS_B, clC, clB);
- assertSame(classB, classB1);
- assertLoadCtClass(CLASS_C, clC);
- }
- finally
- {
- unregisterClassPool(clC);
- }
- assertNoClassLoader(rC);
- classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- classA1 = assertLoadCtClass(CLASS_A, clB, clA);
- assertSame(classA, classA1);
- CtClass classB1 = assertLoadCtClass(CLASS_B, clB);
- assertSame(classB, classB1);
- assertCannotLoadCtClass(CLASS_C, clB);
- }
- finally
- {
- unregisterClassPool(clB);
- }
- assertNoClassLoader(rB);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA);
- assertSame(classA, classA1);
- assertCannotLoadCtClass(CLASS_B, clA);
- assertCannotLoadCtClass(CLASS_C, clA);
- }
- finally
- {
- unregisterClassPool(clA);
- }
- assertNoClassLoader(rA);
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,351 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_ROOT;
-
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.ProtectionDomain;
-import java.util.Collection;
-
-import javassist.ClassPool;
-import javassist.CodeConverter;
-import javassist.CtClass;
-import javassist.CtConstructor;
-import javassist.CtField;
-import javassist.CtMethod;
-import javassist.CtNewMethod;
-import javassist.Modifier;
-import javassist.scopedpool.ScopedClassPool;
-import junit.framework.Test;
-
-import org.jboss.classloading.spi.DomainClassLoader;
-import org.jboss.classpool.spi.ClassPoolRepository;
-import org.jboss.test.AbstractTestDelegate;
-import org.jboss.util.loading.Translator;
-
-/**
- * Test that field/constructor wrapper replacement works since there were some problems in AS5
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithReplaceReferencesTestCase extends JBossClClassPoolTest
-{
- final static String STRING = String.class.getName();
-
- public final static URL JAR_PARENT = getURLRelativeToProjectRoot("/replacereferences-parent.jar");
-
- public final static URL JAR_CHILD = getURLRelativeToProjectRoot("/replacereferences-child.jar");
-
- public final static String PACKAGE_REPLACEMENT = PACKAGE_ROOT + ".replacereferences";
-
- public final static String PACKAGE_REPLACEMENT_CHILD = PACKAGE_REPLACEMENT + ".child";
-
- public final static String PACKAGE_REPLACEMENT_PARENT = PACKAGE_REPLACEMENT + ".parent";
-
- public final static String CLASS_INVOKED = PACKAGE_REPLACEMENT + ".Invoked";
-
- public final static String CLASS_PARENT_CALLER = PACKAGE_REPLACEMENT_PARENT + ".ParentCaller";
-
- public final static String CLASS_CHILD_CALLER = PACKAGE_REPLACEMENT_CHILD + ".ChildCaller";
-
- public final String x = "org.jboss.test.classpool.support.excluded";
-
- private final static Translator TRANSLATOR = new MyTranslator();
-
- public ClassPoolWithReplaceReferencesTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassPoolWithReplaceReferencesTestCase.class);
- }
-
- public void testParentLoadedParentDelegation() throws Exception
- {
- ClassPool globalPool = null;
- ClassPool scopedPool = null;
- try
- {
- system.setTranslator(TRANSLATOR);
- globalPool = createClassPool("GLOBAL", true, JAR_PARENT);
- scopedPool = createChildDomainParentFirstClassPool("SCOPED", "SCOPED", true, JAR_CHILD);
-
- loadClassAndRunTest(CLASS_PARENT_CALLER, globalPool.getClassLoader());
- loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
- }
- finally
- {
- unregisterClassPool(globalPool);
- unregisterClassPool(scopedPool);
- unregisterDomain(scopedPool);
- system.setTranslator(null);
- }
- }
-
- public void testParentLoadedNoParentDelegation() throws Exception
- {
- ClassPool globalPool = null;
- ClassPool scopedPool = null;
- try
- {
- system.setTranslator(TRANSLATOR);
- globalPool = createClassPool("GLOBAL", true, JAR_PARENT);
- scopedPool = createChildDomainParentLastClassPool("SCOPED", "SCOPED", true, JAR_CHILD);
-
- loadClassAndRunTest(CLASS_PARENT_CALLER, globalPool.getClassLoader());
- loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
- }
- finally
- {
- unregisterClassPool(globalPool);
- unregisterClassPool(scopedPool);
- unregisterDomain(scopedPool);
- system.setTranslator(null);
- }
- }
-
- public void testParentNotLoadedParentDelegation() throws Exception
- {
- ClassPool globalPool = null;
- ClassPool scopedPool = null;
- try
- {
- system.setTranslator(TRANSLATOR);
- globalPool = createClassPool("GLOBAL", true, JAR_PARENT);
- scopedPool = createChildDomainParentFirstClassPool("SCOPED", "SCOPED", true, JAR_CHILD);
-
- loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
- }
- finally
- {
- unregisterClassPool(globalPool);
- unregisterClassPool(scopedPool);
- unregisterDomain(scopedPool);
- system.setTranslator(null);
- }
- }
-
- public void testParentNotLoadedNoParentDelegation() throws Exception
- {
- ClassPool globalPool = null;
- ClassPool scopedPool = null;
- try
- {
- system.setTranslator(TRANSLATOR);
- globalPool = createClassPool("GLOBAL", true, JAR_PARENT);
- scopedPool = createChildDomainParentLastClassPool("SCOPED", "SCOPED", true, JAR_CHILD);
-
- loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
- }
- finally
- {
- unregisterClassPool(globalPool);
- unregisterClassPool(scopedPool);
- unregisterDomain(scopedPool);
- system.setTranslator(null);
- }
- }
-
- private void loadClassAndRunTest(String classname, ClassLoader loader) throws Exception
- {
- Class<?> caller = loader.loadClass(classname);
- Method m = caller.getMethod("test");
- m.invoke(null, new Object[]
- {});
- }
-
- final static class MyTranslator implements Translator
- {
- public void unregisterClassLoader(DomainClassLoader loader)
- {
- }
-
- public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined,
- ProtectionDomain protectionDomain, byte[] classfileBuffer) throws Exception
- {
- if (!className.startsWith(PACKAGE_REPLACEMENT))
- {
- return null;
- }
- if (className.endsWith("Invoked"))
- {
- return null;
- }
-
- ClassPool pool = ClassPoolRepository.getInstance().registerClassLoader(loader);
- CtClass clazz = pool.get(className);
- if (className.endsWith("Caller"))
- {
- instrumentReplaceReferences(clazz);
- }
- else
- {
- instrumentCreateWrappers(clazz);
- }
-
- if (clazz.isModified())
- {
- return clazz.toBytecode();
- }
- return null;
- }
-
- private CtClass instrumentCreateWrappers(CtClass clazz)
- {
- try
- {
- if (!clazz.getName().startsWith(PACKAGE_REPLACEMENT))
- {
- return clazz;
- }
- addWrappersToClass(clazz);
- }
- catch (Exception e)
- {
- System.err.println("Exception creating wrappers for " + clazz);
- e.printStackTrace();
- }
- return clazz;
- }
-
- private CtClass instrumentReplaceReferences(CtClass clazz) throws Exception
- {
- if (!clazz.getName().startsWith(PACKAGE_REPLACEMENT))
- {
- return clazz;
- }
- replaceReferences(clazz);
- return clazz;
- }
-
- public void unregisterClassLoader(ClassLoader loader)
- {
- }
-
- private void addWrappersToClass(CtClass clazz) throws Exception
- {
- addFieldWrappers(clazz);
- addConstructorWrappers(clazz);
- }
-
- private void addFieldWrappers(CtClass clazz) throws Exception
- {
- CtClass objectCt = clazz.getClassPool().getCtClass(Object.class.getName());
-
- for (CtField field : clazz.getFields())
- {
- if (field.getDeclaringClass() == objectCt)
- {
- continue;
- }
- CtMethod rmethod =
- CtNewMethod.make(
- Modifier.PUBLIC | Modifier.STATIC,
- CtClass.intType,
- getFieldReadWrapperName(field.getName()),
- new CtClass[]{objectCt},
- null,
- "{" + CLASS_INVOKED + ".invoked = true; return ((" + clazz.getName() + ")$1)." + field.getName() + ";}",
- clazz);
- clazz.addMethod(rmethod);
-
-
- CtMethod wmethod =
- CtNewMethod.make(
- Modifier.PUBLIC | Modifier.STATIC,
- CtClass.voidType,
- getFieldWriteWrapperName(field.getName()),
- new CtClass[]{objectCt, field.getType()},
- null,
- "{" + CLASS_INVOKED + ".invoked = true; ((" + clazz.getName() + ")$1)." + field.getName() + "=(int)$2;}",
- clazz);
- clazz.addMethod(wmethod);
- }
- }
-
- private void addConstructorWrappers(CtClass clazz) throws Exception
- {
- for (CtConstructor ctor : clazz.getConstructors())
- {
- CtMethod wrapper = CtNewMethod.make(clazz, getConstructorName(clazz), ctor.getParameterTypes(), null,
- "{" + CLASS_INVOKED + ".invoked = true; return new " + clazz.getName() + "($$);}", clazz);
- wrapper.setModifiers(Modifier.PUBLIC | Modifier.STATIC);
- clazz.addMethod(wrapper);
- }
- }
-
- private void replaceReferences(final CtClass clazz) throws Exception
- {
- CodeConverter conv = new CodeConverter();
- ScopedClassPool pool = ClassPoolRepository.getInstance().getClassPoolFactory().
- create(clazz.getClassPool(), ClassPoolRepository.getInstance());
- Collection<String> refs = AccessController.doPrivileged(new PrivilegedAction<Collection<String>>() {
-
- public Collection<String> run()
- {
- return clazz.getRefClasses();
- }});
-
- for (String ref : refs)
- {
- if (ref.startsWith(PACKAGE_REPLACEMENT_CHILD) || ref.startsWith(PACKAGE_REPLACEMENT_PARENT))
- {
- if (ref.endsWith("Caller"))
- {
- continue;
- }
- CtClass ctRef = pool.get(ref);
- CtField[] fields = ctRef.getDeclaredFields();
- for (CtField fld : fields)
- {
- conv.replaceFieldRead(fld, ctRef, getFieldReadWrapperName(fld.getName()));
- conv.replaceFieldWrite(fld, ctRef, getFieldWriteWrapperName(fld.getName()));
- }
- conv.replaceNew(ctRef, ctRef, getConstructorName(ctRef));
- }
- }
- clazz.instrument(conv);
- }
-
- private String getFieldReadWrapperName(String fieldName)
- {
- return fieldName + "_read";
- }
-
- private String getFieldWriteWrapperName(String fieldName)
- {
- return fieldName + "_write";
- }
-
- private String getConstructorName(CtClass clazz)
- {
- return clazz.getSimpleName() + "_new";
- }
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithRepositoryTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,1069 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_D;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_C;
-
-import java.util.ArrayList;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.CtMethod;
-import javassist.NotFoundException;
-import junit.framework.Test;
-
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.test.classpool.common.ClassFactory;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-
-/**
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithRepositoryTestCase extends JBossClClassPoolTest
-{
- final static String STRING = String.class.getName();
-
- public ClassPoolWithRepositoryTestCase(String name)
- {
- super(name);
- }
-
-
- public static Test suite()
- {
- return suite(ClassPoolWithRepositoryTestCase.class);
- }
-
- public void testGlobalScope() throws Exception
- {
- ClassPool poolA = null;
- ClassPool poolB = null;
- try
- {
- poolA = createClassPool("A", true, JAR_A_1);
- poolB = createClassPool("B", true, JAR_B_1);
- try
- {
- CtClass aFromA = poolA.get(CLASS_A);
- assertNotNull(aFromA);
- CtClass bFromA = poolA.get(CLASS_B);
- assertNotNull(bFromA);
- CtClass aFromB = poolB.get(CLASS_A);
- CtClass bFromB = poolB.get(CLASS_B);
- assertSame(aFromA, aFromB);
- assertSame(poolA, aFromA.getClassPool());
- assertSame(poolB, bFromB.getClassPool());
-
- checkCanLoadString(poolA, poolB);
- }
- finally
- {
- unregisterClassPool(poolB);
- }
- CtClass aFromA = poolA.get(CLASS_A);
- assertNotNull(aFromA);
-
- assertCannotLoadCtClass(CLASS_B, poolA);
- }
- finally
- {
- unregisterClassPool(poolA);
- }
- }
-
- public void testChildDomain() throws Exception
- {
- ClassPool poolA = null;
- ClassPool poolB = null;
- ClassLoaderDomain childDomain = null;
- ClassPool poolC = null;
- try
- {
- poolA = createClassPool("A", true, JAR_A_1);
- poolB = createClassPool("B", true, JAR_B_1);
- poolC = createChildDomainParentFirstClassPool("C", "CHILD", true, JAR_C_1);
-
- childDomain = getChildDomainForPool(poolC);
- assertNotNull(childDomain);
- assertSame(system.getDefaultDomain(), childDomain.getParent());
-
- CtClass aFromA = poolA.get(CLASS_A);
- assertNotNull(aFromA);
- CtClass bFromB = poolB.get(CLASS_B);
- assertNotNull(bFromB);
- CtClass cFromC = poolC.get(CLASS_C);
- assertNotNull(cFromC);
- CtClass aFromC = poolC.get(CLASS_A);
- assertNotNull(aFromC);
- CtClass bFromC = poolC.get(CLASS_B);
- assertNotNull(bFromC);
-
- assertSame(aFromA, aFromC);
- assertSame(bFromB, bFromC);
- assertSame(poolA, aFromA.getClassPool());
- assertSame(poolB, bFromB.getClassPool());
- assertSame(poolC, cFromC.getClassPool());
-
- assertCannotLoadCtClass(CLASS_C, poolA);
- assertCannotLoadCtClass(CLASS_C, poolB);
-
- checkCanLoadString(poolA, poolB);
- checkCanLoadString(poolB, poolC);
- }
- finally
- {
- unregisterClassPool(poolA);
- unregisterClassPool(poolB);
- unregisterClassPool(poolC);
- unregisterDomain(childDomain.getName());
- }
- }
-
- public void testSiblingDomains() throws Exception
- {
- ClassPool poolA = null;
- ClassPool poolB = null;
- ClassLoaderDomain domainA = null;
- ClassLoaderDomain domainB = null;
- try
- {
- poolA = createChildDomainParentFirstClassPool("A", "ChildA", true, JAR_A_1);
- poolB = createChildDomainParentLastClassPool("B", "ChildB", true, JAR_B_1);
-
- domainA = getChildDomainForPool(poolA);
- assertNotNull(domainA);
- assertSame(system.getDefaultDomain(), domainA.getParent());
- domainB = getChildDomainForPool(poolB);
- assertNotNull(domainB);
- assertSame(system.getDefaultDomain(), domainB.getParent());
- assertNotSame(domainA, domainB);
-
- CtClass clazzA = poolA.get(CLASS_A);
- assertSame(poolA, clazzA.getClassPool());
- CtClass clazzB = poolB.get(CLASS_B);
- assertSame(poolB, clazzB.getClassPool());
- assertCannotLoadCtClass(CLASS_B, poolA);
- assertCannotLoadCtClass(CLASS_A, poolB);
-
- checkCanLoadString(poolA, poolB);
- }
- finally
- {
- unregisterClassPool(poolA);
- unregisterClassPool(poolB);
- unregisterDomain(poolA);
- unregisterDomain(poolB);
- }
- }
-
- public void testChildWithNewClassesInParent() throws Exception
- {
- ClassPool globalPool = null;
- ClassPool scopedPool = null;
- try
- {
- scopedPool = createChildDomainParentFirstClassPool("SCOPED", "SCOPED", true, JAR_B_1);
- assertCannotLoadCtClass(CLASS_A, scopedPool);
-
- globalPool = createClassPool("GLOBAL", true, JAR_A_1);
-
- CtClass aFromChild = scopedPool.get(CLASS_A);
- assertNotNull(aFromChild);
- CtClass aFromParent = globalPool.get(CLASS_A);
- assertNotNull(aFromParent);
- assertSame(aFromChild, aFromParent);
- assertSame(globalPool, aFromParent.getClassPool());
- }
- finally
- {
- unregisterClassPool(globalPool);
- unregisterClassPool(scopedPool);
- unregisterDomain(scopedPool);
- }
- }
-
- public void testChildOverrideWithParentDelegation() throws Exception
- {
- ClassPool globalPool = null;
- ClassPool scopedPool = null;
- try
- {
- globalPool = createClassPool("GLOBAL", true, JAR_A_1);
- scopedPool = createChildDomainParentFirstClassPool("SCOPED", "SCOPED", true, JAR_B_1);
- CtClass aFromParent = globalPool.get(CLASS_A);
- assertNotNull(aFromParent);
- CtClass aFromChild = scopedPool.get(CLASS_A);
- assertNotNull(aFromChild);
- assertSame(aFromParent, aFromChild);
- assertSame(globalPool, aFromParent.getClassPool());
- }
- finally
- {
- unregisterClassPool(globalPool);
- unregisterClassPool(scopedPool);
- unregisterDomain(scopedPool);
- }
- }
-
- public void testURLChildOfGlobalUcl() throws Exception
- {
- ClassPool global = null;
- ClassPool childA = null;
- ClassPool childB = null;
- try
- {
- global = createClassPool("GLOBAL", true, JAR_A_1);
- childA = createChildURLClassPool(global, JAR_B_1);
-
- CtClass aFromA = childA.get(CLASS_A);
- assertSame(global, aFromA.getClassPool());
- CtClass bFromA = childA.get(CLASS_B);
- assertSame(childA, bFromA.getClassPool());
-
- childB = createChildURLClassPool(global, JAR_A_2);
- CtClass aFromB = childB.get(CLASS_A);
- assertSame(global, aFromB.getClassPool());
- }
- finally
- {
- unregisterClassPool(global);
- unregisterClassPool(childA);
- unregisterClassPool(childB);
- }
- }
-
- public void testChildOverrideWithNoParentDelegation() throws Exception
- {
- ClassPool globalPool = null;
- ClassPool scopedPool = null;
- try
- {
- globalPool = createClassPool("GLOBAL", true, JAR_A_1);
- scopedPool = createChildDomainParentLastClassPool("CHILD", "CHILD", true, JAR_A_1);
- CtClass aFromParent = globalPool.get(CLASS_A);
- assertNotNull(aFromParent);
- CtClass aFromChild = scopedPool.get(CLASS_A);
- assertNotNull(aFromChild);
- assertNotSame(aFromParent, aFromChild);
- assertSame(globalPool, aFromParent.getClassPool());
- assertSame(scopedPool, aFromChild.getClassPool());
- }
- finally
- {
- unregisterClassPool(globalPool);
- unregisterClassPool(scopedPool);
- unregisterDomain(scopedPool);
- }
- }
-
-
- public void testUndeploySibling() throws Exception
- {
- ClassPool poolA = null;
- ClassPool poolB = null;
- try
- {
- try
- {
- poolA = createClassPool("A", true, JAR_A_1);
- assertCannotLoadCtClass(CLASS_B, poolA);
-
- poolB = createClassPool("B", true, JAR_B_1);
- CtClass bFromA = poolA.get(CLASS_B);
- assertSame(poolB, bFromA.getClassPool());
- }
- finally
- {
- unregisterClassPool(poolB);
- }
- assertCannotLoadCtClass(CLASS_B, poolA);
- }
- finally
- {
- unregisterClassPool(poolA);
- }
- }
-
-
- public void testUndeployParentDomainClassLoader() throws Exception
- {
- ClassPool globalA = null;
- ClassPool globalB = null;
- ClassPool child = null;
- try
- {
- try
- {
- globalA = createClassPool("A", true, JAR_A_1);
- assertCannotLoadCtClass(CLASS_B, globalA);
-
- child = createChildDomainParentLastClassPool("C", "C", true, JAR_C_1);
- assertCannotLoadCtClass(CLASS_B, child);
-
- globalB = createClassPool("B", true, JAR_B_1);
- CtClass bFromChild = child.get(CLASS_B);
- CtClass bFromA = globalA.get(CLASS_B);
- assertSame(globalB, bFromA.getClassPool());
- assertSame(bFromA, bFromChild);
- }
- finally
- {
- unregisterClassPool(globalB);
- }
- assertCannotLoadCtClass(CLASS_B, child);
- }
- finally
- {
- unregisterClassPool(globalA);
- unregisterClassPool(child);
- unregisterDomain(child);
- }
- }
-
-
- public void testSeveralLevelsOfDomain() throws Exception
- {
- ClassPool parent = null;
- ClassPool cl1B = null;
- ClassPool cl1C = null;
- ClassPool cl2B = null;
- ClassPool cl2C = null;
- ClassPool cl11A = null;
- ClassPool cl11B = null;
- ClassPool cl11C = null;
- ClassPool cl12A = null;
- ClassPool cl12B = null;
- ClassPool cl12C = null;
-
- try
- {
- parent = createClassPool("A", true, JAR_A_1);
- CtClass aFromParent = parent.get(CLASS_A);
- assertSame(parent, aFromParent.getClassPool());
-
- final String domain1 = "1";
- cl1B = createChildDomainParentFirstClassPool("1B", domain1, true, JAR_B_1);
- cl1C = createChildDomainParentFirstClassPool("1C", domain1, true, JAR_C_1);
- CtClass aFrom1B = cl1B.get(CLASS_A);
- CtClass bFrom1B = cl1B.get(CLASS_B);
- CtClass cFrom1B = cl1B.get(CLASS_C);
- CtClass aFrom1C = cl1C.get(CLASS_A);
- CtClass bFrom1C = cl1C.get(CLASS_B);
- CtClass cFrom1C = cl1C.get(CLASS_C);
- assertSame(aFromParent, aFrom1B);
- assertSame(aFromParent, aFrom1C);
- assertSame(bFrom1B, bFrom1C);
- assertSame(cFrom1B, cFrom1C);
- assertSame(cl1B, bFrom1B.getClassPool());
- assertSame(cl1C, cFrom1B.getClassPool());
-
-
- final String domain2 = "2";
- cl2B = createChildDomainParentFirstClassPool("2B", domain2, true, JAR_B_1);
- cl2C = createChildDomainParentFirstClassPool("2C", domain2, true, JAR_C_1);
- CtClass aFrom2B = cl2B.get(CLASS_A);
- CtClass bFrom2B = cl2B.get(CLASS_B);
- CtClass cFrom2B = cl2B.get(CLASS_C);
- CtClass aFrom2C = cl2C.get(CLASS_A);
- CtClass bFrom2C = cl2C.get(CLASS_B);
- CtClass cFrom2C = cl2C.get(CLASS_C);
- assertSame(aFromParent, aFrom2B);
- assertSame(aFromParent, aFrom2C);
- assertSame(bFrom2B, bFrom2C);
- assertSame(cFrom2B, cFrom2C);
- assertSame(cl2B, bFrom2B.getClassPool());
- assertSame(cl2C, cFrom2B.getClassPool());
- assertNotSame(bFrom1B, bFrom2B);
- assertNotSame(bFrom2C, bFrom1C);
- assertNotSame(cFrom2C, cFrom1C);
-
- final String domain11 = "11";
- cl11A = createChildDomainParentFirstClassPool("11A", domain11, domain1, true, JAR_A_2);
- cl11B = createChildDomainParentFirstClassPool("11B", domain11, domain1, true, JAR_B_2);
- cl11C = createChildDomainParentFirstClassPool("11C", domain11, domain1, true, JAR_C_2);
- final String domain12 = "12";
- cl12A = createChildDomainParentLastClassPool("12A", domain12, domain1, true, JAR_A_2);
- cl12B = createChildDomainParentLastClassPool("12B", domain12, domain1, true, JAR_B_2);
- cl12C = createChildDomainParentLastClassPool("12C", domain12, domain1, true, JAR_C_2);
- CtClass aFrom11A = cl11A.get(CLASS_A);
- CtClass aFrom11B = cl11B.get(CLASS_A);
- CtClass aFrom11C = cl11C.get(CLASS_A);
- assertSame(aFromParent, aFrom11A);
- assertSame(aFromParent, aFrom11B);
- assertSame(aFromParent, aFrom11C);
- CtClass aFrom12A = cl12A.get(CLASS_A);
- CtClass aFrom12B = cl12B.get(CLASS_A);
- CtClass aFrom12C = cl12C.get(CLASS_A);
- assertNotSame(aFromParent, aFrom12A);
- assertSame(aFrom12A, aFrom12B);
- assertSame(aFrom12A, aFrom12C);
- assertSame(cl12A, aFrom12A.getClassPool());
-
- CtClass bFrom11A = cl11A.get(CLASS_B);
- CtClass bFrom11B = cl11B.get(CLASS_B);
- CtClass bFrom11C = cl11C.get(CLASS_B);
- CtClass cFrom11A = cl11A.get(CLASS_C);
- CtClass cFrom11B = cl11B.get(CLASS_C);
- CtClass cFrom11C = cl11C.get(CLASS_C);
- assertSame(bFrom11A, bFrom11B);
- assertSame(bFrom11A, bFrom11C);
- assertSame(cl1B, bFrom11B.getClassPool());
- assertSame(cFrom11A, cFrom11B);
- assertSame(cFrom11A, cFrom11C);
- assertSame(cl1C, cFrom11C.getClassPool());
-
- CtClass bFrom12A = cl12A.get(CLASS_B);
- CtClass bFrom12B = cl12B.get(CLASS_B);
- CtClass bFrom12C = cl12C.get(CLASS_B);
- CtClass cFrom12A = cl12A.get(CLASS_C);
- CtClass cFrom12B = cl12B.get(CLASS_C);
- CtClass cFrom12C = cl12C.get(CLASS_C);
- assertSame(bFrom12A, bFrom12B);
- assertSame(bFrom12A, bFrom12C);
- assertSame(cl12B, bFrom12B.getClassPool());
- assertSame(cFrom12A, cFrom12B);
- assertSame(cFrom12A, cFrom12C);
- assertSame(cl12C, cFrom12C.getClassPool());
- assertNotSame(bFrom11B, bFrom12B);
- assertNotSame(cFrom11C, cFrom12C);
- }
- finally
- {
- unregisterClassPool(parent);
- unregisterClassPool(cl1B);
- unregisterClassPool(cl1C);
- unregisterClassPool(cl2B);
- unregisterClassPool(cl2C);
- unregisterClassPool(cl11A);
- unregisterClassPool(cl11B);
- unregisterClassPool(cl11C);
- unregisterClassPool(cl12A);
- unregisterClassPool(cl12B);
- unregisterClassPool(cl12C);
-
- unregisterDomain(cl12A);
- unregisterDomain(cl11A);
- unregisterDomain(cl2B);
- unregisterDomain(cl1B);
- }
- }
-
-
- public void testUclLoaderOrdering() throws Exception
- {
- ClassPool globalA = null;
- ClassPool globalB = null;
- ClassPool globalC = null;
- try
- {
- globalA = createClassPool("A", true, JAR_A_1);
- globalB = createClassPool("B", true, JAR_A_1);
- globalC = createClassPool("C", true, JAR_A_1);
-
- CtClass aFromA = globalA.get(CLASS_A);
- CtClass aFromB = globalB.get(CLASS_A);
- CtClass aFromC = globalC.get(CLASS_A);
- assertSame(aFromA, aFromB);
- assertSame(aFromA, aFromC);
- assertSame(globalA, aFromA.getClassPool());
- }
- finally
- {
- unregisterClassPool(globalA);
- unregisterClassPool(globalB);
- unregisterClassPool(globalC);
- }
- }
-
- public void testSimpleGeneratingClass() throws Exception
- {
-
- ClassPool global = null;
- try
- {
- final String classname = CLASS_A + "XYZ";
- global = createClassPool("A", true, JAR_A_1);
- CtClass newCtClass = global.makeClass(classname);
- Class<?> newClass = newCtClass.toClass();
- Class<?> foundClass = global.getClassLoader().loadClass(classname);
- assertSame(newClass, foundClass);
- }
- finally
- {
- unregisterClassPool(global);
- }
- }
-
- public void testGeneratingClassAndFindInSameDomain() throws Exception
- {
- ClassPool globalA = null;
- ClassPool globalB = null;
- try
- {
- final String classnameA = PACKAGE_A + ".NewClassA";
- final String classnameB = PACKAGE_B + ".NewClassB";
- globalA = createClassPool("A", true, JAR_A_1);
- globalB = createClassPool("B", true, JAR_B_1);
-
- CtClass newCtClassA = globalA.makeClass(classnameA);
- Class<?> newClassA = newCtClassA.toClass();
- assertSame(globalA.getClassLoader(), newClassA.getClassLoader());
- assertSame(newClassA, globalA.getClassLoader().loadClass(classnameA));
- assertSame(newClassA, globalB.getClassLoader().loadClass(classnameA));
-
- CtClass newCtClassB = globalB.makeClass(classnameB);
- Class<?> newClassB = newCtClassB.toClass();
- assertSame(globalB.getClassLoader(), newClassB.getClassLoader());
- assertSame(newClassB, globalA.getClassLoader().loadClass(classnameB));
- assertSame(newClassB, globalB.getClassLoader().loadClass(classnameB));
- }
- finally
- {
- unregisterClassPool(globalA);
- unregisterClassPool(globalB);
- }
- }
-
- public void testGeneratingClassAndFindPreviouslyBlacklistedInSameDomain() throws Exception
- {
- ClassPool globalA = null;
- ClassPool globalB = null;
- try
- {
- final String classnameA = PACKAGE_A + ".NewClassA";
- final String classnameB = PACKAGE_B + ".NewClassB";
- globalA = createClassPool("A", true, JAR_A_1);
- globalB = createClassPool("B", true, JAR_B_1);
-
- assertCannotLoadClass(classnameA, globalA.getClassLoader());
- assertCannotLoadClass(classnameB, globalA.getClassLoader());
- assertCannotLoadClass(classnameA, globalB.getClassLoader());
- assertCannotLoadClass(classnameB, globalB.getClassLoader());
-
- CtClass newCtClassA = globalA.makeClass(classnameA);
- Class<?> newClassA = newCtClassA.toClass();
- assertSame(globalA.getClassLoader(), newClassA.getClassLoader());
- assertSame(newClassA, globalA.getClassLoader().loadClass(classnameA));
- assertSame(newClassA, globalB.getClassLoader().loadClass(classnameA));
-
- CtClass newCtClassB = globalB.makeClass(classnameB);
- Class<?> newClassB = newCtClassB.toClass();
- assertSame(globalB.getClassLoader(), newClassB.getClassLoader());
- assertSame(newClassB, globalA.getClassLoader().loadClass(classnameB));
- assertSame(newClassB, globalB.getClassLoader().loadClass(classnameB));
- }
- finally
- {
- unregisterClassPool(globalA);
- unregisterClassPool(globalB);
- }
- }
-
- public void testGeneratingCrossDomainClassHierarchy() throws Exception
- {
- ClassPool global = null;
- ClassPool child1 = null;
- ClassPool child2 = null;
- try
- {
- final String parentName = PACKAGE_A + ".Parent";
- final String childName = PACKAGE_C + ".Child";
- global = createClassPool("A", true, JAR_A_1);
- child1 = createChildDomainParentLastClassPool("C1", "C1", true, JAR_B_1);
- child2 = createChildDomainParentLastClassPool("C2", "C2", "C1", true, JAR_C_1);
-
- assertCannotLoadCtClass(parentName, global);
- assertCannotLoadCtClass(parentName, child1);
- assertCannotLoadCtClass(parentName, child2);
- assertCannotLoadCtClass(childName, child2);
-
- CtClass parentClass = global.makeClass(parentName);
-
- CtClass childClass = child2.makeClass(childName);
- childClass.setSuperclass(parentClass);
-
- CtClass parentFromGlobal = global.get(parentName);
- assertSame(global, parentFromGlobal.getClassPool());
- assertSame(parentClass, parentFromGlobal);
-
- CtClass childFromChild2 = child2.get(childName);
- assertSame(child2, childFromChild2.getClassPool());
- assertSame(childClass, childFromChild2);
-
- assertCannotLoadCtClass(childName, global);
- assertCannotLoadCtClass(childName, child1);
-
- CtClass parentFromChildA = childClass.getSuperclass();
- assertSame(parentClass, parentFromChildA);
-
- CtClass parentFromChildB = child2.get(parentName);
- assertSame(parentClass, parentFromChildB);
-
- Class<?> parentClazz = parentClass.toClass();
- assertSame(global.getClassLoader(), parentClazz.getClassLoader());
-
- Class<?> childClazz = childClass.toClass();
- assertSame(child2.getClassLoader(), childClazz.getClassLoader());
-
- Class<?> parentClazzFromParent = global.getClassLoader().loadClass(parentName);
- assertSame(parentClazz, parentClazzFromParent);
-
- Class<?> parentClazzFromChild = child2.getClassLoader().loadClass(parentName);
- assertSame(parentClazz, parentClazzFromChild);
-
- Class<?> childClazzFromChild = child2.getClassLoader().loadClass(childName);
- assertSame(childClazz, childClazzFromChild);
- }
- finally
- {
- unregisterClassPool(global);
- unregisterClassPool(child1);
- unregisterClassPool(child2);
- unregisterDomain(child1);
- unregisterDomain(child2);
- }
- }
-
- public void testGeneratingClassInMyPackagesInDelegatingPool() throws Exception
- {
- ClassPool globalA = null;
- ClassPool globalB = null;
- ClassPool child = null;
- try
- {
- final String aClassName = PACKAGE_A + ".Parent";
- final String bClassName = PACKAGE_B + ".BClazz";
- globalA = createClassPool("A", true, JAR_A_1);
- globalB = createClassPool("B", true, JAR_B_1);
- child = createChildURLClassPool(globalA, JAR_C_1);
-
-
- assertCannotLoadCtClass(aClassName, globalA);
- assertCannotLoadCtClass(aClassName, globalB);
- assertCannotLoadCtClass(aClassName, child);
- assertCannotLoadCtClass(bClassName, globalA);
- assertCannotLoadCtClass(bClassName, globalB);
- assertCannotLoadCtClass(bClassName, child);
-
- CtClass a = globalA.makeClass(aClassName);
- CtClass b = globalB.makeClass(bClassName);
-
- CtClass aFromA = globalA.get(aClassName);
- assertSame(a, aFromA);
- assertSame(globalA, aFromA.getClassPool());
- CtClass aFromB = globalB.get(aClassName);
- assertSame(a, aFromB);
- CtClass bFromA = globalA.get(bClassName);
- assertSame(b, bFromA);
- assertSame(globalB, bFromA.getClassPool());
- CtClass bFromB = globalB.get(bClassName);
- assertSame(b, bFromB);
- CtClass aFromChild = child.get(aClassName);
- assertSame(a, aFromChild);
- CtClass bFromChild = child.get(bClassName);
- assertSame(b, bFromChild);
-
- Class<?> clazzA = a.toClass();
- assertSame(globalA.getClassLoader(), clazzA.getClassLoader());
-
- Class<?> clazzB = b.toClass();
- assertSame(globalB.getClassLoader(), clazzB.getClassLoader());
-
- Class<?> clazzAFromA = globalA.getClassLoader().loadClass(aClassName);
- assertSame(clazzA, clazzAFromA);
- Class<?> clazzAFromB = globalB.getClassLoader().loadClass(aClassName);
- assertSame(clazzA, clazzAFromB);
- Class<?> clazzAFromChild = child.getClassLoader().loadClass(aClassName);
- assertSame(clazzA, clazzAFromChild);
-
- Class<?> clazzBFromA = globalA.getClassLoader().loadClass(bClassName);
- assertSame(clazzB, clazzBFromA);
- Class<?> clazzBFromB = globalB.getClassLoader().loadClass(bClassName);
- assertSame(clazzB, clazzBFromB);
- Class<?> clazzBFromChild = child.getClassLoader().loadClass(bClassName);
- assertSame(clazzB, clazzBFromChild);
- }
- finally
- {
- unregisterClassPool(globalA);
- unregisterClassPool(globalB);
- unregisterClassPool(child);
- }
- }
-
- public void testCanLoadArrayCtClass() throws Exception
- {
- ClassPool poolA = null;
- ClassPool poolB = null;
- try
- {
- poolA = createClassPool("A", true, JAR_A_1);
- poolB = createClassPool("B", true, JAR_B_1);
- accessCanLoadCtArray(poolA, poolB);
- accessCanLoadCtArray(poolA, poolB);
- }
- finally
- {
- unregisterClassPool(poolA);
- unregisterClassPool(poolB);
- }
- }
-
- private void accessCanLoadCtArray(ClassPool poolA, ClassPool poolB) throws Exception
- {
- poolA.get(String.class.getName() + "[][]");
- CtClass a = poolA.get(CLASS_A);
- CtClass aArray = poolA.get(CLASS_A + "[]");
- CtClass bArray = poolA.get(CLASS_B + "[][]");
- CtClass b = poolA.get(CLASS_B);
-
- CtClass byteClassA = poolA.get("byte");
- CtClass byteClassB = poolB.get("byte");
- assertSame(byteClassA, byteClassB);
- assertNotSame(poolA, byteClassA.getClassPool());
- assertNotSame(poolB, byteClassA.getClassPool());
- CtClass intArrayClass = poolA.get("int[]");
- CtClass intClass = poolB.get("int");
- assertSame(intClass, intArrayClass.getComponentType());
- assertSame(byteClassA.getClassPool(), intClass.getClassPool());
-
-
-
- assertTrue(aArray.isArray());
- assertSame(a, aArray.getComponentType());
- assertTrue(bArray.isArray());
- assertTrue(bArray.getComponentType().isArray());
- assertSame(b, bArray.getComponentType().getComponentType());
- assertNotSame(aArray.getClassPool(), bArray.getClassPool());
- assertSame(poolA, aArray.getClassPool());
- assertSame(poolB, bArray.getClassPool());
- assertSame(a.getClassPool(), aArray.getClassPool());
- assertSame(b.getClassPool(), bArray.getClassPool());
- }
-
- public void testClassLoaderWithParentClassLoader() throws Exception
- {
- ClassPool parent = createChildURLClassPool(null, JAR_B_1);
- ClassPool global = null;
- try
- {
- global = createChildDomainParentFirstClassPool("A", "A", true, parent, JAR_A_1);
- CtClass aFromGlobal = global.get(CLASS_A);
- assertSame(global, aFromGlobal.getClassPool());
- CtClass bFromGlobal = global.get(CLASS_B);
- assertSame(parent, bFromGlobal.getClassPool());
- CtClass bFromParent = parent.get(CLASS_B);
- assertSame(bFromGlobal, bFromParent);
- assertCannotLoadCtClass(CLASS_A, parent);
- }
- finally
- {
- unregisterClassPool(global);
- unregisterClassPool(parent);
- unregisterDomain(global);
- }
- }
-
- public void testClassLoaderWithParentClassLoaderAndCrossReference() throws Exception
- {
- ClassPool parent = createChildURLClassPool(null, JAR_B_1);
- ClassPool global = null;
- try
- {
- global = createChildDomainParentLastClassPool("D", "D", true, parent, JAR_D);
- CtClass dFromGlobal = global.get(CLASS_D);
- assertSame(global, dFromGlobal.getClassPool());
- CtClass bFromGlobal = global.get(CLASS_B);
- assertSame(parent, bFromGlobal.getClassPool());
- CtClass bFromParent = parent.get(CLASS_B);
- assertSame(bFromGlobal, bFromParent);
- assertCannotLoadCtClass(CLASS_D, parent);
-
- CtMethod method = dFromGlobal.getDeclaredMethod("getB");
- assertSame(method.getReturnType(), bFromParent);
-
- }
- finally
- {
- unregisterClassPool(global);
- unregisterClassPool(parent);
- unregisterDomain(global);
- }
- }
-
- public void testClassLoaderWithParentClassLoaderAndSameClassInDomain() throws Exception
- {
- ClassPool parent = createChildURLClassPool(null, JAR_B_1);
- ClassPool globalA = null;
- ClassPool globalB = null;
- ClassPool globalC = null;
- try
- {
- final String domain = "CHILD";
- globalA = createChildDomainParentFirstClassPool("A", domain, true, parent, JAR_A_1);
- CtClass aFromGlobal = globalA.get(CLASS_A);
- assertSame(globalA, aFromGlobal.getClassPool());
- CtClass bFromGlobalA = globalA.get(CLASS_B);
- assertSame(parent, bFromGlobalA.getClassPool());
-
- globalB = createChildDomainParentFirstClassPool("B", domain, true, parent, JAR_B_2);
- CtClass bFromParent = parent.get(CLASS_B);
- assertSame(parent, bFromParent.getClassPool());
- assertSame(bFromGlobalA, bFromParent);
-
- CtClass bFromGlobalB = globalB.get(CLASS_B);
- assertSame(bFromGlobalB, bFromParent);
-
- globalC = createChildDomainParentLastClassPool("C", domain + "2", true, parent, JAR_B_2);
- assertLoadCtClass(CLASS_B, globalC);
- }
- finally
- {
- unregisterClassPool(globalA);
- unregisterClassPool(globalB);
- unregisterClassPool(globalC);
- unregisterClassPool(parent);
- unregisterDomain(globalA);
- unregisterDomain(globalC);
- }
- }
-
- public void testCreatedClassInSamePackage() throws Exception
- {
- ClassPool globalPoolA = null;
- ClassPool globalPoolB = null;
- try
- {
- globalPoolA = createClassPool("A", true, JAR_A_1);
- globalPoolB = createClassPool("B", true, JAR_B_1);
-
- ClassLoader loaderA = globalPoolA.getClassLoader();
- ClassLoader loaderB = globalPoolB.getClassLoader();
-
- Class<?> classA = loaderA.loadClass(CLASS_A);
- Class<?> classB = loaderB.loadClass(CLASS_B);
-
- Object createdA = ClassFactory.create(classA, loaderA);
- Object createdB = ClassFactory.create(classB, loaderB);
-
- Class<?> createdClassA = createdA.getClass();
- Class<?> createdClassB = createdB.getClass();
-
- assertTrue(classA.isAssignableFrom(createdClassA));
- assertTrue(classB.isAssignableFrom(createdClassB));
- assertTrue(createdClassA.getName().startsWith(PACKAGE_A));
- assertTrue(createdClassB.getName().startsWith(PACKAGE_B));
-
- assertSame(createdClassA, loaderA.loadClass(createdClassA.getName()));
- assertSame(createdClassB, loaderA.loadClass(createdClassB.getName()));
- assertSame(createdClassA, loaderB.loadClass(createdClassA.getName()));
- assertSame(createdClassB, loaderB.loadClass(createdClassB.getName()));
- }
- finally
- {
- unregisterClassPool(globalPoolA);
- unregisterClassPool(globalPoolB);
- }
- }
-
- /*public void testMakeContainerProxyInSamePackage() throws Exception
- {
- ClassPool globalPoolA = null;
- ClassPool globalPoolB = null;
- try
- {
- globalPoolA = createClassPool("A", true, JAR_A_1);
- globalPoolB = createClassPool("B", true, JAR_B_1);
-
- ClassLoader loaderA = globalPoolA.getClassLoader();
- ClassLoader loaderB = globalPoolB.getClassLoader();
-
- loaderA.loadClass(ProxyTemplate.class.getName());
-
- Object proxyA = assertMakeContainerProxy(loaderA.loadClass(CLASS_A), loaderA);
- Object proxyB = assertMakeContainerProxy(loaderB.loadClass(CLASS_B), loaderB);
-
- Class<?> clazzA = proxyA.getClass();
- Class<?> clazzB = proxyB.getClass();
-
- assertTrue(AspectManaged.class.isAssignableFrom(clazzA));
- assertTrue(AspectManaged.class.isAssignableFrom(clazzB));
- assertTrue(clazzA.getName().startsWith(PACKAGE_A));
- assertTrue(clazzB.getName().startsWith(PACKAGE_B));
-
- assertSame(clazzA, loaderA.loadClass(clazzA.getName()));
- assertSame(clazzB, loaderA.loadClass(clazzB.getName()));
- assertSame(clazzA, loaderB.loadClass(clazzA.getName()));
- assertSame(clazzB, loaderB.loadClass(clazzB.getName()));
- }
- finally
- {
- unregisterClassPool(globalPoolA);
- unregisterClassPool(globalPoolB);
- }
- }*/
-
- /*public void testMakeContainerProxyForSystemClass() throws Exception
- {
- ClassPool globalPoolA = null;
- ClassPool globalPoolB = null;
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA").
- createPackage(PACKAGE_A).
- createPackage(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE);
- globalPoolA = createClassPool("A", true, builderA, JAR_A_1);
-
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createModule("ModuleB").
- createPackage(PACKAGE_B).
- createPackage(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE);
- globalPoolB = createClassPool("B", true, builderB, JAR_B_1);
-
- ClassLoader loaderA = globalPoolA.getClassLoader();
- ClassLoader loaderB = globalPoolB.getClassLoader();
-
- loaderA.loadClass(ProxyTemplate.class.getName());
-
- Object proxyA = assertMakeContainerProxy(ArrayList.class, loaderA);
- Object proxyB = assertMakeContainerProxy(ArrayList.class, loaderB);
-
- Class<?> clazzA = proxyA.getClass();
- Class<?> clazzB = proxyB.getClass();
-
- assertTrue(AspectManaged.class.isAssignableFrom(clazzA));
- assertTrue(AspectManaged.class.isAssignableFrom(clazzB));
- assertTrue(clazzA.getName().startsWith(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE));
- assertTrue(clazzB.getName().startsWith(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE));
-
- assertSame(clazzA, loaderA.loadClass(clazzA.getName()));
- assertSame(clazzB, loaderA.loadClass(clazzB.getName()));
- assertSame(clazzA, loaderB.loadClass(clazzA.getName()));
- assertSame(clazzB, loaderB.loadClass(clazzB.getName()));
- }
- finally
- {
- unregisterClassPool(globalPoolA);
- unregisterClassPool(globalPoolB);
- }
- }*/
-
- public void testCreateClassForSystemClass() throws Exception
- {
- ClassPool globalPoolA = null;
- ClassPool globalPoolB = null;
- try
- {
- BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
- createModule("ModuleA").
- createPackage(PACKAGE_A).
- createPackage(ClassFactory.PACKAGE);
- globalPoolA = createClassPool("A", true, builderA, JAR_A_1);
-
- BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
- createModule("ModuleB").
- createPackage(PACKAGE_B).
- createPackage(ClassFactory.PACKAGE);
- globalPoolB = createClassPool("B", true, builderB, JAR_B_1);
-
- ClassLoader loaderA = globalPoolA.getClassLoader();
- ClassLoader loaderB = globalPoolB.getClassLoader();
-
- Object createdA = ClassFactory.create(ArrayList.class, loaderA);
- Object createdB = ClassFactory.create(ArrayList.class, loaderB);
-
- Class<?> createdClassA = createdA.getClass();
- Class<?> createdClassB = createdB.getClass();
-
- assertTrue(ArrayList.class.isAssignableFrom(createdClassA));
- assertTrue(ArrayList.class.isAssignableFrom(createdClassB));
- assertTrue(createdClassA.getName().startsWith(ClassFactory.PACKAGE));
- assertTrue(createdClassB.getName().startsWith(ClassFactory.PACKAGE));
-
- assertSame(createdClassA, loaderA.loadClass(createdClassA.getName()));
- assertSame(createdClassB, loaderA.loadClass(createdClassB.getName()));
- assertSame(createdClassA, loaderB.loadClass(createdClassA.getName()));
- assertSame(createdClassB, loaderB.loadClass(createdClassB.getName()));
- }
- finally
- {
- unregisterClassPool(globalPoolA);
- unregisterClassPool(globalPoolB);
- }
- }
-
- /*private Object assertMakeContainerProxy(Class<?> parent, ClassLoader loader) throws Exception
- {
- AOPProxyFactoryParameters params = new AOPProxyFactoryParameters();
- params.setProxiedClass(parent);
- params.setTarget(parent.newInstance());
- params.setClassLoader(loader);
- params.setInterfaces(new Class<?>[] {java.io.Serializable.class});
- GeneratedAOPProxyFactory factory = new GeneratedAOPProxyFactory();
- Object proxy = factory.createAdvisedProxy(params);
- assertFalse(parent.getName() == proxy.getClass().getName());
- assertSame(loader, proxy.getClass().getClassLoader());
- return proxy;
- }*/
-
- /*private static final String PROXY_PACKAGE = "org.test.classpool.proxy";
- private static final String PROXY_CLASS = PROXY_PACKAGE + ".Proxy";
- private static int counter = 0;
-
- private Object assertMakeSimpleProxy(Class<?> parent, ClassLoader loader) throws Exception
- {
- //AOPProxyFactoryParameters params = new AOPProxyFactoryParameters();
- //params.setProxiedClass(parent);
- //params.setTarget(parent.newInstance());
- //params.setClassLoader(loader);
- ClassPool pool = ClassPoolRepository.getInstance().getRegisteredCLs().get(loader);
- CtClass ctClazz = pool.makeClass(PROXY_CLASS + counter++);
- ctClazz.setSuperclass(pool.get(parent.getName()));
- Class<?> clazz = pool.toClass(ctClazz);
- //params.setInterfaces(new Class<?>[] {java.io.Serializable.class});
- //GeneratedAOPProxyFactory factory = new GeneratedAOPProxyFactory();
- //Object proxy = factory.createAdvisedProxy(params);
- //assertFalse(parent.getName() == proxy.getClass().getName());
- assertSame(loader, clazz.getClassLoader());
- //return proxy;
- return clazz.newInstance();
- }*/
-
- private void checkCanLoadString(ClassPool poolA, ClassPool poolB) throws NotFoundException
- {
- CtClass strA = poolA.getCtClass(STRING);
- CtClass strB = poolB.getCtClass(STRING);
- assertSame(strA, strB);
- assertSame(strB.getClassPool(), strA.getClassPool());
- assertNotSame(poolA, strA.getClassPool());
- assertNotSame(poolB, strB.getClassPool());
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithUsesPackageTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithUsesPackageTestCase.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithUsesPackageTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,112 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.jbosscl.test;
-
-import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
-import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
-import javassist.ClassPool;
-import javassist.CtClass;
-import junit.framework.Test;
-
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
-
-/**
- * Reproduces ClassLoaderWithUsesPackageSanityTestCase
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class ClassPoolWithUsesPackageTestCase extends JBossClClassPoolTest
-{
-
- public ClassPoolWithUsesPackageTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(ClassPoolWithUsesPackageTestCase.class);
- }
-
- public void testUsesImport() throws Exception
- {
- ClassPool clA1 = null;
- Result rA1 = new Result();
- try
- {
- BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
- createModule("a1").
- createPackage(PACKAGE_A);
- clA1 = createClassPool(rA1, "A1", builderA1, JAR_A_1);
- CtClass classA = assertLoadCtClass(CLASS_A, clA1);
-
- ClassPool clA2 = null;
- Result rA2 = new Result();
- try
- {
- BundleInfoBuilder builderA2 = BundleInfoBuilder.getBuilder().
- createModule("a2").
- createUsesPackage(PACKAGE_A);
-
- clA2 = createClassPool(rA2, "A2", builderA2, JAR_A_1);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA1);
- assertSame(classA, classA1);
- classA1 = assertLoadCtClass(CLASS_A, clA2, clA1);
- assertSame(classA, classA1);
- }
- finally
- {
- unregisterClassPool(clA2);
- }
- assertNoClassLoader(rA2);
- CtClass classA1 = assertLoadCtClass(CLASS_A, clA1);
- assertSame(classA, classA1);
- }
- finally
- {
- unregisterClassPool(clA1);
- }
- assertNoClassLoader(rA1);
- }
-
- public void testUsesNoImport() throws Exception
- {
- ClassPool clA1 = null;
- Result rA1 = new Result();
- try
- {
- BundleInfoBuilder builderA1 = BundleInfoBuilder.getBuilder().
- createModule("a1").
- createUsesPackage(PACKAGE_A);
- clA1 = createClassPool(rA1, "A1", builderA1, JAR_A_1);
- assertLoadCtClass(CLASS_A, clA1);
- }
- finally
- {
- unregisterClassPool(clA1);
- }
- assertNoClassLoader(rA1);
- }
-
-}
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/DependencyTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/DependencyTest.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/DependencyTest.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,248 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
+
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.NoSuchClassLoaderException;
+
+/**
+ * Contains tests for dependency test scenarios,such as dependency on modules and on packages.
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class DependencyTest<C, L> extends JBossClClassPoolTest<C, L>
+{
+ public DependencyTest(String name)
+ {
+ super(name);
+ }
+
+ public void testImportNoVersionCheck() throws Exception
+ {
+ CLDeploymentBuilder clBuilderA = createExportCLBuilder("A");
+
+ CLDeploymentBuilder clBuilderB = createRequireCLBuilder();
+
+ assertRequiredModule(clBuilderA, clBuilderB);
+ }
+
+ public void testImportVersionCheck() throws Exception
+ {
+ CLDeploymentBuilder clBuilderA = createExportCLBuilder("A", "1.0.0");
+ CLDeploymentBuilder clBuilderB = createRequireCLBuilder(new VersionRange("1.0.0", "2.0.0"));
+
+ assertRequiredModule(clBuilderA, clBuilderB);
+ }
+
+ public void testImportVersionCheckFailed() throws Exception
+ {
+ CLDeploymentBuilder clBuilderA = createExportCLBuilder("A", "3.0.0");
+ L loaderA = testScenario.createLoader(clBuilderA);
+
+ C classA = testScenario.loadClass(loaderA, CLASS_A);
+ testScenario.cannotLoadClass(loaderA, CLASS_B);
+
+ CLDeploymentBuilder clBuilderB = createRequireCLBuilder(new VersionRange("1.0.0", "2.0.0"));
+ try
+ {
+ testScenario.createLoader(clBuilderB);
+ fail("Should not have been able to create loader");
+ }
+ catch(NoSuchClassLoaderException expected) {}
+
+ testScenario.cannotGetLoader(clBuilderB);
+ C classA1 = testScenario.loadClass(loaderA, CLASS_A);
+ assertSame(classA, classA1);
+ testScenario.cannotLoadClass(loaderA, CLASS_B);
+ }
+
+ //These are my extra tests
+ public abstract void testSeveralModulesWithSamePackages() throws Exception;
+
+ //These are my extra tests
+ public void testSeveralModulesWithSamePackages(String exporterLoader) throws Exception
+ {
+ CLDeploymentBuilder clAModuleXBuilder = createExportCLBuilder("X");
+ CLDeploymentBuilder clAModuleABuilder = createExportCLBuilder("A");
+ CLDeploymentBuilder clAModuleYBuilder = createExportCLBuilder("Y");
+ CLDeploymentBuilder clBuilderB = createRequireCLBuilder();
+
+ int exporterLoaderIndex = 0;
+ if (exporterLoader.equals("X"))
+ {
+ exporterLoaderIndex = 1;
+ }
+ else if (exporterLoader.equals("A"))
+ {
+ exporterLoaderIndex = 2;
+ }
+ else if (exporterLoader.equals("Y"))
+ {
+ exporterLoaderIndex = 3;
+ }
+ else
+ {
+ throw new IllegalStateException("Exporter loader should be one of: \"X\", \"A\" or \"Y\"");
+ }
+ assertRequireModule(clAModuleXBuilder, clAModuleABuilder,
+ clAModuleYBuilder, clBuilderB, exporterLoaderIndex);
+ }
+
+ public void testSeveralModulesWithSameNamesDifferentVersions() throws Exception
+ {
+ CLDeploymentBuilder clAModuleA1Builder = createExportCLBuilder("X", "1.0.0");
+ CLDeploymentBuilder clAModuleA2Builder = createExportCLBuilder("A", "2.0.0");
+ CLDeploymentBuilder clAModuleA3Builder = createExportCLBuilder("Y", "3.0.0");
+ CLDeploymentBuilder clBuilderB = createRequireCLBuilder(
+ new VersionRange("2.0.0", true, "3.0.0", false));
+
+ assertRequireModule(clAModuleA1Builder, clAModuleA2Builder,
+ clAModuleA3Builder, clBuilderB, 2);
+ }
+
+ private void assertRequiredModule(CLDeploymentBuilder clBuilderA,
+ CLDeploymentBuilder clBuilderB) throws NoSuchClassLoaderException,
+ Exception
+ {
+ L loaderA = testScenario.createLoader(clBuilderA);
+ testScenario.cannotLoadClass(loaderA, CLASS_B);
+ C aFromA = testScenario.loadClass(loaderA, CLASS_A);
+
+ L loaderB = testScenario.createLoader(clBuilderB);
+
+ C aFromA1 = testScenario.loadClass(loaderA, CLASS_A);
+ assertSame(aFromA, aFromA1);
+
+ testScenario.cannotLoadClass(loaderA, CLASS_B);
+ testScenario.loadClass(loaderB, CLASS_B);
+
+ C aFromB = testScenario.loadClass(loaderB, loaderA, CLASS_A);
+ assertSame(aFromA, aFromB);
+
+ testScenario.destroyLoader(clBuilderB);
+
+ aFromA1 = testScenario.loadClass(loaderA, CLASS_A);
+ assertSame(aFromA, aFromA1);
+ testScenario.cannotLoadClass(loaderA, CLASS_B);
+ }
+
+ private void assertRequireModule(CLDeploymentBuilder moduleBuilder1,
+ CLDeploymentBuilder moduleBuilder2,
+ CLDeploymentBuilder moduleBuilder3, CLDeploymentBuilder clBuilder,
+ int exporterModule)
+ throws NoSuchClassLoaderException, Exception
+ {
+ L moduleLoader1 = testScenario.createLoader(moduleBuilder1);
+ L moduleLoader2 = testScenario.createLoader(moduleBuilder2);
+ L moduleLoader3 = testScenario.createLoader(moduleBuilder3);
+
+ C classA1 = testScenario.loadClass(moduleLoader1, CLASS_A);
+ C classA2 = testScenario.loadClass(moduleLoader2, CLASS_A);
+ C classA3 = testScenario.loadClass(moduleLoader3, CLASS_A);
+ testScenario.cannotLoadClass(moduleLoader1, CLASS_B);
+ testScenario.cannotLoadClass(moduleLoader2, CLASS_B);
+ testScenario.cannotLoadClass(moduleLoader3, CLASS_B);
+
+
+ L loaderB = testScenario.createLoader(clBuilder);
+
+ C classA1_ = testScenario.loadClass(moduleLoader1, CLASS_A);
+ assertSame(classA1, classA1_);
+ C classA2_ = testScenario.loadClass(moduleLoader2, CLASS_A);
+ assertSame(classA2, classA2_);
+ C classA3_ = testScenario.loadClass(moduleLoader3, CLASS_A);
+ assertSame(classA3, classA3_);
+ testScenario.cannotLoadClass(moduleLoader1, CLASS_B);
+ testScenario.cannotLoadClass(moduleLoader2, CLASS_B);
+ testScenario.cannotLoadClass(moduleLoader3, CLASS_B);
+
+ testScenario.loadClass(loaderB, CLASS_B);
+ L exporterLoader = null;
+ C exporterLoaderClass = null;
+ switch(exporterModule)
+ {
+ case 1:
+ exporterLoader = moduleLoader1;
+ exporterLoaderClass = classA1;
+ break;
+ case 2:
+ exporterLoader = moduleLoader2;
+ exporterLoaderClass = classA2;
+ break;
+ case 3:
+ exporterLoader = moduleLoader3;
+ exporterLoaderClass = classA3;
+ break;
+ default: throw new IllegalStateException("Exporter loader should range from 1 to 3");
+ }
+ C aFromB = testScenario.loadClass(loaderB, exporterLoader, CLASS_A);
+ assertSame(aFromB, exporterLoaderClass);
+
+ testScenario.destroyLoader(clBuilder);
+
+ classA1_ = testScenario.loadClass(moduleLoader1, CLASS_A);
+ assertSame(classA1, classA1_);
+ classA2_ = testScenario.loadClass(moduleLoader2, CLASS_A);
+ assertSame(classA2, classA2_);
+ classA3_ = testScenario.loadClass(moduleLoader3, CLASS_A);
+ assertSame(classA3, classA3_);
+ testScenario.cannotLoadClass(moduleLoader1, CLASS_B);
+ testScenario.cannotLoadClass(moduleLoader2, CLASS_B);
+ testScenario.cannotLoadClass(moduleLoader3, CLASS_B);
+ }
+
+
+
+ private CLDeploymentBuilder createExportCLBuilder(String name)
+ {
+ return createExportCLBuilder(name, null);
+ }
+
+ private CLDeploymentBuilder createExportCLBuilder(String name, String version)
+ {
+ CLDeploymentBuilder clBuilderA = new CLDeploymentBuilder(name, JAR_A_1);
+ createExportCapabilities(clBuilderA, "Module" + name, version);
+ return clBuilderA;
+ }
+
+ protected abstract void createExportCapabilities(CLDeploymentBuilder clBuilderA, String moduleName, String version);
+
+ private CLDeploymentBuilder createRequireCLBuilder()
+ {
+ return createRequireCLBuilder(null);
+ }
+
+ private CLDeploymentBuilder createRequireCLBuilder(VersionRange requiredVersion)
+ {
+ CLDeploymentBuilder clBuilderB = new CLDeploymentBuilder("B", JAR_B_1);
+ createRequireCapabilities(clBuilderB, requiredVersion);
+ return clBuilderB;
+ }
+
+ protected abstract void createRequireCapabilities(CLDeploymentBuilder clBuilderB, VersionRange version);
+}
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/DependencyTest.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/HierarchicalDomainClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainClassPoolTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainClassPoolTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,57 @@
+/*
+ * 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 javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the hierarchical domain tests against a class pool test scenario.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class HierarchicalDomainClassPoolTestCase extends
+ HierarchicalDomainTest<CtClass, ClassPool>
+{
+ public static Test suite()
+ {
+ return new TestSuite(HierarchicalDomainClassPoolTestCase.class);
+ }
+
+ public HierarchicalDomainClassPoolTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<CtClass, ClassPool> getTestScenario()
+ {
+ return new ClassPoolTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainClassPoolTestCase.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/HierarchicalDomainSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainSanityTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainSanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * 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;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the hierarchical domain tests against a sanity test scenario (for class loader
+ * behavior sanity checking).
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class HierarchicalDomainSanityTestCase extends
+ HierarchicalDomainTest<Class<?>, ClassLoader>
+{
+ public static Test suite()
+ {
+ return new TestSuite(HierarchicalDomainSanityTestCase.class);
+ }
+
+ public HierarchicalDomainSanityTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ {
+ return new SanityTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainSanityTestCase.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/HierarchicalDomainTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainTest.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainTest.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,293 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.classpool.jbosscl.test;
+
+import static org.jboss.classloader.spi.ClassLoaderSystem.DEFAULT_DOMAIN_NAME;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.NoSuchClassLoaderException;
+
+/**
+ * Reproduces org.jboss.test.classloading.dependency.test.HierarchicalDomainUnitTestCase using
+ * our test framework.
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class HierarchicalDomainTest<C, L> extends JBossClClassPoolTest<C, L>
+{
+ private static final String PARENT_DOMAIN = "ParentDomain";
+ private static final String CHILD_DOMAIN = "ChildDomain";
+
+ public HierarchicalDomainTest(String name)
+ {
+ super(name);
+ }
+
+ public void testParentFirst() throws Exception
+ {
+ testParentTwoChildren(true, false);
+ }
+
+ public void testParentFirstImportAll() throws Exception
+ {
+ testParentTwoChildren(true, true);
+ }
+
+ public void testParentLast() throws Exception
+ {
+ testParentTwoChildren(false, false);
+ }
+
+ public void testParentLastImportAll() throws Exception
+ {
+ testParentTwoChildren(false, true);
+ }
+
+ public void testParentLastNotInChild() throws Exception
+ {
+ CLDeploymentBuilder parentCLBuilder = createParentCLBuilder();
+ L parentLoader = testScenario.createLoader(parentCLBuilder);
+ assertCanLoadAButNotB(parentLoader);
+
+ CLDeploymentBuilder childCLBuilder = createChildCLBuilder(false, DEFAULT_DOMAIN_NAME);
+ L childLoader = testScenario.createLoader(childCLBuilder);
+ assertHierarchicalDomain(parentLoader, childLoader);
+ }
+
+
+ public void testParentFirstWrongWayAround() throws Exception
+ {
+ testParentWrongWayAround(true);
+ }
+
+ public void testParentLastWrongWayAround() throws Exception
+ {
+ testParentWrongWayAround(false);
+ }
+
+ public void testParentRedeploy() throws Exception
+ {
+ CLDeploymentBuilder childCLBuilder = createChildCLBuilder(true, DEFAULT_DOMAIN_NAME);
+ try
+ {
+ testScenario.createLoader(childCLBuilder);
+ fail("Should be no loader");
+ }
+ catch(NoSuchClassLoaderException e) {}
+ testScenario.cannotGetLoader(childCLBuilder);
+
+ CLDeploymentBuilder parentCLBuilder = createParentCLBuilder();
+ L parentLoader = testScenario.createLoader(parentCLBuilder);
+ assertCanLoadAButNotB(parentLoader);
+
+ L childLoader = testScenario.getLoader(childCLBuilder);
+ assertHierarchicalDomain(parentLoader, childLoader);
+
+ assertRedeploy(childCLBuilder, parentCLBuilder);
+ }
+
+ public void testParentOtherDomain() throws Exception
+ {
+ CLDeploymentBuilder parentCLBuilder = createParentCLBuilderWithDomain();
+ L parentLoader = testScenario.createLoader(parentCLBuilder);
+ assertCanLoadAButNotB(parentLoader);
+
+ CLDeploymentBuilder childCLBuilder = createChildCLBuilder(true, PARENT_DOMAIN);
+ L childLoader = testScenario.createLoader(childCLBuilder);
+
+ assertHierarchicalDomain(parentLoader, childLoader);
+ }
+
+ public void testParentOtherDomainLazy() throws Exception
+ {
+ CLDeploymentBuilder childCLBuilder = createChildCLBuilder(true, PARENT_DOMAIN);
+ try
+ {
+ testScenario.createLoader(childCLBuilder);
+ fail("Should be no loader");
+ }
+ catch(NoSuchClassLoaderException e) {}
+ testScenario.cannotGetLoader(childCLBuilder);
+
+ CLDeploymentBuilder parentCLBuilder = createParentCLBuilderWithDomain();
+ L parentLoader = testScenario.createLoader(parentCLBuilder);
+ assertCanLoadAButNotB(parentLoader);
+
+ L childLoader = testScenario.getLoader(childCLBuilder);
+ assertHierarchicalDomain(parentLoader, childLoader);
+ }
+
+ public void testParentRedeployOtherDomain() throws Exception
+ {
+ CLDeploymentBuilder childCLBuilder = createChildCLBuilder(true, PARENT_DOMAIN);
+ try
+ {
+ testScenario.createLoader(childCLBuilder);
+ fail("Should be no loader");
+ }
+ catch(NoSuchClassLoaderException e) {}
+ testScenario.cannotGetLoader(childCLBuilder);
+
+ CLDeploymentBuilder parentCLBuilder = createParentCLBuilderWithDomain();
+ L parentLoader = testScenario.createLoader(parentCLBuilder);
+ assertCanLoadAButNotB(parentLoader);
+
+ L childLoader = testScenario.getLoader(childCLBuilder);
+ assertHierarchicalDomain(parentLoader, childLoader);
+
+ assertRedeploy(childCLBuilder, parentCLBuilder);
+ }
+
+ private void testParentTwoChildren(boolean parentFirst, boolean childImportAll)
+ throws NoSuchClassLoaderException, Exception
+ {
+ CLDeploymentBuilder parentCLBuilder = createParentCLBuilder();
+ L parentLoader = testScenario.createLoader(parentCLBuilder);
+ assertCanLoadAButNotB(parentLoader);
+
+ CLDeploymentBuilder childCLBuilderA = new CLDeploymentBuilder("aChild", JAR_A_2);
+ childCLBuilderA.createDomain(CHILD_DOMAIN, parentFirst);
+ L childLoaderA = testScenario.createLoader(childCLBuilderA);
+ assertCanLoadAButNotB(parentLoader);
+ if (parentFirst)
+ {
+ assertCanLoadAButNotB(childLoaderA, parentLoader);
+ }
+ else
+ {
+ assertCanLoadAButNotB(childLoaderA);
+ }
+
+ CLDeploymentBuilder childCLBuilderB = createChildCLBuilder(childImportAll);
+ L childLoaderB = testScenario.createLoader(childCLBuilderB);
+ if (parentFirst)
+ {
+ testScenario.loadClass(childLoaderA, parentLoader, CLASS_A);
+ }
+ else
+ {
+ testScenario.loadClass(childLoaderA, CLASS_A);
+ }
+ if (childImportAll)
+ {
+ testScenario.loadClass(childLoaderA, childLoaderB, CLASS_B);
+ }
+ else
+ {
+ testScenario.cannotLoadClass(childLoaderA, CLASS_B);
+ }
+ testScenario.loadClass(childLoaderB, CLASS_B);
+ testScenario.loadClass(childLoaderB, parentFirst? parentLoader: childLoaderA, CLASS_A);
+ }
+
+ private void testParentWrongWayAround(boolean parentFirst) throws Exception
+ {
+ CLDeploymentBuilder childBuilder = createChildCLBuilder(parentFirst, DEFAULT_DOMAIN_NAME);
+ try
+ {
+ testScenario.createLoader(childBuilder);
+ fail("Should be no loader");
+ }
+ catch(NoSuchClassLoaderException e) {}
+ testScenario.cannotGetLoader(childBuilder);
+
+ CLDeploymentBuilder parentBuilder = createParentCLBuilder();
+ L parentLoader = testScenario.createLoader(parentBuilder);
+ assertCanLoadAButNotB(parentLoader);
+
+ L childLoader = testScenario.getLoader(childBuilder);
+ assertHierarchicalDomain(parentLoader, childLoader);
+ }
+
+
+ private void assertRedeploy(CLDeploymentBuilder childCLBuilder,
+ CLDeploymentBuilder parentCLBuilder)
+ throws NoSuchClassLoaderException, Exception
+ {
+ L parentLoader;
+ L childLoader;
+ testScenario.destroyLoader(parentCLBuilder);
+
+ testScenario.cannotGetLoader(parentCLBuilder);
+ testScenario.cannotGetLoader(childCLBuilder);
+
+ parentLoader = testScenario.createLoader(parentCLBuilder);
+ assertCanLoadAButNotB(parentLoader);
+
+ childLoader = testScenario.getLoader(childCLBuilder);
+ assertHierarchicalDomain(parentLoader, childLoader);
+ }
+
+ private CLDeploymentBuilder createParentCLBuilder()
+ {
+ return new CLDeploymentBuilder("aParent", JAR_A_1);
+ }
+
+ private CLDeploymentBuilder createParentCLBuilderWithDomain()
+ {
+ CLDeploymentBuilder parentCLBuilder = createParentCLBuilder();
+ parentCLBuilder.createDomain(PARENT_DOMAIN, true);
+ return parentCLBuilder;
+ }
+
+ private CLDeploymentBuilder createChildCLBuilder(boolean importAll)
+ {
+ CLDeploymentBuilder childCLBuilderB = new CLDeploymentBuilder("b", JAR_B_1);
+ childCLBuilderB.setDomain(CHILD_DOMAIN);
+ childCLBuilderB.createRequirePackage(PACKAGE_A);
+ childCLBuilderB.setImportAll(importAll);
+ return childCLBuilderB;
+ }
+
+ private CLDeploymentBuilder createChildCLBuilder(boolean parentFirst, String parentDomain)
+ {
+ CLDeploymentBuilder childBuilder = new CLDeploymentBuilder("b", JAR_B_1);
+ childBuilder.createDomain(CHILD_DOMAIN, parentDomain, parentFirst);
+ childBuilder.createRequirePackage(PACKAGE_A);
+ childBuilder.setImportAll(false);
+ return childBuilder;
+ }
+
+ private void assertCanLoadAButNotB(L parentLoader) throws Exception
+ {
+ assertCanLoadAButNotB(parentLoader, parentLoader);
+ }
+
+ private void assertCanLoadAButNotB(L parentLoader, L actualLoader) throws Exception
+ {
+ testScenario.loadClass(parentLoader, actualLoader, CLASS_A);
+ testScenario.cannotLoadClass(parentLoader, CLASS_B);
+ }
+
+ private void assertHierarchicalDomain(L parentLoader, L childLoader)
+ throws Exception
+ {
+ assertCanLoadAButNotB(parentLoader);
+ testScenario.loadClass(childLoader, CLASS_B);
+ testScenario.loadClass(childLoader, parentLoader, CLASS_A);
+ }
+}
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalDomainTest.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/HierarchicalParentLoaderClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderClassPoolTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderClassPoolTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,59 @@
+/*
+ * 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 javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the hierarchical parent loader tests against a class pool test scenario.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class HierarchicalParentLoaderClassPoolTestCase extends
+ HierarchicalParentLoaderTest<CtClass, ClassPool>
+{
+ public static Test suite()
+ {
+ return new TestSuite(HierarchicalParentLoaderClassPoolTestCase.class);
+ }
+
+ public HierarchicalParentLoaderClassPoolTestCase(String name)
+ {
+ super(name);
+ }
+ /* (non-Javadoc)
+ * @see org.jboss.test.classpool.jbosscl.test.HierarchicalParentLoaderTest#getTestScenario()
+ */
+ @Override
+ protected TestScenario<CtClass, ClassPool> getTestScenario()
+ {
+ return new ClassPoolTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderClassPoolTestCase.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/HierarchicalParentLoaderSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderSanityTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderSanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,57 @@
+/*
+ * 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;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+
+/**
+ * Executes the hierarchical parent loader tests against a sanity test scenario (for class
+ * loader behavior sanity checking).
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class HierarchicalParentLoaderSanityTestCase extends
+ HierarchicalParentLoaderTest<Class<?>, ClassLoader>
+{
+ public static Test suite()
+ {
+ return new TestSuite(HierarchicalParentLoaderSanityTestCase.class);
+ }
+
+ public HierarchicalParentLoaderSanityTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ {
+ return new SanityTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderSanityTestCase.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/HierarchicalParentLoaderTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderTest.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderTest.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,116 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.classpool.jbosscl.test;
+
+
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+
+import java.net.URL;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ParentPolicy;
+import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.DomainRegistry;
+import org.jboss.test.classpool.support.NoMatchClassFilter;
+
+/**
+ * Reproduces org.jboss.test.classloader.domain.test.HierarchicalParentLoaderUnitTestCase using
+ * our test framework.
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class HierarchicalParentLoaderTest<C, L> extends JBossClClassPoolTest<C, L>
+{
+ public HierarchicalParentLoaderTest(String name)
+ {
+ super(name);
+ }
+
+ public void testHierarchyBefore() throws Exception
+ {
+ runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.BEFORE, true);
+ }
+
+
+ public void testHierarchyBeforeNotFound() throws Exception
+ {
+ runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.BEFORE, false, false);
+ }
+
+ public void testHierarchyAfterNotReached() throws Exception
+ {
+ runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.AFTER_BUT_JAVA_BEFORE, false);
+ }
+
+ public void testHierarchyAfterReached() throws Exception
+ {
+ runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, ParentPolicy.AFTER_BUT_JAVA_BEFORE, null, true);
+ }
+
+ public void testHierarchyFiltered() throws Exception
+ {
+ NoMatchClassFilter filter = new NoMatchClassFilter(CLASS_A);
+ runTest(ParentPolicy.BEFORE_BUT_JAVA_ONLY, new ParentPolicy(filter, ClassFilter.NOTHING), false);
+
+ assertTrue("Should have been filtered", filter.filtered);
+ }
+
+
+ private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean expectedParent) throws Exception
+ {
+ runTest(parentParentPolicy, childParentPolicy, true, JAR_A_2, expectedParent);
+ }
+
+ private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean createParent, boolean expectedParent) throws Exception
+ {
+ runTest(parentParentPolicy, childParentPolicy, createParent, JAR_A_2, expectedParent);
+ }
+
+ private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, URL url, boolean expectedParent) throws Exception
+ {
+ runTest(parentParentPolicy, childParentPolicy, true, url, expectedParent);
+ }
+
+ private void runTest(ParentPolicy parentParentPolicy, ParentPolicy childParentPolicy, boolean createParent, URL childURL, boolean expectedParent) throws Exception
+ {
+ final String parentName = "parent";
+ final String childName = "child";
+ ClassLoaderDomain parent = system.createAndRegisterDomain(parentName, parentParentPolicy);
+ DomainRegistry.registerDomain(parent);
+ ClassLoaderDomain child = system.createAndRegisterDomain(childName, childParentPolicy, parent);
+ DomainRegistry.registerDomain(child);
+ L parentLoader = null;
+ if (createParent)
+ {
+ CLDeploymentBuilder parentCLBuilder = new CLDeploymentBuilder("ParentLoader", JAR_A_1);
+ parentCLBuilder.setDomain(parentName);
+ parentLoader = testScenario.createLoader(parentCLBuilder);
+ }
+ CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("ChildLoader", childURL);
+ childCLBuilder.setDomain(childName);
+ L childLoader = testScenario.createLoader(childCLBuilder);
+ testScenario.loadClass(childLoader, expectedParent ? parentLoader : childLoader, CLASS_A);
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/HierarchicalParentLoaderTest.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/JBossClClassPoolDelegatingTestSuite.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolDelegatingTestSuite.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolDelegatingTestSuite.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -41,15 +41,16 @@
{
TestSuite suite = new TestSuite("JBoss-cl Pool Tests");
- suite.addTest(ClassPoolWithRepositoryTestCase.suite());
- suite.addTest(ClassPoolWithModuleDependencyTestCase.suite());
- suite.addTest(ClassPoolWithPackageDependencyTestCase.suite());
- suite.addTest(ClassPoolWithReExportModuleTestCase.suite());
- suite.addTest(ClassPoolWithReExportPackageTestCase.suite());
- suite.addTest(ClassPoolWithUsesPackageTestCase.suite());
- suite.addTest(ClassPoolWithHierarchicalDomainTestCase.suite());
- suite.addTest(ClassPoolWithHierarchicalParentLoaderTestCase.suite());
- suite.addTest(ClassPoolWithReplaceReferencesTestCase.suite());
+ suite.addTest(ArchiveClassPoolTestCase.suite());
+ suite.addTest(RepositoryClassPoolTestCase.suite());
+ suite.addTest(ModuleDependencyClassPoolTestCase.suite());
+ suite.addTest(PackageDependencyClassPoolTestCase.suite());
+ suite.addTest(ReExportModuleClassPoolTestCase.suite());
+ suite.addTest(ReExportPackageClassPoolTestCase.suite());
+ suite.addTest(UsesPackageClassPoolTestCase.suite());
+ suite.addTest(HierarchicalDomainClassPoolTestCase.suite());
+ suite.addTest(HierarchicalParentLoaderClassPoolTestCase.suite());
+ suite.addTest(ReplaceReferencesClassPoolTestCase.suite());
return suite;
}
Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolSanityTestSuite.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolSanityTestSuite.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolSanityTestSuite.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -41,14 +41,15 @@
{
TestSuite suite = new TestSuite("JBoss-cl Sanity Tests");
- suite.addTest(ClassLoaderWithRepositorySanityTestCase.suite());
- suite.addTest(ClassLoaderWithModuleDependencySanityTestCase.suite());
- suite.addTest(ClassLoaderWithPackageDependencySanityTestCase.suite());
- suite.addTest(ClassLoaderWithReExportModuleSanityTestCase.suite());
- suite.addTest(ClassLoaderWithReExportPackageSanityTestCase.suite());
- suite.addTest(ClassLoaderWithUsesPackageSanityTestCase.suite());
- suite.addTest(ClassLoaderWithHierarchicalDomainSanityTestCase.suite());
- suite.addTest(ClassLoaderWithHierarchicalParentLoaderSanityTestCase.suite());
+ suite.addTest(ArchiveSanityTestCase.suite());
+ suite.addTest(RepositorySanityTestCase.suite());
+ suite.addTest(ModuleDependencySanityTestCase.suite());
+ suite.addTest(PackageDependencySanityTestCase.suite());
+ suite.addTest(ReExportModuleSanityTestCase.suite());
+ suite.addTest(ReExportPackageSanityTestCase.suite());
+ suite.addTest(UsesPackageSanityTestCase.suite());
+ suite.addTest(HierarchicalDomainSanityTestCase.suite());
+ suite.addTest(HierarchicalParentLoaderSanityTestCase.suite());
return suite;
}
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-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/JBossClClassPoolTest.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -23,38 +23,17 @@
import java.net.MalformedURLException;
import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.WeakHashMap;
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.NotFoundException;
import junit.framework.Test;
import org.jboss.aop.AspectManager;
-import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
-import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloading.plugins.metadata.PackageCapability;
-import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.classloading.spi.metadata.Capability;
-import org.jboss.classpool.plugins.as5.VFSClassLoaderDomainRegistry;
-import org.jboss.classpool.spi.ClassPoolRepository;
-import org.jboss.kernel.plugins.deployment.AbstractKernelDeployment;
+import org.jboss.dependency.spi.ControllerState;
import org.jboss.kernel.spi.deployment.KernelDeployment;
import org.jboss.test.AbstractTestCaseWithSetup;
-import org.jboss.test.classpool.support.BundleInfoBuilder;
-import org.jboss.test.classpool.support.Result;
+import org.jboss.test.classpool.support.MicrocontainerFacade;
import org.jboss.test.classpool.support.SupportClasses;
-import org.jboss.test.classpool.support.TestVFSClassLoaderFactory;
-import org.jboss.test.classpool.support.TestVFSClassLoaderFactoryFactory;
+import org.jboss.test.classpool.support.TestScenario;
import org.jboss.test.kernel.junit.MicrocontainerTest;
import org.jboss.virtual.VFS;
@@ -65,7 +44,7 @@
* @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
* @version $Revision$
*/
-public class JBossClClassPoolTest extends MicrocontainerTest
+public abstract class JBossClClassPoolTest<C, L> extends MicrocontainerTest
{
/****** STATIC ***************************************************************************/
@@ -76,10 +55,36 @@
public final static URL JAR_C_1 = getURLRelativeToProjectRoot(SupportClasses.JAR_C_1);
public final static URL JAR_C_2 = getURLRelativeToProjectRoot(SupportClasses.JAR_C_2);
public final static URL JAR_D = getURLRelativeToProjectRoot(SupportClasses.JAR_D);
+// 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);
- /** A strong reference to the URL classloaders so that they are not garbage collected */
- private final static Set<URLClassLoader> registeredURLClassLoaders = new HashSet<URLClassLoader>();
-
public static Test suite(Class<?> clazz)
{
return AbstractTestCaseWithSetup.suite(clazz);
@@ -116,26 +121,9 @@
/****** HELPER FIELDS ********************************************************************/
- /** The ClassPool repository */
- protected ClassPoolRepository repository;
-
/** The classloader helper */
protected ClassLoaderSystem system;
- /** The domain registry */
- protected VFSClassLoaderDomainRegistry domainRegistry;
-
- /**
- * Contains the same domains contained in dmoainRegistry. The difference is that
- * This map is cleaned up later than domainRegistry.
- */
- private Map<ClassLoader, ClassLoaderDomain> scopedChildDomainsByLoader = new WeakHashMap<ClassLoader, ClassLoaderDomain>();
-
- /**
- * Keeps track of KernelDeployments
- */
- private LoaderNameDeploymentRegistry loaderNameDeploymentRegistry = new LoaderNameDeploymentRegistry();
-
/****** CONSTRUCTOR **********************************************************************/
/**
@@ -149,6 +137,10 @@
/****** OVERRIDDEN METHODS ***************************************************************/
+ protected TestScenario<C, L> testScenario;
+
+ protected abstract TestScenario<C, L> getTestScenario();
+
@Override
protected void setUp() throws Exception
{
@@ -156,618 +148,23 @@
deploy("/org/jboss/test/classpool/jbosscl/Common.xml");
VFS.init();
system = (ClassLoaderSystem) getBean("ClassLoaderSystem");
- domainRegistry = (VFSClassLoaderDomainRegistry) getBean("ClassLoaderScopingPolicy");
- repository = (ClassPoolRepository) getBean("ClassPoolRepository");
+ this.testScenario = getTestScenario();
}
@Override
protected void tearDown() throws Exception
{
+ this.testScenario.destroyLoaders();
undeploy("/org/jboss/test/classpool/jbosscl/Common.xml");
super.tearDown();
}
- /****** CREATE CLASSLOADER METHODS ***************************************************/
-
- protected ClassLoader createClassLoader(String name, boolean importAll, URL... urls) throws Exception
- {
- return createClassLoader(null, name, importAll, urls);
- }
-
- protected ClassLoader createClassLoader(Result result, String name, boolean importAll, URL... urls) throws Exception
- {
- return this.createClassLoader(result, name, importAll, (String) null, urls);
- }
-
- 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)
- {
- Capability capability = new PackageCapability(packageCapability);
- factory.setCapabilities(Collections.singletonList(capability));
- }
- return createClassLoader(result, factory);
- }
-
- protected ClassLoader createClassLoader(Result result, String name, boolean importAll, URL[] excludes, URL... urls) throws Exception
- {
- TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, excludes, urls);
- return createClassLoader(result, factory);
- }
-
- protected ClassLoader createClassLoader(Result result, String name, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- return createClassLoader(result, name, false, builder, urls);
- }
-
- protected ClassLoader createClassLoader(Result result, String name, boolean importAll, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, builder, urls);
- return createClassLoader(result, factory);
- }
-
- protected ClassLoader createChildDomainParentFirstClassLoader(String name, String domainName, boolean importAll, URL... urls) throws Exception
- {
- return createChildDomainParentFirstClassLoader((Result)null, name, domainName, importAll, urls);
- }
-
- protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
- {
- return createChildDomainParentFirstClassLoader(result, name, domainName, importAll, (ClassLoader) null, urls);
- }
-
- protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, boolean importAll, String packageCapability, URL... urls) throws Exception
- {
- return createChildDomainParentFirstClassLoader(result, name, domainName, importAll, (ClassLoader) null, packageCapability, urls);
- }
-
- protected ClassLoader createChildDomainParentFirstClassLoader(String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
- {
- return createChildDomainParentFirstClassLoader(null, name, domainName, importAll, parent, urls);
- }
-
- protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
- {
- return createChildDomainClassLoader(result, name, domainName, null, true, importAll, parent, null, urls);
- }
-
- protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, String packageCapability, URL... urls) throws Exception
- {
- return createChildDomainClassLoader(result, name, domainName, null, true, importAll, parent, packageCapability, urls);
- }
-
- protected ClassLoader createChildDomainParentFirstClassLoader(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
- {
- return createChildDomainParentFirstClassLoader(null, name, domainName, parentDomainName, importAll, null, urls);
- }
-
- protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, String packageCapability, URL... urls) throws Exception
- {
- return createChildDomainClassLoader(result, name, domainName, parentDomainName, true, importAll, null, packageCapability, urls);
- }
-
- protected ClassLoader createChildDomainParentLastClassLoader(String name, String domainName, boolean importAll, URL... urls) throws Exception
- {
- return createChildDomainParentLastClassLoader((Result)null, name, domainName, importAll, urls);
- }
-
- protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
- {
- return createChildDomainParentLastClassLoader(result, name, domainName, importAll, (ClassLoader) null, urls);
- }
-
- protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, boolean importAll, URL[] excludes, URL... urls) throws Exception
- {
- return createChildDomainParentLastClassLoader(result, name, domainName, importAll, null, excludes, urls);
- }
-
- protected ClassLoader createChildDomainParentLastClassLoader(String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
- {
- return createChildDomainParentLastClassLoader(null, name, domainName, importAll, parent, urls);
- }
-
- protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, URL... urls) throws Exception
- {
- return createChildDomainClassLoader(result, name, domainName, null, false, importAll, parent, null, urls);
- }
-
- protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, boolean importAll, ClassLoader parent, URL[] excludes, URL... urls) throws Exception
- {
- return createChildDomainClassLoader(result, name, domainName, null, false, importAll, parent, null, excludes, urls);
- }
-
- protected ClassLoader createChildDomainParentLastClassLoader(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
- {
- return createChildDomainParentLastClassLoader(null, name, domainName, parentDomainName, importAll, urls);
- }
-
- protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
- {
- return createChildDomainClassLoader(result, name, domainName, parentDomainName, false, importAll, null, null, urls);
- }
-
- protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- return createChildDomainParentFirstClassLoader(result, name, domainName, null, builder, urls);
- }
-
- protected ClassLoader createChildDomainParentFirstClassLoader(Result result, String name, String domainName, String parentDomainName, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- return createChildDomainClassLoader(result, name, domainName, parentDomainName, builder, true, urls);
- }
-
- protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- return createChildDomainParentLastClassLoader(result, name, domainName, null, builder, urls);
- }
-
- protected ClassLoader createChildDomainParentLastClassLoader(Result result, String name, String domainName, String parentDomainName, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- return createChildDomainClassLoader(result, name, domainName, parentDomainName, builder, false, urls);
- }
-
- protected ClassLoader createChildDomainClassLoader(String name, String domainName, String parentDomainName, BundleInfoBuilder builder, boolean parentFirst, URL... urls) throws Exception
- {
- return createChildDomainClassLoader(null, name, domainName, parentDomainName, builder, parentFirst, urls);
- }
-
- private ClassLoader createChildDomainClassLoader(Result result, String name, String domainName, String parentDomainName, boolean parentFirst, boolean importAll, ClassLoader parent, String packageCapability, URL... urls) throws Exception
- {
- return createChildDomainClassLoader(result, name, domainName, parentDomainName, parentFirst, importAll, parent, packageCapability, (URL[]) null, urls);
- }
-
- private ClassLoader createChildDomainClassLoader(Result result, String name, String domainName, String parentDomainName, boolean parentFirst, boolean importAll, ClassLoader parent, String packageCapability, URL[] excludes, URL... urls) throws Exception
- {
- TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, domainName, parentDomainName, parentFirst, urls);
- if (packageCapability != null)
- {
- Capability capability = new PackageCapability(packageCapability);
- factory.setCapabilities(Collections.singletonList(capability));
- }
- ClassLoader classLoader = createClassLoader(result, factory, parent);
- registerDomainAndLoader(classLoader, domainName);
- return classLoader;
- }
-
- private ClassLoader createChildDomainClassLoader(Result result, String name, String domainName, String parentDomainName, BundleInfoBuilder builder, boolean parentFirst, URL... urls) throws Exception
- {
- TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, domainName, parentDomainName, builder, parentFirst, urls);
- ClassLoader classLoader = createClassLoader(result, factory);
- registerDomainAndLoader(classLoader, domainName);
- return classLoader;
- }
-
- private void registerDomainAndLoader(ClassLoader classLoader, String domainName)
- {
- ClassLoaderDomain domain = system.getDomain(domainName);
- scopedChildDomainsByLoader.put(classLoader, domain);
- }
-
- protected ClassLoader createChildURLClassLoader(ClassLoader parent, URL url)
- {
- URLClassLoader cl = new URLClassLoader(new URL[] {url}, parent);
- registeredURLClassLoaders.add(cl);
- return cl;
- }
-
- private ClassLoader createClassLoader(Result result, TestVFSClassLoaderFactory factory) throws Exception
- {
- return createClassLoader(result, factory, null);
- }
-
- private ClassLoader createClassLoader(Result result, TestVFSClassLoaderFactory factory, ClassLoader parent) throws Exception
- {
- if (parent != null)
- {
- factory.setParent(parent);
- }
-
- KernelDeployment deployment = install(factory);
- loaderNameDeploymentRegistry.registerDeployment(factory.getName(), deployment);
- if (result != null)
- {
- result.setFactory(factory);
- }
- ClassLoader loader = assertClassLoader(factory, parent);
- return loader;
- }
-
- private KernelDeployment install(TestVFSClassLoaderFactory metaData) throws Exception
- {
- AbstractKernelDeployment deployment = new AbstractKernelDeployment();
- deployment.setName(metaData.getName() + ":" + metaData.getVersion());
- deployment.setBeanFactories(Collections.singletonList((BeanMetaDataFactory) metaData));
- deploy(deployment);
- return deployment;
- }
-
- /****** DOMAIN-RELATED METHODS *******************************************************/
-
- /**
- * Here since we cannot access this via the classloading api
- */
- protected ClassLoaderDomain getChildDomainForLoader(ClassLoader loader)
- {
- //(scopedChildDomainsByLoader.get(loader) != domainRegistry.getClassLoaderDomainForLoader(loader))
- // this statement is true only when the module has already been cleaned up from domainRegistry
- // that's why we need another collection here
- return scopedChildDomainsByLoader.get(loader);
- }
-
- protected ClassLoaderDomain getChildDomainForPool(ClassPool pool)
- {
- return getChildDomainForLoader(pool.getClassLoader());
- }
-
- /****** CLASSPOOL METHODS ************************************************************/
-
- protected ClassPool createClassPool(String name, boolean importAll, URL... urls) throws Exception
- {
- return createClassPool(null, name, importAll, urls);
- }
-
- protected ClassPool createClassPool(Result result, String name, boolean importAll, URL... urls) throws Exception
- {
- return createClassPool(result, name, importAll, (String) null, urls);
- }
-
- protected ClassPool createClassPool(Result result, String name, boolean importAll, String packageCapability, URL... urls) throws Exception
- {
- ClassLoader loader = createClassLoader(result, name, importAll, packageCapability, urls);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createClassPool(Result result, String name, boolean importAll, URL[] excludes, URL... urls) throws Exception
- {
- ClassLoader loader = createClassLoader(result, name, importAll, excludes, urls);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createClassPool(Result result, String name, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- return createClassPool(result, name, false, builder, urls);
- }
-
- protected ClassPool createClassPool(String name, boolean importAll, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- return createClassPool(null, name, importAll, builder, urls);
- }
-
- private ClassPool createClassPool(Result result, String name, boolean importAll, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, builder, urls);
- ClassLoader loader = createClassLoader(result, factory);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, boolean importAll, URL... urls) throws Exception
- {
- return createChildDomainParentFirstClassPool((Result)null, name, domainName, importAll, urls);
- }
-
- protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
- {
- ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, importAll, urls);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, boolean importAll, String packageCapability, URL... urls) throws Exception
- {
- ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, importAll, packageCapability, urls);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
- {
- return createChildDomainParentFirstClassPool(null, name, domainName, importAll, parent, urls);
- }
-
- private ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
- {
- ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, importAll, parent.getClassLoader(), urls);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
- {
- return createChildDomainParentFirstClassPool(null, name, domainName, parentDomainName, importAll, urls);
- }
-
- protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
- {
- return createChildDomainParentFirstClassPool(result, name, domainName, parentDomainName, importAll, null, urls);
- }
-
- protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, String packageCapability, URL... urls) throws Exception
- {
- ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, importAll, packageCapability, urls);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, boolean importAll, URL... urls) throws Exception
- {
- return createChildDomainParentLastClassPool((Result)null, name, domainName, importAll, urls);
- }
-
- protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
- {
- ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, importAll, urls);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, boolean importAll, URL[] excludes, URL... urls) throws Exception
- {
- ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, importAll, excludes, urls);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
- {
- return createChildDomainParentLastClassPool(null, name, domainName, importAll, parent, urls);
- }
-
- protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
- {
- ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, importAll, parent.getClassLoader(), urls);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
- {
- return createChildDomainParentLastClassPool(null, name, domainName, parentDomainName, importAll, urls);
- }
-
- 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);
- }
-
- protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, builder, urls);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, builder, urls);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, builder, urls);
- return assertRegisterClassLoader(loader);
- }
-
- protected ClassPool createChildURLClassPool(ClassPool parent, URL url)
- {
- ClassLoader parentLoader = null;
- if (parent != null)
- {
- parentLoader = parent.getClassLoader();
- }
- ClassLoader loader = createChildURLClassLoader(parentLoader, url);
- return assertRegisterClassLoader(loader);
- }
-
- private ClassPool assertRegisterClassLoader(ClassLoader loader)
- {
- ClassPool classPool = repository.registerClassLoader(loader);
- assertNotNull(classPool);
- assertBootstrap(classPool, String.class, Class.class, ClassLoader.class, Object.class,
- Collection.class, List.class, Map.class, URL.class);
- return classPool;
- }
-
- private void assertBootstrap(ClassPool classPool, Class<?>... classes)
- {
- assertSameClassPool(null, classPool, int.class, boolean.class, byte.class, short.class,
- long.class, float.class, double.class, char.class, void.class);
- assertSameClassPool(ClassPool.getDefault(), classPool, classes);
-
- }
-
- private void assertSameClassPool(ClassPool expectedClassPool, ClassPool classPool,
- Class<?>... classes)
- {
- for (Class<?> clazz: classes)
- {
- CtClass ctClass = null;
- try
- {
- ctClass = classPool.getCtClass(clazz.getName());
- } catch (NotFoundException e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
- assertSame("Class " + clazz.getName() + " loaded by unexpected class pool ",
- expectedClassPool, ctClass.getClassPool());
- }
- }
-
- /****** REGISTER & UNREGISTER METHODS ************************************************/
-
- /**
- * This method does nothing but can be overriden by a subclass.
- *
- * @param module the module that has been created.
- */
- protected void registerModule(Module module)
- {
- // do nothing, as this is already handled by ClassPool creation
- // override this one only if you are not using ClassPools and need
- // to have domainRegistry compliant with the modules/cls created
- }
-
- /**
- * Unregister a domain
- *
- * @param name the class loader domain
- */
- protected void unregisterDomain(ClassLoaderDomain domain)
- {
- if (domain != null)
- {
- ClassLoaderDomain registeredDomain = system.getDomain(domain.getName());
- if (registeredDomain == null)
- throw new IllegalStateException("Domain is not registered: " + domain.getName());
- if (registeredDomain != domain)
- throw new IllegalStateException(domain + " is not the same as " + registeredDomain);
- system.unregisterDomain(domain);
- }
- }
-
- /**
- * Unregister a domain
- *
- * @param name the class loader
- */
- protected void unregisterDomain(ClassLoader loader)
- {
- if (loader != null)
- {
- ClassLoaderDomain domain = getChildDomainForLoader(loader);
- unregisterDomain(domain);
- }
- }
-
- /**
- * Unregister a domain
- *
- * @param name the class pool
- */
- protected void unregisterDomain(ClassPool pool)
- {
- if (pool != null)
- {
- ClassLoaderDomain domain = getChildDomainForPool(pool);
- unregisterDomain(domain);
- }
- }
-
- /**
- * Unregister a domain
- *
- * @param name the domain name
- */
- protected void unregisterDomain(String name)
- {
- if (name != null)
- {
- ClassLoaderDomain registeredDomain = system.getDomain(name);
- unregisterDomain(registeredDomain);
- }
- }
-
- /**
- * Unregister a clas pool
- * @param pool the class pool
- * @throws Exception
- */
- protected void unregisterClassPool(ClassPool pool)
- {
- if (pool != null)
- {
- ClassLoader loader = pool.getClassLoader();
- repository.unregisterClassLoader(loader);
- if (loader != null)
- {
- unregisterClassLoader(loader);
- }
- }
- }
-
- /**
- * Unregisters a class loader
- *
- * @param classLoader the classloader
- * @throws Exception
- */
- protected void unregisterClassLoader(ClassLoader classLoader)
- {
- if (classLoader != null)
- {
- if (registeredURLClassLoaders.remove(classLoader) == false)
- {
- KernelDeployment deployment = loaderNameDeploymentRegistry.unregisterDeployment(classLoader);
- unregisterDeployment(deployment);
- }
- }
- }
-
- /**
- * Unregisters a class loader.
- *
- * @param name the class loader name
- * @throws Exception
- */
- protected void unregisterClassLoader(String name)
- {
- KernelDeployment deployment = loaderNameDeploymentRegistry.unregisterDeployment(name);
- unregisterDeployment(deployment);
- }
-
- private void unregisterDeployment(KernelDeployment deployment)
- {
- if (deployment != null)
- {
- undeploy(deployment);
- }
- }
-
/****** ASSERT METHODS ***************************************************************/
- protected void assertModule(ClassLoader loader)
+ private void assertCannotLoadClass(String className, ClassLoader cl)
{
- ClassLoaderDomain domainForLoader = getChildDomainForLoader(loader);
- if (domainForLoader == null)
- {
- domainForLoader = system.getDefaultDomain();
- }
- assertNotNull(domainForLoader);
-
- ClassLoaderDomain domainForModule = domainRegistry.getClassLoaderDomainForLoader(loader);
- assertNotNull(domainForModule);
- assertSame(domainForLoader, domainForModule);
-
- Module module = domainRegistry.getModule(loader);
- assertNotNull(module);
- assertEquals(domainForModule.getName(), module.getDomainName());
- assertEquals(domainForModule.getParentDomainName(), module.getParentDomainName());
- }
-
- protected ClassLoader assertClassLoader(TestVFSClassLoaderFactory factory) throws Exception
- {
- return assertClassLoader(factory, null);
- }
-
- protected ClassLoader assertClassLoader(TestVFSClassLoaderFactory factory, ClassLoader parent) throws Exception
- {
try
{
- Object obj = getBean(getContextName(factory));
- ClassLoader loader = assertInstanceOf(obj, ClassLoader.class);
-
- Module module = assertModule(getContextName(factory));
- registerModule(module);
- loaderNameDeploymentRegistry.registerLoaderName(factory.getName(), loader);
-
- return loader;
- }
- catch (IllegalStateException e)
- {
- throw new NoSuchClassLoaderException(e);
- }
- }
-
- protected void assertCannotLoadClass(String className, ClassLoader cl)
- {
- try
- {
cl.loadClass(className);
fail("Should not have been able to load " + className);
}
@@ -776,155 +173,7 @@
}
}
- protected void assertCannotLoadCtClass(String className, ClassPool pool)
- {
- try
- {
- pool.get(className);
- }
- catch(NotFoundException e)
- {
- }
- }
- protected void assertCannotLoadClass(String className, ClassLoaderDomain domain)
- {
- try
- {
- Class<?> clazz = domain.loadClass(className);
- if (clazz == null)
- {
- return;
- }
- fail("Should not have been able to load " + className);
- }
- catch(Exception expected)
- {
- }
- }
-
- protected void assertNoClassLoader(Result result)
- {
- if (result == null)
- {
- throw new IllegalStateException("Null result");
- }
- assertNoClassLoader(getContextName(result.getFactory()));
- }
-
- protected void assertNoClassPool(Result result) throws Exception
- {
- if (result == null)
- {
- throw new IllegalStateException("Null result");
- }
- assertNoClassLoader(getContextName(result.getFactory()));
- }
-
- protected void assertNoClassLoader(String name)
- {
- try
- {
- Object bean = getBean(name, null);
- if (bean != null)
- fail("Should not be here: " + bean);
- }
- catch (Throwable t)
- {
- checkThrowable(IllegalStateException.class, t);
- }
- }
-
- private String getContextName(TestVFSClassLoaderFactory factory)
- {
- String contextName = factory.getContextName();
- if (contextName == null)
- contextName = factory.getName() + ":" + factory.getVersion();
- return contextName;
- }
-
-
- protected ClassPool assertClassPool(TestVFSClassLoaderFactory factory) throws Exception
- {
- ClassLoader loader = assertClassLoader(factory);
- return assertRegisterClassLoader(loader);
- }
-
- protected Class<?> assertLoadClass(String name, ClassLoader initiating) throws Exception
- {
- return assertLoadClass(name, initiating, initiating);
- }
-
- protected Class<?> assertLoadClass(String name, ClassLoader initiating, ClassLoader expected) throws Exception
- {
- Class<?> clazz = initiating.loadClass(name);
- if (expected != null)
- {
- assertSame(expected, clazz.getClassLoader());
- }
- return clazz;
- }
-
- protected CtClass assertLoadCtClass(String name, ClassPool initiating) throws Exception
- {
- return assertLoadCtClass(name, initiating, initiating);
- }
-
- protected CtClass assertLoadCtClass(String name, ClassPool initiating, ClassPool expected) throws Exception
- {
- CtClass clazz = initiating.get(name);
- if (expected != null)
- {
- assertSame(expected, clazz.getClassPool());
- }
-
- //Load twice to test both create and cache
- clazz = initiating.get(name);
- if (expected != null)
- {
- assertSame(expected, clazz.getClassPool());
- }
-
- assertLoadCtClassArray(name, clazz, initiating, expected);
-
- return clazz;
- }
-
- private void assertLoadCtClassArray(String name, CtClass clazz, ClassPool initiating, ClassPool expected) throws Exception
- {
- assertLoadCtClassArray(name, clazz, 1, initiating, expected);
- assertLoadCtClassArray(name, clazz, 2, initiating, expected);
- }
-
- private void assertLoadCtClassArray(String name, CtClass clazz, int dimensions, ClassPool initiating, ClassPool expected) throws Exception
- {
- String arrayName = name;
- for (int i = 0 ; i < dimensions ; i++)
- {
- arrayName = arrayName + "[]";
- }
- CtClass array = initiating.get(arrayName);
-
- if (expected != null)
- {
- assertSame(expected, array.getClassPool());
- }
-
- assertSame(clazz.getClassPool(), array.getClassPool());
-
- CtClass type = array;
- for (int i = 0 ; i < dimensions ; i++)
- {
- type = type.getComponentType();
- }
- assertSame(type, clazz);
- }
-
- protected Module assertModule(String contextName)
- {
- return assertBean(contextName + "$MODULE", Module.class);
- }
-
/****** TEST METHOD ******************************************************************/
/**
@@ -939,47 +188,36 @@
/****** AUXILIARY INTERNAL CLASS *****************************************************/
- static class NoSuchClassLoaderException extends Exception
+ protected MicrocontainerFacade getMicrocontainerFacade()
{
- private static final long serialVersionUID = 1L;
-
- public NoSuchClassLoaderException(Exception e)
- {
- super(e);
- }
+ return new MicrocontainerFacadeImpl();
}
- private static class LoaderNameDeploymentRegistry
+ private class MicrocontainerFacadeImpl implements MicrocontainerFacade
{
- private Map<String, KernelDeployment> deploymentsByName = new HashMap<String, KernelDeployment>();
-
- private Map<ClassLoader, String> namesByLoader = new HashMap<ClassLoader, String>();
-
- private void registerDeployment(String name, KernelDeployment deployment)
+ public void deploy(KernelDeployment deployment) throws Exception
{
- if (!deploymentsByName.containsKey(name))
- {
- deploymentsByName.put(name, deployment);
- }
+ JBossClClassPoolTest.this.deploy(deployment);
}
-
- private void registerLoaderName(String name, ClassLoader loader)
+
+ public Object getBean(Object name)
{
- if (loader != null)
- {
- namesByLoader.put(loader, name);
- }
+ return JBossClClassPoolTest.this.getBean(name);
}
+
+ public Object getBean(Object name, ControllerState state)
+ {
+ return JBossClClassPoolTest.this.getBean(name, state);
+ }
- private KernelDeployment unregisterDeployment(String name)
+ public <T> T assertBean(Object name, Class<T> expected)
{
- return deploymentsByName.remove(name);
+ return JBossClClassPoolTest.this.assertBean(name, expected);
}
- private KernelDeployment unregisterDeployment(ClassLoader loader)
+ public void undeploy(KernelDeployment deployment)
{
- String name = namesByLoader.remove(loader);
- return unregisterDeployment(name);
+ JBossClClassPoolTest.this.undeploy(deployment);
}
}
-}
+}
\ No newline at end of file
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyClassPoolTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyClassPoolTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * 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 javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the module dependency tests against a class pool test scenario.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ModuleDependencyClassPoolTestCase extends ModuleDependencyTest<CtClass, ClassPool>
+{
+ public static Test suite()
+ {
+ return new TestSuite(ModuleDependencyClassPoolTestCase.class);
+ }
+
+ public ModuleDependencyClassPoolTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<CtClass, ClassPool> getTestScenario()
+ {
+ return new ClassPoolTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyClassPoolTestCase.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/ModuleDependencySanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencySanityTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencySanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,54 @@
+/*
+ * 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;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the module dependency tests against a sanity test scenario (for class loader
+ * behavior sanity checking).
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ModuleDependencySanityTestCase extends ModuleDependencyTest<Class<?>, ClassLoader>
+{
+ public static Test suite()
+ {
+ return new TestSuite(ModuleDependencySanityTestCase.class);
+ }
+
+ public ModuleDependencySanityTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ {
+ return new SanityTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencySanityTestCase.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/ModuleDependencyTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyTest.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyTest.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,82 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
+
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Reproduces org.jboss.test.classloading.vfs.metadata.test.ModuleDependencyUnitTestCase using
+ * our test framework. The original tests are testImportNoVersionCheck, testImportVersionCheck
+ * and testImportVersionCheckFailed.
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class ModuleDependencyTest<C, L> extends DependencyTest<C, L>
+{
+ public ModuleDependencyTest(String name)
+ {
+ super(name);
+ }
+
+ public void testSeveralModulesWithSamePackages() throws Exception
+ {
+ testSeveralModulesWithSamePackages("A");
+ }
+
+ @Override
+ protected void createExportCapabilities(CLDeploymentBuilder clBuilderA, String moduleName,
+ String version)
+ {
+ if (version == null)
+ {
+ clBuilderA.createModule(moduleName);
+ }
+ else
+ {
+ clBuilderA.createModule(moduleName, version);
+ }
+ clBuilderA.createPackage(PACKAGE_A);
+ clBuilderA.setImportAll(false);
+ }
+
+ @Override
+ protected void createRequireCapabilities(CLDeploymentBuilder clBuilderB, VersionRange version)
+ {
+ if (version == null)
+ {
+ clBuilderB.createRequireModule("ModuleA");
+ }
+ else
+ {
+ clBuilderB.createRequireModule("ModuleA", version);
+ }
+ clBuilderB.createModule("ModuleB");
+ clBuilderB.createPackage(PACKAGE_B);
+ clBuilderB.setImportAll(false);
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ModuleDependencyTest.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/PackageDependencyClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyClassPoolTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyClassPoolTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * 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 javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the package dependency tests against a class pool test scenario.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class PackageDependencyClassPoolTestCase extends
+ PackageDependencyTest<CtClass, ClassPool>
+{
+ public static Test suite()
+ {
+ return new TestSuite(PackageDependencyClassPoolTestCase.class);
+ }
+
+ public PackageDependencyClassPoolTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<CtClass, ClassPool> getTestScenario()
+ {
+ return new ClassPoolTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyClassPoolTestCase.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/PackageDependencySanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencySanityTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencySanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * 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;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the package dependency tests against a sanity test scenario (for class loader
+ * behavior sanity checking).
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class PackageDependencySanityTestCase extends
+ PackageDependencyTest<Class<?>, ClassLoader>
+{
+ public static Test suite()
+ {
+ return new TestSuite(PackageDependencySanityTestCase.class);
+ }
+
+ public PackageDependencySanityTestCase(String name)
+ {
+ super(name);
+ }
+
+
+ @Override
+ protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ {
+ return new SanityTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencySanityTestCase.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/PackageDependencyTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyTest.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyTest.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,82 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
+
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Reproduces org.jboss.test.classloading.vfs.metadata.test.PackageDependencyUnitTestCase using
+ * our test framework. The original tests are testImportNoVersionCheck, testImportVersionCheck
+ * and testImportVersionCheckFailed.
+ *
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision$
+ */
+public abstract class PackageDependencyTest<C, L> extends DependencyTest<C, L>
+{
+ public PackageDependencyTest(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ public void testSeveralModulesWithSamePackages() throws Exception
+ {
+ testSeveralModulesWithSamePackages("X");
+ }
+
+ @Override
+ protected void createExportCapabilities(CLDeploymentBuilder clBuilderA, String moduleName,
+ String version)
+ {
+ clBuilderA.createModule(moduleName);
+ if (version == null)
+ {
+ clBuilderA.createPackage(PACKAGE_A);
+ }
+ else
+ {
+ clBuilderA.createPackage(PACKAGE_A, version);
+ }
+ clBuilderA.setImportAll(false);
+ }
+
+ @Override
+ protected void createRequireCapabilities(CLDeploymentBuilder clBuilderB, VersionRange version)
+ {
+ if (version == null)
+ {
+ clBuilderB.createRequirePackage(PACKAGE_A);
+ }
+ else
+ {
+ clBuilderB.createRequirePackage(PACKAGE_A, version);
+ }
+ clBuilderB.createPackage(PACKAGE_B);
+ clBuilderB.setImportAll(false);
+ }
+}
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/PackageDependencyTest.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/ReExportModuleClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleClassPoolTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleClassPoolTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,57 @@
+/*
+ * 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 javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the ReExportModule tests against a class pool test scenario.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ReExportModuleClassPoolTestCase extends
+ ReExportModuleTest<CtClass, ClassPool>
+{
+ public static Test suite()
+ {
+ return new TestSuite(ReExportModuleClassPoolTestCase.class);
+ }
+
+ public ReExportModuleClassPoolTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<CtClass, ClassPool> getTestScenario()
+ {
+ return new ClassPoolTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleClassPoolTestCase.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/ReExportModuleSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleSanityTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleSanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * 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;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the ReExportModule tests against a sanity test scenario (for class loader behavior
+ * sanity checking).
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ReExportModuleSanityTestCase extends
+ ReExportModuleTest<Class<?>, ClassLoader>
+{
+ public static Test suite()
+ {
+ return new TestSuite(ReExportModuleSanityTestCase.class);
+ }
+
+ public ReExportModuleSanityTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ {
+ return new SanityTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleSanityTestCase.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/ReExportModuleTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleTest.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleTest.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,46 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.classpool.jbosscl.test;
+
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Reproduces org.jboss.test.classloading.vfs.metadata.test.ReExportPackageUnitTestCase using
+ * our test framework.
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class ReExportModuleTest<C, L> extends ReExportTest<C, L>
+{
+ public ReExportModuleTest(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected void createReExport(CLDeploymentBuilder clBuilder)
+ {
+ clBuilder.createReExportModule(MODULE_A);
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportModuleTest.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/ReExportPackageClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageClassPoolTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageClassPoolTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * 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 javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the ReExportPackage tests against a class pool test scenario.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ReExportPackageClassPoolTestCase extends
+ ReExportPackageTest<CtClass, ClassPool>
+{
+ public static Test suite()
+ {
+ return new TestSuite(ReExportPackageClassPoolTestCase.class);
+ }
+
+ public ReExportPackageClassPoolTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<CtClass, ClassPool> getTestScenario()
+ {
+ return new ClassPoolTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageClassPoolTestCase.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/ReExportPackageSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageSanityTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageSanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * 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;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the ReExportPackage tests against a sanity test scenario (for class loader behavior
+ * sanity checking).
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ReExportPackageSanityTestCase extends
+ ReExportPackageTest<Class<?>, ClassLoader>
+{
+ public static Test suite()
+ {
+ return new TestSuite(ReExportPackageSanityTestCase.class);
+ }
+
+ public ReExportPackageSanityTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ {
+ return new SanityTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageSanityTestCase.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/ReExportPackageTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageTest.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageTest.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,48 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Reproduces org.jboss.test.classloading.vfs.metadata.test.ReExportPackageUnitTestCase using
+ * our test framework.
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class ReExportPackageTest<C, L> extends ReExportTest<C, L>
+{
+ public ReExportPackageTest(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected void createReExport(CLDeploymentBuilder clBuilder)
+ {
+ clBuilder.createReExportPackage(PACKAGE_A);
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportPackageTest.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/ReExportTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportTest.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportTest.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,142 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
+
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Contains tests for reExport test scenarios, such as reExportModule and ReExportPackage.
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class ReExportTest<C, L> extends JBossClClassPoolTest<C, L>
+{
+ protected static final String MODULE_B = "b";
+ protected static final String MODULE_A = "a";
+
+
+ public ReExportTest(String name)
+ {
+ super(name);
+ }
+ public void testReExport() throws Exception
+ {
+ assertReExport(true);
+ }
+
+ public void testNoReExport() throws Exception
+ {
+ assertReExport(false);
+ }
+
+ private void assertReExport(boolean reExport) throws Exception
+ {
+ CLDeploymentBuilder clBuilderA = new CLDeploymentBuilder("A", JAR_A_1);
+ clBuilderA.createModule(MODULE_A).createPackage(PACKAGE_A).setImportAll(false);
+ L loaderA = testScenario.createLoader(clBuilderA);
+
+ C classA = testScenario.loadClass(loaderA, CLASS_A);
+ testScenario.cannotLoadClass(loaderA, CLASS_B);
+ testScenario.cannotLoadClass(loaderA, CLASS_C);
+
+ CLDeploymentBuilder clBuilderB = new CLDeploymentBuilder("B", JAR_B_1);
+ clBuilderB.createModule(MODULE_B).createPackage(PACKAGE_B).setImportAll(false);
+ createReExport(clBuilderB);
+ L loaderB = testScenario.createLoader(clBuilderB);
+
+ C classA1 = testScenario.loadClass(loaderA, CLASS_A);
+ assertSame(classA, classA1);
+ testScenario.cannotLoadClass(loaderA, CLASS_B);
+ testScenario.cannotLoadClass(loaderA, CLASS_C);
+
+ classA1 = testScenario.loadClass(loaderB, loaderA, CLASS_A);
+ assertSame(classA, classA1);
+ C classB = testScenario.loadClass(loaderB, CLASS_B);
+ testScenario.cannotLoadClass(loaderB, CLASS_C);
+
+ CLDeploymentBuilder clBuilderC = new CLDeploymentBuilder("C", JAR_C_1);
+ clBuilderC.setImportAll(false);
+ if (reExport)
+ {
+ clBuilderC.createRequireModule(MODULE_B);
+ }
+ else
+ {
+ clBuilderC.createRequirePackage(PACKAGE_B);
+ }
+ L loaderC = testScenario.createLoader(clBuilderC);
+
+ classA1 = testScenario.loadClass(loaderA, CLASS_A);
+ assertSame(classA, classA1);
+ testScenario.cannotLoadClass(loaderA, CLASS_B);
+ testScenario.cannotLoadClass(loaderA, CLASS_C);
+
+ classA1 = testScenario.loadClass(loaderB, loaderA, CLASS_A);
+ assertSame(classA, classA1);
+ C classB1 = testScenario.loadClass(loaderB, CLASS_B);
+ assertSame(classB, classB1);
+ testScenario.cannotLoadClass(loaderB, CLASS_C);
+
+ if (reExport)
+ {
+ classA1 = testScenario.loadClass(loaderC, loaderA, CLASS_A);
+ assertSame(classA, classA1);
+ }
+ else
+ {
+ testScenario.cannotLoadClass(loaderC, CLASS_A);
+ }
+ classB1 = testScenario.loadClass(loaderC, loaderB, CLASS_B);
+ assertSame(classB, classB1);
+ testScenario.loadClass(loaderC, CLASS_C);
+
+ testScenario.destroyLoader(clBuilderC);
+
+ classA1 = testScenario.loadClass(loaderA, CLASS_A);
+ assertSame(classA, classA1);
+ testScenario.cannotLoadClass(loaderA, CLASS_B);
+ testScenario.cannotLoadClass(loaderA, CLASS_C);
+
+ classA1 = testScenario.loadClass(loaderB, loaderA, CLASS_A);
+ assertSame(classA, classA1);
+ classB1 = testScenario.loadClass(loaderB, CLASS_B);
+ assertSame(classB, classB1);
+ testScenario.cannotLoadClass(loaderB, CLASS_C);
+
+ testScenario.destroyLoader(clBuilderB);
+
+ classA1 = testScenario.loadClass(loaderA, CLASS_A);
+ assertSame(classA, classA1);
+ testScenario.cannotLoadClass(loaderA, CLASS_B);
+ testScenario.cannotLoadClass(loaderA, CLASS_C);
+ }
+
+ protected abstract void createReExport(CLDeploymentBuilder clBuilder);
+}
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReExportTest.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReplaceReferencesClassPoolTestCase.java (from rev 96653, projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java)
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReplaceReferencesClassPoolTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/ReplaceReferencesClassPoolTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,333 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_ROOT;
+
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.ProtectionDomain;
+import java.util.Collection;
+
+import javassist.ClassPool;
+import javassist.CodeConverter;
+import javassist.CtClass;
+import javassist.CtConstructor;
+import javassist.CtField;
+import javassist.CtMethod;
+import javassist.CtNewMethod;
+import javassist.Modifier;
+import javassist.scopedpool.ScopedClassPool;
+import junit.framework.Test;
+
+import org.jboss.classloading.spi.DomainClassLoader;
+import org.jboss.classpool.spi.ClassPoolRepository;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+import org.jboss.util.loading.Translator;
+
+/**
+ * Test that field/constructor wrapper replacement works since there were some problems in AS5
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ReplaceReferencesClassPoolTestCase extends JBossClClassPoolTest<CtClass, ClassPool>
+{
+ final static String STRING = String.class.getName();
+
+ public final static URL JAR_PARENT = getURLRelativeToProjectRoot("/replacereferences-parent.jar");
+
+ public final static URL JAR_CHILD = getURLRelativeToProjectRoot("/replacereferences-child.jar");
+
+ public final static String PACKAGE_REPLACEMENT = PACKAGE_ROOT + ".replacereferences";
+
+ public final static String PACKAGE_REPLACEMENT_CHILD = PACKAGE_REPLACEMENT + ".child";
+
+ public final static String PACKAGE_REPLACEMENT_PARENT = PACKAGE_REPLACEMENT + ".parent";
+
+ public final static String CLASS_INVOKED = PACKAGE_REPLACEMENT + ".Invoked";
+
+ public final static String CLASS_PARENT_CALLER = PACKAGE_REPLACEMENT_PARENT + ".ParentCaller";
+
+ public final static String CLASS_CHILD_CALLER = PACKAGE_REPLACEMENT_CHILD + ".ChildCaller";
+
+ public final String x = "org.jboss.test.classpool.support.excluded";
+
+ private final static Translator TRANSLATOR = new MyTranslator();
+
+ public ReplaceReferencesClassPoolTestCase(String name)
+ {
+ super(name);
+ }
+
+ public static Test suite()
+ {
+ return suite(ReplaceReferencesClassPoolTestCase.class);
+ }
+
+ @Override
+ protected TestScenario<CtClass, ClassPool> getTestScenario()
+ {
+ return new ClassPoolTestScenario(getMicrocontainerFacade());
+ }
+
+ @Override
+ @SuppressWarnings("all")
+ public void setUp() throws Exception
+ {
+ super.setUp();
+ system.setTranslator(TRANSLATOR);
+ }
+
+ @Override
+ @SuppressWarnings("all")
+ public void tearDown() throws Exception
+ {
+ system.setTranslator(null);
+ super.tearDown();
+ }
+
+ public void testParentLoadedParentDelegation() throws Exception
+ {
+ ClassPool globalPool = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_PARENT));
+ CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("SCOPED", JAR_CHILD);
+ childCLBuilder.createDomain("SCOPED", true);
+ ClassPool scopedPool = testScenario.createLoader(childCLBuilder);
+
+ loadClassAndRunTest(CLASS_PARENT_CALLER, globalPool.getClassLoader());
+ loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
+ }
+
+ public void testParentLoadedNoParentDelegation() throws Exception
+ {
+ ClassPool globalPool = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_PARENT));
+ CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("SCOPED", JAR_CHILD);
+ childCLBuilder.createDomain("SCOPED", false);
+ ClassPool scopedPool = testScenario.createLoader(childCLBuilder);
+
+ loadClassAndRunTest(CLASS_PARENT_CALLER, globalPool.getClassLoader());
+ loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
+ }
+
+ public void testParentNotLoadedParentDelegation() throws Exception
+ {
+ testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_PARENT));
+ CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("SCOPED", JAR_CHILD);
+ childCLBuilder.createDomain("SCOPED", true);
+ ClassPool scopedPool = testScenario.createLoader(childCLBuilder);
+
+ loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
+ }
+
+ public void testParentNotLoadedNoParentDelegation() throws Exception
+ {
+ testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_PARENT));
+ CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("SCOPED", JAR_CHILD);
+ childCLBuilder.createDomain("SCOPED", false);
+ ClassPool scopedPool = testScenario.createLoader(childCLBuilder);
+
+ loadClassAndRunTest(CLASS_CHILD_CALLER, scopedPool.getClassLoader());
+ }
+
+ private void loadClassAndRunTest(String classname, ClassLoader loader) throws Exception
+ {
+ Class<?> caller = loader.loadClass(classname);
+ Method m = caller.getMethod("test");
+ m.invoke(null, new Object[]
+ {});
+ }
+
+ final static class MyTranslator implements Translator
+ {
+ public void unregisterClassLoader(DomainClassLoader loader)
+ {
+ }
+
+ public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined,
+ ProtectionDomain protectionDomain, byte[] classfileBuffer) throws Exception
+ {
+ if (!className.startsWith(PACKAGE_REPLACEMENT))
+ {
+ return null;
+ }
+ if (className.endsWith("Invoked"))
+ {
+ return null;
+ }
+
+ ClassPool pool = ClassPoolRepository.getInstance().registerClassLoader(loader);
+ CtClass clazz = pool.get(className);
+ if (className.endsWith("Caller"))
+ {
+ instrumentReplaceReferences(clazz);
+ }
+ else
+ {
+ instrumentCreateWrappers(clazz);
+ }
+
+ if (clazz.isModified())
+ {
+ return clazz.toBytecode();
+ }
+ return null;
+ }
+
+ private CtClass instrumentCreateWrappers(CtClass clazz)
+ {
+ try
+ {
+ if (!clazz.getName().startsWith(PACKAGE_REPLACEMENT))
+ {
+ return clazz;
+ }
+ addWrappersToClass(clazz);
+ }
+ catch (Exception e)
+ {
+ System.err.println("Exception creating wrappers for " + clazz);
+ e.printStackTrace();
+ }
+ return clazz;
+ }
+
+ private CtClass instrumentReplaceReferences(CtClass clazz) throws Exception
+ {
+ if (!clazz.getName().startsWith(PACKAGE_REPLACEMENT))
+ {
+ return clazz;
+ }
+ replaceReferences(clazz);
+ return clazz;
+ }
+
+ public void unregisterClassLoader(ClassLoader loader)
+ {
+ }
+
+ private void addWrappersToClass(CtClass clazz) throws Exception
+ {
+ addFieldWrappers(clazz);
+ addConstructorWrappers(clazz);
+ }
+
+ private void addFieldWrappers(CtClass clazz) throws Exception
+ {
+ CtClass objectCt = clazz.getClassPool().getCtClass(Object.class.getName());
+
+ for (CtField field : clazz.getFields())
+ {
+ if (field.getDeclaringClass() == objectCt)
+ {
+ continue;
+ }
+ CtMethod rmethod =
+ CtNewMethod.make(
+ Modifier.PUBLIC | Modifier.STATIC,
+ CtClass.intType,
+ getFieldReadWrapperName(field.getName()),
+ new CtClass[]{objectCt},
+ null,
+ "{" + CLASS_INVOKED + ".invoked = true; return ((" + clazz.getName() + ")$1)." + field.getName() + ";}",
+ clazz);
+ clazz.addMethod(rmethod);
+
+
+ CtMethod wmethod =
+ CtNewMethod.make(
+ Modifier.PUBLIC | Modifier.STATIC,
+ CtClass.voidType,
+ getFieldWriteWrapperName(field.getName()),
+ new CtClass[]{objectCt, field.getType()},
+ null,
+ "{" + CLASS_INVOKED + ".invoked = true; ((" + clazz.getName() + ")$1)." + field.getName() + "=(int)$2;}",
+ clazz);
+ clazz.addMethod(wmethod);
+ }
+ }
+
+ private void addConstructorWrappers(CtClass clazz) throws Exception
+ {
+ for (CtConstructor ctor : clazz.getConstructors())
+ {
+ CtMethod wrapper = CtNewMethod.make(clazz, getConstructorName(clazz), ctor.getParameterTypes(), null,
+ "{" + CLASS_INVOKED + ".invoked = true; return new " + clazz.getName() + "($$);}", clazz);
+ wrapper.setModifiers(Modifier.PUBLIC | Modifier.STATIC);
+ clazz.addMethod(wrapper);
+ }
+ }
+
+ private void replaceReferences(final CtClass clazz) throws Exception
+ {
+ CodeConverter conv = new CodeConverter();
+ ScopedClassPool pool = ClassPoolRepository.getInstance().getClassPoolFactory().
+ create(clazz.getClassPool(), ClassPoolRepository.getInstance());
+ Collection<String> refs = AccessController.doPrivileged(new PrivilegedAction<Collection<String>>() {
+
+ @SuppressWarnings("all")
+ public Collection<String> run()
+ {
+ return clazz.getRefClasses();
+ }});
+
+ for (String ref : refs)
+ {
+ if (ref.startsWith(PACKAGE_REPLACEMENT_CHILD) || ref.startsWith(PACKAGE_REPLACEMENT_PARENT))
+ {
+ if (ref.endsWith("Caller"))
+ {
+ continue;
+ }
+ CtClass ctRef = pool.get(ref);
+ CtField[] fields = ctRef.getDeclaredFields();
+ for (CtField fld : fields)
+ {
+ conv.replaceFieldRead(fld, ctRef, getFieldReadWrapperName(fld.getName()));
+ conv.replaceFieldWrite(fld, ctRef, getFieldWriteWrapperName(fld.getName()));
+ }
+ conv.replaceNew(ctRef, ctRef, getConstructorName(ctRef));
+ }
+ }
+ clazz.instrument(conv);
+ }
+
+ private String getFieldReadWrapperName(String fieldName)
+ {
+ return fieldName + "_read";
+ }
+
+ private String getFieldWriteWrapperName(String fieldName)
+ {
+ return fieldName + "_write";
+ }
+
+ private String getConstructorName(CtClass clazz)
+ {
+ return clazz.getSimpleName() + "_new";
+ }
+ }
+}
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryClassPoolTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryClassPoolTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,285 @@
+/*
+ * 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_B;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_B;
+
+import java.util.ArrayList;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.common.ClassFactory;
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the repository tests against a class pool test scenario.
+ * This class also contains extra tests that are targeted expecifically to ClassPools.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class RepositoryClassPoolTestCase extends RepositoryTest<CtClass, ClassPool>
+{
+ public static Test suite()
+ {
+ return new TestSuite(RepositoryClassPoolTestCase.class);
+ }
+
+ public RepositoryClassPoolTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<CtClass, ClassPool> getTestScenario()
+ {
+ return new ClassPoolTestScenario(getMicrocontainerFacade());
+ }
+
+ public void testCanLoadArrayCtClass() throws Exception
+ {
+ ClassPool poolA = testScenario.createLoader(new CLDeploymentBuilder("A", JAR_A_1));
+ ClassPool poolB = testScenario.createLoader(new CLDeploymentBuilder("B", JAR_B_1));
+ accessCanLoadCtArray(poolA, poolB);
+ accessCanLoadCtArray(poolA, poolB);
+ }
+
+ private void accessCanLoadCtArray(ClassPool poolA, ClassPool poolB) throws Exception
+ {
+ poolA.get(String.class.getName() + "[][]");
+ CtClass a = poolA.get(CLASS_A);
+ CtClass aArray = poolA.get(CLASS_A + "[]");
+ CtClass bArray = poolA.get(CLASS_B + "[][]");
+ CtClass b = poolA.get(CLASS_B);
+
+ CtClass byteClassA = poolA.get("byte");
+ CtClass byteClassB = poolB.get("byte");
+ assertSame(byteClassA, byteClassB);
+ assertNotSame(poolA, byteClassA.getClassPool());
+ assertNotSame(poolB, byteClassA.getClassPool());
+ CtClass intArrayClass = poolA.get("int[]");
+ CtClass intClass = poolB.get("int");
+ assertSame(intClass, intArrayClass.getComponentType());
+ assertSame(byteClassA.getClassPool(), intClass.getClassPool());
+
+
+
+ assertTrue(aArray.isArray());
+ assertSame(a, aArray.getComponentType());
+ assertTrue(bArray.isArray());
+ assertTrue(bArray.getComponentType().isArray());
+ assertSame(b, bArray.getComponentType().getComponentType());
+ assertNotSame(aArray.getClassPool(), bArray.getClassPool());
+ assertSame(poolA, aArray.getClassPool());
+ assertSame(poolB, bArray.getClassPool());
+ assertSame(a.getClassPool(), aArray.getClassPool());
+ assertSame(b.getClassPool(), bArray.getClassPool());
+ }
+
+ public void testCreatedClassInSamePackage() throws Exception
+ {
+ ClassPool poolA = testScenario.createLoader(new CLDeploymentBuilder("A", JAR_A_1));
+ ClassPool poolB = testScenario.createLoader(new CLDeploymentBuilder("B", JAR_B_1));
+
+ ClassLoader loaderA = poolA.getClassLoader();
+ ClassLoader loaderB = poolB.getClassLoader();
+
+ Class<?> classA = loaderA.loadClass(CLASS_A);
+ Class<?> classB = loaderB.loadClass(CLASS_B);
+
+ Object createdA = ClassFactory.create(classA, loaderA);
+ Object createdB = ClassFactory.create(classB, loaderB);
+
+ Class<?> createdClassA = createdA.getClass();
+ Class<?> createdClassB = createdB.getClass();
+
+ assertTrue(classA.isAssignableFrom(createdClassA));
+ assertTrue(classB.isAssignableFrom(createdClassB));
+ assertTrue(createdClassA.getName().startsWith(PACKAGE_A));
+ assertTrue(createdClassB.getName().startsWith(PACKAGE_B));
+
+ assertSame(createdClassA, loaderA.loadClass(createdClassA.getName()));
+ assertSame(createdClassB, loaderA.loadClass(createdClassB.getName()));
+ assertSame(createdClassA, loaderB.loadClass(createdClassA.getName()));
+ assertSame(createdClassB, loaderB.loadClass(createdClassB.getName()));
+ }
+
+ /*public void testMakeContainerProxyInSamePackage() throws Exception
+ {
+ ClassPool globalPoolA = null;
+ ClassPool globalPoolB = null;
+ try
+ {
+ globalPoolA = createClassPool("A", true, JAR_A_1);
+ globalPoolB = createClassPool("B", true, JAR_B_1);
+
+ ClassLoader loaderA = globalPoolA.getClassLoader();
+ ClassLoader loaderB = globalPoolB.getClassLoader();
+
+ loaderA.loadClass(ProxyTemplate.class.getName());
+
+ Object proxyA = assertMakeContainerProxy(loaderA.loadClass(CLASS_A), loaderA);
+ Object proxyB = assertMakeContainerProxy(loaderB.loadClass(CLASS_B), loaderB);
+
+ Class<?> clazzA = proxyA.getClass();
+ Class<?> clazzB = proxyB.getClass();
+
+ assertTrue(AspectManaged.class.isAssignableFrom(clazzA));
+ assertTrue(AspectManaged.class.isAssignableFrom(clazzB));
+ assertTrue(clazzA.getName().startsWith(PACKAGE_A));
+ assertTrue(clazzB.getName().startsWith(PACKAGE_B));
+
+ assertSame(clazzA, loaderA.loadClass(clazzA.getName()));
+ assertSame(clazzB, loaderA.loadClass(clazzB.getName()));
+ assertSame(clazzA, loaderB.loadClass(clazzA.getName()));
+ assertSame(clazzB, loaderB.loadClass(clazzB.getName()));
+ }
+ finally
+ {
+ unregisterClassPool(globalPoolA);
+ unregisterClassPool(globalPoolB);
+ }
+ }*/
+
+ /*public void testMakeContainerProxyForSystemClass() throws Exception
+ {
+ ClassPool globalPoolA = null;
+ ClassPool globalPoolB = null;
+ try
+ {
+ BundleInfoBuilder builderA = BundleInfoBuilder.getBuilder().
+ createModule("ModuleA").
+ createPackage(PACKAGE_A).
+ createPackage(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE);
+ globalPoolA = createClassPool("A", true, builderA, JAR_A_1);
+
+ BundleInfoBuilder builderB = BundleInfoBuilder.getBuilder().
+ createModule("ModuleB").
+ createPackage(PACKAGE_B).
+ createPackage(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE);
+ globalPoolB = createClassPool("B", true, builderB, JAR_B_1);
+
+ ClassLoader loaderA = globalPoolA.getClassLoader();
+ ClassLoader loaderB = globalPoolB.getClassLoader();
+
+ loaderA.loadClass(ProxyTemplate.class.getName());
+
+ Object proxyA = assertMakeContainerProxy(ArrayList.class, loaderA);
+ Object proxyB = assertMakeContainerProxy(ArrayList.class, loaderB);
+
+ Class<?> clazzA = proxyA.getClass();
+ Class<?> clazzB = proxyB.getClass();
+
+ assertTrue(AspectManaged.class.isAssignableFrom(clazzA));
+ assertTrue(AspectManaged.class.isAssignableFrom(clazzB));
+ assertTrue(clazzA.getName().startsWith(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE));
+ assertTrue(clazzB.getName().startsWith(ContainerProxyFactory.PROXY_CLASSES_DEFAULT_PACKAGE));
+
+ assertSame(clazzA, loaderA.loadClass(clazzA.getName()));
+ assertSame(clazzB, loaderA.loadClass(clazzB.getName()));
+ assertSame(clazzA, loaderB.loadClass(clazzA.getName()));
+ assertSame(clazzB, loaderB.loadClass(clazzB.getName()));
+ }
+ finally
+ {
+ unregisterClassPool(globalPoolA);
+ unregisterClassPool(globalPoolB);
+ }
+ }*/
+
+ public void testCreateClassForSystemClass() throws Exception
+ {
+ CLDeploymentBuilder clBuilderA = new CLDeploymentBuilder("A", JAR_A_1);
+ clBuilderA.createModule("ModuleA").createPackage(PACKAGE_A);
+ clBuilderA.createPackage(ClassFactory.PACKAGE).setImportAll(true);
+ ClassPool poolA = testScenario.createLoader(clBuilderA);
+
+ CLDeploymentBuilder clBuilderB = new CLDeploymentBuilder("B", JAR_B_1);
+ clBuilderB.createModule("ModuleB").createPackage(PACKAGE_B);
+ clBuilderB.createPackage(ClassFactory.PACKAGE).setImportAll(true);
+ ClassPool poolB = testScenario.createLoader(clBuilderB);
+
+ ClassLoader loaderA = poolA.getClassLoader();
+ ClassLoader loaderB = poolB.getClassLoader();
+
+ Object createdA = ClassFactory.create(ArrayList.class, loaderA);
+ Object createdB = ClassFactory.create(ArrayList.class, loaderB);
+
+ Class<?> createdClassA = createdA.getClass();
+ Class<?> createdClassB = createdB.getClass();
+
+ assertTrue(ArrayList.class.isAssignableFrom(createdClassA));
+ assertTrue(ArrayList.class.isAssignableFrom(createdClassB));
+ assertTrue(createdClassA.getName().startsWith(ClassFactory.PACKAGE));
+ assertTrue(createdClassB.getName().startsWith(ClassFactory.PACKAGE));
+
+ assertSame(createdClassA, loaderA.loadClass(createdClassA.getName()));
+ assertSame(createdClassB, loaderA.loadClass(createdClassB.getName()));
+ assertSame(createdClassA, loaderB.loadClass(createdClassA.getName()));
+ assertSame(createdClassB, loaderB.loadClass(createdClassB.getName()));
+ }
+
+ /*private Object assertMakeContainerProxy(Class<?> parent, ClassLoader loader) throws Exception
+ {
+ AOPProxyFactoryParameters params = new AOPProxyFactoryParameters();
+ params.setProxiedClass(parent);
+ params.setTarget(parent.newInstance());
+ params.setClassLoader(loader);
+ params.setInterfaces(new Class<?>[] {java.io.Serializable.class});
+ GeneratedAOPProxyFactory factory = new GeneratedAOPProxyFactory();
+ Object proxy = factory.createAdvisedProxy(params);
+ assertFalse(parent.getName() == proxy.getClass().getName());
+ assertSame(loader, proxy.getClass().getClassLoader());
+ return proxy;
+ }*/
+
+ /*private static final String PROXY_PACKAGE = "org.test.classpool.proxy";
+ private static final String PROXY_CLASS = PROXY_PACKAGE + ".Proxy";
+ private static int counter = 0;
+
+ private Object assertMakeSimpleProxy(Class<?> parent, ClassLoader loader) throws Exception
+ {
+ //AOPProxyFactoryParameters params = new AOPProxyFactoryParameters();
+ //params.setProxiedClass(parent);
+ //params.setTarget(parent.newInstance());
+ //params.setClassLoader(loader);
+ ClassPool pool = ClassPoolRepository.getInstance().getRegisteredCLs().get(loader);
+ CtClass ctClazz = pool.makeClass(PROXY_CLASS + counter++);
+ ctClazz.setSuperclass(pool.get(parent.getName()));
+ Class<?> clazz = pool.toClass(ctClazz);
+ //params.setInterfaces(new Class<?>[] {java.io.Serializable.class});
+ //GeneratedAOPProxyFactory factory = new GeneratedAOPProxyFactory();
+ //Object proxy = factory.createAdvisedProxy(params);
+ //assertFalse(parent.getName() == proxy.getClass().getName());
+ assertSame(loader, clazz.getClassLoader());
+ //return proxy;
+ return clazz.newInstance();
+ }*/
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryClassPoolTestCase.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/RepositorySanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositorySanityTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositorySanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,54 @@
+/*
+ * 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;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+/**
+ * Executes the repository tests against a sanity test scenario (for class loader behavior
+ * sanity checking).
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class RepositorySanityTestCase extends RepositoryTest<Class<?>, ClassLoader>
+{
+ public static Test suite()
+ {
+ return new TestSuite(RepositorySanityTestCase.class);
+ }
+
+ public RepositorySanityTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ {
+ return new SanityTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositorySanityTestCase.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/RepositoryTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryTest.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryTest.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,388 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_B;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_C;
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_D;
+
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Tests the behaviour of the new classloaders.
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class RepositoryTest<C, L> extends JBossClClassPoolTest<C, L>
+{
+ final static String STRING = String.class.getName();
+
+ public RepositoryTest(String name)
+ {
+ super(name);
+ }
+
+
+ public void testGlobalScope() throws Exception
+ {
+ CLDeploymentBuilder clBuilderA = new CLDeploymentBuilder("A", JAR_A_1);
+ L loaderA = testScenario.createLoader(clBuilderA);
+
+ CLDeploymentBuilder clBuilderB = new CLDeploymentBuilder("B", JAR_B_1);
+ L loaderB = testScenario.createLoader(clBuilderB);
+
+ C aFromA = testScenario.loadClass(loaderA, CLASS_A);
+ C bFromA = testScenario.loadClass(loaderA, loaderB, CLASS_B);
+ C aFromB = testScenario.loadClass(loaderB, loaderA, CLASS_A);
+ C bFromB = testScenario.loadClass(loaderB, CLASS_B);
+ assertSame(aFromA, aFromB);
+ assertSame(bFromA, bFromB);
+
+ testScenario.destroyLoader(clBuilderB);
+
+ aFromA = testScenario.loadClass(loaderA, CLASS_A);
+ testScenario.cannotLoadClass(loaderA, CLASS_B);
+ }
+
+ public void testChildDomain() throws Exception
+ {
+ L loaderA = testScenario.createLoader(new CLDeploymentBuilder("A", JAR_A_1));
+ L loaderB = testScenario.createLoader(new CLDeploymentBuilder("B", JAR_B_2));
+
+ CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("C", JAR_C_1);
+ childCLBuilder.createDomain("CHILD", true);
+ L childLoader = testScenario.createLoader(childCLBuilder);
+
+ C aFromA = testScenario.loadClass(loaderA, CLASS_A);
+ C bFromB = testScenario.loadClass(loaderB, CLASS_B);
+ testScenario.loadClass(childLoader, CLASS_C);
+ C aFromC = testScenario.loadClass(childLoader, loaderA, CLASS_A);
+ C bFromC = testScenario.loadClass(childLoader, loaderB, CLASS_B);
+
+ assertSame(aFromA, aFromC);
+ assertSame(bFromB, bFromC);
+ testScenario.cannotLoadClass(loaderA, CLASS_C);
+ testScenario.cannotLoadClass(loaderB, CLASS_C);
+ }
+
+ public void testSiblingDomains() throws Exception
+ {
+ CLDeploymentBuilder clBuilderA = new CLDeploymentBuilder("A", JAR_A_1);
+ clBuilderA.createDomain("ChildA", true);
+ L loaderA = testScenario.createLoader(clBuilderA);
+
+ CLDeploymentBuilder clBuilderB = new CLDeploymentBuilder("B", JAR_B_1);
+ clBuilderB.createDomain("ChildB", true);
+ L loaderB = testScenario.createLoader(clBuilderB);
+
+ testScenario.loadClass(loaderA, CLASS_A);
+ testScenario.loadClass(loaderB, CLASS_B);
+ testScenario.cannotLoadClass(loaderA, CLASS_B);
+ testScenario.cannotLoadClass(loaderB, CLASS_A);
+ }
+
+ public void testChildWithNewClassesInParent() throws Exception
+ {
+ CLDeploymentBuilder clScopedBuilder = new CLDeploymentBuilder("SCOPED", JAR_B_1);
+ clScopedBuilder.createDomain("SCOPED", true);
+ L scopedLoader = testScenario.createLoader(clScopedBuilder);
+
+ testScenario.cannotLoadClass(scopedLoader, CLASS_A);
+
+ L globalLoader = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_A_1));
+
+ C aFromChild = testScenario.loadClass(scopedLoader, globalLoader, CLASS_A);
+ C aFromParent = testScenario.loadClass(globalLoader, CLASS_A);
+ assertSame(aFromChild, aFromParent);
+ }
+
+ public void testChildOverrideWithParentDelegation() throws Exception
+ {
+ L globalLoader = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_A_1));
+
+ CLDeploymentBuilder clScopedBuilder = new CLDeploymentBuilder("SCOPED", JAR_B_1);
+ clScopedBuilder.createDomain("SCOPED", true);
+ L scopedLoader = testScenario.createLoader(clScopedBuilder);
+
+ C aFromParent = testScenario.loadClass(globalLoader, CLASS_A);
+ C aFromChild = testScenario.loadClass(scopedLoader, globalLoader, CLASS_A);
+ assertSame(aFromParent, aFromChild);
+ }
+
+ public void testChildOverrideWithNoParentDelegation() throws Exception
+ {
+ L globalLoader = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_A_1));
+
+ CLDeploymentBuilder clScopedBuilder = new CLDeploymentBuilder("CHILD", JAR_A_1);
+ clScopedBuilder.createDomain("CHILD", false);
+ L scopedLoader = testScenario.createLoader(clScopedBuilder);
+
+ C aFromParent = testScenario.loadClass(globalLoader, CLASS_A);
+ C aFromChild = testScenario.loadClass(scopedLoader, CLASS_A);
+ assertNotSame(aFromParent, aFromChild);
+ }
+
+ public void testURLChildOfGlobalUcl() throws Exception
+ {
+ L globalLoader = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_A_1));
+ L childALoader = createChildURLLoader(globalLoader, JAR_B_1);
+
+ testScenario.loadClass(childALoader, globalLoader, CLASS_A);
+ testScenario.loadClass(childALoader, CLASS_B);
+
+ L childBLoader = createChildURLLoader(globalLoader, JAR_A_2);
+ testScenario.loadClass(childBLoader, globalLoader, CLASS_A);
+
+ }
+
+ public void testUndeploySibling() throws Exception
+ {
+ L globalLoader = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_A_1));
+ testScenario.cannotLoadClass(globalLoader, CLASS_B);
+
+ CLDeploymentBuilder bCLBuilder = new CLDeploymentBuilder("B", JAR_B_1);
+ L bLoader = testScenario.createLoader(bCLBuilder);
+ testScenario.loadClass(globalLoader, bLoader, CLASS_B);
+ testScenario.destroyLoader(bCLBuilder);
+ testScenario.cannotLoadClass(globalLoader, CLASS_B);
+ }
+
+
+ public void testUndeployParentDomainClassLoader() throws Exception
+ {
+ L globalLoaderA = testScenario.createLoader(new CLDeploymentBuilder("GLOBAL", JAR_A_1));
+ testScenario.cannotLoadClass(globalLoaderA, CLASS_B);
+
+ CLDeploymentBuilder childCLBuilder = new CLDeploymentBuilder("C", JAR_C_1);
+ childCLBuilder.createDomain("C", false);
+ L childLoader = testScenario.createLoader(childCLBuilder);
+ testScenario.cannotLoadClass(childLoader, CLASS_B);
+
+ CLDeploymentBuilder globalCLBuilderB = new CLDeploymentBuilder("B", JAR_B_1);
+ L globalLoaderB = testScenario.createLoader(globalCLBuilderB);
+
+ C bFromChild = testScenario.loadClass(childLoader, globalLoaderB, CLASS_B);
+ C bFromA = testScenario.loadClass(globalLoaderA, globalLoaderB, CLASS_B);
+ assertSame(bFromA, bFromChild);
+
+ testScenario.destroyLoader(globalCLBuilderB);
+
+ testScenario.cannotLoadClass(childLoader, CLASS_B);
+ }
+
+ public void testClassLoaderWithParentClassLoader() throws Exception
+ {
+ L parentLoader = createChildURLLoader((L) null, JAR_B_1);
+
+ CLDeploymentBuilder globalCLBuilder = new CLDeploymentBuilder("A", JAR_A_1);
+ globalCLBuilder.createDomain("A", testScenario.getClassLoader(parentLoader), true);
+ L globalLoader = testScenario.createLoader(globalCLBuilder);
+
+ testScenario.loadClass(globalLoader, CLASS_A);
+ C bFromGlobal = testScenario.loadClass(globalLoader, parentLoader, CLASS_B);
+ C bFromParent = testScenario.loadClass(parentLoader, CLASS_B);
+ assertSame(bFromGlobal, bFromParent);
+ testScenario.cannotLoadClass(parentLoader, CLASS_A);
+ }
+
+ public void testClassLoaderWithParentClassLoaderAndCrossReference() throws Exception
+ {
+ L parentLoader = createChildURLLoader(null, JAR_B_1);
+
+ CLDeploymentBuilder globalCLBuilder = new CLDeploymentBuilder("D", JAR_D);
+ globalCLBuilder.createDomain("D", testScenario.getClassLoader(parentLoader), true);
+ L globalLoader = testScenario.createLoader(globalCLBuilder);
+
+ C dFromGlobal = testScenario.loadClass(globalLoader, CLASS_D);
+ C bFromGlobal = testScenario.loadClass(globalLoader, parentLoader, CLASS_B);
+ C bFromParent = testScenario.loadClass(parentLoader, CLASS_B);
+ assertSame(bFromGlobal, bFromParent);
+ testScenario.cannotLoadClass(parentLoader, CLASS_D);
+
+ C returnType = testScenario.getMethodReturnType(dFromGlobal, "getB");
+ assertSame(returnType, bFromParent);
+ }
+
+
+ public void testClassLoaderWithParentClassLoaderAndSameClassInDomain() throws Exception
+ {
+ L parentLoader = createChildURLLoader(null, JAR_B_1);
+
+ String domain = "CHILD";
+ CLDeploymentBuilder globalCLBuilderA = new CLDeploymentBuilder("A", JAR_A_1);
+ globalCLBuilderA.createDomain(domain, testScenario.getClassLoader(parentLoader), true);
+ L globalLoaderA = testScenario.createLoader(globalCLBuilderA);
+
+ testScenario.loadClass(globalLoaderA, CLASS_A);
+ C bFromGlobalA = testScenario.loadClass(globalLoaderA, parentLoader, CLASS_B);
+
+ CLDeploymentBuilder globalCLBuilderB = new CLDeploymentBuilder("B", JAR_B_2);
+ globalCLBuilderB.setDomain(domain);
+ L globalLoaderB = testScenario.createLoader(globalCLBuilderB);
+
+ C bFromParent = testScenario.loadClass(parentLoader, CLASS_B);
+ assertSame(bFromGlobalA, bFromParent);
+
+ C bFromGlobalB = testScenario.loadClass(globalLoaderB, parentLoader, CLASS_B);
+ assertSame(bFromGlobalB, bFromParent);
+
+ CLDeploymentBuilder globalCLBuilderC = new CLDeploymentBuilder("C", JAR_B_2);
+ globalCLBuilderC.createDomain(domain + "2", testScenario.getClassLoader(parentLoader), false);
+ L globalLoaderC = testScenario.createLoader(globalCLBuilderC);
+ testScenario.loadClass(globalLoaderC, CLASS_B);
+ }
+
+ public void testSeveralLevelsOfDomain() throws Exception
+ {
+ L parentLoader = testScenario.createLoader(new CLDeploymentBuilder("A", JAR_A_1));
+ C aFromParent = testScenario.loadClass(parentLoader, CLASS_A);
+
+ String domain1 = "1";
+ CLDeploymentBuilder clDeploymentBuilder1B = new CLDeploymentBuilder("1B", JAR_B_1);
+ clDeploymentBuilder1B.createDomain(domain1, true);
+ L loader1B = testScenario.createLoader(clDeploymentBuilder1B);
+
+ CLDeploymentBuilder clDeploymentBuilder1C = new CLDeploymentBuilder("1C", JAR_C_1);
+ clDeploymentBuilder1C.setDomain(domain1);
+ L loader1C = testScenario.createLoader(clDeploymentBuilder1C);
+
+ C aFrom1B = testScenario.loadClass(loader1B, parentLoader, CLASS_A);
+ C bFrom1B = testScenario.loadClass(loader1B, CLASS_B);
+ C cFrom1B = testScenario.loadClass(loader1B, loader1C, CLASS_C);
+ C aFrom1C = testScenario.loadClass(loader1C, parentLoader, CLASS_A);
+ C bFrom1C = testScenario.loadClass(loader1C, loader1B, CLASS_B);
+ C cFrom1C = testScenario.loadClass(loader1C, CLASS_C);
+ assertSame(aFromParent, aFrom1B);
+ assertSame(aFromParent, aFrom1C);
+ assertSame(bFrom1B, bFrom1C);
+ assertSame(cFrom1B, cFrom1C);
+
+ String domain2 = "2";
+
+ CLDeploymentBuilder clDeploymentBuilder2B = new CLDeploymentBuilder("2B", JAR_B_1);
+ clDeploymentBuilder2B.createDomain(domain2, true);
+ L loader2B = testScenario.createLoader(clDeploymentBuilder2B);
+
+ CLDeploymentBuilder clDeploymentBuilder2C = new CLDeploymentBuilder("2C", JAR_C_1);
+ clDeploymentBuilder2C.setDomain(domain2);
+ L loader2C = testScenario.createLoader(clDeploymentBuilder2C);
+
+ C aFrom2B = testScenario.loadClass(loader2B, parentLoader, CLASS_A);
+ C bFrom2B = testScenario.loadClass(loader2B, CLASS_B);
+ C cFrom2B = testScenario.loadClass(loader2B, loader2C, CLASS_C);
+ C aFrom2C = testScenario.loadClass(loader2C, parentLoader, CLASS_A);
+ C bFrom2C = testScenario.loadClass(loader2C, loader2B, CLASS_B);
+ C cFrom2C = testScenario.loadClass(loader2C, CLASS_C);
+ assertSame(aFromParent, aFrom2B);
+ assertSame(aFromParent, aFrom2C);
+ assertSame(bFrom2B, bFrom2C);
+ assertSame(cFrom2B, cFrom2C);
+ assertNotSame(bFrom1B, bFrom2B);
+ assertNotSame(bFrom2C, bFrom1C);
+ assertNotSame(cFrom2C, cFrom1C);
+
+ final String domain11 = "11";
+ CLDeploymentBuilder clBuilder11A = new CLDeploymentBuilder("11A", JAR_A_2);
+ clBuilder11A.createDomain(domain11, domain1, true);
+ L loader11A = testScenario.createLoader(clBuilder11A);
+ CLDeploymentBuilder clBuilder11B = new CLDeploymentBuilder("11B", JAR_B_2);
+ clBuilder11B.setDomain(domain11);
+ L loader11B = testScenario.createLoader(clBuilder11B);
+ CLDeploymentBuilder clBuilder11C = new CLDeploymentBuilder("11C", JAR_C_2);
+ clBuilder11C.setDomain(domain11);
+ L loader11C = testScenario.createLoader(clBuilder11C);
+
+ String domain12 = "12";
+ CLDeploymentBuilder clBuilder12A = new CLDeploymentBuilder("12A", JAR_A_2);
+ clBuilder12A.createDomain(domain12, domain1, false);
+ L loader12A = testScenario.createLoader(clBuilder12A);
+ CLDeploymentBuilder clBuilder12B = new CLDeploymentBuilder("12B", JAR_B_2);
+ clBuilder12B.setDomain(domain12);
+ L loader12B = testScenario.createLoader(clBuilder12B);
+ CLDeploymentBuilder clBuilder12C = new CLDeploymentBuilder("12C", JAR_C_2);
+ clBuilder12C.setDomain(domain12);
+ L loader12C = testScenario.createLoader(clBuilder12C);
+
+ C aFrom11A = testScenario.loadClass(loader11A, parentLoader, CLASS_A);
+ C aFrom11B = testScenario.loadClass(loader11B, parentLoader, CLASS_A);
+ C aFrom11C = testScenario.loadClass(loader11C, parentLoader, CLASS_A);
+ assertSame(aFromParent, aFrom11A);
+ assertSame(aFromParent, aFrom11B);
+ assertSame(aFromParent, aFrom11C);
+
+ C aFrom12A = testScenario.loadClass(loader12A, CLASS_A);
+ C aFrom12B = testScenario.loadClass(loader12B, loader12A, CLASS_A);
+ C aFrom12C = testScenario.loadClass(loader12C, loader12A, CLASS_A);
+ assertNotSame(aFromParent, aFrom12A);
+ assertSame(aFrom12A, aFrom12B);
+ assertSame(aFrom12A, aFrom12C);
+
+ C bFrom11A = testScenario.loadClass(loader11A, loader1B, CLASS_B);
+ C bFrom11B = testScenario.loadClass(loader11B, loader1B, CLASS_B);
+ C bFrom11C = testScenario.loadClass(loader11C, loader1B, CLASS_B);
+ assertSame(bFrom11A, bFrom11B);
+ assertSame(bFrom11A, bFrom11C);
+
+ C cFrom11A = testScenario.loadClass(loader11A, loader1C, CLASS_C);
+ C cFrom11B = testScenario.loadClass(loader11B, loader1C, CLASS_C);
+ C cFrom11C = testScenario.loadClass(loader11C, loader1C, CLASS_C);
+ assertSame(cFrom11A, cFrom11B);
+ assertSame(cFrom11A, cFrom11C);
+
+ C bFrom12A = testScenario.loadClass(loader12A, loader12B, CLASS_B);
+ C bFrom12B = testScenario.loadClass(loader12B, CLASS_B);
+ C bFrom12C = testScenario.loadClass(loader12C, loader12B, CLASS_B);
+ assertSame(bFrom12A, bFrom12B);
+ assertSame(bFrom12A, bFrom12C);
+ assertNotSame(bFrom11B, bFrom12B);
+
+ C cFrom12A = testScenario.loadClass(loader12A, loader12C, CLASS_C);
+ C cFrom12B = testScenario.loadClass(loader12B, loader12C, CLASS_C);
+ C cFrom12C = testScenario.loadClass(loader12C, CLASS_C);
+ assertSame(cFrom12A, cFrom12B);
+ assertSame(cFrom12A, cFrom12C);
+ assertNotSame(cFrom11C, cFrom12C);
+ }
+
+ public void testUclLoaderOrdering() throws Exception
+ {
+ L globalLoaderA1 = testScenario.createLoader(new CLDeploymentBuilder("A1", JAR_A_1));
+ L globalLoaderA2 = testScenario.createLoader(new CLDeploymentBuilder("A2", JAR_A_1));
+ L globalLoaderA3 = testScenario.createLoader(new CLDeploymentBuilder("A3", JAR_A_1));
+
+ testScenario.loadClass(globalLoaderA1, CLASS_A);
+ testScenario.loadClass(globalLoaderA2, globalLoaderA1, CLASS_A);
+ testScenario.loadClass(globalLoaderA3, globalLoaderA1, CLASS_A);
+ }
+
+ protected L createChildURLLoader(L parentLoader, URL url)
+ {
+ ClassLoader parentClassLoader = parentLoader == null? null: testScenario.getClassLoader(parentLoader);
+ return testScenario.getLoader(new URLClassLoader(new URL[] {url}, parentClassLoader));
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/RepositoryTest.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Deleted: 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 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/SanityTestScenario.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,149 +0,0 @@
-/*
- * 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
Deleted: 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 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/TestScenario.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,63 +0,0 @@
-/*
- * 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
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageClassPoolTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageClassPoolTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageClassPoolTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,56 @@
+/*
+ * 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 javassist.ClassPool;
+import javassist.CtClass;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.test.classpool.support.ClassPoolTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the uses package tests against a class pool test scenario.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class UsesPackageClassPoolTestCase extends UsesPackageTest<CtClass, ClassPool>
+{
+ public static Test suite()
+ {
+ return new TestSuite(UsesPackageClassPoolTestCase.class);
+ }
+
+ public UsesPackageClassPoolTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<CtClass, ClassPool> getTestScenario()
+ {
+ return new ClassPoolTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageClassPoolTestCase.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/UsesPackageSanityTestCase.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageSanityTestCase.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageSanityTestCase.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,55 @@
+/*
+ * 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;
+
+import org.jboss.test.classpool.support.SanityTestScenario;
+import org.jboss.test.classpool.support.TestScenario;
+
+
+/**
+ * Executes the uses package tests against a sanity test scenario (for class loader behavior
+ * sanity checking).
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class UsesPackageSanityTestCase extends UsesPackageTest<Class<?>, ClassLoader>
+{
+ public static Test suite()
+ {
+ return new TestSuite(UsesPackageSanityTestCase.class);
+ }
+
+ public UsesPackageSanityTestCase(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected TestScenario<Class<?>, ClassLoader> getTestScenario()
+ {
+ return new SanityTestScenario(getMicrocontainerFacade());
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageSanityTestCase.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/UsesPackageTest.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageTest.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageTest.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.classpool.jbosscl.test;
+
+import static org.jboss.test.classpool.support.SupportClasses.CLASS_A;
+import static org.jboss.test.classpool.support.SupportClasses.PACKAGE_A;
+
+import org.jboss.test.classpool.support.CLDeploymentBuilder;
+
+/**
+ * Reproduces org.jboss.test.classloading.vfs.metadata.test.UsesPackageUnitTestCase using our
+ * test framework.
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public abstract class UsesPackageTest<C, L> extends JBossClClassPoolTest<C, L>
+{
+ public UsesPackageTest(String name)
+ {
+ super(name);
+ }
+
+ public void testUsesImport() throws Exception
+ {
+ CLDeploymentBuilder clBuilderA1 = new CLDeploymentBuilder("A1", JAR_A_1);
+ clBuilderA1.createModule("a1").createPackage(PACKAGE_A).setImportAll(false);
+ L loaderA1 = testScenario.createLoader(clBuilderA1);
+ C classA = testScenario.loadClass(loaderA1, CLASS_A);
+
+ CLDeploymentBuilder clBuilderA2 = new CLDeploymentBuilder("A2", JAR_A_1);
+ clBuilderA2.createModule("a2").createUsesPackage(PACKAGE_A).setImportAll(false);
+ L loaderA2 = testScenario.createLoader(clBuilderA2);
+
+ C classA1 = testScenario.loadClass(loaderA1, CLASS_A);
+ assertSame(classA, classA1);
+ classA1 = testScenario.loadClass(loaderA2, loaderA1, CLASS_A);
+ assertSame(classA, classA1);
+
+ testScenario.destroyLoader(clBuilderA2);
+
+ classA1 = testScenario.loadClass(loaderA1, CLASS_A);
+ assertSame(classA, classA1);
+ }
+
+ public void testUsesNoImport() throws Exception
+ {
+ CLDeploymentBuilder clBuilder = new CLDeploymentBuilder("A1", JAR_A_1);
+ clBuilder.createModule("a1").createUsesPackage(PACKAGE_A).setImportAll(false);
+ L loader = testScenario.createLoader(clBuilder);
+ testScenario.loadClass(loader, CLASS_A);
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/jbosscl/test/UsesPackageTest.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,118 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.support;
-
-import java.security.CodeSource;
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.security.SecurityPermission;
-import java.util.Enumeration;
-import java.util.PropertyPermission;
-
-import org.jboss.test.security.TestsPolicyPlugin;
-
-/**
- * The original TestPolicyPlugin reuses the underlying PermissionCollection. This causes problems
- * for tests creating several ProtectionDomains, since the ProtectionDomain's constructor
- * marks the PolicyCollection as read-only so we get errors
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class AlwaysWritablePermissionCollectionTestPolicyPlugin extends TestsPolicyPlugin
-{
- public AlwaysWritablePermissionCollectionTestPolicyPlugin(Class<?> clazz)
- {
- super(clazz);
- }
-
- public synchronized PermissionCollection getPermissions(CodeSource codesource)
- {
- return new AlwaysWritablePermissionCollection(super.getPermissions(codesource));
- }
-
- public static void initialisePlugin()
- {
- System.setProperty("org.jboss.test.security.PolicyPlugin", AlwaysWritablePermissionCollectionTestPolicyPlugin.class.getName());
- }
-
- public static void cleanupPlugin()
- {
- System.clearProperty("org.jboss.test.security.PolicyPlugin");
- }
-
- private static class AlwaysWritablePermissionCollection extends PermissionCollection
- {
- private static final long serialVersionUID = 1L;
-
- volatile PermissionCollection lastDelegate;
- volatile PermissionCollection delegate;
-
- final static Permission GET_POLICY = new SecurityPermission("getPolicy");
- final static Permission PARENT_PKGS = new PropertyPermission("jboss.test.parent.pkgs", "read");
-
- private AlwaysWritablePermissionCollection(PermissionCollection delegate)
- {
- this.delegate = delegate;
- }
-
- public void add(Permission permission)
- {
- delegate.add(permission);
- }
-
- public Enumeration<Permission> elements()
- {
- return delegate.elements();
- }
-
- public boolean equals(Object obj)
- {
- return delegate.equals(obj);
- }
-
- public int hashCode()
- {
- return delegate.hashCode();
- }
-
- public boolean implies(Permission permission)
- {
- return delegate.implies(permission);
- }
-
- public boolean isReadOnly()
- {
- return delegate.isReadOnly();
- }
-
- public void setReadOnly()
- {
- //ignore
- }
-
- public String toString()
- {
- return delegate.toString();
- }
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/BundleInfoBuilder.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/BundleInfoBuilder.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/BundleInfoBuilder.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,179 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.support;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jboss.classloading.spi.metadata.Capability;
-import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
-import org.jboss.classloading.spi.metadata.Requirement;
-import org.jboss.classloading.spi.version.VersionRange;
-
-/**
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class BundleInfoBuilder
-{
- static ClassLoadingMetaDataFactory clmdf = ClassLoadingMetaDataFactory.getInstance();
-
- List<Capability> capabilities = new ArrayList<Capability>();
- List<Requirement> requirements = new ArrayList<Requirement>();
-
- private BundleInfoBuilder()
- {
-
- }
-
- public static BundleInfoBuilder getBuilder()
- {
- return new BundleInfoBuilder();
- }
-
- public BundleInfoBuilder createModule(String name)
- {
- capabilities.add(clmdf.createModule(name));
- return this;
- }
-
- public BundleInfoBuilder createModule(String name, Object version)
- {
- capabilities.add(clmdf.createModule(name, version));
- return this;
- }
-
- public BundleInfoBuilder createRequireModule(String name)
- {
- requirements.add(clmdf.createRequireModule(name, null));
- return this;
- }
-
- public BundleInfoBuilder createRequireModule(String name, VersionRange versionRange)
- {
- requirements.add(clmdf.createRequireModule(name, versionRange));
- return this;
- }
-
- public BundleInfoBuilder createRequireModule(String name, VersionRange versionRange, boolean optional, boolean reExport, boolean dynamic)
- {
- requirements.add(clmdf.createRequireModule(name, versionRange, optional, reExport, dynamic));
- return this;
- }
-
- public BundleInfoBuilder createPackage(String name)
- {
- capabilities.add(clmdf.createPackage(name));
- return this;
- }
-
- public BundleInfoBuilder createPackage(String name, Object version)
- {
- capabilities.add(clmdf.createPackage(name, version));
- return this;
- }
-
- public BundleInfoBuilder createRequirePackage(String name)
- {
- requirements.add(clmdf.createRequirePackage(name));
- return this;
- }
-
- public BundleInfoBuilder createRequirePackage(String name, VersionRange versionRange)
- {
- requirements.add(clmdf.createRequirePackage(name, versionRange));
- return this;
- }
-
- public BundleInfoBuilder createRequirePackage(String name, VersionRange versionRange, boolean optional, boolean reExport, boolean dynamic)
- {
- requirements.add(clmdf.createRequirePackage(name, versionRange, optional, reExport, dynamic));
- return this;
- }
-
- public BundleInfoBuilder createReExportModule(String name)
- {
- requirements.add(clmdf.createReExportModule(name));
- return this;
- }
-
- public BundleInfoBuilder createReExportModule(String name, VersionRange versionRange)
- {
- requirements.add(clmdf.createReExportModule(name, versionRange));
- return this;
- }
-
- public BundleInfoBuilder createReExportModule(String name, VersionRange versionRange, boolean optional)
- {
- requirements.add(clmdf.createReExportModule(name, versionRange, optional));
- return this;
- }
-
- public BundleInfoBuilder createReExportPackage(String name)
- {
- requirements.add(clmdf.createReExportPackage(name));
- return this;
- }
-
- public BundleInfoBuilder createReExportPackage(String name, VersionRange versionRange)
- {
- requirements.add(clmdf.createReExportPackage(name, versionRange));
- return this;
- }
-
- public BundleInfoBuilder createReExportPackage(String name, VersionRange versionRange, boolean optional)
- {
- requirements.add(clmdf.createReExportPackage(name, versionRange, optional));
- return this;
- }
-
- public BundleInfoBuilder createUsesPackage(String name)
- {
- requirements.add(clmdf.createUsesPackage(name));
- return this;
- }
-
- public BundleInfoBuilder createUsesPackage(String name, VersionRange versionRange)
- {
- requirements.add(clmdf.createUsesPackage(name, versionRange));
- return this;
- }
-
- public BundleInfoBuilder createUsesPackage(String name, VersionRange versionRange, boolean reExport)
- {
- requirements.add(clmdf.createUsesPackage(name, versionRange, reExport));
- return this;
- }
-
-
-
- public List<Capability> getCapabilities()
- {
- return capabilities;
- }
-
- public List<Requirement> getRequirements()
- {
- return requirements;
- }
-}
Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CLDeploymentBuilder.java (from rev 94892, projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/BundleInfoBuilder.java)
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CLDeploymentBuilder.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CLDeploymentBuilder.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,392 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.classpool.support;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloading.spi.metadata.Capability;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.metadata.ExportAll;
+import org.jboss.classloading.spi.metadata.Requirement;
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.kernel.plugins.deployment.AbstractKernelDeployment;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision$
+ */
+public class CLDeploymentBuilder
+{
+ private static ClassLoadingMetaDataFactory clmdf = ClassLoadingMetaDataFactory.getInstance();
+
+ List<Capability> capabilities = new ArrayList<Capability>();
+ List<Requirement> requirements = new ArrayList<Requirement>();
+
+ private String name;
+ private URL[] urls;
+ private URL[] excludes;
+ private boolean importAll;
+ private String domainName;
+ private String parentDomainName;
+ private boolean parentFirst;
+ private ClassLoader parent;
+ boolean domainDefined = false;
+ boolean domainCreated = false;
+
+ boolean deploymentCreated = false;
+ private KernelDeployment kernelDeployment = null;
+
+ private VFSClassLoaderFactory metaDataFactory;
+
+ public CLDeploymentBuilder(String name, URL... urls)
+ {
+ this.name = name;
+ this.urls = urls;
+ this.importAll = true;
+ }
+
+ private CLDeploymentBuilder() {
+
+ }
+
+ public static CLDeploymentBuilder getBuilder()
+ {
+ return new CLDeploymentBuilder();
+ }
+
+ public String getName()
+ {
+ return this.name;
+ }
+
+ public void setExcludes(URL... urls)
+ {
+ this.excludes = urls;
+ }
+
+ // TODO automatically call this after a createModule/createanything?
+ public void setImportAll(boolean importAll)
+ {
+ this.importAll = importAll;
+ }
+
+ // TODO set synchronized on all methods
+ public void createDomain(String domain, String parentDomain, boolean parentFirst)
+ {
+ if (DomainRegistry.contains(domain))
+ {
+ throw new IllegalStateException("Domain " + domain + " already exists");
+ }
+ DomainRegistry.registerDomain(domain);
+ domainCreated = true;
+ this.setDomain(domain, parentDomain, parentFirst);
+ }
+
+ public void createDomain(String domain, boolean parentFirst)
+ {
+ this.createDomain(domain, (String) null, parentFirst);
+ }
+
+ public boolean isDomainCreated()
+ {
+ return this.domainCreated;
+ }
+
+ // TODO is parent related to parent domain for real?
+ public void createDomain(String domain, ClassLoader parent, boolean parentFirst)
+ {
+ this.createDomain(domain, (String) null, parentFirst);
+ this.setParent(parent);
+ }
+
+ public void setDomain(String domainName)
+ {
+ setDomain(domainName, null, false);
+ }
+
+ private void setDomain(String domain, String parentDomain, boolean parentFirst)
+ {
+ if (domainDefined)
+ {
+ throw new IllegalStateException("Duplicate definition of domain for CLDeployment " +
+ this.getName());
+ }
+ this.domainName = domain;
+ this.parentDomainName = parentDomain;
+ this.parentFirst = parentFirst;
+ domainDefined = true;
+ }
+
+ public String getDomain()
+ {
+ return this.domainName;
+ }
+
+ public void setParent(ClassLoader parent)
+ {
+ this.parent = parent;
+ }
+
+ public CLDeploymentBuilder createModule(String name)
+ {
+ capabilities.add(clmdf.createModule(name));
+ return this;
+ }
+
+ public CLDeploymentBuilder createModule(String name, Object version)
+ {
+ capabilities.add(clmdf.createModule(name, version));
+ return this;
+ }
+
+ public CLDeploymentBuilder createRequireModule(String name)
+ {
+ requirements.add(clmdf.createRequireModule(name, null));
+ return this;
+ }
+
+ public CLDeploymentBuilder createRequireModule(String name, VersionRange versionRange)
+ {
+ requirements.add(clmdf.createRequireModule(name, versionRange));
+ return this;
+ }
+
+ public CLDeploymentBuilder createRequireModule(String name, VersionRange versionRange, boolean optional, boolean reExport, boolean dynamic)
+ {
+ requirements.add(clmdf.createRequireModule(name, versionRange, optional, reExport, dynamic));
+ return this;
+ }
+
+ public CLDeploymentBuilder createPackage(String name)
+ {
+ capabilities.add(clmdf.createPackage(name));
+ return this;
+ }
+
+ public CLDeploymentBuilder createPackage(String name, Object version)
+ {
+ capabilities.add(clmdf.createPackage(name, version));
+ return this;
+ }
+
+ public CLDeploymentBuilder createRequirePackage(String name)
+ {
+ requirements.add(clmdf.createRequirePackage(name));
+ return this;
+ }
+
+ public CLDeploymentBuilder createRequirePackage(String name, VersionRange versionRange)
+ {
+ requirements.add(clmdf.createRequirePackage(name, versionRange));
+ return this;
+ }
+
+ public CLDeploymentBuilder createRequirePackage(String name, VersionRange versionRange, boolean optional, boolean reExport, boolean dynamic)
+ {
+ requirements.add(clmdf.createRequirePackage(name, versionRange, optional, reExport, dynamic));
+ return this;
+ }
+
+ public CLDeploymentBuilder createReExportModule(String name)
+ {
+ requirements.add(clmdf.createReExportModule(name));
+ return this;
+ }
+
+ public CLDeploymentBuilder createReExportModule(String name, VersionRange versionRange)
+ {
+ requirements.add(clmdf.createReExportModule(name, versionRange));
+ return this;
+ }
+
+ public CLDeploymentBuilder createReExportModule(String name, VersionRange versionRange, boolean optional)
+ {
+ requirements.add(clmdf.createReExportModule(name, versionRange, optional));
+ return this;
+ }
+
+ public CLDeploymentBuilder createReExportPackage(String name)
+ {
+ requirements.add(clmdf.createReExportPackage(name));
+ return this;
+ }
+
+ public CLDeploymentBuilder createReExportPackage(String name, VersionRange versionRange)
+ {
+ requirements.add(clmdf.createReExportPackage(name, versionRange));
+ return this;
+ }
+
+ public CLDeploymentBuilder createReExportPackage(String name, VersionRange versionRange, boolean optional)
+ {
+ requirements.add(clmdf.createReExportPackage(name, versionRange, optional));
+ return this;
+ }
+
+ public CLDeploymentBuilder createUsesPackage(String name)
+ {
+ requirements.add(clmdf.createUsesPackage(name));
+ return this;
+ }
+
+ public CLDeploymentBuilder createUsesPackage(String name, VersionRange versionRange)
+ {
+ requirements.add(clmdf.createUsesPackage(name, versionRange));
+ return this;
+ }
+
+ public CLDeploymentBuilder createUsesPackage(String name, VersionRange versionRange, boolean reExport)
+ {
+ requirements.add(clmdf.createUsesPackage(name, versionRange, reExport));
+ return this;
+ }
+
+ public synchronized KernelDeployment createDeployment()
+ {
+ Assert.assertFalse("Duplicate deployment created", deploymentCreated);
+ if (metaDataFactory == null)
+ {
+ metaDataFactory = createMetaDataFactory();
+ }
+ AbstractKernelDeployment deployment = new AbstractKernelDeployment();
+ deployment.setName(metaDataFactory.getName() + ":" + metaDataFactory.getVersion());
+ deployment.setBeanFactories(Collections.singletonList((BeanMetaDataFactory) metaDataFactory));
+ deploymentCreated = true;
+ this.kernelDeployment = deployment;
+ return deployment;
+ }
+
+ public synchronized KernelDeployment getDeployment()
+ {
+ return this.kernelDeployment;
+ }
+
+ public synchronized KernelDeployment undeploy()
+ {
+ this.deploymentCreated = false;
+ return this.kernelDeployment;
+ }
+
+ public VFSClassLoaderFactory getMetaDataFactory()
+ {
+ Assert.assertNotNull("MetaDataFactory can be retrieved only after deployment creation.",
+ metaDataFactory);
+ return metaDataFactory;
+ }
+
+ private VFSClassLoaderFactory createMetaDataFactory()
+ {
+
+ TestVFSClassLoaderFactory factory = new TestVFSClassLoaderFactory();
+ factory.setName(name);
+ factory.setImportAll(importAll);
+ if (importAll)
+ {
+ factory.setExportAll(ExportAll.NON_EMPTY);
+ }
+ factory.setRoots(urlsToStringList(urls));
+ factory.setExcludedRoots(urlsToStringList(excludes));
+
+ if (capabilities != null && !capabilities.isEmpty())
+ {
+ factory.getCapabilities().setCapabilities(capabilities);
+ }
+ if (requirements != null && !requirements.isEmpty())
+ {
+ factory.getRequirements().setRequirements(requirements);
+ }
+ setupDomain(factory, domainName, parentDomainName, parentFirst);
+ if (parent != null)
+ {
+ factory.setParent(parent);
+ }
+ return factory;
+ }
+
+
+ public ClassLoader getParent()
+ {
+ return this.parent;
+ }
+
+ private static void setupDomain(ClassLoadingMetaData md, String domainName, String parentDomainName, boolean parentFirst)
+ {
+ if (domainName != null)
+ {
+ md.setDomain(domainName);
+ md.setJ2seClassLoadingCompliance(parentFirst);
+ if (parentDomainName != null)
+ {
+ md.setParentDomain(parentDomainName);
+ }
+ else
+ {
+ md.setParentDomain(ClassLoaderSystem.DEFAULT_DOMAIN_NAME);
+ }
+ }
+ else
+ {
+ md.setDomain(ClassLoaderSystem.DEFAULT_DOMAIN_NAME);
+ }
+ }
+
+ public List<Capability> getCapabilities()
+ {
+ return capabilities;
+ }
+
+ public List<Requirement> getRequirements()
+ {
+ return requirements;
+ }
+
+ private static List<String> urlsToStringList(URL... urls)
+ {
+ if (urls == null)
+ {
+ return null;
+ }
+ List<String> urlList = new ArrayList<String>(urls.length);
+ if (urls.length > 0)
+ {
+ for (URL url : urls)
+ {
+ if (url != null)
+ {
+ urlList.add(url.toString());
+ }
+ }
+ }
+ return urlList;
+ }
+}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CapabilityInfo.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CapabilityInfo.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/CapabilityInfo.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,42 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.support;
-
-/**
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class CapabilityInfo extends ModuleOrPackageInfo
-{
- public CapabilityInfo(String name, Object version)
- {
- // FIXME ModuleCapabilityInfo constructor
- super(name, version);
- }
-
- public CapabilityInfo(String name)
- {
- // FIXME ModuleCapabilityInfo constructor
- super(name);
- }
-}
Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassPoolTestScenario.java (from rev 97064, 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/support/ClassPoolTestScenario.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ClassPoolTestScenario.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,196 @@
+/*
+ * 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.support;
+
+import java.net.URL;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.NotFoundException;
+import junit.framework.Assert;
+
+import org.jboss.classpool.spi.ClassPoolRepository;
+import org.jboss.test.classpool.support.MicrocontainerFacade;
+
+/**
+ * This scenario is used by class pool test cases. All the operations performed using this
+ * scenario are executed over CtClasses and ClassPools.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class ClassPoolTestScenario extends TestScenario<CtClass, ClassPool>
+{
+ /** The ClassPool repository */
+ protected ClassPoolRepository repository;
+
+
+ public ClassPoolTestScenario(MicrocontainerFacade microcontainer)
+ {
+ super(microcontainer);
+ repository = (ClassPoolRepository) microcontainer.getBean("ClassPoolRepository");
+ }
+
+ @Override
+ public ClassPool getLoader(CtClass clazz)
+ {
+ return assertRegisterClassLoader(clazz.getClassPool().getClassLoader());
+ }
+
+ @Override
+ public ClassPool getLoader(ClassLoader classLoader)
+ {
+ return assertRegisterClassLoader(classLoader);
+ }
+
+ @Override
+ public ClassLoader getClassLoader(ClassPool classPool)
+ {
+ return classPool.getClassLoader();
+ }
+
+ @Override
+ public CtClass loadClass(ClassPool classPool, ClassPool expectedClassPool, String className)
+ throws Exception
+ {
+ Class<?> clazz = assertLoadClass(className, classPool.getClassLoader(), expectedClassPool.getClassLoader());
+ CtClass ctClass = 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;
+ }
+
+ @Override
+ public void cannotLoadClass(ClassPool classPool, String className)
+ {
+ try
+ {
+ classPool.getCtClass(className);
+ Assert.fail("Should not have been able to load " + className);
+ }
+ catch(NotFoundException expected){}
+ }
+
+ @Override
+ public CtClass getMethodReturnType(CtClass clazz, String methodName) throws Exception
+ {
+ return clazz.getDeclaredMethod(methodName).getReturnType();
+ }
+
+ /********* HELPER METHODS ***************************************************************/
+
+ private ClassPool assertRegisterClassLoader(ClassLoader loader)
+ {
+ ClassPool classPool = repository.registerClassLoader(loader);
+ Assert.assertNotNull(classPool);
+ assertBootstrap(classPool, String.class, Class.class, ClassLoader.class, Object.class,
+ Collection.class, List.class, Map.class, URL.class);
+ return classPool;
+ }
+
+ private void assertBootstrap(ClassPool classPool, Class<?>... classes)
+ {
+ assertSameClassPool(null, classPool, int.class, boolean.class, byte.class, short.class,
+ long.class, float.class, double.class, char.class, void.class);
+ assertSameClassPool(ClassPool.getDefault(), classPool, classes);
+
+ }
+
+ private void assertSameClassPool(ClassPool expectedClassPool, ClassPool classPool,
+ Class<?>... classes)
+ {
+ for (Class<?> clazz: classes)
+ {
+ CtClass ctClass = null;
+ try
+ {
+ ctClass = classPool.getCtClass(clazz.getName());
+ } catch (NotFoundException e)
+ {
+ e.printStackTrace();
+ Assert.fail(e.getMessage());
+ }
+ Assert.assertSame("Class " + clazz.getName() + " loaded by unexpected class pool ",
+ expectedClassPool, ctClass.getClassPool());
+ }
+ }
+
+ protected CtClass assertLoadCtClass(String name, ClassPool initiating, ClassPool expected) throws Exception
+ {
+ CtClass clazz = initiating.get(name);
+ if (expected != null)
+ {
+ Assert.assertSame(expected, clazz.getClassPool());
+ }
+ //Load twice to test both create and cache
+ clazz = initiating.get(name);
+ if (expected != null)
+ {
+ Assert.assertSame(expected, clazz.getClassPool());
+ }
+
+ assertLoadCtClassArray(name, clazz, initiating, expected);
+
+ return clazz;
+ }
+
+ private void assertLoadCtClassArray(String name, CtClass clazz, ClassPool initiating, ClassPool expected) throws Exception
+ {
+ assertLoadCtClassArray(name, clazz, 1, initiating, expected);
+ assertLoadCtClassArray(name, clazz, 2, initiating, expected);
+ }
+
+ private void assertLoadCtClassArray(String name, CtClass clazz, int dimensions, ClassPool initiating, ClassPool expected) throws Exception
+ {
+ String arrayName = name;
+ for (int i = 0 ; i < dimensions ; i++)
+ {
+ arrayName = arrayName + "[]";
+ }
+ CtClass array = initiating.get(arrayName);
+
+ if (expected != null)
+ {
+ Assert.assertSame(expected, array.getClassPool());
+ }
+
+ Assert.assertSame(clazz.getClassPool(), array.getClassPool());
+
+ CtClass type = array;
+ for (int i = 0 ; i < dimensions ; i++)
+ {
+ type = type.getComponentType();
+ }
+ Assert.assertSame(type, clazz);
+ }
+
+ @Override
+ protected void destroy(ClassLoader classLoader)
+ {
+ repository.unregisterClassLoader(classLoader);
+ super.destroy(classLoader);
+ }
+}
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/DomainRegistry.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/DomainRegistry.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/DomainRegistry.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,64 @@
+/*
+ * 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.support;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+
+/**
+ * All domains to be cleaned up should be registered here.
+ * This registry is automatically populated by
+ * {@link TestScenario#createLoader(CLDeploymentBuilder)}.
+ * However, if a test creates a domain manually, the domain must be registered here for
+ * proper clean up.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class DomainRegistry
+{
+ private static final Map<String, ClassLoaderDomain> domains = new HashMap<String, ClassLoaderDomain>();
+
+ public static synchronized boolean contains(String domainName)
+ {
+ return domains.containsKey(domainName);
+ }
+
+ public static synchronized void registerDomain(String domain)
+ {
+ domains.put(domain, null);
+ }
+
+ public static synchronized void registerDomain(ClassLoaderDomain domain)
+ {
+ domains.put(domain.getName(), domain);
+ }
+
+ public static synchronized Map<String, ClassLoaderDomain> clear()
+ {
+ Map<String, ClassLoaderDomain> registeredDomains = new HashMap<String, ClassLoaderDomain>(domains);
+ domains.clear();
+ return registeredDomains;
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/DomainRegistry.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/support/LoaderRegistry.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/LoaderRegistry.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/LoaderRegistry.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,153 @@
+/*
+ * 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.support;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+import junit.framework.Assert;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.base.BaseClassLoader;
+import org.jboss.classloading.spi.dependency.Module;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.classpool.plugins.as5.VFSClassLoaderDomainRegistry;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.logging.Logger;
+import org.jboss.test.AbstractTestCase;
+
+/**
+ * Registry used by TestScenario to keep track of created class loaders and to perform
+ * proper cleanup.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ * @version $Revision$
+ */
+class LoaderRegistry
+{
+ /** The classloader helper */
+ protected ClassLoaderSystem system;
+
+ /** The domain registry */
+ protected VFSClassLoaderDomainRegistry domainRegistry;
+
+ /** The microcontainer facade */
+ private MicrocontainerFacade microcontainer;
+
+ /**
+ * Contains the same domains contained in domainRegistry. The difference is that
+ * this map is cleaned up later than domainRegistry.
+ */
+ private Map<ClassLoader, ClassLoaderDomain> scopedChildDomainsByLoader = new WeakHashMap<ClassLoader, ClassLoaderDomain>();
+
+ /** List of classLoaders */
+ private Map<String, ClassLoader> classLoaders = new HashMap<String, ClassLoader>();
+
+ /** Deployments */
+ private Map<String, KernelDeployment> deploymentsByName = new HashMap<String, KernelDeployment>();
+
+
+ public LoaderRegistry(MicrocontainerFacade microcontainer)
+ {
+ this.microcontainer = microcontainer;
+ this.system = (ClassLoaderSystem) microcontainer.getBean("ClassLoaderSystem");
+ this.domainRegistry = (VFSClassLoaderDomainRegistry) microcontainer.getBean(
+ "ClassLoaderScopingPolicy");
+ }
+
+ public void registerDeployment(CLDeploymentBuilder clDeploymentBuilder)
+ {
+ KernelDeployment deployment = clDeploymentBuilder.getDeployment();
+ VFSClassLoaderFactory factory = clDeploymentBuilder.getMetaDataFactory();
+ deploymentsByName.put(factory.getContextName() + "$MODULE", deployment);
+ String domainName = factory.getDomain();
+ if (clDeploymentBuilder.isDomainCreated())
+ {
+ ClassLoaderDomain domain = system.getDomain(domainName);
+ if (domain != null)
+ {
+ Logger.getLogger(AbstractTestCase.class).debug("Registering domain " + domain);
+ DomainRegistry.registerDomain(domain);
+ if (factory.getParentDomain() == null ||
+ factory.getParentDomain().equals(ClassLoaderSystem.DEFAULT_DOMAIN_NAME))
+ {
+ Assert.assertNull(domain.getParentDomain());
+ }
+ else
+ {
+ Assert.assertNotNull(domain.getParentDomainName());
+ Assert.assertEquals(factory.getParentDomain(), domain.getParentDomainName());
+ }
+ }
+ }
+ }
+
+ public void registerClassLoader(ClassLoader classLoader, CLDeploymentBuilder clDeploymentBuilder)
+ {
+ VFSClassLoaderFactory factory = clDeploymentBuilder.getMetaDataFactory();
+ String name = factory.getContextName() + "$MODULE";
+ Module module = microcontainer.assertBean(name, Module.class);
+ domainRegistry.initMapsForModule(module);
+ scopedChildDomainsByLoader.put(classLoader, system.getDomain(factory.getDomain()));
+ classLoaders.put(name, classLoader);
+ }
+
+ public synchronized void unregisterDeployment(CLDeploymentBuilder clDeploymentBuilder) throws Exception
+ {
+ String contextName = clDeploymentBuilder.getMetaDataFactory().getContextName();
+ String name = contextName + "$MODULE";
+ ClassLoader classLoader = (ClassLoader) microcontainer.getBean(contextName);
+ deploymentsByName.remove(name);
+ scopedChildDomainsByLoader.remove(classLoader);
+ classLoaders.remove(name);
+ if (clDeploymentBuilder.isDomainCreated())
+ {
+ ClassLoaderDomain domain = scopedChildDomainsByLoader.get(classLoader);
+ DomainRegistry.registerDomain(domain.getName());
+ system.unregisterDomain(domain);
+ }
+ }
+
+ public KernelDeployment unregisterDeployment(ClassLoader classLoader)
+ {
+ String name = ((BaseClassLoader) classLoader).getName();
+ classLoaders.remove(name);
+ return deploymentsByName.remove(name);
+ }
+
+ public Collection<ClassLoader> getClassLoaders()
+ {
+ return new ArrayList<ClassLoader>(classLoaders.values());
+ }
+
+ public ClassLoaderDomain getDomainForClassLoader(ClassLoader loader)
+ {
+ //(scopedChildDomainsByLoader.get(loader) != domainRegistry.getClassLoaderDomainForLoader(loader))
+ // this statement is true only when the module has already been cleaned up from domainRegistry
+ // that's why we need another collection here
+ return scopedChildDomainsByLoader.get(loader);
+ }
+}
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/LoaderRegistry.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ModuleOrPackageInfo.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ModuleOrPackageInfo.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/ModuleOrPackageInfo.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,55 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.support;
-
-/**
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public abstract class ModuleOrPackageInfo
-{
- private String name;
-
- private Object version;
-
- public ModuleOrPackageInfo(String name, Object version)
- {
- this.name = name;
- this.version = version;
- }
-
- public ModuleOrPackageInfo(String name)
- {
- this(name, null);
- }
-
- public String getName()
- {
- return name;
- }
-
- public Object getVersion()
- {
- return version;
- }
-}
Added: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoSuchClassLoaderException.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoSuchClassLoaderException.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoSuchClassLoaderException.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,38 @@
+/*
+ * 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.support;
+
+/**
+ * Indicates that a class loader is not completely deployed.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class NoSuchClassLoaderException extends Exception
+{
+ private static final long serialVersionUID = 1873358454130997423L;
+
+ public NoSuchClassLoaderException(Exception e)
+ {
+ super(e);
+ }
+}
\ No newline at end of file
Property changes on: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/NoSuchClassLoaderException.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/RequirementInfo.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/RequirementInfo.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/RequirementInfo.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,75 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.support;
-
-import org.jboss.classloading.spi.version.VersionRange;
-
-/**
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class RequirementInfo extends ModuleOrPackageInfo
-{
- boolean optional;
- boolean reExport;
- boolean dynamic;
-
- public RequirementInfo(String name, VersionRange range)
- {
- super(name, range);
- }
-
- public RequirementInfo(String name)
- {
- super(name);
- }
-
- public RequirementInfo(String name, VersionRange range, boolean optional, boolean reExport, boolean dynamic)
- {
- super(name, range);
- this.optional = optional;
- this.reExport = reExport;
- this.dynamic = dynamic;
- }
-
- @Override
- public VersionRange getVersion()
- {
- return (VersionRange)super.getVersion();
- }
-
- public boolean isOptional()
- {
- return optional;
- }
-
- public boolean isReExport()
- {
- return reExport;
- }
-
- public boolean isDynamic()
- {
- return dynamic;
- }
-}
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/Result.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/Result.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/Result.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,42 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.support;
-
-/**
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class Result
-{
- private TestVFSClassLoaderFactory factory;
-
- public TestVFSClassLoaderFactory getFactory()
- {
- return factory;
- }
-
- public void setFactory(TestVFSClassLoaderFactory factory)
- {
- this.factory = factory;
- }
-}
Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SanityTestScenario.java (from rev 97064, 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/support/SanityTestScenario.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SanityTestScenario.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,83 @@
+/*
+ * 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.support;
+
+import junit.framework.Assert;
+
+import org.jboss.test.classpool.support.MicrocontainerFacade;
+
+/**
+ * This scenario is used by sanity tests, i.e., tests that check whether the class loaders
+ * represented by class pools actually behave as expected.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ */
+public class SanityTestScenario extends TestScenario<Class<?>, ClassLoader>
+{
+
+ public SanityTestScenario(MicrocontainerFacade microcontainer)
+ {
+ super(microcontainer);
+ }
+
+ @Override
+ public ClassLoader getLoader(Class<?> clazz)
+ {
+ return clazz.getClassLoader();
+ }
+
+ @Override
+ public ClassLoader getLoader(ClassLoader classLoader)
+ {
+ return classLoader;
+ }
+
+ @Override
+ public ClassLoader getClassLoader(ClassLoader loader)
+ {
+ return loader;
+ }
+
+ @Override
+ public Class<?> loadClass(ClassLoader loader, ClassLoader expected, String className) throws Exception
+ {
+ return assertLoadClass(className, loader, expected);
+ }
+
+ @Override
+ public void cannotLoadClass(ClassLoader classLoader, String className)
+ {
+ try
+ {
+ classLoader.loadClass(className);
+ Assert.fail("Should not have been able to load " + className);
+ }
+ catch(ClassNotFoundException expected){}
+ }
+
+ @Override
+ public Class<?> getMethodReturnType(Class<?> clazz, String methodName) throws Exception
+ {
+ return clazz.getDeclaredMethod(methodName).getReturnType();
+ }
+}
\ No newline at end of file
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-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/SupportClasses.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -100,5 +100,12 @@
public final static String CLASS_CRM = PACKAGE_CRM + ".CrmFacade";
public final static String CLASS_TIF = PACKAGE_TIF + ".TIFTester";
+ private static final String[] SUPPORT_CLASSES = new String[]{CLASS_A, CLASS_B, CLASS_C,
+ CLASS_D, CLASS_PLAIN, CLASS_MBEAN, CLASS_SLS_BEAN, CLASS_SLS_INTERFACE, CLASS_SERVLET,
+ CLASS_JSF, CLASS_UTIL, CLASS_EXT, CLASS_UI, CLASS_CRM, CLASS_TIF};
+ public static final String[] getAllSupportClasses()
+ {
+ return SUPPORT_CLASSES;
+ }
}
\ No newline at end of file
Copied: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java (from rev 97064, 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/support/TestScenario.java (rev 0)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestScenario.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -0,0 +1,336 @@
+/*
+ * 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.support;
+
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.base.BaseClassLoader;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.classpool.plugins.as5.VFSClassLoaderDomainRegistry;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.logging.Logger;
+import org.jboss.test.AbstractTestCase;
+
+/**
+ * Abstracts the concept of loader (L) and classes (C).
+ * This class allows the implementation of tests that don't rely on the actual type of
+ * L and C.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @version $Revision$
+ * @see SanityTestScenario
+ * @see ClassPoolTestScenario
+ */
+
+public abstract class TestScenario<C,L>
+{
+ /** The classloader helper */
+ protected ClassLoaderSystem system;
+ /** The domain registry */
+ protected VFSClassLoaderDomainRegistry domainRegistry;
+ /** The Microcontanier Facade */
+ private MicrocontainerFacade microcontainer;
+ /** The loader registry */
+ private LoaderRegistry loaderRegistry;
+
+ /**
+ * Constructor.
+ *
+ * @param mc used by this test to perform deploy/undeploy operations
+ */
+ public TestScenario(MicrocontainerFacade mc)
+ {
+ this.microcontainer = mc;
+ this.system = (ClassLoaderSystem) mc.getBean("ClassLoaderSystem");
+ domainRegistry = (VFSClassLoaderDomainRegistry) mc.getBean("ClassLoaderScopingPolicy");
+ this.loaderRegistry = new LoaderRegistry(mc);
+ }
+
+ /**
+ * Creates a loader.
+ *
+ * @param classLoaderBuilder the class loader deployment builder that contains all
+ * the info necessary for the creation of a loader
+ * @return the created loader
+ * @throws NoSuchClassLoaderException indicates that the deployment is not sucessfull. The
+ * class loader is not created at this moment
+ * @throws Exception any erros that should not be treated
+ */
+ public L createLoader(CLDeploymentBuilder classLoaderBuilder) throws NoSuchClassLoaderException, Exception
+ {
+ KernelDeployment deployment = classLoaderBuilder.createDeployment();
+ microcontainer.deploy(deployment);
+ VFSClassLoaderFactory factory = classLoaderBuilder.getMetaDataFactory();
+ factory.setContextName(getContextName(factory));
+ loaderRegistry.registerDeployment(classLoaderBuilder);
+ ClassLoader classLoader = getClassLoader(classLoaderBuilder);
+ return getLoader(classLoader);
+ }
+
+ /**
+ * Destroys the loader corresponding to classLoaderBuilder.
+ * This method can be invoked only after the loader has been
+ * {@link #createLoader(CLDeploymentBuilder) created}.
+ *
+ * @param classLoaderBuilder contains information regarding the loader to be
+ * destroyed.
+ * @throws Exception
+ * @see #createLoader(CLDeploymentBuilder)
+ */
+ public void destroyLoader(CLDeploymentBuilder classLoaderBuilder) throws Exception
+ {
+ loaderRegistry.unregisterDeployment(classLoaderBuilder);
+ microcontainer.undeploy(classLoaderBuilder.undeploy());
+ cannotGetLoader(classLoaderBuilder);
+ }
+
+ /**
+ * Destroy all loaders that have been created so far (except for loaders that have already
+ * been {@link #destroyLoader(CLDeploymentBuilder) destroyed}).
+ */
+ public void destroyLoaders()
+ {
+ destroyClassLoaders();
+ unregisterDomains();
+ assertCannotLoaderSupportClasses();
+ }
+
+ /**
+ * Returns the loader corresponding to {@code classLoaderBuilder}. This method can be
+ * invoked only after {@code #createLoader(CLDeploymentBuilder)}.
+ *
+ * @param classLoaderBuilder contains all the info related to the loader to be retrieved
+ * @return the loader equivalent to {@code classLoaderBuilder}
+ * @throws Exception
+ * @see {@link #createLoader(CLDeploymentBuilder)}
+ */
+ public L getLoader(CLDeploymentBuilder classLoaderBuilder) throws Exception
+ {
+ ClassLoader classLoader = getClassLoader(classLoaderBuilder);
+ return getLoader(classLoader);
+ }
+
+ /**
+ * Checks that this the loader corresponding to {@code classLoaderBuilder} is no longer
+ * available on the test scenario.
+ *
+ * @param classLoaderBuilder identifies the loader that is going to be verified
+ * @throws Exception
+ */
+ public void cannotGetLoader(CLDeploymentBuilder classLoaderBuilder) throws Exception
+ {
+ String name = getContextName(classLoaderBuilder.getMetaDataFactory());
+ try
+ {
+ Object bean = microcontainer.getBean(name, null);
+ if (bean != null)
+ Assert.fail("Should not be here: " + bean);
+ }
+ catch (Throwable t)
+ {
+ AbstractTestCase.checkThrowable(IllegalStateException.class, t);
+ }
+ }
+
+ /**
+ * Returns the loader that loaded {@code clazz}.
+ *
+ * @param clazz a class that has been previously loaded
+ * @return the loader that loaded {@code clazz}
+ */
+ public abstract L getLoader(C clazz);
+
+ /**
+ * Returns the loader corresponding to {@code classLoader}.
+ *
+ * @param classLoader a class loader
+ * @return the loader that represents {code classLoader}
+ */
+ public abstract L getLoader(ClassLoader classLoader);
+
+ /**
+ * Returns the class loader corresponding to {@code loader}.
+ *
+ * @param loader a loader
+ * @return the class loader that is represented by loader
+ */
+ public abstract ClassLoader getClassLoader(L loader);
+
+ /**
+ * Checks that {@code loader} can load {@code className} and returns the loaded class.
+ * Also verifies that the loader associated with the loaded class is {@code loader}.
+ *
+ * @param loader a loader
+ * @param className the name of the class to be loaded
+ * @return the class loaded by {@code loader}
+ * @throws Exception
+ */
+ public C loadClass(L loader, String className) throws Exception
+ {
+ return loadClass(loader, loader, className);
+ }
+
+ /**
+ * Checks that {@code loader} can load {@code className} and returns the loaded class.
+ * Also verifies that the loader associated with the loaded class is {@code expected}.
+ *
+ * @param initiating the loader that will be used for loading {@code className}
+ * @param expected the actual loader that is associated with the loaded class
+ * @param className the name of the class to be loaded
+ * @return the loaded class
+ * @throws Exception
+ */
+ public abstract C loadClass(L initiating, L expected, String className) throws Exception;
+
+ /**
+ * Checks that {@code loader} cannot load class {@code className}.
+ *
+ * @param loader a loader
+ * @param className the name of the class that can't be loaded by {@code loader}
+ */
+ public abstract void cannotLoadClass(L loader, String className);
+
+ /**
+ * Returns the return type of a method declared in {@code clazz}.
+ *
+ * @param clazz the class that contains the method
+ * @param methodName the name of the method
+ * @return the return type of the method
+ * @throws Exception
+ */
+ public abstract C getMethodReturnType(C clazz, String methodName) throws Exception;
+
+
+
+ /************* HELPER METHODS **********************************************************/
+
+ protected ClassLoader getClassLoader(CLDeploymentBuilder classLoaderBuilder)
+ throws Exception
+ {
+ VFSClassLoaderFactory factory = classLoaderBuilder.getMetaDataFactory();
+ try
+ {
+ Object obj = microcontainer.getBean(factory.getContextName());
+ Assert.assertTrue(obj instanceof ClassLoader);
+ ClassLoader classLoader = (ClassLoader) obj;
+ loaderRegistry.registerClassLoader(classLoader, classLoaderBuilder);
+ return classLoader;
+ }
+ catch (IllegalStateException e)
+ {
+ throw new NoSuchClassLoaderException(e);
+ }
+ }
+
+ private void assertCannotLoaderSupportClasses()
+ {
+ ClassLoaderDomain domain = system.getDefaultDomain();
+ for (String className: SupportClasses.getAllSupportClasses())
+ {
+ try
+ {
+ Class<?> clazz = domain.loadClass(className);
+ if (clazz == null)
+ {
+ continue;
+ }
+ Assert.fail("Should not have been able to load " + className);
+ }
+ catch(Exception expected)
+ {
+ }
+ }
+ }
+
+ private void unregisterDomains()
+ {
+ for(Map.Entry<String, ClassLoaderDomain> entry: DomainRegistry.clear().entrySet())
+ {
+ ClassLoaderDomain domain = entry.getValue();
+ if (domain != null)
+ {
+ Logger.getLogger(AbstractTestCase.class).debug("Unregistering domain " + domain);
+ ClassLoaderDomain registeredDomain = system.getDomain(domain.getName());
+ if (registeredDomain == null)
+ throw new IllegalStateException("Domain is not registered: " + domain.getName());
+ if (registeredDomain != domain)
+ throw new IllegalStateException(domain + " is not the same as " + registeredDomain);
+ }
+ else
+ {
+ domain = system.getDomain(entry.getKey());
+ if (domain == null)
+ {
+ continue;
+ }
+ }
+ system.unregisterDomain(domain);
+ }
+ }
+
+ private void destroyClassLoaders()
+ {
+ for (ClassLoader classLoader: loaderRegistry.getClassLoaders())
+ {
+ destroy(classLoader);
+ try
+ {
+ Object bean = microcontainer.getBean(((BaseClassLoader) classLoader).getName(), null);
+ if (bean != null)
+ Assert.fail("Should not be here: " + bean);
+ }
+ catch (Throwable t)
+ {
+ AbstractTestCase.checkThrowable(IllegalStateException.class, t);
+ }
+ }
+ }
+
+
+ protected Class<?> assertLoadClass(String className, ClassLoader initiating, ClassLoader expected) throws Exception
+ {
+ Class<?> clazz = initiating.loadClass(className);
+ if (expected != null)
+ {
+ Assert.assertSame(expected, clazz.getClassLoader());
+ }
+ return clazz;
+ }
+
+ protected void destroy(ClassLoader classLoader)
+ {
+ KernelDeployment deployment = loaderRegistry.unregisterDeployment(classLoader);
+ microcontainer.undeploy(deployment);
+ }
+
+ private String getContextName(VFSClassLoaderFactory factory)
+ {
+ String contextName = factory.getContextName();
+ if (contextName == null)
+ contextName = factory.getName() + ":" + factory.getVersion();
+ return contextName;
+ }
+}
\ No newline at end of file
Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactory.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactory.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,24 +1,24 @@
/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
package org.jboss.test.classpool.support;
import java.util.Arrays;
@@ -31,11 +31,13 @@
import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
/**
+ * VFSClassLoaderFactory used by the tests
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
* @version $Revision$
*/
-public class TestVFSClassLoaderFactory extends VFSClassLoaderFactory
+class TestVFSClassLoaderFactory extends VFSClassLoaderFactory
{
private static final long serialVersionUID = 1L;
@@ -123,4 +125,4 @@
}
return result;
}
-}
+}
\ No newline at end of file
Deleted: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactoryFactory.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactoryFactory.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderFactoryFactory.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -1,175 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.test.classpool.support;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jboss.classloader.spi.ClassLoaderSystem;
-import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
-import org.jboss.classloading.spi.metadata.ExportAll;
-
-/**
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class TestVFSClassLoaderFactoryFactory
-{
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, URL... urls)
- {
- return createClassLoaderFactory(name, importAll, null, false, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, URL[] excludes, URL... urls)
- {
- return createClassLoaderFactory(name, importAll, null, false, excludes, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, BundleInfoBuilder builder, URL... urls) throws Exception
- {
- return createClassLoaderFactory(name, importAll, null, null, builder, false, null, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, BundleInfoBuilder builder, URL[] excludes, URL... urls) throws Exception
- {
- return createClassLoaderFactory(name, importAll, null, null, builder, false, excludes, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, String domainName, BundleInfoBuilder builder, boolean parentFirst, URL... urls) throws Exception
- {
- return createClassLoaderFactory(name, domainName, null, builder, parentFirst, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, String domainName, BundleInfoBuilder builder, boolean parentFirst, URL[] excludes, URL... urls) throws Exception
- {
- return createClassLoaderFactory(name, domainName, null, builder, parentFirst, excludes, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, String domainName, String parentDomainName, BundleInfoBuilder builder, boolean parentFirst, URL... urls) throws Exception
- {
- return createClassLoaderFactory(name, false, domainName, parentDomainName, builder, false, null, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, String domainName, String parentDomainName, BundleInfoBuilder builder, boolean parentFirst, URL[] excludes, URL... urls) throws Exception
- {
- return createClassLoaderFactory(name, false, domainName, parentDomainName, builder, false, excludes, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String moduleName, URL... urls) throws Exception
- {
- return createClassLoaderFactory(name, importAll, null, false, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String moduleName, URL[] excludes, URL... urls) throws Exception
- {
- return createClassLoaderFactory(name, importAll, null, false, excludes, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String domainName, boolean parentFirst, URL... urls)
- {
- return createClassLoaderFactory(name, importAll, domainName, null, parentFirst, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String domainName, boolean parentFirst, URL[] excludes, URL... urls)
- {
- return createClassLoaderFactory(name, importAll, domainName, null, parentFirst, excludes, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String domainName, String parentDomainName, boolean parentFirst, URL... urls)
- {
- return createClassLoaderFactory(name, importAll, domainName, parentDomainName, null, parentFirst, null, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String domainName, String parentDomainName, boolean parentFirst, URL[] excludes, URL... urls)
- {
- return createClassLoaderFactory(name, importAll, domainName, parentDomainName, null, parentFirst, excludes, urls);
- }
-
- public static TestVFSClassLoaderFactory createClassLoaderFactory(String name, boolean importAll, String domainName, String parentDomainName, BundleInfoBuilder builder, boolean parentFirst, URL[] excludes, URL... urls)
- {
- TestVFSClassLoaderFactory factory = new TestVFSClassLoaderFactory();
- factory.setName(name);
- factory.setImportAll(importAll);
- if (importAll)
- {
- factory.setExportAll(ExportAll.NON_EMPTY);
- }
- factory.setRoots(urlsToStringList(urls));
- factory.setExcludedRoots(urlsToStringList(excludes));
- addCapabilitiesAndRequirements(factory, builder);
- setupDomain(factory, domainName, parentDomainName, parentFirst);
- return factory;
- }
-
- private static void addCapabilitiesAndRequirements(ClassLoadingMetaData md, BundleInfoBuilder builder)
- {
- if (builder != null)
- {
- md.getCapabilities().setCapabilities(builder.getCapabilities());
- md.getRequirements().setRequirements(builder.getRequirements());
- }
- }
-
- private static void setupDomain(ClassLoadingMetaData md, String domainName, String parentDomainName, boolean parentFirst)
- {
- if (domainName != null)
- {
- md.setDomain(domainName);
- md.setJ2seClassLoadingCompliance(parentFirst);
- if (parentDomainName != null)
- {
- md.setParentDomain(parentDomainName);
- }
- else
- {
- md.setParentDomain(ClassLoaderSystem.DEFAULT_DOMAIN_NAME);
- }
- }
- else
- {
- md.setDomain(ClassLoaderSystem.DEFAULT_DOMAIN_NAME);
- }
- }
-
- private static List<String> urlsToStringList(URL... urls)
- {
- if (urls == null)
- {
- return null;
- }
- List<String> urlList = new ArrayList<String>(urls.length);
- if (urls.length > 0)
- {
- for (URL url : urls)
- {
- if (url != null)
- {
- urlList.add(url.toString());
- }
- }
- }
- return urlList;
- }
-
-}
Modified: projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java 2009-11-30 21:25:05 UTC (rev 97185)
+++ projects/jboss-classpool/trunk/src/test/java/org/jboss/test/classpool/support/TestVFSClassLoaderPolicyModule.java 2009-11-30 21:37:56 UTC (rev 97186)
@@ -38,8 +38,10 @@
import org.jboss.virtual.VirtualFile;
/**
+ * VFSClassLoaderPolicyModule used by tests.
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
* @version $Revision$
*/
public class TestVFSClassLoaderPolicyModule extends VFSClassLoaderPolicyModule
More information about the jboss-cvs-commits
mailing list