# HG changeset patch # User Severin Gehwolf # Date 1376657973 -7200 # Node ID 57db66363d910594487d58154b61ba1565cb98bb # Parent e2034aa58edfc6ceb5a3341926c55972488fd7f3 Make Remove API more consistent. Reviewed-by: omajid Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-August/007952.html diff -r e2034aa58edf -r 57db66363d91 storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.java --- 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 diff -r e2034aa58edf -r 57db66363d91 storage/core/src/main/java/com/redhat/thermostat/storage/core/Remove.java --- 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); /** diff -r e2034aa58edf -r 57db66363d91 storage/core/src/main/java/com/redhat/thermostat/storage/core/Storage.java --- 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(); diff -r e2034aa58edf -r 57db66363d91 storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOImpl.java --- 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(); } diff -r e2034aa58edf -r 57db66363d91 storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/BackendInfoDAOImpl.java --- 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(); } diff -r e2034aa58edf -r 57db66363d91 storage/core/src/test/java/com/redhat/thermostat/storage/core/QueuedStorageTest.java --- 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(); } diff -r e2034aa58edf -r 57db66363d91 storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOTest.java --- 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)); diff -r e2034aa58edf -r 57db66363d91 storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/BackendInfoDAOTest.java --- 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(); diff -r e2034aa58edf -r 57db66363d91 storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java --- 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); } Cursor findAllPojos(MongoQuery mongoQuery, Class resultClass) { diff -r e2034aa58edf -r 57db66363d91 web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java --- 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, 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 diff -r e2034aa58edf -r 57db66363d91 web/client/src/test/java/com/redhat/thermostat/web/client/internal/WebStorageTest.java --- 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(); diff -r e2034aa58edf -r 57db66363d91 web/common/src/main/java/com/redhat/thermostat/web/common/WebRemove.java --- 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, Integer> categoryIds; - private int categoryId; + private final int categoryId; private Expression whereExpression; - public WebRemove(Map, Integer> categoryIds) { - this.categoryIds = categoryIds; - } - - @Override - public void from(Category category) { - categoryId = categoryIds.get(category); + public WebRemove(int categoryId) { + this.categoryId = categoryId; } @Override diff -r e2034aa58edf -r 57db66363d91 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 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); diff -r e2034aa58edf -r 57db66363d91 web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java --- 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,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(); }