[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