...
 
Commits (2)
package de.bps.asist.core.manager; package de.bps.asist.core.manager;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import de.bps.asist.module.AbstractAsistModule; import de.bps.asist.module.AbstractAsistModule;
public class ASiSTModuleManager { public class ASiSTModuleManager {
private static final ASiSTModuleManager INSTANCE = new ASiSTModuleManager(); private static final ASiSTModuleManager INSTANCE = new ASiSTModuleManager();
private List<AbstractAsistModule> modules = new ArrayList<>(); private Map<Class<? extends AbstractAsistModule>, AbstractAsistModule> modules = Collections.synchronizedMap(new LinkedHashMap<Class<? extends AbstractAsistModule>, AbstractAsistModule>());
private ASiSTModuleManager(){ private ASiSTModuleManager(){
} }
...@@ -18,23 +21,20 @@ public class ASiSTModuleManager { ...@@ -18,23 +21,20 @@ public class ASiSTModuleManager {
return INSTANCE; return INSTANCE;
} }
public void resetModuleList(){ public void resetModuleList() {
modules = new ArrayList<>(); this.modules.clear();
} }
public void register(AbstractAsistModule module){ public void register(AbstractAsistModule module) {
modules.add(module); this.modules.put(module.getClass(), module);
} }
public <T extends AbstractAsistModule> T getModule( Class<T> moduleClass, T defaultValue ) { public <T extends AbstractAsistModule> T getModule(Class<T> moduleClass, T defaultValue) {
T resultModule = defaultValue; T module = (T) this.modules.get(moduleClass);
for ( AbstractAsistModule registeredModule: this.modules ) { if (module == null) {
if( moduleClass.isInstance( registeredModule ) ) { module = defaultValue;
defaultValue = (T)registeredModule;
break;
}
} }
return resultModule; return module;
} }
public <T extends AbstractAsistModule> T getModule( Class<T> moduleClass) { public <T extends AbstractAsistModule> T getModule( Class<T> moduleClass) {
...@@ -42,7 +42,6 @@ public class ASiSTModuleManager { ...@@ -42,7 +42,6 @@ public class ASiSTModuleManager {
} }
public List<AbstractAsistModule> getModules() { public List<AbstractAsistModule> getModules() {
return modules; return new ArrayList<>(modules.values());
} }
}
} \ No newline at end of file