mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-02 16:05:29 +00:00
fix circular dependency checking
This commit is contained in:
parent
84537e2f99
commit
7bf1ba13c8
@ -1 +1 @@
|
||||
Subproject commit 63f9078601657ce79cfd7a94c926ccbb63eed73a
|
||||
Subproject commit 56bac927999a4a82f36ab2696885f2b35e1fc008
|
@ -1 +1 @@
|
||||
Subproject commit 648e8a70060fed2d84bdcec17a9e9c742039a3f3
|
||||
Subproject commit d2cd833fcfc06f5785bf74ac9fb0b104908604c3
|
@ -1 +1 @@
|
||||
Subproject commit 9aca4dad904dc1e0b4a4e2e8cb89683e68890aa7
|
||||
Subproject commit bf177a6c93a3757954a699ce0ef4aeb9e766bc8e
|
@ -42,25 +42,31 @@ public class DependencySorter {
|
||||
|
||||
sortDependencies(dependency, sort);
|
||||
|
||||
if(sort.contains(dependency)) {
|
||||
throw new CircularDependencyException(
|
||||
"Addon " + addon.getID() + " has circular dependency beginning with " + dependency.getID());
|
||||
}
|
||||
|
||||
|
||||
sort.add(dependency); // add it to the list.
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void checkDependencies(BaseAddon base, BaseAddon current) {
|
||||
current.getDependencies().forEach((id, range) -> {
|
||||
BaseAddon dependency = addons.get(id);
|
||||
if(dependency.getID().equals(base.getID())) {
|
||||
throw new CircularDependencyException(
|
||||
"Addon " + base.getID() + " has circular dependency beginning with " + dependency.getID());
|
||||
}
|
||||
checkDependencies(base, dependency);
|
||||
});
|
||||
}
|
||||
public List<BaseAddon> sort() {
|
||||
List<BaseAddon> sorted = new ArrayList<>();
|
||||
|
||||
for(int i = addonList.size() - 1; i >= 0; i--) {
|
||||
BaseAddon addon = addonList.get(i);
|
||||
|
||||
checkDependencies(addon, addon);
|
||||
|
||||
addonList.remove(i);
|
||||
|
||||
System.out.println(addon.getID() + ": " + visited.get(addon.getID()));
|
||||
|
||||
if(!visited.get(addon.getID())) {
|
||||
sortDependencies(addon, sorted);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user