[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