/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

  1. package config;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import org.apache.log4j.Logger;
  5. import play.Play;
  6. import play.modules.guice.GuiceSupport;
  7. import security.Secure;
  8. import com.google.inject.AbstractModule;
  9. import com.google.inject.Guice;
  10. import com.google.inject.Injector;
  11. import com.google.inject.Module;
  12. import com.google.inject.Stage;
  13. import controllers.fap.InitController;
  14. public class InjectorConfig extends GuiceSupport {
  15. private Logger logger = Logger.getLogger(InjectorConfig.class);
  16. private static Injector injector;
  17. @Override
  18. protected Injector configure() {
  19. injector = Guice.createInjector(stage, modulesToLoad());
  20. return injector;
  21. }
  22. public static Injector getInjector(){
  23. return injector;
  24. }
  25. public static <T> T getBean(Class<T> clazz){
  26. return injector.getInstance(clazz);
  27. }
  28. private List<AbstractModule> modulesToLoad(){
  29. List<Class> modules = Play.classloader.getAssignableClasses(AbstractModule.class);
  30. if(modules.isEmpty()){
  31. throw new IllegalStateException("No hay ninguna clase que extienda de AbstractModule");
  32. }
  33. Class appModule = null;
  34. for(Class module : modules){
  35. if(module.getName().equals("config.AppModule")){
  36. appModule = module;
  37. break;
  38. }
  39. }
  40. //Si está el modulo config.AppModule únicamente se carga este
  41. if(appModule != null){
  42. modules.clear();
  43. modules.add(appModule);
  44. }
  45. List<AbstractModule> modulesInstances = new ArrayList<AbstractModule>();
  46. for(Class module : modules){
  47. try {
  48. modulesInstances.add((AbstractModule) module.newInstance());
  49. play.Logger.info("Instanciado módulo " + module.getName());
  50. }catch(Exception e){
  51. logger.debug("Error instanciando módulo " + module.getName());
  52. }
  53. }
  54. return modulesInstances;
  55. }
  56. }