changeset 748:9a66968f2bcb

Implement purge() in web service. Reviewed-by: neugens Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2012-October/003842.html
author Roman Kennke <rkennke@redhat.com>
date Fri, 26 Oct 2012 13:12:46 +0200
parents 098a78b25a40
children 769d409c83b6
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, 46 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/web/client/src/main/java/com/redhat/thermostat/web/client/RESTStorage.java	Fri Oct 26 13:12:03 2012 +0200
+++ b/web/client/src/main/java/com/redhat/thermostat/web/client/RESTStorage.java	Fri Oct 26 13:12:46 2012 +0200
@@ -253,8 +253,17 @@
 
     @Override
     public void purge() {
-        // TODO Auto-generated method stub
-
+        try {
+            HttpClient httpClient = new DefaultHttpClient();
+            HttpPost httpPost = new HttpPost(endpoint + "/purge");
+            HttpResponse response = httpClient.execute(httpPost);
+            int status = response.getStatusLine().getStatusCode();
+            if (status != 200) {
+                throw new IOException("Server returned status: " + status);
+            }
+        } catch (IOException ex) {
+            throw new RuntimeException(ex);
+        }
     }
 
     @Override
--- a/web/client/src/test/java/com/redhat/thermostat/web/client/RESTStorageTest.java	Fri Oct 26 13:12:03 2012 +0200
+++ b/web/client/src/test/java/com/redhat/thermostat/web/client/RESTStorageTest.java	Fri Oct 26 13:12:46 2012 +0200
@@ -101,6 +101,8 @@
 
     private String responseBody;
     private Map<String,String> headers;
+    private String method;
+    private String requestURI;
 
     private static Category category;
     private static Key<String> key1;
@@ -136,6 +138,8 @@
         storage.setEndpoint("http://localhost:" + port + "/");
         storage.setAgentId(new UUID(123, 456));
         headers = new HashMap<>();
+        requestURI = null;
+        method = null;
         registerCategory();
     }
 
@@ -153,6 +157,9 @@
                     headers.put(headerName, request.getHeader(headerName));
                 }
 
+                method = request.getMethod();
+                requestURI = request.getRequestURI();
+
                 // Read request body.
                 StringBuilder body = new StringBuilder();
                 Reader reader = request.getReader();
@@ -179,6 +186,8 @@
     public void tearDown() throws Exception {
 
         headers = null;
+        requestURI = null;
+        method = null;
         storage = null;
 
         server.stop();
@@ -443,4 +452,11 @@
         assertEquals("Hello World", new String(data));
 
     }
+
+    @Test
+    public void testPurge() {
+        storage.purge();
+        assertEquals("POST", method);
+        assertTrue(requestURI.endsWith("/purge"));
+    }
 }
--- a/web/server/src/main/java/com/redhat/thermostat/web/server/RESTStorageEndPoint.java	Fri Oct 26 13:12:03 2012 +0200
+++ b/web/server/src/main/java/com/redhat/thermostat/web/server/RESTStorageEndPoint.java	Fri Oct 26 13:12:46 2012 +0200
@@ -83,9 +83,16 @@
             saveFile(req, resp);
         } else if (cmd.equals("load-file")) {
             loadFile(req, resp);
+        } else if (cmd.equals("purge")) {
+            purge(req, resp);
         }
     }
 
+    private void purge(HttpServletRequest req, HttpServletResponse resp) {
+        storage.purge();
+        resp.setStatus(HttpServletResponse.SC_OK);
+    }
+
     private void loadFile(HttpServletRequest req, HttpServletResponse resp) throws IOException {
         String name = req.getParameter("file");
         InputStream data = storage.loadFile(name);
--- a/web/server/src/test/java/com/redhat/thermostat/web/server/RESTStorageEndpointTest.java	Fri Oct 26 13:12:03 2012 +0200
+++ b/web/server/src/test/java/com/redhat/thermostat/web/server/RESTStorageEndpointTest.java	Fri Oct 26 13:12:46 2012 +0200
@@ -416,6 +416,18 @@
         verify(mockStorage).loadFile("fluff");
     }
 
+    @Test
+    public void testPurge() throws IOException {
+        String endpoint = getEndpoint();
+        URL url = new URL(endpoint + "/purge");
+        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+        conn.setDoOutput(true);
+        conn.setRequestMethod("POST");
+        int status = conn.getResponseCode();
+        assertEquals(200, status);
+        verify(mockStorage).purge();
+    }
+
     private void registerCategory() {
         try {
             String endpoint = getEndpoint();