package samplecdi;

import java.io.IOException;
import java.io.PrintWriter;

import javax.enterprise.inject.Instance;
import javax.enterprise.inject.spi.CDI;
import javax.inject.Inject;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/WebServ")
public class TestServlet extends HttpServlet {

	private static final long serialVersionUID = 526584799065121386L;
	
	@Inject Instance<CdiBean> beanOne; // This bean's @PreDestroy method is called
	
	@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
		PrintWriter printWriter = response.getWriter();
		
		beanOne.get().doNothing("Servlet Instance");
		CDI.current().select(CdiBean.class).get().doNothing("CDI current"); // This bean's @PreDestroy method is not called
		request.getSession().invalidate();
		
		printWriter.write("done");
		printWriter.flush();
		printWriter.close();
	}
	
	@Override
	protected void finalize()
	{
		System.out.println("Destroyed: " + this);
	}

}
