package com.github.hburgmeier.jerseyoauth2.testsuite.rs2.guice;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;

import com.github.hburgmeier.jerseyoauth2.authsrv.impl.guice.AuthorizationServerModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.servlet.GuiceServletContextListener;

public class ContextListener  extends GuiceServletContextListener {

	   @Override
	   protected Injector getInjector() {
	      Injector injector = Guice.createInjector(
	    		  new AuthorizationServerModule(),
	    		  new AppModule());
	      return injector;
	   }
	   
		@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);
		}	   
}