]> git.argeo.org Git - gpl/argeo-suite.git/blob - org.argeo.app.servlet.odk/src/org/argeo/app/servlet/odk/OdkFormServlet.java
UI time out working
[gpl/argeo-suite.git] / org.argeo.app.servlet.odk / src / org / argeo / app / servlet / odk / OdkFormServlet.java
1 package org.argeo.app.servlet.odk;
2
3 import java.io.IOException;
4 import java.net.URLDecoder;
5 import java.nio.charset.StandardCharsets;
6
7 import javax.jcr.Repository;
8 import javax.jcr.RepositoryException;
9 import javax.jcr.Session;
10 import javax.servlet.ServletException;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14
15 import org.argeo.app.odk.OdkNames;
16 import org.argeo.cms.auth.RemoteAuthUtils;
17 import org.argeo.cms.servlet.ServletHttpRequest;
18 import org.argeo.jcr.Jcr;
19
20 /** Retrieves a single form. */
21 public class OdkFormServlet extends HttpServlet {
22 private static final long serialVersionUID = 7838305967987687370L;
23
24 private Repository repository;
25
26 @Override
27 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
28 resp.setContentType("text/xml; charset=utf-8");
29
30 Session session = RemoteAuthUtils.doAs(() -> Jcr.login(repository, null), new ServletHttpRequest(req));
31
32 String pathInfo = req.getPathInfo();
33 if (pathInfo.startsWith("//"))
34 pathInfo = pathInfo.substring(1);
35
36 try {
37 String path = URLDecoder.decode(pathInfo, StandardCharsets.UTF_8);
38 session.exportDocumentView(path + "/" + OdkNames.H_HTML, resp.getOutputStream(), true, false);
39 } catch (RepositoryException e) {
40 e.printStackTrace();
41 // TODO error message
42 resp.sendError(500);
43 } finally {
44 Jcr.logout(session);
45 }
46 }
47
48 public void setRepository(Repository repository) {
49 this.repository = repository;
50 }
51
52 }