From 905106d9197e69d0e32b1c0bb2f0400bea363f65 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Thu, 29 Apr 2010 10:31:23 +0000 Subject: [PATCH] JCR XML download git-svn-id: https://svn.argeo.org/commons/trunk@3520 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../jcr/mvc/JcrXmlServerSerializer.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jcr/mvc/JcrXmlServerSerializer.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jcr/mvc/JcrXmlServerSerializer.java index 0ae91e22e..54cc5b7b5 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jcr/mvc/JcrXmlServerSerializer.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jcr/mvc/JcrXmlServerSerializer.java @@ -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 { -- 2.30.2