Try to deal with encoding
[lgpl/argeo-commons.git] / server / runtime / org.argeo.server.json / src / main / java / org / argeo / server / json / JsonServerSerializer.java
index 1c38bbe15f0775e1fce5fc55ecbaa993d50aa5c5..4f762f16867c8f92fd15b172bf73849b3e0507d9 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;
@@ -20,22 +21,45 @@ public class JsonServerSerializer implements ServerSerializer {
        private JsonFactory jsonFactory = new JsonFactory();
        private ObjectMapper objectMapper = new ObjectMapper();
 
-       private Boolean prettyPrint = true;
+       private Boolean prettyPrint = false;
+
+       // private String encoding = "UTF8";
 
        public void serialize(Object obj, HttpServletRequest request,
                        HttpServletResponse response) {
                JsonGenerator jsonGenerator = null;
                try {
                        response.setContentType("application/json");
+                       // response.setHeader("Content-Encoding", "UTF-8");
+
+                       StringWriter stringWriter = null;
+                       if (log.isTraceEnabled()) {
+                               stringWriter = new StringWriter();
+                               JsonGenerator jsonGeneratorLog = jsonFactory
+                                               .createJsonGenerator(stringWriter);
+                               jsonGeneratorLog.useDefaultPrettyPrinter();
+                               objectMapper.writeValue(jsonGenerator, obj);
+                               jsonGeneratorLog.close();
+                       }
 
+                       // jsonGenerator = jsonFactory.createJsonGenerator(response
+                       // .getOutputStream(), JsonEncoding.valueOf(encoding));
                        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 {