public static void identifyCyclicDependency(ModuleImpl m, Logger logger) { StringBuffer tree = new StringBuffer(); tree.append(m.getName()); Vector<Module> traversed = new Vector<Module>(); boolean success = traverseAndFind(m, m, traversed); if (success) { traversed.remove(0); for (Module mod : traversed) { tree.append("-->" + mod.getName()); } tree.append("-->" + m.getName()); logger.log(Level.SEVERE, "Cyclic dependency : " + tree.toString()); } }
Utils.identifyCyclicDependency(this, Logger.getAnonymousLogger()); throw new ResolveError("Cyclic dependency with " + getName());
Utils.identifyCyclicDependency(this, Logger.getAnonymousLogger()); throw new ResolveError("Cyclic dependency with " + getName());
public static void identifyCyclicDependency(ModuleImpl m, Logger logger) { StringBuffer tree = new StringBuffer(); tree.append(m.getName()); Vector<Module> traversed = new Vector<Module>(); boolean success = traverseAndFind(m, m, traversed); if (success) { traversed.remove(0); for (Module mod : traversed) { tree.append("-->" + mod.getName()); } tree.append("-->" + m.getName()); logger.log(Level.SEVERE, "Cyclic dependency : " + tree.toString()); } }
static private boolean traverseAndFind(Module toTraverse, ModuleImpl toFind, Vector<Module> traversed) { traversed.add(toTraverse); for (ModuleDependency md : toTraverse.getModuleDefinition().getDependencies()) { ModulesRegistry registry = toTraverse.getRegistry(); for (Module mod : registry.getModules()) { if (mod.getName().equals(md.getName())) { if (mod!=null) { if (mod.getName().equals(toFind.getName())) { return true; } if (traverseAndFind(mod, toFind, traversed)) { return true; } } } } } traversed.remove(toTraverse); return false; } }
static private boolean traverseAndFind(Module toTraverse, ModuleImpl toFind, Vector<Module> traversed) { traversed.add(toTraverse); for (ModuleDependency md : toTraverse.getModuleDefinition().getDependencies()) { ModulesRegistry registry = toTraverse.getRegistry(); for (Module mod : registry.getModules()) { if (mod.getName().equals(md.getName())) { if (mod!=null) { if (mod.getName().equals(toFind.getName())) { return true; } if (traverseAndFind(mod, toFind, traversed)) { return true; } } } } } traversed.remove(toTraverse); return false; } }