Maven-Plugin "Hibernate 4" implementiert
[percentcodec] / test / src / main / java / de / halbekunst / juplo / test / TestServlet.java
1 package de.halbekunst.juplo.test;
2
3 import java.io.IOException;
4 import java.util.Map;
5 import javax.servlet.RequestDispatcher;
6 import javax.servlet.ServletException;
7 import javax.servlet.ServletOutputStream;
8 import javax.servlet.http.HttpServlet;
9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
13
14 /**
15  *
16  * @author kai
17  */
18 public class TestServlet extends HttpServlet {
19   private final static Logger log = LoggerFactory.getLogger(TestServlet.class);
20
21   private static final String FORWARDED = TestServlet.class.getName() + ".FORWARDED";
22   private static final String INCLUDED = TestServlet.class.getName() + ".INCLUDED";
23
24   @Override
25   protected long getLastModified(HttpServletRequest req) {
26     try {
27       /** Der Reqeust-Parameter "lm" wird als Wert für Last-Modified zurückgegeben */
28       return Long.parseLong(req.getParameter("l"));
29     }
30     catch (Exception e) {
31       return -1l;
32     }
33   }
34
35   @Override
36   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
37     /** Angeforderte Header setzen */
38     Map<String, String[]> map = request.getParameterMap();
39     for (String param : map.keySet()) {
40       if (param.equals("n") || param.equals("l") || param.equals("f") || param.equals("i"))
41         continue;
42       /**
43        * Alle Request-Parameter außer die Sonder-Parameter "n" und "lm"
44        * werden als Schlüssel/Wert-Paare für die Antwort-Header interpretiert!
45        */
46       for (String value : map.get(param))
47         response.setHeader(param, value);
48     }
49
50     int n = 0;
51     try {
52       /**
53        * Wenn der Parameter n gesetzt ist, wird ein Antwort-Body erzeugt, der
54        * exakt die Anzahl der geforderten Bytes enthält.
55        */
56       n = Integer.parseInt(request.getParameter("n"));
57     }
58     catch(Exception e) {}
59     log.debug("GET {} bytes: {}", n, request.getRequestURI());
60     ServletOutputStream out = response.getOutputStream();
61     for (int i=0; i<n; i++)
62       out.write(i%2 + 48); /** ASCII-Codes für "0" und "1" */
63
64     if (request.getParameter("i") != null && request.getAttribute(INCLUDED) == null) {
65       for (String include : request.getParameterValues("i")) {
66         RequestDispatcher dispatcher = request.getRequestDispatcher(include);
67         request.setAttribute(INCLUDED, include);
68         dispatcher.include(request, response);
69       }
70     }
71
72     if (request.getParameter("f") != null && request.getAttribute(FORWARDED) == null) {
73       String forward = request.getParameter("f");
74       request.setAttribute(FORWARDED, forward);
75       RequestDispatcher dispatcher = request.getRequestDispatcher(forward);
76       dispatcher.forward(request, response);
77     }
78   }
79 }