package com.github.hburgmeier.jerseyoauth2.guice.utils; import java.util.Collection; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Module; import com.google.inject.servlet.GuiceServletContextListener; public abstract class BaseGuiceServletContextListener extends GuiceServletContextListener { @Override protected final Injector getInjector() { return Guice.createInjector(getApplicationModules()); } protected abstract Collection<? extends Module> getApplicationModules(); @Override public void contextInitialized(ServletContextEvent servletContextEvent) { // No call to super as it also calls getInjector() ServletContext sc = servletContextEvent.getServletContext(); sc.setAttribute(Injector.class.getName(), getInjector()); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { ServletContext sc = servletContextEvent.getServletContext(); sc.removeAttribute(Injector.class.getName()); super.contextDestroyed(servletContextEvent); } }