]> git.argeo.org Git - lgpl/argeo-commons.git/blob - mvc/JcrXmlServerSerializer.java
Prepare next development cycle
[lgpl/argeo-commons.git] / mvc / JcrXmlServerSerializer.java
1 package org.argeo.server.jcr.mvc;
2
3 import java.io.OutputStream;
4 import java.util.Set;
5
6 import javax.jcr.Node;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9
10 import org.argeo.ArgeoException;
11 import org.argeo.server.ServerSerializer;
12 import org.xml.sax.helpers.DefaultHandler;
13
14 public class JcrXmlServerSerializer implements ServerSerializer {
15 private String contentTypeCharset = "UTF-8";
16
17 public void serialize(Object obj, HttpServletRequest request,
18 HttpServletResponse response) {
19 if (!(obj instanceof Node))
20 throw new ArgeoException("Only " + Node.class + " is supported");
21
22 String noRecurseStr = request.getParameter("noRecurse");
23 boolean noRecurse = noRecurseStr != null && noRecurseStr.equals("true");
24
25 Node node = (Node) obj;
26 response.setContentType("text/xml;charset=" + contentTypeCharset);
27 try {
28 node.getSession().exportDocumentView(node.getPath(),
29 response.getOutputStream(), true, noRecurse);
30 } catch (Exception e) {
31 throw new ArgeoException("Cannot serialize " + node, e);
32 }
33
34 }
35
36 public void setContentTypeCharset(String contentTypeCharset) {
37 this.contentTypeCharset = contentTypeCharset;
38 }
39
40 }