[jboss-cvs] JBossAS SVN: r79135 - in projects/jboss-deployers/trunk: deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/classloader and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Oct 6 05:55:52 EDT 2008
Author: alesj
Date: 2008-10-06 05:55:51 -0400 (Mon, 06 Oct 2008)
New Revision: 79135
Added:
projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/RequirementsIntegrationUnitTestCase.java
Modified:
projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/AbstractDeployerTest.java
projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/classloader/RequirementIntegrationDeployer.java
projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/ClassLoaderTestSuite.java
projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/VFSClassLoaderDependenciesTest.java
Log:
Add requirement integration tests.
Modified: projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/AbstractDeployerTest.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/AbstractDeployerTest.java 2008-10-06 09:46:01 UTC (rev 79134)
+++ projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/AbstractDeployerTest.java 2008-10-06 09:55:51 UTC (rev 79135)
@@ -25,6 +25,8 @@
import org.jboss.dependency.plugins.AbstractController;
import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
import org.jboss.deployers.client.plugins.deployment.AbstractDeployment;
import org.jboss.deployers.client.spi.DeployerClient;
import org.jboss.deployers.client.spi.Deployment;
@@ -36,6 +38,7 @@
import org.jboss.deployers.spi.attachments.PredeterminedManagedObjectAttachments;
import org.jboss.deployers.spi.deployer.Deployer;
import org.jboss.deployers.spi.deployer.Deployers;
+import org.jboss.deployers.spi.deployer.DeploymentStage;
import org.jboss.deployers.spi.deployer.managed.ManagedDeploymentCreator;
import org.jboss.deployers.spi.structure.ContextInfo;
import org.jboss.deployers.structure.spi.DeploymentContext;
@@ -208,6 +211,20 @@
return factory.addContext(parent, name);
}
+ /**
+ * This stage check is impl detail.
+ *
+ * @param unit the deployment unit
+ * @param stage expected deployment stage
+ */
+ protected void assertDeploymentStage(DeploymentUnit unit, DeploymentStage stage)
+ {
+ ControllerContext context = unit.getAttachment(ControllerContext.class);
+ assertNotNull("Expecting controller context attachment: " + unit, context);
+ ControllerState state = new ControllerState(stage.getName());
+ assertEquals(state, context.getState());
+ }
+
@Override
protected void configureLogging()
{
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/classloader/RequirementIntegrationDeployer.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/classloader/RequirementIntegrationDeployer.java 2008-10-06 09:46:01 UTC (rev 79134)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/classloader/RequirementIntegrationDeployer.java 2008-10-06 09:55:51 UTC (rev 79135)
@@ -79,7 +79,7 @@
*/
public void setIntegrationModuleName(String integrationModuleName)
{
- if (integrationModuleName == null)
+ if (integrationModuleNames == null)
this.integrationModuleNames = Collections.singleton(integrationModuleName);
else
this.integrationModuleNames.add(integrationModuleName);
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/ClassLoaderTestSuite.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/ClassLoaderTestSuite.java 2008-10-06 09:46:01 UTC (rev 79134)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/ClassLoaderTestSuite.java 2008-10-06 09:55:51 UTC (rev 79135)
@@ -34,6 +34,7 @@
import org.jboss.test.deployers.vfs.classloader.test.VFSClassLoaderDependenciesUnitTestCase;
import org.jboss.test.deployers.vfs.classloader.test.VFSUndeployOrderClassLoaderUnitTestCase;
import org.jboss.test.deployers.vfs.classloader.test.IntegrationDeployerUnitTestCase;
+import org.jboss.test.deployers.vfs.classloader.test.RequirementsIntegrationUnitTestCase;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -69,6 +70,7 @@
suite.addTest(NotVFSClassLoaderUnitTestCase.suite());
suite.addTest(ManifestClassLoaderUnitTestCase.suite());
suite.addTest(IntegrationDeployerUnitTestCase.suite());
+ suite.addTest(RequirementsIntegrationUnitTestCase.suite());
return suite;
}
Copied: projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/RequirementsIntegrationUnitTestCase.java (from rev 79105, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/VFSClassLoaderDependenciesUnitTestCase.java)
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/RequirementsIntegrationUnitTestCase.java (rev 0)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/RequirementsIntegrationUnitTestCase.java 2008-10-06 09:55:51 UTC (rev 79135)
@@ -0,0 +1,180 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.deployers.vfs.classloader.test;
+
+import java.util.Collections;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.jboss.classloader.plugins.ClassLoaderUtils;
+import org.jboss.classloader.plugins.jdk.AbstractJDKChecker;
+import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.ParentPolicy;
+import org.jboss.classloading.spi.dependency.ClassLoading;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
+import org.jboss.deployers.client.spi.DeployerClient;
+import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.deployers.spi.deployer.Deployer;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.plugins.classloader.ModuleRequirementIntegrationDeployer;
+import org.jboss.deployers.vfs.plugins.classloader.PackageRequirementIntegrationDeployer;
+import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderClassPathDeployer;
+import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderDescribeDeployer;
+import org.jboss.test.deployers.vfs.classloader.support.TestLevelClassLoaderSystemDeployer;
+import org.jboss.test.deployers.vfs.classloader.support.a.A;
+
+/**
+ * RequirementsIntegrationUnitTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class RequirementsIntegrationUnitTestCase extends VFSClassLoaderDependenciesTest
+{
+ public static Test suite()
+ {
+ return new TestSuite(RequirementsIntegrationUnitTestCase.class);
+ }
+
+ public RequirementsIntegrationUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ protected DeployerClient getMainDeployer()
+ {
+ AbstractJDKChecker.getExcluded().add(VFSClassLoaderDependenciesTest.class);
+
+ ClassLoading classLoading = new ClassLoading();
+ ClassLoaderSystem system = new DefaultClassLoaderSystem();
+ system.getDefaultDomain().setParentPolicy(ParentPolicy.BEFORE_BUT_JAVA_ONLY);
+
+ deployer1 = new VFSClassLoaderDescribeDeployer();
+ deployer1.setClassLoading(classLoading);
+
+ deployer2 = new TestLevelClassLoaderSystemDeployer();
+ deployer2.setClassLoading(classLoading);
+ deployer2.setSystem(system);
+
+ Deployer deployer3 = new VFSClassLoaderClassPathDeployer();
+
+ ModuleRequirementIntegrationDeployer<Object> moduleRequirementDeployer = new ModuleRequirementIntegrationDeployer<Object>(Object.class);
+ moduleRequirementDeployer.setModule("seam");
+ moduleRequirementDeployer.setIntegrationModuleName("jboss-seam-int");
+
+ PackageRequirementIntegrationDeployer<Object> packageRequirementDeployer = new PackageRequirementIntegrationDeployer<Object>(Object.class);
+ String pck = ClassLoaderUtils.getClassPackageName(A.class.getName());
+ packageRequirementDeployer.setPackages(Collections.singleton(pck));
+ packageRequirementDeployer.setIntegrationModuleName("jboss-seam-int");
+
+ return createMainDeployer(deployer1, deployer2, deployer3, moduleRequirementDeployer, packageRequirementDeployer);
+ }
+
+ public void testModules() throws Exception
+ {
+ DeployerClient mainDeployer = getMainDeployer();
+
+ Deployment app = createDeployment("app");
+ ClassLoadingMetaData appCLMD = addClassLoadingMetaData(app, null);
+ addRequireModule(appCLMD, "seam", null);
+ DeploymentUnit appUnit = addDeployment(mainDeployer, app);
+ try
+ {
+ assertDeploymentStage(appUnit, DeploymentStages.DESCRIBE);
+
+ Deployment seam = createDeployment("seam");
+ try
+ {
+ addClassLoadingMetaData(seam, null);
+ assertDeploy(mainDeployer, seam);
+ // still in describe, since we depend on integration
+ assertDeploymentStage(appUnit, DeploymentStages.DESCRIBE);
+
+ Deployment integration = createDeployment("jboss-seam-int");
+ try
+ {
+ addClassLoadingMetaData(integration, null);
+ assertDeploy(mainDeployer, integration);
+ // should be installed now
+ assertDeploymentStage(appUnit, DeploymentStages.INSTALLED);
+ }
+ finally
+ {
+ assertUndeploy(mainDeployer, integration);
+ }
+ }
+ finally
+ {
+ assertUndeploy(mainDeployer, seam);
+ }
+ }
+ finally
+ {
+ assertUndeploy(mainDeployer, app);
+ }
+ }
+
+ public void testPackages() throws Exception
+ {
+ DeployerClient mainDeployer = getMainDeployer();
+
+ Deployment app = createDeployment("app");
+ ClassLoadingMetaData appCLMD = addClassLoadingMetaData(app, null);
+ addRequirePackage(appCLMD, A.class, null);
+ DeploymentUnit appUnit = addDeployment(mainDeployer, app);
+ try
+ {
+ assertDeploymentStage(appUnit, DeploymentStages.DESCRIBE);
+
+ Deployment pckgA = createDeployment("pckgA");
+ try
+ {
+ addClassLoadingMetaData(pckgA, null, A.class);
+ assertDeploy(mainDeployer, pckgA);
+ // still in describe, since we depend on integration
+ assertDeploymentStage(appUnit, DeploymentStages.DESCRIBE);
+
+ Deployment integration = createDeployment("jboss-seam-int");
+ try
+ {
+ addClassLoadingMetaData(integration, null);
+ assertDeploy(mainDeployer, integration);
+ // should be installed now
+ assertDeploymentStage(appUnit, DeploymentStages.INSTALLED);
+ }
+ finally
+ {
+ assertUndeploy(mainDeployer, integration);
+ }
+ }
+ finally
+ {
+ assertUndeploy(mainDeployer, pckgA);
+ }
+ }
+ finally
+ {
+ assertUndeploy(mainDeployer, app);
+ }
+ }
+}
\ No newline at end of file
Modified: projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/VFSClassLoaderDependenciesTest.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/VFSClassLoaderDependenciesTest.java 2008-10-06 09:46:01 UTC (rev 79134)
+++ projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/VFSClassLoaderDependenciesTest.java 2008-10-06 09:55:51 UTC (rev 79135)
@@ -188,17 +188,20 @@
classLoadingMetaData.setName(name);
classLoadingMetaData.setVersion(version);
- StringBuffer included = new StringBuffer();
- boolean first = true;
- for (Class<?> pkg : packages)
+ if (packages != null)
{
- if (first)
- first = false;
- else
- included.append(",");
- included.append(pkg.getPackage().getName());
+ StringBuffer included = new StringBuffer();
+ boolean first = true;
+ for (Class<?> pkg : packages)
+ {
+ if (first)
+ first = false;
+ else
+ included.append(",");
+ included.append(pkg.getPackage().getName());
+ }
+ classLoadingMetaData.setIncludedPackages(included.toString());
}
- classLoadingMetaData.setIncludedPackages(included.toString());
CapabilitiesMetaData capabilities = classLoadingMetaData.getCapabilities();
Capability capability = classLoadingMetaDataFactory.createModule(name, version);
More information about the jboss-cvs-commits
mailing list