import java.io.IOException;
+import javax.jcr.ImportUUIDBehavior;
import javax.jcr.Node;
import javax.jcr.Session;
import javax.jcr.nodetype.NodeType;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- if (log.isTraceEnabled())
- log.trace("Data service: " + req.getPathInfo());
+ if (log.isDebugEnabled())
+ log.debug("Data service POST: " + req.getPathInfo());
String dataWorkspace = getWorkspace(req);
String jcrPath = getJcrPath(req);
try {
// authentication
session = openJcrSession(req, resp, getRepository(), dataWorkspace);
+
+ if (req.getContentType() != null && req.getContentType().equals(XML_CONTENT_TYPE)) {
+// resp.setContentType(XML_CONTENT_TYPE);
+ session.getWorkspace().importXML(jcrPath, req.getInputStream(),
+ ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING);
+ return;
+ }
+
if (!session.itemExists(jcrPath)) {
String parentPath = FilenameUtils.getFullPathNoEndSeparator(jcrPath);
String fileName = FilenameUtils.getName(jcrPath);
- Node folderNode = JcrUtils.mkdirs(session, parentPath);
+ Node folderNode = JcrUtils.mkfolders(session, parentPath);
byte[] bytes = IOUtils.toByteArray(req.getInputStream());
JcrUtils.copyBytesAsFile(folderNode, fileName, bytes);
} else {
byte[] bytes = IOUtils.toByteArray(req.getInputStream());
JcrUtils.copyBytesAsFile(node.getParent(), node.getName(), bytes);
}
+ session.save();
+ } catch (Exception e) {
+ new CmsExceptionsChain(e).writeAsJson(getObjectMapper(), resp);
+ } finally {
+ JcrUtils.logoutQuietly(session);
+ }
+ }
+
+ @Override
+ protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ if (log.isDebugEnabled())
+ log.debug("Data service DELETE: " + req.getPathInfo());
+
+ String dataWorkspace = getWorkspace(req);
+ String jcrPath = getJcrPath(req);
+
+ Session session = null;
+ try {
+ // authentication
+ session = openJcrSession(req, resp, getRepository(), dataWorkspace);
+ if (!session.itemExists(jcrPath)) {
+ // ignore
+ return;
+ } else {
+ Node node = session.getNode(jcrPath);
+ node.remove();
+ }
+ session.save();
} catch (Exception e) {
new CmsExceptionsChain(e).writeAsJson(getObjectMapper(), resp);
} finally {
JcrUtils.logoutQuietly(session);
}
}
+
}