X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.json%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2Fjson%2FJsonServerSerializer.java;h=78f3dff948fbe8683086c25b841386f802d1bdcc;hb=fb9857e3c3402fb0b203c3a1d8c51e4897987700;hp=a5a7f43e3a0e5b51b5510bb58934e480a07f75e1;hpb=0f27df01898453d05364befc15969f787f6a3392;p=lgpl%2Fargeo-commons.git 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 a5a7f43e3..78f3dff94 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 @@ -9,7 +9,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.argeo.server.ArgeoServerException; +import org.argeo.ArgeoException; import org.argeo.server.Serializer; import org.argeo.server.ServerSerializer; import org.codehaus.jackson.JsonFactory; @@ -25,15 +25,29 @@ public class JsonServerSerializer implements ServerSerializer, Serializer { private Boolean prettyPrint = false; - // private String encoding = "UTF8"; + private Boolean asHtml = false; + + private String contentTypeCharset = "UTF-8"; public void serialize(Object obj, HttpServletRequest request, HttpServletResponse response) { - response.setContentType("application/json"); + if (asHtml) + response.setContentType("text/html;charset=" + contentTypeCharset); + else + response.setContentType("application/json;charset=" + + contentTypeCharset); + try { + if (asHtml) + response.getWriter().append("
");
+
 			serialize(response.getWriter(), obj);
+
+			if (asHtml)
+				response.getWriter().append("
"); + } catch (IOException e) { - throw new ArgeoServerException("Cannot open response stream.", e); + throw new ArgeoException("Cannot open response stream.", e); } } @@ -42,9 +56,6 @@ public class JsonServerSerializer implements ServerSerializer, Serializer { JsonGenerator jsonGenerator = null; try { - - // jsonGenerator = jsonFactory.createJsonGenerator(response - // .getOutputStream(), JsonEncoding.valueOf(encoding)); jsonGenerator = jsonFactory.createJsonGenerator(writer); if (prettyPrint) @@ -52,7 +63,7 @@ public class JsonServerSerializer implements ServerSerializer, Serializer { objectMapper.writeValue(jsonGenerator, obj); } catch (Exception e) { - throw new ArgeoServerException("Cannot serialize " + obj, e); + throw new ArgeoException("Cannot serialize " + obj, e); } finally { if (jsonGenerator != null) try { @@ -77,7 +88,7 @@ public class JsonServerSerializer implements ServerSerializer, Serializer { jsonGenerator.close(); log.debug(stringWriter.toString()); } catch (Exception e) { - throw new ArgeoServerException("Cannot log JSON", e); + throw new ArgeoException("Cannot log JSON", e); } finally { if (jsonGenerator != null) try { @@ -97,4 +108,9 @@ public class JsonServerSerializer implements ServerSerializer, Serializer { protected ObjectMapper getObjectMapper() { return objectMapper; } + + public void setContentTypeCharset(String contentTypeCharset) { + this.contentTypeCharset = contentTypeCharset; + } + }