package org.jboss.weld.tests.servlet.dispatch;
import java.io.IOException;
import javax.inject.Inject;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
@WebServlet("/main/*")
public class MainServlet extends HttpServlet {
@Inject
private FirstBean bean;
@Inject
private TestBean tester;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
if (req.getRequestURI().contains("dispatch")) {
bean.getValue(); // just verify that the request context is active
// if crossContext is set to true we are dispatching to app2, otherwise we are dispatching locally
ServletContext ctx = req.getServletContext();
if (Boolean.parseBoolean(req.getParameter("crossContext"))) {
ctx = ctx.getContext("/app2");
}
if (req.getRequestURI().endsWith("/include")) {
// /main/dispatch/include
ctx.getRequestDispatcher("/content").include(req, resp);
} else if (req.getRequestURI().endsWith("/forward")) {
// /main/dispatch/forward
ctx.getRequestDispatcher("/content").forward(req, resp);
}
} else if (req.getRequestURI().endsWith("/reset")) {
tester.reset();
} else if (req.getRequestURI().endsWith("/validate")) {
resp.setContentType("text/plain");
if (tester.isOk()) {
resp.getWriter().write(String.valueOf(tester.isOk()));
} else {
resp.getWriter().write("constructions: " + tester.getConstructions() + ", destructions: " + tester.getDestructions());
}
}
}
}