diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorter.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorter.java index 2ac4d2636..012a79793 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorter.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorter.java @@ -40,15 +40,14 @@ public class ScriptDependenciesSorter implements IScriptsRegister { private List extract(Set alreadyAdded, ScriptDependency scriptDependency) { List result = new ArrayList(); + if (alreadyAdded.contains(scriptDependency)) { + return result; + } for (ScriptDependency d : scriptDependency.getDependsOn()) { - if (!alreadyAdded.contains(d)) { - result.addAll(extract(alreadyAdded, d)); - } - } - if (!alreadyAdded.contains(scriptDependency)) { - result.add(scriptDependency); - alreadyAdded.add(scriptDependency); + result.addAll(extract(alreadyAdded, d)); } + result.add(scriptDependency); + alreadyAdded.add(scriptDependency); return result; } diff --git a/ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorterTest.java b/ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorterTest.java index f50ad19f4..8653a588b 100644 --- a/ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorterTest.java +++ b/ganttzk/src/test/java/org/zkoss/ganttz/util/script/ScriptDependenciesSorterTest.java @@ -52,8 +52,9 @@ public class ScriptDependenciesSorterTest { .asList(new ScriptDependency("B")))); scriptDependenciesSorter.add(new ScriptDependency("C", Arrays .asList(new ScriptDependency("B")))); + scriptDependenciesSorter.add(new ScriptDependency("D")); assertThat(scriptDependenciesSorter.getScriptDependenciesOrderered(), - scriptsReturnedAre("B", "A", "C")); + scriptsReturnedAre("B", "A", "C", "D")); } private Matcher> scriptsReturnedAre(String... urls) {