1 | |
package net.sf.jolene.servlet; |
2 | |
|
3 | |
import net.sf.jolene.util.PrefsReader; |
4 | |
import net.sf.jolene.dom.Document; |
5 | |
import net.sf.jolene.factories.DocumentFactory; |
6 | |
import org.apache.log4j.LogManager; |
7 | |
import org.apache.log4j.Logger; |
8 | |
|
9 | |
import javax.servlet.ServletException; |
10 | |
import javax.servlet.http.HttpServlet; |
11 | |
import javax.servlet.http.HttpServletRequest; |
12 | |
import javax.servlet.http.HttpServletResponse; |
13 | |
import java.io.IOException; |
14 | |
|
15 | |
|
16 | |
|
17 | |
|
18 | |
|
19 | 0 | public class Domlet extends HttpServlet { |
20 | |
|
21 | 0 | private static final Logger log = LogManager.getLogger(Domlet.class); |
22 | |
|
23 | |
|
24 | |
|
25 | |
|
26 | |
|
27 | |
|
28 | |
|
29 | |
@Override |
30 | |
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { |
31 | 0 | handleRequest(request, response); |
32 | 0 | } |
33 | |
|
34 | |
|
35 | |
|
36 | |
|
37 | |
|
38 | |
|
39 | |
|
40 | |
@Override |
41 | |
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { |
42 | 0 | handleRequest(request, response); |
43 | 0 | } |
44 | |
|
45 | |
|
46 | |
|
47 | |
|
48 | |
@Override |
49 | |
public void init() throws ServletException { |
50 | |
|
51 | 0 | log.info("Domlet Initializing PrefsReader..."); |
52 | 0 | PrefsReader.init(); |
53 | 0 | } |
54 | |
|
55 | |
|
56 | |
|
57 | |
|
58 | |
|
59 | |
|
60 | |
|
61 | |
|
62 | |
|
63 | |
protected static void handleRequest(HttpServletRequest request, HttpServletResponse response) throws IOException { |
64 | |
|
65 | 0 | log.debug("handle request"); |
66 | 0 | log.debug("URI: " + request.getRequestURI()); |
67 | 0 | log.debug("URL: " + request.getRequestURL()); |
68 | 0 | log.debug("CP : " + request.getContextPath()); |
69 | 0 | log.debug("SP : " + request.getServletPath()); |
70 | |
|
71 | |
|
72 | |
|
73 | |
|
74 | |
|
75 | 0 | String uri = request.getRequestURI(); |
76 | 0 | if (request.getContextPath().length() > 0) { |
77 | 0 | if (uri.startsWith(request.getContextPath())) { |
78 | |
int n; |
79 | 0 | n = uri.indexOf("/", 1); |
80 | 0 | if (n > -1) { |
81 | 0 | uri = uri.substring(n); |
82 | |
} |
83 | |
} |
84 | |
} |
85 | |
|
86 | |
Document document; |
87 | 0 | if (request.getAttribute(uri) != null) { |
88 | 0 | document = (Document) request.getAttribute(uri); |
89 | |
} else { |
90 | 0 | document = (Document) request.getSession().getAttribute(uri); |
91 | |
} |
92 | |
|
93 | 0 | if (document == null) { |
94 | 0 | log.warn("No document found at request or session level for url " + uri + " attaching a new document to the request."); |
95 | 0 | document = DocumentFactory.getInstance().getDocument(request.getSession().getServletContext().getRealPath(uri), request.getContextPath(), uri); |
96 | |
} |
97 | 0 | log.debug("DOC URI: " + document.getUri()); |
98 | |
|
99 | 0 | document.stream(response.getWriter()); |
100 | 0 | } |
101 | |
|
102 | |
|
103 | |
} |