[jboss-cvs] JBossAS SVN: r71815 - in projects/jboss-deployers/trunk: deployers-impl/src/main/org/jboss/deployers/plugins/deployers and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Apr 9 04:41:16 EDT 2008


Author: alesj
Date: 2008-04-09 04:41:16 -0400 (Wed, 09 Apr 2008)
New Revision: 71815

Modified:
   projects/jboss-deployers/trunk/build/pom.xml
   projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/deployers/DeployersImpl.java
   projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/main/support/OrderedDependencyInfo.java
   projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/main/test/CycleCheckCompleteTestCase.java
Log:
ControllerStateModel usage.
Trying to resolve item at check complete.

Modified: projects/jboss-deployers/trunk/build/pom.xml
===================================================================
--- projects/jboss-deployers/trunk/build/pom.xml	2008-04-09 08:36:42 UTC (rev 71814)
+++ projects/jboss-deployers/trunk/build/pom.xml	2008-04-09 08:41:16 UTC (rev 71815)
@@ -22,7 +22,7 @@
 
   <properties>
     <version.jboss.man>2.0.0.Beta12</version.jboss.man>
-    <version.jboss.microcontainer>2.0.0.Beta12</version.jboss.microcontainer>
+    <version.jboss.microcontainer>2.0.0-SNAPSHOT</version.jboss.microcontainer>
     <version.jboss.classloader>2.0.0.Beta11</version.jboss.classloader>
     <version.jboss.common.core>2.2.4.GA</version.jboss.common.core>
     <version.jboss.common.logging.spi>2.0.4.GA</version.jboss.common.logging.spi>

Modified: projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/deployers/DeployersImpl.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/deployers/DeployersImpl.java	2008-04-09 08:36:42 UTC (rev 71814)
+++ projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/deployers/DeployersImpl.java	2008-04-09 08:41:16 UTC (rev 71815)
@@ -28,6 +28,7 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.ListIterator;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -37,6 +38,7 @@
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerContextActions;
 import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.ControllerStateModel;
 import org.jboss.dependency.spi.DependencyInfo;
 import org.jboss.dependency.spi.DependencyItem;
 import org.jboss.deployers.client.spi.Deployment;
@@ -69,28 +71,44 @@
  */
 public class DeployersImpl implements Deployers, ControllerContextActions
 {
-   /** The log */
+   /**
+    * The log
+    */
    private static final Logger log = Logger.getLogger(DeployersImpl.class);
-   
-   /** Whether we are shutdown */
+
+   /**
+    * Whether we are shutdown
+    */
    private AtomicBoolean shutdown = new AtomicBoolean(false);
-   
-   /** The dependency state machine */
+
+   /**
+    * The dependency state machine
+    */
    private Controller controller;
-   
-   /** The repository */
+
+   /**
+    * The repository
+    */
    private MutableMetaDataRepository repository;
-   
-   /** The deployment stages by name */
+
+   /**
+    * The deployment stages by name
+    */
    private Map<String, DeploymentStage> stages = new ConcurrentHashMap<String, DeploymentStage>();
-   
-   /** The deployers */
+
+   /**
+    * The deployers
+    */
    private Set<DeployerWrapper> deployers = new HashSet<DeployerWrapper>();
 
-   /** The deployers by stage and type */
+   /**
+    * The deployers by stage and type
+    */
    private Map<String, List<Deployer>> deployersByStage = new HashMap<String, List<Deployer>>();
-   
-   /** The scope builder */
+
+   /**
+    * The scope builder
+    */
    private ScopeBuilder scopeBuilder;
 
    /**
@@ -103,12 +121,12 @@
    {
       this(controller, null);
    }
-   
+
    /**
     * Create a new DeployersImpl.
-    * 
+    *
     * @param controller the controller
-    * @param deployers the deployers
+    * @param deployers  the deployers
     * @throws IllegalArgumentException for a null controller
     */
    public DeployersImpl(Controller controller, Set<Deployer> deployers)
@@ -116,7 +134,7 @@
       if (controller == null)
          throw new IllegalArgumentException("Null controller");
       this.controller = controller;
-      
+
       // Add the standard stages
       addDeploymentStage(DeploymentStages.NOT_INSTALLED);
       addDeploymentStage(DeploymentStages.PARSE);
@@ -128,12 +146,12 @@
       addDeploymentStage(DeploymentStages.PRE_REAL);
       addDeploymentStage(DeploymentStages.REAL);
       addDeploymentStage(DeploymentStages.INSTALLED);
-      
+
       // Create the deployers
       if (deployers != null)
          setDeployers(deployers);
    }
-   
+
    public void shutdown()
    {
       shutdown.set(true);
@@ -147,20 +165,20 @@
       if (shutdown.get())
          throw new IllegalStateException("Deployers are shutdown");
    }
-   
+
    /**
     * Get the deployers.
-    * 
+    *
     * @return the deployers.
     */
    public Set<DeployerWrapper> getDeployerWrappers()
    {
       return deployers;
    }
-   
+
    /**
     * Set the deployers.
-    * 
+    *
     * @param deployers the deployers.
     * @throws IllegalArgumentException for null deployers
     */
@@ -168,13 +186,13 @@
    {
       if (deployers == null)
          throw new IllegalArgumentException("Null deployers");
-      
+
       // Remove all the old deployers that are not in the new set
       HashSet<Deployer> oldDeployers = new HashSet<Deployer>(this.deployers);
       oldDeployers.removeAll(deployers);
       for (Deployer deployer : oldDeployers)
          removeDeployer(deployer);
-      
+
       // Add all the new deployers that were not already present
       HashSet<Deployer> newDeployers = new HashSet<Deployer>(deployers);
       newDeployers.removeAll(this.deployers);
@@ -184,7 +202,7 @@
 
    /**
     * Add a deployer
-    * 
+    *
     * @param deployer the deployer
     */
    public synchronized void addDeployer(Deployer deployer)
@@ -197,22 +215,22 @@
          throw new IllegalArgumentException("Deployer has no stage: " + deployer);
 
       addDeploymentStage(stage);
-      
+
       DeployerWrapper wrapper = new DeployerWrapper(deployer);
-      
+
       // Ignore duplicates
       if (deployers.contains(wrapper))
          return;
-      
+
       String stageName = stage.getName();
       List<Deployer> deployers = deployersByStage.get(stageName);
       if (deployers == null)
          deployers = Collections.emptyList();
       deployers = insert(deployers, wrapper);
       deployersByStage.put(stageName, deployers);
-      
+
       this.deployers.add(wrapper);
-      
+
       StringBuilder builder = new StringBuilder();
       builder.append("Added deployer ").append(deployer).append(" for stage ").append(stageName).append('\n');
       for (Deployer temp : getDeployersList(stageName))
@@ -227,7 +245,7 @@
 
    /**
     * Remove a deployer
-    * 
+    *
     * @param deployer the deployer
     */
    public synchronized void removeDeployer(Deployer deployer)
@@ -242,29 +260,29 @@
          log.warn("Deployer has no stage: " + deployer);
          return;
       }
-      
+
       String stageName = stage.getName();
       List<Deployer> deployers = deployersByStage.get(stageName);
       if (deployers == null)
          return;
-      
+
       deployers.remove(deployer);
       if (deployers.isEmpty())
          deployersByStage.remove(stageName);
-      
+
       log.debug("Removed deployer " + deployer + " from stage " + stageName);
    }
 
    /**
     * Add a deployment stage
-    * 
+    *
     * @param stage the deployment stage
     */
    protected synchronized void addDeploymentStage(DeploymentStage stage)
    {
       if (stage == null)
          throw new IllegalArgumentException("Null stage");
-      
+
       // Already done?
       String stageName = stage.getName();
       if (stages.containsKey(stageName))
@@ -276,10 +294,9 @@
       if (before != null || after != null)
       {
          // Determine where to put the stage
-         List<ControllerState> states = controller.getStates();
-         for (int i = 0; i < states.size(); ++i)
+         ControllerStateModel states = controller.getStates();
+         for (ControllerState state : states)
          {
-            ControllerState state = states.get(i);
             String stateName = state.getStateString();
             if (before != null && before.equals(stateName))
             {
@@ -288,9 +305,9 @@
             }
             if (after != null && after.equals(stateName))
             {
-               if (i < states.size()-1)
+               if (states.getNextState(state) != null)
                {
-                  preceeds = states.get(i+1);
+                  preceeds = states.getNextState(state);
                   break;
                }
             }
@@ -304,7 +321,7 @@
 
    /**
     * Get the scopeBuilder.
-    * 
+    *
     * @return the scopeBuilder.
     */
    public ScopeBuilder getScopeBuilder()
@@ -314,7 +331,7 @@
 
    /**
     * Set the scopeBuilder.
-    * 
+    *
     * @param scopeBuilder the scopeBuilder.
     */
    public void setScopeBuilder(ScopeBuilder scopeBuilder)
@@ -324,7 +341,7 @@
 
    /**
     * Get the repository.
-    * 
+    *
     * @return the repository.
     */
    public MutableMetaDataRepository getRepository()
@@ -334,7 +351,7 @@
 
    /**
     * Set the repository.
-    * 
+    *
     * @param repository the repository.
     */
    public void setRepository(MutableMetaDataRepository repository)
@@ -347,28 +364,28 @@
       // Bootstrap the repository
       if (repository == null && controller instanceof KernelController)
       {
-         KernelController kernelController = (KernelController) controller;
+         KernelController kernelController = (KernelController)controller;
          repository = kernelController.getKernel().getMetaDataRepository().getMetaDataRepository();
       }
    }
-   
+
    public Map<String, ManagedObject> getManagedObjects(DeploymentContext context) throws DeploymentException
    {
       if (context == null)
          throw new IllegalArgumentException("Null context");
-      
+
       checkShutdown();
-      
+
       Map<String, ManagedObject> managedObjects = new HashMap<String, ManagedObject>();
       for (DeployerWrapper deployer : deployers)
          deployer.build(context.getDeploymentUnit(), managedObjects);
-      
+
       return managedObjects;
    }
 
    /**
     * Get the ManagedObjectBuilder for a deployer.
-    * 
+    *
     * @param deployer - the deployer to set the ManagedObjectBuilder for.
     * @return managedObjectBuilder for deployer, may be null
     * @throws IllegalArgumentException for a null deployer
@@ -377,7 +394,7 @@
    {
       if (deployer == null)
          throw new IllegalArgumentException("Null deployer");
-      
+
       ManagedObjectCreator result = null;
       for (DeployerWrapper wrapper : deployers)
       {
@@ -390,8 +407,8 @@
    /**
     * Set the ManagedObjectBuilder for a deployer. This allows one to override the given deployer
     * ManagedObjectBuilder or assign one when the deployer does not provide a ManagedObjectBuilder.
-    * 
-    * @param deployer - the deployer to set the ManagedObjectBuilder for.
+    *
+    * @param deployer             - the deployer to set the ManagedObjectBuilder for.
     * @param managedObjectCreator the managed object builder to set to the deployer
     * @throws IllegalArgumentException for a null deployer
     */
@@ -424,17 +441,17 @@
          throw new DeploymentException("Null context");
       if (stage == null)
          throw new DeploymentException("Null stage");
-      
+
       String stageName = stage.getName();
       if (stages.containsKey(stage.getName()) == false)
          throw new DeploymentException("Unknown deployment stage: " + stage);
-      
+
       DeploymentControllerContext deploymentControllerContext = context.getTransientAttachments().getAttachment(ControllerContext.class.getName(), DeploymentControllerContext.class);
       if (deploymentControllerContext == null)
          throw new DeploymentException("Deployment " + context.getName() + " has no deployment controller context");
 
       checkShutdown();
-      
+
       ControllerState state = new ControllerState(stageName);
       try
       {
@@ -449,17 +466,17 @@
       if (problem != null)
          throw DeploymentException.rethrowAsDeploymentException("Error changing to stage " + stage + " for " + context.getName(), problem);
    }
-   
+
    public void process(List<DeploymentContext> deploy, List<DeploymentContext> undeploy)
    {
       boolean trace = log.isTraceEnabled();
-      
+
       // There is something to undeploy
       if (undeploy != null && undeploy.isEmpty() == false)
       {
          // Build a list in reverse order
          List<DeploymentControllerContext> toUndeploy = new ArrayList<DeploymentControllerContext>();
-         for (int i = undeploy.size()-1; i >= 0; --i)
+         for (int i = undeploy.size() - 1; i >= 0; --i)
          {
             DeploymentContext context = undeploy.get(i);
             if (DeploymentState.ERROR.equals(context.getState()) == false)
@@ -477,17 +494,18 @@
          }
 
          // Go through the states in reverse order
-         List<ControllerState> states = controller.getStates();
-         for (int i = states.size()-1; i >= 0; --i)
+         ControllerStateModel states = controller.getStates();
+         ListIterator<ControllerState> iter = states.listIteraror();
+         while (iter.hasPrevious())
          {
-            ControllerState state = states.get(i);
+            ControllerState state = iter.previous();
             for (DeploymentControllerContext deploymentControllerContext : toUndeploy)
             {
                ControllerState current = deploymentControllerContext.getState();
-               int currentIdx = states.indexOf(current);
-               DeploymentContext context = deploymentControllerContext.getDeploymentContext();
-               if (currentIdx != -1 && currentIdx > i)
+               if (ControllerState.ERROR.equals(current) == false && states.isAfterState(current, state))
+               //if (currentIdx != -1 && currentIdx > i)
                {
+                  DeploymentContext context = deploymentControllerContext.getDeploymentContext();
                   try
                   {
                      controller.change(deploymentControllerContext, state);
@@ -530,7 +548,7 @@
             }
          }
       }
-      
+
       // There is something to deploy
       if (deploy != null && deploy.isEmpty() == false)
       {
@@ -562,16 +580,14 @@
          }
 
          // Go through the states in order
-         List<ControllerState> states = controller.getStates();
-         for (int i = 0; i < states.size(); ++i)
+         ControllerStateModel states = controller.getStates();
+         for (ControllerState state : states)
          {
-            ControllerState state = states.get(i);
             for (DeploymentContext context : deploy)
             {
                DeploymentControllerContext deploymentControllerContext = context.getTransientAttachments().getAttachment(ControllerContext.class.getName(), DeploymentControllerContext.class);
                ControllerState current = deploymentControllerContext.getState();
-               int currentIdx = states.indexOf(current);
-               if (currentIdx != -1 && currentIdx < i)
+               if (ControllerState.ERROR.equals(current) == false && states.isBeforeState(current, state))
                {
                   checkShutdown();
                   try
@@ -596,7 +612,7 @@
 
    /**
     * Get the root cause of a throwable
-    * 
+    *
     * @param original the original
     * @return the root
     */
@@ -635,8 +651,6 @@
             deploymentsMissingDeployer.add(context.getName());
       }
 
-      List<ControllerState> states = controller.getStates();
-
       Set<ControllerContext> notInstalled = controller.getNotInstalled();
       if (notInstalled.isEmpty() == false)
       {
@@ -648,6 +662,7 @@
          }
          if (notInstalled.isEmpty() == false)
          {
+            ControllerStateModel states = controller.getStates();
             contextsInError = new HashMap<String, Throwable>();
             contextsMissingDependencies = new HashMap<String, Set<MissingDependency>>();
             for (ControllerContext context : notInstalled)
@@ -665,16 +680,16 @@
    /**
     * Check controller context.
     *
-    * @param context the controller context
-    * @param contextsInError contexts in error map
+    * @param context                     the controller context
+    * @param contextsInError             contexts in error map
     * @param contextsMissingDependencies contexts missing dependecies map
-    * @param states controller states
+    * @param states                      controller states
     */
    protected final void checkControllerContext(
          ControllerContext context,
          Map<String, Throwable> contextsInError,
          Map<String, Set<MissingDependency>> contextsMissingDependencies,
-         List<ControllerState> states)
+         ControllerStateModel states)
    {
       if (context.getState().equals(ControllerState.ERROR))
          contextsInError.put(context.getName().toString(), getRootCause(context.getError()));
@@ -683,8 +698,12 @@
          Object contextName = context.getName();
          String name = contextName.toString();
          Set<MissingDependency> dependencies = new HashSet<MissingDependency>();
+
          DependencyInfo dependsInfo = context.getDependencyInfo();
-         for (DependencyItem item : dependsInfo.getIDependOn(null))
+         ControllerState currentState = context.getState();
+         ControllerState nextState = states.getNextState(currentState);
+
+         for (DependencyItem item : dependsInfo.getUnresolvedDependencies(nextState))
          {
             if (item.isResolved() == false)
             {
@@ -693,9 +712,9 @@
                String actualStateString;
 
                Object iDependOn = item.getIDependOn();
-               if (contextName.equals(iDependOn) == false)
+               if (contextName.equals(iDependOn) == false && item.resolve(controller) == false)
                {
-                  boolean includeDependency = true;
+                  iDependOn = item.getIDependOn();
 
                   if (iDependOn == null)
                   {
@@ -712,31 +731,15 @@
                      {
                         actualState = other.getState();
                         actualStateString = actualState.getStateString();
-                        if (actualState != null && actualState.equals(ControllerState.ERROR) == false)
-                        {
-                           ControllerState dependentState = item.getDependentState();
-                           if (dependentState == null)
-                              dependentState = ControllerState.INSTALLED;
-
-                           int dependentIndex = states.indexOf(dependentState);
-                           int actualIndex = states.indexOf(actualState);
-                           if (actualIndex >= dependentIndex)
-                              includeDependency = false;
-                        }
                      }
                   }
 
-                  if (includeDependency)
+                  ControllerState requiredState = item.getWhenRequired();
+                  String requiredStateString = requiredState.getStateString();
+                  if (actualState == null || states.isAfterState(requiredState, actualState))
                   {
-                     ControllerState requiredState = item.getWhenRequired();
-                     String requiredStateString = requiredState.getStateString();
-                     int required = states.indexOf(requiredState);
-                     int actual = actualState == null ? -1 : states.indexOf(actualState);
-                     if (required > actual)
-                     {
-                        MissingDependency missing = new MissingDependency(name, dependency, requiredStateString, actualStateString);
-                        dependencies.add(missing);
-                     }
+                     MissingDependency missing = new MissingDependency(name, dependency, requiredStateString, actualStateString);
+                     dependencies.add(missing);
                   }
                }
             }
@@ -772,7 +775,7 @@
       Map<String, Throwable> contextsInError = new HashMap<String, Throwable>();
       Map<String, Set<MissingDependency>> contextsMissingDependencies = new HashMap<String, Set<MissingDependency>>();
 
-      for(DeploymentContext context : contexts)
+      for (DeploymentContext context : contexts)
       {
          Throwable problem = context.getProblem();
          if (problem != null)
@@ -784,7 +787,7 @@
          if (checkContexts)
          {
             Set<ControllerContext> notInstalled = controller.getNotInstalled();
-            List<ControllerState> states = controller.getStates();
+            ControllerStateModel states = controller.getStates();
             checkComplete(context, contextsInError, contextsMissingDependencies, notInstalled, states);
          }
       }
@@ -818,18 +821,18 @@
    /**
     * Check complete on deployment context.
     *
-    * @param context the deployment context
-    * @param contextsInError contexts in error map
+    * @param context                     the deployment context
+    * @param contextsInError             contexts in error map
     * @param contextsMissingDependencies contexts missing dependecies map
-    * @param notInstalled the not installed contexts
-    * @param states controller states
+    * @param notInstalled                the not installed contexts
+    * @param states                      controller states
     */
    protected final void checkComplete(
          DeploymentContext context,
          Map<String, Throwable> contextsInError,
          Map<String, Set<MissingDependency>> contextsMissingDependencies,
          Set<ControllerContext> notInstalled,
-         List<ControllerState> states)
+         ControllerStateModel states)
    {
       DeploymentControllerContext dcc = context.getTransientAttachments().getAttachment(ControllerContext.class.getName(), DeploymentControllerContext.class);
       checkControllerContext(dcc, contextsInError, contextsMissingDependencies, notInstalled, states);
@@ -837,7 +840,7 @@
       Set<Object> names = context.getControllerContextNames();
       if (names != null && names.isEmpty() == false)
       {
-         for(Object name : names)
+         for (Object name : names)
          {
             ControllerContext cc = controller.getContext(name, null);
             checkControllerContext(cc, contextsInError, contextsMissingDependencies, notInstalled, states);
@@ -847,14 +850,14 @@
       List<DeploymentContext> children = context.getChildren();
       if (children != null && children.isEmpty() == false)
       {
-         for(DeploymentContext child : children)
+         for (DeploymentContext child : children)
             checkComplete(child, contextsInError, contextsMissingDependencies, notInstalled, states);
       }
 
       List<DeploymentContext> components = context.getComponents();
       if (components != null && components.isEmpty() == false)
       {
-         for(DeploymentContext component : components)
+         for (DeploymentContext component : components)
             checkComplete(component, contextsInError, contextsMissingDependencies, notInstalled, states);
       }
    }
@@ -862,18 +865,18 @@
    /**
     * Check complete on deployment context.
     *
-    * @param context the deployment context
-    * @param contextsInError contexts in error map
+    * @param context                     the deployment context
+    * @param contextsInError             contexts in error map
     * @param contextsMissingDependencies contexts missing dependecies map
-    * @param notInstalled the not installed contexts
-    * @param states controller states
+    * @param notInstalled                the not installed contexts
+    * @param states                      controller states
     */
    protected void checkControllerContext(
          ControllerContext context,
          Map<String, Throwable> contextsInError,
          Map<String, Set<MissingDependency>> contextsMissingDependencies,
          Set<ControllerContext> notInstalled,
-         List<ControllerState> states)
+         ControllerStateModel states)
    {
       if (context != null)
       {
@@ -886,17 +889,17 @@
 
    public void install(ControllerContext context, ControllerState fromState, ControllerState toState) throws Throwable
    {
-      DeploymentControllerContext deploymentControllerContext = (DeploymentControllerContext) context;
+      DeploymentControllerContext deploymentControllerContext = (DeploymentControllerContext)context;
       String stageName = toState.getStateString();
-      
+
       DeploymentContext deploymentContext = deploymentControllerContext.getDeploymentContext();
       try
       {
          List<Deployer> theDeployers = getDeployersList(stageName);
-         
+
          if (log.isTraceEnabled())
             log.trace("Deployers for " + stageName + " " + theDeployers);
-         
+
          if (theDeployers.isEmpty() == false)
          {
             int i = 0;
@@ -916,9 +919,9 @@
             {
                deploymentContext.setState(DeploymentState.ERROR);
                deploymentContext.setProblem(t);
-               
+
                // Unwind the previous deployments
-               for (int j = i-1; j >= 0; --j)
+               for (int j = i - 1; j >= 0; --j)
                {
                   Deployer deployer = theDeployers.get(j);
                   if (deployer.isParentFirst())
@@ -926,7 +929,7 @@
                   else
                      doUninstallParentFirst(deployer, deploymentContext, true, true);
                }
-               
+
                // It can happen that subdeployments are not processed if the parent fails immediately
                // so there is no callback to undeploy when nothing was done
                setState(deploymentContext, DeploymentState.UNDEPLOYED, DeploymentState.DEPLOYING);
@@ -943,12 +946,12 @@
          }
       }
    }
-   
+
    /**
     * Do the install parent first
-    * 
+    *
     * @param deployer the deployer
-    * @param context the context
+    * @param context  the context
     * @throws Throwable for any problem
     */
    protected void doInstallParentFirst(Deployer deployer, DeploymentContext context) throws Throwable
@@ -976,7 +979,7 @@
       }
       else if (log.isTraceEnabled())
          log.trace("Deployer " + deployer + " not relevant for " + context.getName());
-      
+
       if (components != null)
       {
          try
@@ -1038,14 +1041,14 @@
             doUninstallParentLast(deployer, context, false, true);
             throw e;
          }
-      }         
+      }
    }
-   
+
    /**
     * Do the install parent last
-    * 
+    *
     * @param deployer the deployer
-    * @param context the context
+    * @param context  the context
     * @throws Throwable for any problem
     */
    protected void doInstallParentLast(Deployer deployer, DeploymentContext context) throws Throwable
@@ -1069,7 +1072,7 @@
             throw e;
          }
       }
-      
+
       List<DeploymentContext> components = context.getComponents();
       if (components != null)
       {
@@ -1121,21 +1124,21 @@
       else if (log.isTraceEnabled())
          log.trace("Deployer " + deployer + " not relevant for " + context.getName());
    }
-   
+
    public void uninstall(ControllerContext context, ControllerState fromState, ControllerState toState)
    {
-      DeploymentControllerContext deploymentControllerContext = (DeploymentControllerContext) context;
+      DeploymentControllerContext deploymentControllerContext = (DeploymentControllerContext)context;
       String stageName = fromState.getStateString();
-      
+
       DeploymentContext deploymentContext = deploymentControllerContext.getDeploymentContext();
       List<Deployer> theDeployers = getDeployersList(stageName);
-      
+
       if (log.isTraceEnabled())
          log.trace("Deployers for " + stageName + " " + theDeployers);
 
-      if  (theDeployers.isEmpty() == false)
+      if (theDeployers.isEmpty() == false)
       {
-         for (int i = theDeployers.size()-1; i >= 0; --i)
+         for (int i = theDeployers.size() - 1; i >= 0; --i)
          {
             Deployer deployer = theDeployers.get(i);
             if (deployer.isParentFirst())
@@ -1149,9 +1152,9 @@
    /**
     * Do the uninstall parent last
     *
-    * @param deployer the deployer
-    * @param context the context
-    * @param doChildren whether to do children
+    * @param deployer     the deployer
+    * @param context      the context
+    * @param doChildren   whether to do children
     * @param doComponents whether to do components
     */
    protected void doUninstallParentLast(Deployer deployer, DeploymentContext context, boolean doChildren, boolean doComponents)
@@ -1161,7 +1164,7 @@
          List<DeploymentContext> children = context.getChildren();
          if (children != null && children.isEmpty() == false)
          {
-            for (int i = children.size()-1; i >=  0; --i)
+            for (int i = children.size() - 1; i >= 0; --i)
             {
                DeploymentContext child = children.get(i);
                doUninstallParentLast(deployer, child, true, true);
@@ -1174,7 +1177,7 @@
          List<DeploymentContext> components = context.getComponents();
          if (components != null && components.isEmpty() == false)
          {
-            for (int i = components.size()-1; i >=  0; --i)
+            for (int i = components.size() - 1; i >= 0; --i)
             {
                DeploymentContext component = components.get(i);
                doUninstallParentLast(deployer, component, false, true);
@@ -1192,9 +1195,9 @@
    /**
     * Do the uninstall parent first
     *
-    * @param deployer the deployer
-    * @param context the context
-    * @param doContext whether to do context
+    * @param deployer     the deployer
+    * @param context      the context
+    * @param doContext    whether to do context
     * @param doComponents whether to do components
     */
    protected void doUninstallParentFirst(Deployer deployer, DeploymentContext context, boolean doContext, boolean doComponents)
@@ -1213,7 +1216,7 @@
          List<DeploymentContext> components = context.getComponents();
          if (components != null && components.isEmpty() == false)
          {
-            for (int i = components.size()-1; i >=  0; --i)
+            for (int i = components.size() - 1; i >= 0; --i)
             {
                DeploymentContext component = components.get(i);
                doUninstallParentFirst(deployer, component, true, true);
@@ -1224,17 +1227,17 @@
       List<DeploymentContext> children = context.getChildren();
       if (children != null && children.isEmpty() == false)
       {
-         for (int i = children.size()-1; i >=  0; --i)
+         for (int i = children.size() - 1; i >= 0; --i)
          {
             DeploymentContext child = children.get(i);
             doUninstallParentFirst(deployer, child, true, true);
          }
       }
    }
-   
+
    /**
     * Build a list of  deployers for this stage
-    * 
+    *
     * @param stageName the stage name
     * @return the deployers
     */
@@ -1243,16 +1246,16 @@
       List<Deployer> deployers = deployersByStage.get(stageName);
       if (deployers == null || deployers.isEmpty())
          return Collections.emptyList();
-      
+
       return deployers;
    }
-   
+
    /**
     * Test whether a deployer is relevant
-    * 
-    * @param deployer deployer
-    * @param unit the deployment unit
-    * @param isTopLevel whether this is a top level deployment
+    *
+    * @param deployer    deployer
+    * @param unit        the deployment unit
+    * @param isTopLevel  whether this is a top level deployment
     * @param isComponent whether this is a component
     * @return the deployers
     */
@@ -1269,7 +1272,7 @@
       // Deployer doesn't wants components
       if (deployer.isWantComponents() == false && isComponent)
          return false;
-      
+
       if (deployer.isAllInputs() == false)
       {
          // No attachment for the input type
@@ -1279,11 +1282,11 @@
       }
       return true;
    }
-   
+
    /**
     * Insert the new Deployer.
     *
-    * @param original the original deployers
+    * @param original    the original deployers
     * @param newDeployer the new deployer
     * @return the sorted deployers
     */
@@ -1295,9 +1298,9 @@
 
    /**
     * Set the deployment state for a context and its children
-    * 
+    *
     * @param context the context
-    * @param state the state
+    * @param state   the state
     * @param ifState the ifState
     */
    private static void setState(DeploymentContext context, DeploymentState state, DeploymentState ifState)
@@ -1314,7 +1317,7 @@
 
    /**
     * Remove a classloader for a context and its children
-    * 
+    *
     * @param context the context
     */
    private static void removeClassLoader(DeploymentContext context)
@@ -1330,7 +1333,7 @@
 
    /**
     * Cleanup the deployment context
-    * 
+    *
     * @param context the context
     */
    private static void cleanup(DeploymentContext context)

Modified: projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/main/support/OrderedDependencyInfo.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/main/support/OrderedDependencyInfo.java	2008-04-09 08:36:42 UTC (rev 71814)
+++ projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/main/support/OrderedDependencyInfo.java	2008-04-09 08:41:16 UTC (rev 71815)
@@ -21,13 +21,14 @@
 */
 package org.jboss.test.deployers.main.support;
 
-import java.util.Set;
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.LinkedHashSet;
+import java.util.Set;
 
 import org.jboss.dependency.plugins.AbstractDependencyInfo;
-import org.jboss.dependency.spi.DependencyItem;
-import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.DependencyItem;
 
 /**
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
@@ -48,25 +49,20 @@
       items.remove(dependency);
    }
 
-   public Set<DependencyItem> getUnresolvedDependencies()
+   public Set<DependencyItem> getUnresolvedDependencies(ControllerState state)
    {
-      return items;
-   }
-
-   public boolean resolveDependencies(Controller controller, ControllerState state)
-   {
-      boolean resolved = true;
+      if (items.isEmpty())
+         return Collections.emptySet();
+      
+      Set<DependencyItem> result = new HashSet<DependencyItem>();
       if (items.isEmpty() == false)
       {
          for (DependencyItem item : items)
          {
-            if (state.equals(item.getWhenRequired()) && item.resolve(controller) == false)
-            {
-               resolved = false;
-               break;
-            }
+            if (state == null || state.equals(item.getWhenRequired()))
+               result.add(item);
          }
       }
-      return resolved;
+      return result;
    }
 }

Modified: projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/main/test/CycleCheckCompleteTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/main/test/CycleCheckCompleteTestCase.java	2008-04-09 08:36:42 UTC (rev 71814)
+++ projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/main/test/CycleCheckCompleteTestCase.java	2008-04-09 08:41:16 UTC (rev 71815)
@@ -95,7 +95,12 @@
          Map<String,Set<MissingDependency>> map = id.getContextsMissingDependencies();
          assertNotNull(map);
          assertEquals(new HashSet<String>(Arrays.asList("xA", "xB")), map.keySet());
-         //assertEquals("Should be empty string, no errors.", "", id.getContextsInErrorInfo());
+         String inErrorInfo = id.getContextsInErrorInfo();
+         assertNotNull(inErrorInfo);
+         assertTrue(inErrorInfo.contains("xA"));
+         assertTrue(inErrorInfo.contains("xB"));
+         assertFalse(inErrorInfo.contains("xC"));
+         assertFalse(inErrorInfo.contains("xD"));
       }
    }
 




More information about the jboss-cvs-commits mailing list