/fap/app/config/InjectorConfig.java
https://github.com/FAP-Team/Fap-Module · Java · 76 lines · 55 code · 20 blank · 1 comment · 6 complexity · 8d0e5ccc9de9ca0cdd588fc91b4b54c3 MD5 · raw file
- package config;
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.log4j.Logger;
- import play.Play;
- import play.modules.guice.GuiceSupport;
- import security.Secure;
- import com.google.inject.AbstractModule;
- import com.google.inject.Guice;
- import com.google.inject.Injector;
- import com.google.inject.Module;
- import com.google.inject.Stage;
- import controllers.fap.InitController;
- public class InjectorConfig extends GuiceSupport {
- private Logger logger = Logger.getLogger(InjectorConfig.class);
-
- private static Injector injector;
-
- @Override
- protected Injector configure() {
- injector = Guice.createInjector(stage, modulesToLoad());
- return injector;
- }
- public static Injector getInjector(){
- return injector;
- }
-
- public static <T> T getBean(Class<T> clazz){
- return injector.getInstance(clazz);
- }
-
- private List<AbstractModule> modulesToLoad(){
- List<Class> modules = Play.classloader.getAssignableClasses(AbstractModule.class);
-
- if(modules.isEmpty()){
- throw new IllegalStateException("No hay ninguna clase que extienda de AbstractModule");
- }
-
- Class appModule = null;
- for(Class module : modules){
- if(module.getName().equals("config.AppModule")){
- appModule = module;
- break;
- }
- }
-
- //Si está el modulo config.AppModule únicamente se carga este
- if(appModule != null){
- modules.clear();
- modules.add(appModule);
- }
-
- List<AbstractModule> modulesInstances = new ArrayList<AbstractModule>();
- for(Class module : modules){
- try {
- modulesInstances.add((AbstractModule) module.newInstance());
- play.Logger.info("Instanciado módulo " + module.getName());
- }catch(Exception e){
- logger.debug("Error instanciando módulo " + module.getName());
- }
- }
-
- return modulesInstances;
- }
-
- }