1 package org
.argeo
.support
.odk
.servlet
;
3 import java
.io
.IOException
;
4 import java
.io
.InputStream
;
5 import java
.io
.StringWriter
;
7 import javax
.servlet
.ServletException
;
8 import javax
.servlet
.http
.HttpServlet
;
9 import javax
.servlet
.http
.HttpServletRequest
;
10 import javax
.servlet
.http
.HttpServletResponse
;
11 import javax
.servlet
.http
.Part
;
12 import javax
.xml
.transform
.OutputKeys
;
13 import javax
.xml
.transform
.Transformer
;
14 import javax
.xml
.transform
.TransformerException
;
15 import javax
.xml
.transform
.TransformerFactory
;
16 import javax
.xml
.transform
.stream
.StreamResult
;
17 import javax
.xml
.transform
.stream
.StreamSource
;
19 import org
.apache
.commons
.logging
.Log
;
20 import org
.apache
.commons
.logging
.LogFactory
;
22 /** Receives a form submission. */
23 public class OdkSubmissionServlet
extends HttpServlet
{
24 private static final long serialVersionUID
= 7834401404691302385L;
25 private final static Log log
= LogFactory
.getLog(OdkSubmissionServlet
.class);
27 private final static String XML_SUBMISSION_FILE
= "xml_submission_file";
30 protected void doPost(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
31 for (Part part
: req
.getParts()) {
32 if (log
.isDebugEnabled())
33 log
.debug("Part: " + part
.getName() + ", " + part
.getContentType());
35 Part xmlSubmissionPart
= req
.getPart(XML_SUBMISSION_FILE
);
36 if (xmlSubmissionPart
== null)
37 throw new ServletException("No " + XML_SUBMISSION_FILE
+ " part");
38 try (InputStream in
= xmlSubmissionPart
.getInputStream();) {
40 Transformer transformer
= TransformerFactory
.newInstance().newTransformer();
41 transformer
.setOutputProperty(OutputKeys
.INDENT
, "yes");
42 transformer
.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
43 StreamResult result
= new StreamResult(new StringWriter());
44 StreamSource source
= new StreamSource(in
);
45 transformer
.transform(source
, result
);
46 String xmlString
= result
.getWriter().toString();
47 System
.out
.println(xmlString
);
48 } catch (TransformerException e
) {
52 resp
.setContentType("text/xml; charset=utf-8");
53 resp
.setHeader("X-OpenRosa-Version", "1.0");
54 resp
.setDateHeader("Date", System
.currentTimeMillis());
55 resp
.setIntHeader("X-OpenRosa-Accept-Content-Length", 1024 * 1024);
57 resp
.getWriter().write("<OpenRosaResponse xmlns=\"http://openrosa.org/http/response\">"
58 + "<message>Form Received!</message>" + "</OpenRosaResponse>");