Fix various issues:
[lgpl/argeo-commons.git] / server / runtime / org.argeo.server.json / src / main / java / org / argeo / server / json / JsonServerSerializer.java
index 1c38bbe15f0775e1fce5fc55ecbaa993d50aa5c5..90a9c135c2815a37637f4d2f85b685a32c7ab38c 100644 (file)
@@ -1,6 +1,7 @@
 package org.argeo.server.json;
 
 import java.io.IOException;
+import java.io.StringWriter;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -28,14 +29,28 @@ public class JsonServerSerializer implements ServerSerializer {
                try {
                        response.setContentType("application/json");
 
-                       jsonGenerator = jsonFactory.createJsonGenerator(response
-                                       .getWriter());
+                       StringWriter stringWriter = null;
+                       if (log.isTraceEnabled()) {
+                               stringWriter = new StringWriter();
+                               jsonGenerator = jsonFactory.createJsonGenerator(stringWriter);
+                       } else {
+                               jsonGenerator = jsonFactory.createJsonGenerator(response
+                                               .getWriter());
+                       }
+
                        if (prettyPrint)
                                jsonGenerator.useDefaultPrettyPrinter();
 
                        objectMapper.writeValue(jsonGenerator, obj);
 
                        jsonGenerator.close();
+
+                       if (stringWriter != null) {
+                               if (log.isTraceEnabled())
+                                       log.debug(stringWriter.toString());
+                               response.getWriter().append(stringWriter.toString());
+                       }
+
                } catch (Exception e) {
                        throw new ArgeoServerException("Cannot serialize " + obj, e);
                } finally {