[jboss-cvs] JBossAS SVN: r98119 - projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Dec 22 09:56:38 EST 2009


Author: bill.burke at jboss.com
Date: 2009-12-22 09:56:37 -0500 (Tue, 22 Dec 2009)
New Revision: 98119

Modified:
   projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/SortedDeployers.java
Log:


Modified: projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/SortedDeployers.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/SortedDeployers.java	2009-12-22 14:43:35 UTC (rev 98118)
+++ projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/SortedDeployers.java	2009-12-22 14:56:37 UTC (rev 98119)
@@ -1,15 +1,16 @@
 package org.jboss.deployers.plugins.sort;
 
+import org.jboss.deployers.spi.deployer.Deployer;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.IdentityHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.jboss.deployers.spi.deployer.Deployer;
-
 /**
  * @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
  * @version $Revision: 1 $
@@ -120,7 +121,8 @@
       }
 
       insertAfterInputs(n);
-      traverseOutputs(n);
+      IdentityHashMap visited = new IdentityHashMap();
+      traverseOutputs(n, visited);
       relativeOrdering();
 
       deployers = new ArrayList<Deployer>();
@@ -176,9 +178,14 @@
       return deployers;
    }
 
-   private void traverseOutputs(Entry n)
+   private void traverseOutputs(Entry n, IdentityHashMap visited)
    {
       if (n.getOutputs() == null) return;
+      if (visited.containsKey(n))
+      {
+         throw new IllegalStateException("Deployer " + n + " is involved in a cyclic dependency.");
+      }
+      visited.put(n, n);
       for (String output : n.getOutputs())
       {
          List<Entry> inputs = inputMap.get(output);
@@ -196,7 +203,7 @@
                   removeAt(deployer.getIndex());
                   deployer.setIndex(0);
                   insertAfterInputs(deployer);
-                  traverseOutputs(deployer);
+                  traverseOutputs(deployer, visited);
                }
             }
          }




More information about the jboss-cvs-commits mailing list