package plugins; import module.Dependencies; import play.Application; import play.Logger; import play.Logger.ALogger; import play.Plugin; import com.google.inject.Guice; import com.google.inject.Injector; public class GuicePlugin extends Plugin { private static ALogger log = Logger.of(GuicePlugin.class); private Injector injector = null; private static GuicePlugin instance; public GuicePlugin(Application app) { super(); } public <T> T getInstance(Class<T> paramClass) { if (this.injector == null) log.warn("injector is null - perhaps plugin is not configured before GlobalPlugin or onStart was not called yet"); return this.injector.getInstance(paramClass); } private static Injector createInjector() { return Guice.createInjector(new Dependencies()); } public void onStart() { log.info("starting " + getClass().getSimpleName()); injector = createInjector(); log.info("Injector created."); instance = this; } public void onStop() { super.onStop(); instance = null; } public static GuicePlugin getInstance() { return instance; } }