changeset 1219:57db66363d91

Make Remove API more consistent. Reviewed-by: omajid Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-August/007952.html
author Severin Gehwolf <sgehwolf@redhat.com>
date Fri, 16 Aug 2013 14:59:33 +0200
parents e2034aa58edf
children 71b72b655b84
files storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.java storage/core/src/main/java/com/redhat/thermostat/storage/core/Remove.java storage/core/src/main/java/com/redhat/thermostat/storage/core/Storage.java storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOImpl.java storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/BackendInfoDAOImpl.java storage/core/src/test/java/com/redhat/thermostat/storage/core/QueuedStorageTest.java storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOTest.java storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/BackendInfoDAOTest.java storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java web/client/src/test/java/com/redhat/thermostat/web/client/internal/WebStorageTest.java web/common/src/main/java/com/redhat/thermostat/web/common/WebRemove.java 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 14 files changed, 30 insertions(+), 65 deletions(-) [+]
line wrap: on
line diff
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.java	Fri Aug 16 14:59:33 2013 +0200
@@ -215,8 +215,8 @@
     }
 
     @Override
-    public Remove createRemove() {
-        return delegate.createRemove();
+    public Remove createRemove(Category<?> category) {
+        return delegate.createRemove(category);
     }
 
     @Override
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/Remove.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/Remove.java	Fri Aug 16 14:59:33 2013 +0200
@@ -44,8 +44,6 @@
  */
 public interface Remove {
 
-    void from(Category category);
-
     void where(Expression where);
     
     /**
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/Storage.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/Storage.java	Fri Aug 16 14:59:33 2013 +0200
@@ -93,7 +93,7 @@
     InputStream loadFile(String filename);
 
     Update createUpdate(Category<?> category);
-    Remove createRemove();
+    Remove createRemove(Category<?> category);
 
     void shutdown();
 
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOImpl.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOImpl.java	Fri Aug 16 14:59:33 2013 +0200
@@ -190,8 +190,7 @@
     @Override
     public void removeAgentInformation(AgentInformation agentInfo) {
         Expression expr = factory.equalTo(Key.AGENT_ID, agentInfo.getAgentId());
-        Remove remove = storage.createRemove();
-        remove.from(CATEGORY);
+        Remove remove = storage.createRemove(CATEGORY);
         remove.where(expr);
         remove.apply();
     }
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/BackendInfoDAOImpl.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/BackendInfoDAOImpl.java	Fri Aug 16 14:59:33 2013 +0200
@@ -116,8 +116,7 @@
     @Override
     public void removeBackendInformation(BackendInformation info) {
         Expression expr = factory.equalTo(BACKEND_NAME, info.getName());
-        Remove remove = storage.createRemove();
-        remove.from(CATEGORY);
+        Remove remove = storage.createRemove(CATEGORY);
         remove.where(expr);
         remove.apply();
     }
--- a/storage/core/src/test/java/com/redhat/thermostat/storage/core/QueuedStorageTest.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/storage/core/src/test/java/com/redhat/thermostat/storage/core/QueuedStorageTest.java	Fri Aug 16 14:59:33 2013 +0200
@@ -216,7 +216,7 @@
         Remove remove = mock(Remove.class);
         when(delegateStorage.createAdd(any(Category.class))).thenReturn(delegateAdd);
         when(delegateStorage.createReplace(any(Category.class))).thenReturn(delegateReplace);
-        when(delegateStorage.createRemove()).thenReturn(remove);
+        when(delegateStorage.createRemove(any(Category.class))).thenReturn(remove);
         expectedFile = mock(InputStream.class);
         when(delegateStorage.loadFile(anyString())).thenReturn(expectedFile);
         when(delegateStorage.getAgentId()).thenReturn("huzzah");
@@ -467,7 +467,7 @@
         }
 
         @Override
-        public Remove createRemove() {
+        public Remove createRemove(Category<?> category) {
             // not implemented
             throw new AssertionError();
         }
--- a/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOTest.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOTest.java	Fri Aug 16 14:59:33 2013 +0200
@@ -297,12 +297,11 @@
     public void verifyRemoveAgentInformation() {
         Remove mockRemove = mock(Remove.class);
         Storage storage = mock(Storage.class);
-        when(storage.createRemove()).thenReturn(mockRemove);
+        when(storage.createRemove(eq(AgentInfoDAO.CATEGORY))).thenReturn(mockRemove);
         AgentInfoDAO dao = new AgentInfoDAOImpl(storage);
 
         dao.removeAgentInformation(agentInfo1);
 
-        verify(mockRemove).from(AgentInfoDAO.CATEGORY);
         verify(mockRemove).apply();
         Expression expr = factory.equalTo(Key.AGENT_ID, "1234");
         verify(mockRemove).where(eq(expr));
--- a/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/BackendInfoDAOTest.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/BackendInfoDAOTest.java	Fri Aug 16 14:59:33 2013 +0200
@@ -178,13 +178,12 @@
     public void verifyRemoveBackendInformation() {
         Remove remove = mock(Remove.class);
         Storage storage = mock(Storage.class);
-        when(storage.createRemove()).thenReturn(remove);
+        when(storage.createRemove(eq(BackendInfoDAO.CATEGORY))).thenReturn(remove);
         BackendInfoDAO dao = new BackendInfoDAOImpl(storage);
 
         dao.removeBackendInformation(backendInfo1);
 
         InOrder inOrder = inOrder(remove);
-        inOrder.verify(remove).from(BackendInfoDAO.CATEGORY);
         Expression expr = factory.equalTo(BackendInfoDAO.BACKEND_NAME, "backend-name");
         inOrder.verify(remove).where(eq(expr));
         inOrder.verify(remove).apply();
--- a/storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java	Fri Aug 16 14:59:33 2013 +0200
@@ -121,23 +121,16 @@
     private class MongoRemove implements Remove {
 
         @SuppressWarnings("rawtypes")
-        private Category category;
+        private final Category category;
         private DBObject query;
-        private MongoExpressionParser parser;
+        private final MongoExpressionParser parser;
         
-        private MongoRemove() {
-            this(new MongoExpressionParser());
+        private MongoRemove(Category<?> category) {
+            this(category, new MongoExpressionParser());
         }
         
-        private MongoRemove(MongoExpressionParser parser) {
+        private MongoRemove(Category<?> category, MongoExpressionParser parser) {
             this.parser = parser;
-        }
-
-        @Override
-        public void from(@SuppressWarnings("rawtypes") Category category) {
-            if (query != null) {
-                throw new IllegalStateException();
-            }
             this.category = category;
         }
 
@@ -338,8 +331,8 @@
     }
 
     @Override
-    public Remove createRemove() {
-        return new MongoRemove();
+    public Remove createRemove(Category<?> category) {
+        return new MongoRemove(category);
     }
 
     <T extends Pojo> Cursor<T> findAllPojos(MongoQuery<T> mongoQuery, Class<T> resultClass) {
--- a/web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java	Fri Aug 16 14:59:33 2013 +0200
@@ -328,14 +328,9 @@
     }
     
     private class WebRemoveImpl extends WebRemove {
-
-        // required for serialization
-        private WebRemoveImpl() {
-            this(null);
-        }
         
-        private WebRemoveImpl(Map<Category<?>, Integer> categoryIds) {
-            super(categoryIds);
+        private WebRemoveImpl(int categoryId) {
+            super(categoryId);
         }
         
         @Override
@@ -532,8 +527,8 @@
     }
 
     @Override
-    public Remove createRemove() {
-        return new WebRemoveImpl(categoryIds);
+    public Remove createRemove(Category<?> category) {
+        return new WebRemoveImpl(categoryIds.get(category));
     }
 
     @Override
--- a/web/client/src/test/java/com/redhat/thermostat/web/client/internal/WebStorageTest.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/web/client/src/test/java/com/redhat/thermostat/web/client/internal/WebStorageTest.java	Fri Aug 16 14:59:33 2013 +0200
@@ -430,9 +430,7 @@
 
     @Test
     public void testCreateRemove() {
-        WebRemove remove = (WebRemove) storage.createRemove();
-        assertNotNull(remove);
-        remove.from(category);
+        WebRemove remove = (WebRemove) storage.createRemove(category);
         assertEquals(42, remove.getCategoryId());
         Expression expr = factory.equalTo(key1, "test");
         remove.where(expr);
@@ -442,8 +440,7 @@
     @Test
     public void testRemovePojo() throws UnsupportedEncodingException, IOException {
         Expression expr = factory.equalTo(key1, "test");
-        Remove remove = storage.createRemove();
-        remove.from(category);
+        Remove remove = storage.createRemove(category);
         remove.where(expr);
 
         prepareServer();
--- a/web/common/src/main/java/com/redhat/thermostat/web/common/WebRemove.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/web/common/src/main/java/com/redhat/thermostat/web/common/WebRemove.java	Fri Aug 16 14:59:33 2013 +0200
@@ -36,25 +36,16 @@
 
 package com.redhat.thermostat.web.common;
 
-import java.util.Map;
-
-import com.redhat.thermostat.storage.core.Category;
 import com.redhat.thermostat.storage.core.Remove;
 import com.redhat.thermostat.storage.query.Expression;
 
 public class WebRemove implements Remove {
 
-    private transient Map<Category<?>, Integer> categoryIds;
-    private int categoryId;
+    private final int categoryId;
     private Expression whereExpression;
 
-    public WebRemove(Map<Category<?>, Integer> categoryIds) {
-        this.categoryIds = categoryIds;
-    }
-
-    @Override
-    public void from(Category category) {
-        categoryId = categoryIds.get(category);
+    public WebRemove(int categoryId) {
+        this.categoryId = categoryId;
     }
 
     @Override
--- a/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java	Fri Aug 16 14:59:33 2013 +0200
@@ -47,7 +47,6 @@
 import java.security.Principal;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -541,8 +540,8 @@
         
         String removeParam = req.getParameter("remove");
         WebRemove remove = gson.fromJson(removeParam, WebRemove.class);
-        Remove targetRemove = storage.createRemove();
-        targetRemove.from(getCategoryFromId(remove.getCategoryId()));
+        Category<?> targetCategory = getCategoryFromId(remove.getCategoryId());
+        Remove targetRemove = storage.createRemove(targetCategory);
         Expression expr = remove.getWhereExpression();
         if (expr != null) {
             targetRemove.where(expr);
--- a/web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java	Fri Aug 09 10:43:36 2013 +0200
+++ b/web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java	Fri Aug 16 14:59:33 2013 +0200
@@ -1016,7 +1016,7 @@
         
         Remove mockRemove = mock(Remove.class);
 
-        when(mockStorage.createRemove()).thenReturn(mockRemove);
+        when(mockStorage.createRemove(category)).thenReturn(mockRemove);
 
         String endpoint = getEndpoint();
 
@@ -1026,11 +1026,8 @@
         sendAuthentication(conn, testuser, password);
         conn.setDoOutput(true);
         conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
-        Map<Category<?>,Integer> categoryIds = new HashMap<>();
-        categoryIds.put(category, categoryId);
         Expression expr = factory.equalTo(key1, "test");
-        WebRemove remove = new WebRemove(categoryIds);
-        remove.from(category);
+        WebRemove remove = new WebRemove(categoryId);
         remove.where(expr);
         Gson gson = new GsonBuilder()
                 .registerTypeHierarchyAdapter(Expression.class,
@@ -1044,8 +1041,7 @@
         out.flush();
 
         assertEquals(200, conn.getResponseCode());
-        verify(mockStorage).createRemove();
-        verify(mockRemove).from(category);
+        verify(mockStorage).createRemove(eq(category));
         verify(mockRemove).where(eq(expr));
         verify(mockRemove).apply();
     }