Add marshaller serializer
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 15 Feb 2010 10:16:03 +0000 (10:16 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 15 Feb 2010 10:16:03 +0000 (10:16 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@3348 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

server/runtime/org.argeo.server.core/pom.xml
server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/MarshallerServerSerializer.java [new file with mode: 0644]
server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/Serializer.java
server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonServerSerializer.java

index 32a2ba4b4be7dd25e8fab404a7a5375fd739b638..dca00557375a89feb260ca025c1de8aef2c0a769 100644 (file)
                        <groupId>org.springframework</groupId>
                        <artifactId>org.springframework.web.servlet</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>org.springframework.ws</groupId>
+                       <artifactId>org.springframework.oxm</artifactId>
+               </dependency>
 
                <!-- J2EE -->
                <dependency>
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 (file)
index 0000000..cc33aaa
--- /dev/null
@@ -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;
+       }
+
+}
index 60d564cdea78edceed4860ecab3c2815fd9229c7..29bc5312264fbf245f3638ae2f7fd0097eda2445 100644 (file)
@@ -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);
 }
index 3d7361396dcb65f5bbebc503060b758407f5bf21..c6691bc00cf0f6a8abf5cf3ac735478b878161f8 100644 (file)
@@ -55,7 +55,7 @@ public class JsonServerSerializer implements ServerSerializer, Serializer {
                        if (asHtml)
                                response.getWriter().append("<pre>");
 
-                       serialize(response.getWriter(), obj);
+                       serialize(obj, response.getWriter());
 
                        if (asHtml)
                                response.getWriter().append("</pre>");
@@ -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;