Mercurial > hg > release > thermostat-0.6
changeset 705:498473c85300
Implement RESTStorage.getCount().
Reviewed-by: jerboaa
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2012-October/003774.html
author | Roman Kennke <rkennke@redhat.com> |
---|---|
date | Fri, 19 Oct 2012 19:54:24 +0200 |
parents | 77998c10737b |
children | 836bac77a113 |
files | web/client/src/main/java/com/redhat/thermostat/web/client/RESTStorage.java web/client/src/test/java/com/redhat/thermostat/web/client/RESTStorageTest.java web/server/src/main/java/com/redhat/thermostat/web/server/RESTStorageEndPoint.java web/server/src/test/java/com/redhat/thermostat/web/server/RESTStorageEndpointTest.java |
diffstat | 4 files changed, 82 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/web/client/src/main/java/com/redhat/thermostat/web/client/RESTStorage.java Fri Oct 19 19:53:15 2012 +0200 +++ b/web/client/src/main/java/com/redhat/thermostat/web/client/RESTStorage.java Fri Oct 19 19:54:24 2012 +0200 @@ -201,9 +201,27 @@ } @Override - public long getCount(Category arg0) { - // TODO Auto-generated method stub - return 0; + public long getCount(Category category) { + try { + URL url = new URL(endpoint + "/get-count"); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setDoInput(true); + conn.setDoOutput(true); + conn.setRequestMethod("POST"); + OutputStream out = conn.getOutputStream(); + Gson gson = new Gson(); + OutputStreamWriter writer = new OutputStreamWriter(out); + writer.write("category="); + gson.toJson(categoryIds.get(category), writer); + writer.write("\n"); + writer.flush(); + + InputStream in = conn.getInputStream(); + long result = gson.fromJson(new InputStreamReader(in), Long.class); + return result; + } catch (IOException ex) { + throw new RuntimeException(ex); + } } @Override
--- a/web/client/src/test/java/com/redhat/thermostat/web/client/RESTStorageTest.java Fri Oct 19 19:53:15 2012 +0200 +++ b/web/client/src/test/java/com/redhat/thermostat/web/client/RESTStorageTest.java Fri Oct 19 19:54:24 2012 +0200 @@ -372,4 +372,21 @@ int value2 = gson.fromJson(jsonArray.get(1), Integer.class); assertEquals(42, value2); } + + @Test + public void testGetCount() throws UnsupportedEncodingException, IOException { + + Gson gson = new Gson(); + responseBody = gson.toJson(12345); + + long result = storage.getCount(category); + + StringReader reader = new StringReader(requestBody); + BufferedReader bufRead = new BufferedReader(reader); + String line = URLDecoder.decode(bufRead.readLine(), "UTF-8"); + String[] parts = line.split("="); + assertEquals("category", parts[0]); + assertEquals("42", parts[1]); + assertEquals(12345, result); + } }
--- a/web/server/src/main/java/com/redhat/thermostat/web/server/RESTStorageEndPoint.java Fri Oct 19 19:53:15 2012 +0200 +++ b/web/server/src/main/java/com/redhat/thermostat/web/server/RESTStorageEndPoint.java Fri Oct 19 19:54:24 2012 +0200 @@ -68,6 +68,24 @@ removePojo(req, resp); } else if (cmd.equals("update-pojo")) { updatePojo(req, resp); + } else if (cmd.equals("get-count")) { + getCount(req, resp); + } + } + + private void getCount(HttpServletRequest req, HttpServletResponse resp) { + try { + String categoryParam = req.getParameter("category"); + int categoryId = gson.fromJson(categoryParam, Integer.class); + Category category = categories.get(categoryId); + long result = storage.getCount(category); + resp.setStatus(HttpServletResponse.SC_OK); + resp.setContentType("application/json"); + gson.toJson(result, resp.getWriter()); + resp.flushBuffer(); + } catch (IOException ex) { + ex.printStackTrace(); + resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } }
--- a/web/server/src/test/java/com/redhat/thermostat/web/server/RESTStorageEndpointTest.java Fri Oct 19 19:53:15 2012 +0200 +++ b/web/server/src/test/java/com/redhat/thermostat/web/server/RESTStorageEndpointTest.java Fri Oct 19 19:54:24 2012 +0200 @@ -322,6 +322,32 @@ } + @Test + public void testGetCount() throws IOException { + + when(mockStorage.getCount(category)).thenReturn(12345L); + String endpoint = getEndpoint(); + + URL url = new URL(endpoint + "/get-count"); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setDoOutput(true); + conn.setDoInput(true); + conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + Gson gson = new Gson(); + OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream()); + out.write("category=" + categoryId); + out.flush(); + + InputStream in = conn.getInputStream(); + Reader reader = new InputStreamReader(in); + long result = gson.fromJson(reader, Long.class); + assertEquals(200, conn.getResponseCode()); + assertEquals(12345, result); + verify(mockStorage).getCount(category); + + } + + private void registerCategory() { try { String endpoint = getEndpoint();