[jboss-cvs] JBossAS SVN: r86212 - projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/plugins.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Mar 23 11:19:34 EDT 2009


Author: adrian at jboss.org
Date: 2009-03-23 11:19:34 -0400 (Mon, 23 Mar 2009)
New Revision: 86212

Modified:
   projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
Log:
[JBMICROCONT-421] - Be extra paranoid about possible exception paths

Modified: projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2009-03-23 15:13:31 UTC (rev 86211)
+++ projects/microcontainer/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2009-03-23 15:19:34 UTC (rev 86212)
@@ -1058,34 +1058,46 @@
                toProcess.add(context);
             }
          }
-         for (ControllerContext context : toProcess)
+         try
          {
-            Object name = context.getName();
-            try
+            for (Iterator<ControllerContext> iter = toProcess.iterator(); iter.hasNext(); )
             {
-               if (fromState.equals(context.getState()) == false)
+               ControllerContext context = iter.next();
+               iter.remove();
+               Object name = context.getName();
+               try
                {
-                  if (trace)
-                     log.trace("Skipping already installed " + name + " for " + toState.getStateString());
-               }
-               else
-               {
-                  if (trace)
-                     log.trace("Dependencies resolved " + name + " for " + toState.getStateString());
-
-                  if (incrementState(context, trace))
+                  if (fromState.equals(context.getState()) == false)
                   {
-                     resolutions = true;
                      if (trace)
-                        log.trace(name + " " + toState.getStateString());
+                        log.trace("Skipping already installed " + name + " for " + toState.getStateString());
                   }
-                  
+                  else
+                  {
+                     if (trace)
+                        log.trace("Dependencies resolved " + name + " for " + toState.getStateString());
+
+                     if (incrementState(context, trace))
+                     {
+                        resolutions = true;
+                        if (trace)
+                           log.trace(name + " " + toState.getStateString());
+                     }
+                     
+                  }
                }
+               finally
+               {
+                  installing.remove(context);
+               }
             }
-            finally
-            {
+         }
+         finally
+         {
+            // If we get here something has gone seriously wrong,
+            // but try to tidyup as much state as possible
+            for (ControllerContext context : toProcess)
                installing.remove(context);
-            }
          }
       }
 




More information about the jboss-cvs-commits mailing list