+
+ Session session = ServletAuthUtils.doAs(() -> Jcr.login(repository, null), req);
+
+ try {
+ Node submissions = JcrUtils.mkdirs(session,
+ "/" + EntityNames.FORM_BASE + "/" + EntityNames.SUBMISSIONS_BASE);
+ Node submission = submissions.addNode(submissionNameFormatter.format(Instant.now()),
+ OrxType.submission.get());
+ for (Part part : req.getParts()) {
+ if (log.isDebugEnabled())
+ log.debug("Part: " + part.getName() + ", " + part.getContentType());
+
+ if (part.getName().equals(XML_SUBMISSION_FILE)) {
+ Node xml = submission.addNode(XML_SUBMISSION_FILE, NodeType.NT_UNSTRUCTURED);
+ session.importXML(xml.getPath(), part.getInputStream(),
+ ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING);
+
+// Part xmlSubmissionPart = req.getPart(XML_SUBMISSION_FILE);
+// if (xmlSubmissionPart == null)
+// throw new ServletException("No " + XML_SUBMISSION_FILE + " part");
+// try (InputStream in = xmlSubmissionPart.getInputStream();) {
+// // pretty print
+// Transformer transformer = TransformerFactory.newInstance().newTransformer();
+// transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+// transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
+// StreamResult result = new StreamResult(new StringWriter());
+// StreamSource source = new StreamSource(in);
+// transformer.transform(source, result);
+// String xmlString = result.getWriter().toString();
+// System.out.println(xmlString);
+// } catch (TransformerException e) {
+// e.printStackTrace();
+// }
+
+ } else {
+ JcrUtils.copyStreamAsFile(submission, part.getName(), part.getInputStream());
+ }
+ }
+ session.save();
+ } catch (RepositoryException e) {
+ e.printStackTrace();
+ resp.setStatus(503);
+ return;
+ }
+