Mercurial > hg > release > thermostat-1.0
changeset 1399:8f05f8a277d9
Improve error checking when doing JSON serialization.
Reviewed-by: neugens
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2014-May/009838.html
PR1784
author | Severin Gehwolf <sgehwolf@redhat.com> |
---|---|
date | Wed, 21 May 2014 18:45:24 +0200 |
parents | 044868dbf9ad |
children | 9a8d79ed2844 |
files | web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java |
diffstat | 1 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java Wed May 21 15:26:25 2014 +0200 +++ b/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java Wed May 21 18:45:24 2014 +0200 @@ -40,6 +40,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.io.PrintWriter; import java.io.Writer; import java.lang.reflect.Array; import java.lang.reflect.InvocationTargetException; @@ -739,9 +740,19 @@ private void writeResponse(HttpServletResponse resp, Object responseObj, Class<?> typeOfResponseObj) throws IOException { + String json = null; + try { + json = gson.toJson(responseObj, typeOfResponseObj); + } catch (Exception e) { + logger.log(Level.WARNING, "JSON serialization failed for " + typeOfResponseObj, e); + resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + return; + } resp.setStatus(HttpServletResponse.SC_OK); resp.setContentType(RESPONSE_JSON_CONTENT_TYPE); - gson.toJson(responseObj, typeOfResponseObj, resp.getWriter()); + try (PrintWriter pw = resp.getWriter()) { + pw.write(json); + } resp.flushBuffer(); }