X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2FMarshallerServerSerializer.java;fp=server%2Fruntime%2Forg.argeo.server.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2FMarshallerServerSerializer.java;h=cc33aaa4f00e1b727db943ef8b2c0eb12928797f;hb=29926493718c12d1eff798d1a02700713ff65b04;hp=0000000000000000000000000000000000000000;hpb=f76f5ada6ac7bec56413f40389f550570d219316;p=lgpl%2Fargeo-commons.git diff --git a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/MarshallerServerSerializer.java b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/MarshallerServerSerializer.java new file mode 100644 index 000000000..cc33aaa4f --- /dev/null +++ b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/MarshallerServerSerializer.java @@ -0,0 +1,49 @@ +package org.argeo.server; + +import java.io.IOException; +import java.io.Writer; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.xml.transform.stream.StreamResult; + +import org.argeo.ArgeoException; +import org.springframework.oxm.Marshaller; + +public class MarshallerServerSerializer implements ServerSerializer, Serializer { + private Marshaller marshaller; + private String contentTypeCharset = "UTF-8"; + + public void serialize(Object obj, HttpServletRequest request, + HttpServletResponse response) { + response.setContentType("text/xml;charset=" + contentTypeCharset); + try { + serialize(obj, response.getWriter()); + } catch (IOException e) { + throw new ArgeoException("Cannot serialize " + obj, e); + } + } + + public void serialize(Object obj, Writer writer) { + try { + StreamResult result = new StreamResult(writer); + marshaller.marshal(obj, result); + } catch (Exception e) { + throw new ArgeoException("Cannot serialize " + obj, e); + } + } + + @Deprecated + public void serialize(Writer writer, Object obj) { + serialize(obj, writer); + } + + public void setMarshaller(Marshaller marshaller) { + this.marshaller = marshaller; + } + + public void setContentTypeCharset(String contentTypeCharset) { + this.contentTypeCharset = contentTypeCharset; + } + +}