Added Dependency Checks into the Module System.
Why a Dependency Check system was added?
This commit is contained in:
parent
8d8c30c9a7
commit
cc92ef953a
|
@ -4,10 +4,10 @@
|
||||||
"Collection": true,
|
"Collection": true,
|
||||||
"Function": true,
|
"Function": true,
|
||||||
"List": true,
|
"List": true,
|
||||||
"Map": false,
|
"Map": true,
|
||||||
"Pair": true,
|
"Pair": true,
|
||||||
"PriorityQueue": true,
|
"PriorityQueue": true,
|
||||||
"Set": false,
|
"Set": true,
|
||||||
"Boolean": {
|
"Boolean": {
|
||||||
"Enabled": true,
|
"Enabled": true,
|
||||||
"Base": {
|
"Base": {
|
||||||
|
@ -367,15 +367,15 @@
|
||||||
},
|
},
|
||||||
"Set": {
|
"Set": {
|
||||||
"Enabled": true,
|
"Enabled": true,
|
||||||
"LinkedHashSet": false,
|
"LinkedHashSet": true,
|
||||||
"LinkedCustomHashSet": false,
|
"LinkedCustomHashSet": true,
|
||||||
"OrderedSet": true,
|
"OrderedSet": true,
|
||||||
"ArraySet": true,
|
"ArraySet": true,
|
||||||
"AVLTreeSet": true,
|
"AVLTreeSet": true,
|
||||||
"ImmutableSet": true,
|
"ImmutableSet": true,
|
||||||
"CustomHashSet": true,
|
"CustomHashSet": true,
|
||||||
"Sets": true,
|
"Sets": true,
|
||||||
"SortedSet": false,
|
"SortedSet": true,
|
||||||
"HashSet": true,
|
"HashSet": true,
|
||||||
"RBTreeSet": true
|
"RBTreeSet": true
|
||||||
},
|
},
|
||||||
|
@ -638,15 +638,15 @@
|
||||||
},
|
},
|
||||||
"Set": {
|
"Set": {
|
||||||
"Enabled": true,
|
"Enabled": true,
|
||||||
"LinkedHashSet": false,
|
"LinkedHashSet": true,
|
||||||
"LinkedCustomHashSet": false,
|
"LinkedCustomHashSet": true,
|
||||||
"OrderedSet": true,
|
"OrderedSet": true,
|
||||||
"ArraySet": true,
|
"ArraySet": true,
|
||||||
"AVLTreeSet": true,
|
"AVLTreeSet": true,
|
||||||
"ImmutableSet": true,
|
"ImmutableSet": true,
|
||||||
"CustomHashSet": true,
|
"CustomHashSet": true,
|
||||||
"Sets": true,
|
"Sets": true,
|
||||||
"SortedSet": false,
|
"SortedSet": true,
|
||||||
"HashSet": true,
|
"HashSet": true,
|
||||||
"RBTreeSet": true
|
"RBTreeSet": true
|
||||||
},
|
},
|
||||||
|
@ -909,15 +909,15 @@
|
||||||
},
|
},
|
||||||
"Set": {
|
"Set": {
|
||||||
"Enabled": true,
|
"Enabled": true,
|
||||||
"LinkedHashSet": false,
|
"LinkedHashSet": true,
|
||||||
"LinkedCustomHashSet": false,
|
"LinkedCustomHashSet": true,
|
||||||
"OrderedSet": true,
|
"OrderedSet": true,
|
||||||
"ArraySet": true,
|
"ArraySet": true,
|
||||||
"AVLTreeSet": true,
|
"AVLTreeSet": true,
|
||||||
"ImmutableSet": true,
|
"ImmutableSet": true,
|
||||||
"CustomHashSet": true,
|
"CustomHashSet": true,
|
||||||
"Sets": true,
|
"Sets": true,
|
||||||
"SortedSet": false,
|
"SortedSet": true,
|
||||||
"HashSet": true,
|
"HashSet": true,
|
||||||
"RBTreeSet": true
|
"RBTreeSet": true
|
||||||
},
|
},
|
||||||
|
@ -1180,15 +1180,15 @@
|
||||||
},
|
},
|
||||||
"Set": {
|
"Set": {
|
||||||
"Enabled": true,
|
"Enabled": true,
|
||||||
"LinkedHashSet": false,
|
"LinkedHashSet": true,
|
||||||
"LinkedCustomHashSet": false,
|
"LinkedCustomHashSet": true,
|
||||||
"OrderedSet": true,
|
"OrderedSet": true,
|
||||||
"ArraySet": true,
|
"ArraySet": true,
|
||||||
"AVLTreeSet": true,
|
"AVLTreeSet": true,
|
||||||
"ImmutableSet": true,
|
"ImmutableSet": true,
|
||||||
"CustomHashSet": true,
|
"CustomHashSet": true,
|
||||||
"Sets": true,
|
"Sets": true,
|
||||||
"SortedSet": false,
|
"SortedSet": true,
|
||||||
"HashSet": true,
|
"HashSet": true,
|
||||||
"RBTreeSet": true
|
"RBTreeSet": true
|
||||||
},
|
},
|
||||||
|
@ -1451,15 +1451,15 @@
|
||||||
},
|
},
|
||||||
"Set": {
|
"Set": {
|
||||||
"Enabled": true,
|
"Enabled": true,
|
||||||
"LinkedHashSet": false,
|
"LinkedHashSet": true,
|
||||||
"LinkedCustomHashSet": false,
|
"LinkedCustomHashSet": true,
|
||||||
"OrderedSet": true,
|
"OrderedSet": true,
|
||||||
"ArraySet": true,
|
"ArraySet": true,
|
||||||
"AVLTreeSet": true,
|
"AVLTreeSet": true,
|
||||||
"ImmutableSet": true,
|
"ImmutableSet": true,
|
||||||
"CustomHashSet": true,
|
"CustomHashSet": true,
|
||||||
"Sets": true,
|
"Sets": true,
|
||||||
"SortedSet": false,
|
"SortedSet": true,
|
||||||
"HashSet": true,
|
"HashSet": true,
|
||||||
"RBTreeSet": true
|
"RBTreeSet": true
|
||||||
},
|
},
|
||||||
|
@ -1722,15 +1722,15 @@
|
||||||
},
|
},
|
||||||
"Set": {
|
"Set": {
|
||||||
"Enabled": true,
|
"Enabled": true,
|
||||||
"LinkedHashSet": false,
|
"LinkedHashSet": true,
|
||||||
"LinkedCustomHashSet": false,
|
"LinkedCustomHashSet": true,
|
||||||
"OrderedSet": true,
|
"OrderedSet": true,
|
||||||
"ArraySet": true,
|
"ArraySet": true,
|
||||||
"AVLTreeSet": true,
|
"AVLTreeSet": true,
|
||||||
"ImmutableSet": true,
|
"ImmutableSet": true,
|
||||||
"CustomHashSet": true,
|
"CustomHashSet": true,
|
||||||
"Sets": true,
|
"Sets": true,
|
||||||
"SortedSet": false,
|
"SortedSet": true,
|
||||||
"HashSet": true,
|
"HashSet": true,
|
||||||
"RBTreeSet": true
|
"RBTreeSet": true
|
||||||
},
|
},
|
||||||
|
@ -1993,15 +1993,15 @@
|
||||||
},
|
},
|
||||||
"Set": {
|
"Set": {
|
||||||
"Enabled": true,
|
"Enabled": true,
|
||||||
"LinkedHashSet": false,
|
"LinkedHashSet": true,
|
||||||
"LinkedCustomHashSet": false,
|
"LinkedCustomHashSet": true,
|
||||||
"OrderedSet": true,
|
"OrderedSet": true,
|
||||||
"ArraySet": true,
|
"ArraySet": true,
|
||||||
"AVLTreeSet": true,
|
"AVLTreeSet": true,
|
||||||
"ImmutableSet": true,
|
"ImmutableSet": true,
|
||||||
"CustomHashSet": true,
|
"CustomHashSet": true,
|
||||||
"Sets": true,
|
"Sets": true,
|
||||||
"SortedSet": false,
|
"SortedSet": true,
|
||||||
"HashSet": true,
|
"HashSet": true,
|
||||||
"RBTreeSet": true
|
"RBTreeSet": true
|
||||||
},
|
},
|
||||||
|
@ -2264,15 +2264,15 @@
|
||||||
},
|
},
|
||||||
"Set": {
|
"Set": {
|
||||||
"Enabled": true,
|
"Enabled": true,
|
||||||
"LinkedHashSet": false,
|
"LinkedHashSet": true,
|
||||||
"LinkedCustomHashSet": false,
|
"LinkedCustomHashSet": true,
|
||||||
"OrderedSet": true,
|
"OrderedSet": true,
|
||||||
"ArraySet": true,
|
"ArraySet": true,
|
||||||
"AVLTreeSet": true,
|
"AVLTreeSet": true,
|
||||||
"ImmutableSet": true,
|
"ImmutableSet": true,
|
||||||
"CustomHashSet": true,
|
"CustomHashSet": true,
|
||||||
"Sets": true,
|
"Sets": true,
|
||||||
"SortedSet": false,
|
"SortedSet": true,
|
||||||
"HashSet": true,
|
"HashSet": true,
|
||||||
"RBTreeSet": true
|
"RBTreeSet": true
|
||||||
},
|
},
|
||||||
|
|
|
@ -122,28 +122,45 @@ public class PrimitiveCollectionsBuilder extends TemplateProcessor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<BaseModule> createModules()
|
||||||
|
{
|
||||||
|
List<BaseModule> modules = new ArrayList<>();
|
||||||
|
modules.add(JavaModule.INSTANCE);
|
||||||
|
modules.add(FunctionModule.INSTANCE);
|
||||||
|
modules.add(CollectionModule.INSTANCE);
|
||||||
|
modules.add(PrioQueueModule.INSTANCE);
|
||||||
|
modules.add(ListModule.INSTANCE);
|
||||||
|
modules.add(SetModule.INSTANCE);
|
||||||
|
modules.add(MapModule.INSTANCE);
|
||||||
|
modules.add(PairModule.INSTANCE);
|
||||||
|
modules.add(AsyncModule.INSTANCE);
|
||||||
|
return modules;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void init()
|
protected void init()
|
||||||
{
|
{
|
||||||
prepPackages();
|
prepPackages();
|
||||||
//Init Modules here
|
//Init Modules here
|
||||||
addModule(new JavaModule());
|
addModules(createModules());
|
||||||
addModule(new FunctionModule());
|
|
||||||
addModule(new CollectionModule());
|
|
||||||
addModule(new PrioQueueModule());
|
|
||||||
addModule(new ListModule());
|
|
||||||
addModule(new SetModule());
|
|
||||||
addModule(new MapModule());
|
|
||||||
addModule(new PairModule());
|
|
||||||
addModule(new AsyncModule());
|
|
||||||
finishPackages();
|
finishPackages();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addModule(BaseModule module)
|
public void addModules(List<BaseModule> modules)
|
||||||
{
|
{
|
||||||
module.setManager(manager);
|
if((flags & LOAD) != 0)
|
||||||
biPackages.forEach(module::init);
|
{
|
||||||
module.cleanup();
|
for(int i = 0,m=modules.size();i<m;i++) {
|
||||||
|
modules.get(i).setManager(manager);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int i = 0,m=modules.size();i<m;i++) {
|
||||||
|
biPackages.forEach(modules.get(i)::init);
|
||||||
|
}
|
||||||
|
for(int i = 0,m=modules.size();i<m;i++) {
|
||||||
|
modules.get(i).cleanup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void finishPackages()
|
private void finishPackages()
|
||||||
|
@ -239,7 +256,7 @@ public class PrimitiveCollectionsBuilder extends TemplateProcessor
|
||||||
boolean force = flags.contains("force");
|
boolean force = flags.contains("force");
|
||||||
boolean tests = flags.contains("tests");
|
boolean tests = flags.contains("tests");
|
||||||
boolean forceTests = flags.contains("force-tests");
|
boolean forceTests = flags.contains("force-tests");
|
||||||
boolean load = flags.contains("load");
|
boolean load = !flags.contains("load");
|
||||||
boolean save = flags.contains("save");
|
boolean save = flags.contains("save");
|
||||||
int flag = (load ? LOAD : 0) | (save ? SAVE : 0);
|
int flag = (load ? LOAD : 0) | (save ? SAVE : 0);
|
||||||
new PrimitiveCollectionsBuilder(silent).setFlags(flag).process(force);
|
new PrimitiveCollectionsBuilder(silent).setFlags(flag).process(force);
|
||||||
|
|
|
@ -3,6 +3,8 @@ package speiger.src.builder.modules;
|
||||||
@SuppressWarnings("javadoc")
|
@SuppressWarnings("javadoc")
|
||||||
public class AsyncModule extends BaseModule
|
public class AsyncModule extends BaseModule
|
||||||
{
|
{
|
||||||
|
public static final BaseModule INSTANCE = new AsyncModule();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getModuleName() { return "Async"; }
|
public String getModuleName() { return "Async"; }
|
||||||
@Override
|
@Override
|
||||||
|
@ -14,6 +16,8 @@ public class AsyncModule extends BaseModule
|
||||||
@Override
|
@Override
|
||||||
protected void loadFunctions() {}
|
protected void loadFunctions() {}
|
||||||
@Override
|
@Override
|
||||||
|
protected boolean areDependenciesLoaded() { return isDependencyLoaded(CollectionModule.INSTANCE); }
|
||||||
|
@Override
|
||||||
protected void loadBlockades() {
|
protected void loadBlockades() {
|
||||||
if(!isModuleEnabled()) {
|
if(!isModuleEnabled()) {
|
||||||
addBlockedFiles("AsyncBuilder");
|
addBlockedFiles("AsyncBuilder");
|
||||||
|
|
|
@ -60,11 +60,23 @@ public abstract class BaseModule
|
||||||
public boolean isModuleValid(ClassType keyType, ClassType valueType) { return true; }
|
public boolean isModuleValid(ClassType keyType, ClassType valueType) { return true; }
|
||||||
|
|
||||||
protected boolean isModuleEnabled() {
|
protected boolean isModuleEnabled() {
|
||||||
return manager == null || manager.isModuleEnabled(this, keyType, valueType);
|
return manager == null || (manager.isModuleEnabled(this, keyType, valueType) && areDependenciesLoaded());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean isModuleEnabled(String name) {
|
protected boolean isModuleEnabled(String name) {
|
||||||
return manager == null || manager.isModuleEnabled(this, keyType, valueType, name);
|
return manager == null || (manager.isModuleEnabled(this, keyType, valueType, name) && areDependenciesLoaded());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean isDependencyLoaded(BaseModule module) {
|
||||||
|
return isDependencyLoaded(module, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean isDependencyLoaded(BaseModule module, boolean key) {
|
||||||
|
return manager == null || (module.isBiModule() ? manager.isModuleEnabled(module, keyType, valueType) : (key ? manager.isModuleEnabled(module, keyType, keyType) : manager.isModuleEnabled(module, valueType, valueType)));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean areDependenciesLoaded() {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void addFlag(String name) {
|
protected void addFlag(String name) {
|
||||||
|
|
|
@ -5,6 +5,8 @@ import speiger.src.builder.ClassType;
|
||||||
@SuppressWarnings("javadoc")
|
@SuppressWarnings("javadoc")
|
||||||
public class CollectionModule extends BaseModule
|
public class CollectionModule extends BaseModule
|
||||||
{
|
{
|
||||||
|
public static final BaseModule INSTANCE = new CollectionModule();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getModuleName() { return "Collection"; }
|
public String getModuleName() { return "Collection"; }
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -3,6 +3,8 @@ package speiger.src.builder.modules;
|
||||||
@SuppressWarnings("javadoc")
|
@SuppressWarnings("javadoc")
|
||||||
public class FunctionModule extends BaseModule
|
public class FunctionModule extends BaseModule
|
||||||
{
|
{
|
||||||
|
public static final BaseModule INSTANCE = new FunctionModule();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getModuleName() { return "Function"; }
|
public String getModuleName() { return "Function"; }
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -5,6 +5,8 @@ import speiger.src.builder.ClassType;
|
||||||
@SuppressWarnings("javadoc")
|
@SuppressWarnings("javadoc")
|
||||||
public class JavaModule extends BaseModule
|
public class JavaModule extends BaseModule
|
||||||
{
|
{
|
||||||
|
public static final BaseModule INSTANCE = new JavaModule();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getModuleName() { return "Base"; }
|
public String getModuleName() { return "Base"; }
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -9,6 +9,8 @@ import speiger.src.builder.ClassType;
|
||||||
@SuppressWarnings("javadoc")
|
@SuppressWarnings("javadoc")
|
||||||
public class ListModule extends BaseModule
|
public class ListModule extends BaseModule
|
||||||
{
|
{
|
||||||
|
public static final BaseModule INSTANCE = new ListModule();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getModuleName() { return "List"; }
|
public String getModuleName() { return "List"; }
|
||||||
@Override
|
@Override
|
||||||
|
@ -38,11 +40,15 @@ public class ListModule extends BaseModule
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<String> getModuleKeys(ClassType keyType, ClassType valueType)
|
public Set<String> getModuleKeys(ClassType keyType, ClassType valueType) {
|
||||||
{
|
|
||||||
return new HashSet<>(Arrays.asList("Lists", "ArrayList", "LinkedList", "ImmutableList", "CopyOnWriteList"));
|
return new HashSet<>(Arrays.asList("Lists", "ArrayList", "LinkedList", "ImmutableList", "CopyOnWriteList"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean areDependenciesLoaded() {
|
||||||
|
return isDependencyLoaded(CollectionModule.INSTANCE);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void loadRemappers()
|
protected void loadRemappers()
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,6 +9,8 @@ import speiger.src.builder.ClassType;
|
||||||
@SuppressWarnings("javadoc")
|
@SuppressWarnings("javadoc")
|
||||||
public class MapModule extends BaseModule
|
public class MapModule extends BaseModule
|
||||||
{
|
{
|
||||||
|
public static final BaseModule INSTANCE = new MapModule();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getModuleName() { return "Map"; }
|
public String getModuleName() { return "Map"; }
|
||||||
@Override
|
@Override
|
||||||
|
@ -32,6 +34,11 @@ public class MapModule extends BaseModule
|
||||||
return sets;
|
return sets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean areDependenciesLoaded() {
|
||||||
|
return isDependencyLoaded(SetModule.INSTANCE) && isDependencyLoaded(CollectionModule.INSTANCE, false);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void loadFlags()
|
protected void loadFlags()
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,6 +3,7 @@ package speiger.src.builder.modules;
|
||||||
@SuppressWarnings("javadoc")
|
@SuppressWarnings("javadoc")
|
||||||
public class PairModule extends BaseModule
|
public class PairModule extends BaseModule
|
||||||
{
|
{
|
||||||
|
public static final BaseModule INSTANCE = new PairModule();
|
||||||
@Override
|
@Override
|
||||||
public String getModuleName() { return "Pair"; }
|
public String getModuleName() { return "Pair"; }
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -5,6 +5,8 @@ import speiger.src.builder.ClassType;
|
||||||
@SuppressWarnings("javadoc")
|
@SuppressWarnings("javadoc")
|
||||||
public class PrioQueueModule extends BaseModule
|
public class PrioQueueModule extends BaseModule
|
||||||
{
|
{
|
||||||
|
public static final BaseModule INSTANCE = new PrioQueueModule();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getModuleName() { return "PriorityQueue"; }
|
public String getModuleName() { return "PriorityQueue"; }
|
||||||
@Override
|
@Override
|
||||||
|
@ -13,7 +15,8 @@ public class PrioQueueModule extends BaseModule
|
||||||
protected void loadFlags() {}
|
protected void loadFlags() {}
|
||||||
@Override
|
@Override
|
||||||
protected void loadFunctions() {}
|
protected void loadFunctions() {}
|
||||||
|
@Override
|
||||||
|
protected boolean areDependenciesLoaded() { return isDependencyLoaded(CollectionModule.INSTANCE); }
|
||||||
@Override
|
@Override
|
||||||
protected void loadBlockades()
|
protected void loadBlockades()
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,20 +9,19 @@ import speiger.src.builder.ClassType;
|
||||||
@SuppressWarnings("javadoc")
|
@SuppressWarnings("javadoc")
|
||||||
public class SetModule extends BaseModule
|
public class SetModule extends BaseModule
|
||||||
{
|
{
|
||||||
|
public static final BaseModule INSTANCE = new SetModule();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getModuleName() { return "Set"; }
|
public String getModuleName() { return "Set"; }
|
||||||
@Override
|
@Override
|
||||||
protected void loadVariables() {}
|
protected void loadVariables() {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isModuleValid(ClassType keyType, ClassType valueType)
|
public boolean isModuleValid(ClassType keyType, ClassType valueType) { return keyType != ClassType.BOOLEAN; }
|
||||||
{
|
|
||||||
return keyType != ClassType.BOOLEAN;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<String> getModuleKeys(ClassType keyType, ClassType valueType)
|
protected boolean areDependenciesLoaded() { return isDependencyLoaded(CollectionModule.INSTANCE); }
|
||||||
{
|
@Override
|
||||||
|
public Set<String> getModuleKeys(ClassType keyType, ClassType valueType) {
|
||||||
Set<String> sets = new HashSet<>();
|
Set<String> sets = new HashSet<>();
|
||||||
sets.add("Sets");
|
sets.add("Sets");
|
||||||
sets.addAll(Arrays.asList("OrderedSet", "SortedSet"));
|
sets.addAll(Arrays.asList("OrderedSet", "SortedSet"));
|
||||||
|
|
Loading…
Reference in New Issue