X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2Fmvc%2Fjcr%2FJcrXmlServerSerializer.java;fp=server%2Fruntime%2Forg.argeo.server.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2Fmvc%2Fjcr%2FJcrXmlServerSerializer.java;h=0000000000000000000000000000000000000000;hb=ecfe5aad6ecb3e05eeee1f700950c352fc4bfcd1;hp=467b4d352b076b3b6aaa6f4e3af8321819ab8174;hpb=b8a1cd70a7d61b91f66e3f65736c57679dd9de46;p=lgpl%2Fargeo-commons.git diff --git a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/mvc/jcr/JcrXmlServerSerializer.java b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/mvc/jcr/JcrXmlServerSerializer.java deleted file mode 100644 index 467b4d352..000000000 --- a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/mvc/jcr/JcrXmlServerSerializer.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (C) 2007-2012 Mathieu Baudier - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.server.mvc.jcr; - -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import javax.jcr.RepositoryException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.argeo.ArgeoException; -import org.argeo.server.ServerSerializer; -import org.springframework.xml.dom.DomContentHandler; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; - -/** @deprecated */ -public class JcrXmlServerSerializer implements ServerSerializer { - private String contentTypeCharset = "UTF-8"; - - private final DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory - .newInstance(); - private final TransformerFactory transformerFactory = TransformerFactory - .newInstance(); - - public void serialize(Object obj, HttpServletRequest request, - HttpServletResponse response) { - if (!(obj instanceof Node)) - throw new ArgeoException("Only " + Node.class + " is supported"); - - String noRecurseStr = request.getParameter("noRecurse"); - 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) { - node.getSession().exportDocumentView(node.getPath(), - response.getOutputStream(), true, noRecurse); - } else { - int depth = Integer.parseInt(depthStr); - Document document = documentBuilderFactory.newDocumentBuilder() - .newDocument(); - serializeLevelToDom(node, document, 0, depth); - Transformer transformer = transformerFactory.newTransformer(); - transformer.transform(new DOMSource(document), - new StreamResult(response.getOutputStream())); - } - } catch (Exception e) { - throw new ArgeoException("Cannot serialize " + node, e); - } - } - - protected void serializeLevelToDom(Node currentJcrNode, - org.w3c.dom.Node currentDomNode, int currentDepth, int targetDepth) - throws RepositoryException, SAXException { - DomContentHandler domContentHandler = new DomContentHandler( - currentDomNode); - currentJcrNode.getSession().exportDocumentView( - currentJcrNode.getPath(), domContentHandler, true, true); - - if (currentDepth == targetDepth) - return; - - // TODO: filter - NodeIterator nit = currentJcrNode.getNodes(); - while (nit.hasNext()) { - Node nextJcrNode = nit.nextNode(); - org.w3c.dom.Node nextDomNode; - if (currentDomNode instanceof Document) - nextDomNode = ((Document) currentDomNode).getDocumentElement(); - else { - String name = currentJcrNode.getName(); - NodeList nodeList = ((Element) currentDomNode) - .getElementsByTagName(name); - if (nodeList.getLength() < 1) - throw new ArgeoException("No elment named " + name - + " under " + currentDomNode); - // we know it is the last one added - nextDomNode = nodeList.item(nodeList.getLength() - 1); - } - // recursive call - serializeLevelToDom(nextJcrNode, nextDomNode, currentDepth + 1, - targetDepth); - } - } - - public void setContentTypeCharset(String contentTypeCharset) { - this.contentTypeCharset = contentTypeCharset; - } - -}