# HG changeset patch # User Severin Gehwolf # Date 1400690724 -7200 # Node ID 8f05f8a277d9f5d88e4030a91a555dce3321e9ff # Parent 044868dbf9ad473554da7cd1e8d980c9136f4264 Improve error checking when doing JSON serialization. Reviewed-by: neugens Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2014-May/009838.html PR1784 diff -r 044868dbf9ad -r 8f05f8a277d9 web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java --- 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(); }