Mercurial > hg > release > thermostat-0.7
changeset 1058:36241f812295
PR1344: Serialization of web storage is not handling non-ascii characters properly
Reviewed-by: jerboaa
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-April/006260.html
author | Omair Majid <omajid@redhat.com> |
---|---|
date | Thu, 04 Apr 2013 10:40:38 -0400 |
parents | f2bea882daf4 |
children | e11e9cbab899 |
files | web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java |
diffstat | 2 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java Wed Apr 03 15:12:47 2013 +0200 +++ b/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java Thu Apr 04 10:40:38 2013 -0400 @@ -96,6 +96,11 @@ private static final String ROLE_THERMOSTAT_AGENT = "thermostat-agent"; private static final String ROLE_THERMOSTAT_CLIENT = "thermostat-client"; private static final String ROLE_CMD_CHANNEL = "thermostat-cmd-channel"; + + // our strings can contain non-ASCII characters. Use UTF-8 + // see also PR 1344 + private static final String RESPONSE_JSON_CONTENT_TYPE = "application/json; charset=UTF-8"; + private static final Logger logger = LoggingUtils.getLogger(WebStorageEndPoint.class); private Storage storage; @@ -265,7 +270,7 @@ Category<?> category = getCategoryFromId(categoryId); long result = storage.getCount(category); resp.setStatus(HttpServletResponse.SC_OK); - resp.setContentType("application/json"); + resp.setContentType(RESPONSE_JSON_CONTENT_TYPE); gson.toJson(result, resp.getWriter()); resp.flushBuffer(); } catch (IOException ex) { @@ -291,7 +296,7 @@ currentCategoryId++; } resp.setStatus(HttpServletResponse.SC_OK); - resp.setContentType("application/json"); + resp.setContentType(RESPONSE_JSON_CONTENT_TYPE); Writer writer = resp.getWriter(); gson.toJson(id, writer); writer.flush(); @@ -403,7 +408,7 @@ private void writeResponse(HttpServletResponse resp, Object result) throws IOException { resp.setStatus(HttpServletResponse.SC_OK); - resp.setContentType("application/json"); + resp.setContentType(RESPONSE_JSON_CONTENT_TYPE); gson.toJson(result, resp.getWriter()); resp.flushBuffer(); }
--- a/web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java Wed Apr 03 15:12:47 2013 +0200 +++ b/web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java Thu Apr 04 10:40:38 2013 -0400 @@ -245,6 +245,8 @@ assertEquals("fluff2", results[1].getKey1()); assertEquals(43, results[1].getKey2()); + assertEquals("application/json; charset=UTF-8", conn.getContentType()); + verify(mockQuery).where(key1, Criteria.EQUALS, "fluff"); verify(mockQuery).sort(key1, SortDirection.DESCENDING); verify(mockQuery).limit(42);