JCR XML download
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 29 Apr 2010 10:31:23 +0000 (10:31 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 29 Apr 2010 10:31:23 +0000 (10:31 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@3520 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jcr/mvc/JcrXmlServerSerializer.java

index 0ae91e22e1e7e4f61f3d6be129207258ffb8d697..54cc5b7b5a986fc08cd54075f81dc12c12ea991f 100644 (file)
@@ -36,11 +36,26 @@ public class JcrXmlServerSerializer implements ServerSerializer {
                boolean noRecurse = noRecurseStr != null && noRecurseStr.equals("true");
 
                String depthStr = request.getParameter("depth");
+               String downloadStr = request.getParameter("download");
+
                Node node = (Node) obj;
+
                try {
+                       String contentType = "text/xml;charset=" + contentTypeCharset;
+                       // download case
+                       if (downloadStr != null && downloadStr.equals("true")) {
+                               String fileName = node.getName().replace(':', '_') + ".xml";
+                               contentType = contentType + ";name=\"" + fileName + "\"";
+                               response.setHeader("Content-Disposition",
+                                               "attachment; filename=\"" + fileName + "\"");
+                               response.setHeader("Expires", "0");
+                               response
+                                               .setHeader("Cache-Control", "no-cache, must-revalidate");
+                               response.setHeader("Pragma", "no-cache");
+                       }
+
+                       response.setContentType(contentType);
                        if (depthStr == null) {
-                               response.setContentType("text/xml;charset="
-                                               + contentTypeCharset);
                                node.getSession().exportDocumentView(node.getPath(),
                                                response.getOutputStream(), true, noRecurse);
                        } else {