From 29926493718c12d1eff798d1a02700713ff65b04 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 15 Feb 2010 10:16:03 +0000 Subject: [PATCH] Add marshaller serializer git-svn-id: https://svn.argeo.org/commons/trunk@3348 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- server/runtime/org.argeo.server.core/pom.xml | 4 ++ .../server/MarshallerServerSerializer.java | 49 +++++++++++++++++++ .../java/org/argeo/server/Serializer.java | 4 ++ .../server/json/JsonServerSerializer.java | 9 +++- 4 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/MarshallerServerSerializer.java diff --git a/server/runtime/org.argeo.server.core/pom.xml b/server/runtime/org.argeo.server.core/pom.xml index 32a2ba4b4..dca005573 100644 --- a/server/runtime/org.argeo.server.core/pom.xml +++ b/server/runtime/org.argeo.server.core/pom.xml @@ -55,6 +55,10 @@ org.springframework org.springframework.web.servlet + + org.springframework.ws + org.springframework.oxm + 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; + } + +} diff --git a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/Serializer.java b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/Serializer.java index 60d564cde..29bc53122 100644 --- a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/Serializer.java +++ b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/Serializer.java @@ -3,5 +3,9 @@ package org.argeo.server; import java.io.Writer; public interface Serializer { + /** Will be removed soon. Use {@link #serialize(Object, Writer)} instead. */ + @Deprecated public void serialize(Writer writer, Object obj); + + public void serialize(Object obj, Writer writer); } diff --git a/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonServerSerializer.java b/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonServerSerializer.java index 3d7361396..c6691bc00 100644 --- a/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonServerSerializer.java +++ b/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonServerSerializer.java @@ -55,7 +55,7 @@ public class JsonServerSerializer implements ServerSerializer, Serializer { if (asHtml) response.getWriter().append("
");
 
-			serialize(response.getWriter(), obj);
+			serialize(obj, response.getWriter());
 
 			if (asHtml)
 				response.getWriter().append("
"); @@ -65,7 +65,7 @@ public class JsonServerSerializer implements ServerSerializer, Serializer { } } - public void serialize(Writer writer, Object obj) { + public void serialize(Object obj, Writer writer) { serializeAndLog(obj); JsonGenerator jsonGenerator = null; @@ -90,6 +90,11 @@ public class JsonServerSerializer implements ServerSerializer, Serializer { } } + @Deprecated + public void serialize(Writer writer, Object obj) { + serialize(obj, writer); + } + protected void serializeAndLog(Object obj) { if (!log.isTraceEnabled()) return; -- 2.30.2