[jboss-cvs] JBossAS SVN: r96329 - in projects/jboss-deployers/branches/Branch_2_0: deployers-impl/src/test/java/org/jboss/test/deployers/deployer and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Nov 13 06:21:37 EST 2009
Author: alesj
Date: 2009-11-13 06:21:36 -0500 (Fri, 13 Nov 2009)
New Revision: 96329
Added:
projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredInputsUnitTestCase.java
Modified:
projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployerWrapper.java
projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployersImpl.java
projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/DeployersDeployerTestSuite.java
projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredStageUnitTestCase.java
projects/jboss-deployers/branches/Branch_2_0/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/Deployer.java
projects/jboss-deployers/branches/Branch_2_0/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractAllInputDeployer.java
projects/jboss-deployers/branches/Branch_2_0/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractDeployer.java
Log:
[JBDEPLOY-223]; do short circut on required inputs.
Modified: projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployerWrapper.java
===================================================================
--- projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployerWrapper.java 2009-11-13 09:28:31 UTC (rev 96328)
+++ projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployerWrapper.java 2009-11-13 11:21:36 UTC (rev 96329)
@@ -140,6 +140,14 @@
return result;
}
+ public Set<String> getRequiredInputs()
+ {
+ Set<String> result = deployer.getRequiredInputs();
+ if (result == null)
+ return Collections.emptySet();
+ return result;
+ }
+
public Set<String> getOutputs()
{
Set<String> result = deployer.getOutputs();
Modified: projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployersImpl.java
===================================================================
--- projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployersImpl.java 2009-11-13 09:28:31 UTC (rev 96328)
+++ projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployersImpl.java 2009-11-13 11:21:36 UTC (rev 96329)
@@ -1519,9 +1519,20 @@
{
// No attachment for the input type
Class<?> input = deployer.getInput();
- if (input != null && unit.getAttachment(input) == null)
+ if (input != null && unit.isAttachmentPresent(input) == false)
return false;
}
+
+ Set<String> requiredInputs = deployer.getRequiredInputs();
+ if (requiredInputs != null && requiredInputs.isEmpty() == false)
+ {
+ for (String requiredInput : requiredInputs)
+ {
+ if (unit.isAttachmentPresent(requiredInput) == false)
+ return false;
+ }
+ }
+
return true;
}
Modified: projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/DeployersDeployerTestSuite.java
===================================================================
--- projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/DeployersDeployerTestSuite.java 2009-11-13 09:28:31 UTC (rev 96328)
+++ projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/DeployersDeployerTestSuite.java 2009-11-13 11:21:36 UTC (rev 96329)
@@ -25,24 +25,26 @@
import junit.framework.TestSuite;
import junit.textui.TestRunner;
+import org.jboss.test.deployers.deployer.helpers.test.ExactAttachmentDeployerWithVisitorTestCase;
import org.jboss.test.deployers.deployer.test.ComponentUnitTestCase;
import org.jboss.test.deployers.deployer.test.DeployerClassLoaderUnitTestCase;
import org.jboss.test.deployers.deployer.test.DeployerContextClassLoaderUnitTestCase;
import org.jboss.test.deployers.deployer.test.DeployerFlowUnitTestCase;
import org.jboss.test.deployers.deployer.test.DeployerOrderingUnitTestCase;
import org.jboss.test.deployers.deployer.test.DeployerProtocolUnitTestCase;
+import org.jboss.test.deployers.deployer.test.DeployerRequiredInputsUnitTestCase;
import org.jboss.test.deployers.deployer.test.DeployerRequiredStageUnitTestCase;
import org.jboss.test.deployers.deployer.test.DeployerWidthFirstUnitTestCase;
import org.jboss.test.deployers.deployer.test.DeployersImplUnitTestCase;
import org.jboss.test.deployers.deployer.test.HeuristicAllOrNothingUnitTestCase;
import org.jboss.test.deployers.deployer.test.HeuristicRussionDollUnitTestCase;
import org.jboss.test.deployers.deployer.test.MultipleComponentTypeUnitTestCase;
-import org.jboss.test.deployers.deployer.helpers.test.ExactAttachmentDeployerWithVisitorTestCase;
/**
* Deployers Deployer Test Suite.
*
* @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
* @version $Revision: 37459 $
*/
public class DeployersDeployerTestSuite extends TestSuite
@@ -68,6 +70,7 @@
suite.addTest(HeuristicRussionDollUnitTestCase.suite());
suite.addTest(DeployerContextClassLoaderUnitTestCase.suite());
suite.addTest(DeployerRequiredStageUnitTestCase.suite());
+ suite.addTest(DeployerRequiredInputsUnitTestCase.suite());
// helper deployers
suite.addTest(ExactAttachmentDeployerWithVisitorTestCase.suite());
Copied: projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredInputsUnitTestCase.java (from rev 96216, projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredStageUnitTestCase.java)
===================================================================
--- projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredInputsUnitTestCase.java (rev 0)
+++ projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredInputsUnitTestCase.java 2009-11-13 11:21:36 UTC (rev 96329)
@@ -0,0 +1,97 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, Red Hat Middleware LLC, and individual contributors
+* 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.deployer.test;
+
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Set;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.deployers.client.spi.DeployerClient;
+import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.deployers.spi.attachments.MutableAttachments;
+import org.jboss.deployers.spi.deployer.DeploymentStage;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.test.deployers.AbstractDeployerTest;
+import org.jboss.test.deployers.deployer.support.TestSimpleDeployer;
+
+/**
+ * DeployerRequiredInputsUnitTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class DeployerRequiredInputsUnitTestCase extends AbstractDeployerTest
+{
+ public static Test suite()
+ {
+ return new TestSuite(DeployerRequiredInputsUnitTestCase.class);
+ }
+
+ public DeployerRequiredInputsUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testRequiredState() throws Exception
+ {
+ TestSimpleDeployer missing = new TestSimpleDeployer();
+ missing.addRequiredInput(Calendar.class); // I guess no calendar is present :-)
+ assertTrue(missing.getInputs().contains(Calendar.class.getName()));
+
+ TestSimpleDeployer all = new TestSimpleDeployer();
+ all.addRequiredInput(DeploymentStage.class.getName());
+ assertTrue(all.getInputs().contains(DeploymentStage.class.getName()));
+
+ TestSimpleDeployer empty = new TestSimpleDeployer();
+
+ DeployerClient main = createMainDeployer(missing, all, empty);
+
+ String name = "simple";
+ Deployment deployment = createSimpleDeployment(name);
+
+ MutableAttachments attachments = (MutableAttachments) deployment.getPredeterminedManagedObjects();
+ attachments.addAttachment(DeploymentStage.class, DeploymentStages.DESCRIBE);
+
+ Set<String> singleton;
+ main.deploy(deployment);
+ try
+ {
+ DeploymentUnit unit = getDeploymentUnit(main, name);
+ singleton = Collections.singleton(unit.getName());
+
+ assertEmpty(missing.getDeployedUnits());
+ assertEquals(singleton, all.getDeployedUnits());
+ assertEquals(singleton, empty.getDeployedUnits());
+ }
+ finally
+ {
+ main.undeploy(deployment);
+ }
+
+ assertEmpty(missing.getUndeployedUnits());
+ assertEquals(singleton, all.getUndeployedUnits());
+ assertEquals(singleton, empty.getUndeployedUnits());
+ }
+}
\ No newline at end of file
Modified: projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredStageUnitTestCase.java
===================================================================
--- projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredStageUnitTestCase.java 2009-11-13 09:28:31 UTC (rev 96328)
+++ projects/jboss-deployers/branches/Branch_2_0/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredStageUnitTestCase.java 2009-11-13 11:21:36 UTC (rev 96329)
@@ -62,15 +62,22 @@
Deployment deployment = createSimpleDeployment(name);
MutableAttachments attachments = (MutableAttachments) deployment.getPredeterminedManagedObjects();
attachments.addAttachment(DeploymentStage.class, DeploymentStages.DESCRIBE);
+
main.deploy(deployment);
+ try
+ {
+ DeploymentUnit unit = getDeploymentUnit(main, name);
- DeploymentUnit unit = getDeploymentUnit(main, name);
-
- assertEquals(DeploymentStages.DESCRIBE, unit.getRequiredStage());
- assertEquals(DeploymentStages.DESCRIBE, main.getDeploymentStage(name));
-
- main.change(name, DeploymentStages.INSTALLED);
- assertEquals(DeploymentStages.INSTALLED, unit.getRequiredStage());
- assertEquals(DeploymentStages.INSTALLED, main.getDeploymentStage(name));
+ assertEquals(DeploymentStages.DESCRIBE, unit.getRequiredStage());
+ assertEquals(DeploymentStages.DESCRIBE, main.getDeploymentStage(name));
+
+ main.change(name, DeploymentStages.INSTALLED);
+ assertEquals(DeploymentStages.INSTALLED, unit.getRequiredStage());
+ assertEquals(DeploymentStages.INSTALLED, main.getDeploymentStage(name));
+ }
+ finally
+ {
+ main.undeploy(deployment);
+ }
}
}
Modified: projects/jboss-deployers/branches/Branch_2_0/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/Deployer.java
===================================================================
--- projects/jboss-deployers/branches/Branch_2_0/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/Deployer.java 2009-11-13 09:28:31 UTC (rev 96328)
+++ projects/jboss-deployers/branches/Branch_2_0/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/Deployer.java 2009-11-13 11:21:36 UTC (rev 96329)
@@ -92,6 +92,13 @@
Set<String> getInputs();
/**
+ * Get the required input for this deployer
+ *
+ * @return the inputs
+ */
+ Set<String> getRequiredInputs();
+
+ /**
* Get the outputs for this deployer
*
* @return the outputs
Modified: projects/jboss-deployers/branches/Branch_2_0/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractAllInputDeployer.java
===================================================================
--- projects/jboss-deployers/branches/Branch_2_0/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractAllInputDeployer.java 2009-11-13 09:28:31 UTC (rev 96328)
+++ projects/jboss-deployers/branches/Branch_2_0/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractAllInputDeployer.java 2009-11-13 11:21:36 UTC (rev 96329)
@@ -113,14 +113,12 @@
*/
public void addOptionalInput(String input)
{
- if (input == null)
- throw new IllegalArgumentException("Null input");
+ addInput(input); // this already checks for null
if (optionalInputs == null)
optionalInputs = CollectionsFactory.createLazySet();
optionalInputs.add(input);
- addInput(input);
}
/**
Modified: projects/jboss-deployers/branches/Branch_2_0/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractDeployer.java
===================================================================
--- projects/jboss-deployers/branches/Branch_2_0/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractDeployer.java 2009-11-13 09:28:31 UTC (rev 96328)
+++ projects/jboss-deployers/branches/Branch_2_0/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractDeployer.java 2009-11-13 11:21:36 UTC (rev 96329)
@@ -68,6 +68,9 @@
/** The input name */
private Set<String> inputs;
+ /** The required input name */
+ private Set<String> requiredInputs;
+
/** The output name */
private Set<String> outputs;
@@ -212,7 +215,32 @@
this.inputs = inputs;
}
+ public Set<String> getRequiredInputs()
+ {
+ return requiredInputs;
+ }
+
/**
+ * Set the required inputs.
+ *
+ * @param requiredInputs the required inputs .
+ */
+ public void setRequiredInputs(Set<String> requiredInputs)
+ {
+ if (requiredInputs != null)
+ {
+ for (String requiredInput : requiredInputs)
+ {
+ addRequiredInput(requiredInput);
+ }
+ }
+ else
+ {
+ this.requiredInputs = null;
+ }
+ }
+
+ /**
* Set the inputs.
*
* @param inputs the inputs.
@@ -287,6 +315,34 @@
addInput(input.getName());
}
+ /**
+ * Add a required input
+ *
+ * @param requiredInput the required input
+ */
+ public void addRequiredInput(String requiredInput)
+ {
+ addInput(requiredInput);
+
+ if (requiredInputs == null)
+ requiredInputs = new HashSet<String>();
+
+ requiredInputs.add(requiredInput);
+ }
+
+ /**
+ * Add a required input input
+ *
+ * @param requiredInput the required input
+ */
+ public void addRequiredInput(Class<?> requiredInput)
+ {
+ if (requiredInput == null)
+ throw new IllegalArgumentException("Null required input");
+
+ addRequiredInput(requiredInput.getName());
+ }
+
public Set<String> getOutputs()
{
return outputs;
More information about the jboss-cvs-commits
mailing list