]>
git.argeo.org Git - gpl/argeo-suite.git/blob - org.argeo.app.servlet.odk/src/org/argeo/app/servlet/odk/OdkFormServlet.java
1 package org
.argeo
.app
.servlet
.odk
;
3 import java
.io
.IOException
;
4 import java
.net
.URLDecoder
;
5 import java
.nio
.charset
.StandardCharsets
;
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
;
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
;
20 /** Retrieves a single form. */
21 public class OdkFormServlet
extends HttpServlet
{
22 private static final long serialVersionUID
= 7838305967987687370L;
24 private Repository repository
;
27 protected void doGet(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
28 resp
.setContentType("text/xml; charset=utf-8");
30 Session session
= RemoteAuthUtils
.doAs(() -> Jcr
.login(repository
, null), new ServletHttpRequest(req
));
32 String pathInfo
= req
.getPathInfo();
33 if (pathInfo
.startsWith("//"))
34 pathInfo
= pathInfo
.substring(1);
37 String path
= URLDecoder
.decode(pathInfo
, StandardCharsets
.UTF_8
);
38 session
.exportDocumentView(path
+ "/" + OdkNames
.H_HTML
, resp
.getOutputStream(), true, false);
39 } catch (RepositoryException e
) {
48 public void setRepository(Repository repository
) {
49 this.repository
= repository
;