# HG changeset patch # User Severin Gehwolf # Date 1377270515 -7200 # Node ID cd020319d8ede625b4b4ecf9d71246271a45ca9b # Parent 852cfb9a5fb951eb4372426402b112d7c61ce85d PR1524: DB write operations should return int on apply(). Reviewed-by: omajid Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-August/008021.html diff -r 852cfb9a5fb9 -r cd020319d8ed client/cli/src/main/java/com/redhat/thermostat/client/cli/internal/CleanDataCommand.java --- a/client/cli/src/main/java/com/redhat/thermostat/client/cli/internal/CleanDataCommand.java Mon Sep 02 11:07:54 2013 +0200 +++ b/client/cli/src/main/java/com/redhat/thermostat/client/cli/internal/CleanDataCommand.java Fri Aug 23 17:08:35 2013 +0200 @@ -173,7 +173,7 @@ } private Set getAllRegisteredAgents(Storage storage) { - List categories = Categories.getAllCategories(); + List> categories = Categories.getAllCategories(); Set agents = new HashSet<>(); PreparedStatement prepared = null; Cursor agentCursor = null; diff -r 852cfb9a5fb9 -r cd020319d8ed host-cpu/common/src/main/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOImpl.java --- a/host-cpu/common/src/main/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/host-cpu/common/src/main/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -64,7 +64,7 @@ @Override public void putCpuStat(CpuStat stat) { - Add add = storage.createAdd(cpuStatCategory); + Add add = storage.createAdd(cpuStatCategory); add.setPojo(stat); add.apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed host-cpu/common/src/test/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOTest.java --- a/host-cpu/common/src/test/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/host-cpu/common/src/test/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -40,6 +40,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; @@ -55,7 +56,6 @@ import com.redhat.thermostat.host.cpu.common.CpuStatDAO; import com.redhat.thermostat.host.cpu.common.model.CpuStat; import com.redhat.thermostat.storage.core.Add; -import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Cursor; import com.redhat.thermostat.storage.core.DescriptorParsingException; import com.redhat.thermostat.storage.core.HostRef; @@ -152,8 +152,9 @@ @Test public void testPutCpuStat() { Storage storage = mock(Storage.class); - Add add = mock(Add.class); - when(storage.createAdd(any(Category.class))).thenReturn(add); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); + when(storage.createAdd(eq(CpuStatDAO.cpuStatCategory))).thenReturn(add); CpuStat stat = new CpuStat(1, new double[] {5.0, 10.0, 15.0}); CpuStatDAO dao = new CpuStatDAOImpl(storage); diff -r 852cfb9a5fb9 -r cd020319d8ed host-memory/common/src/main/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOImpl.java --- a/host-memory/common/src/main/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/host-memory/common/src/main/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -64,7 +64,7 @@ @Override public void putMemoryStat(MemoryStat stat) { - Add add = storage.createAdd(memoryStatCategory); + Add add = storage.createAdd(memoryStatCategory); add.setPojo(stat); add.apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed host-memory/common/src/test/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOTest.java --- a/host-memory/common/src/test/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/host-memory/common/src/test/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -38,6 +38,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.eq; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -52,7 +53,6 @@ import com.redhat.thermostat.host.memory.common.MemoryStatDAO; import com.redhat.thermostat.host.memory.common.model.MemoryStat; import com.redhat.thermostat.storage.core.Add; -import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Cursor; import com.redhat.thermostat.storage.core.DescriptorParsingException; import com.redhat.thermostat.storage.core.HostRef; @@ -138,8 +138,9 @@ @Test public void testPutMemoryStat() { Storage storage = mock(Storage.class); - Add add = mock(Add.class); - when(storage.createAdd(any(Category.class))).thenReturn(add); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); + when(storage.createAdd(eq(MemoryStatDAO.memoryStatCategory))).thenReturn(add); MemoryStat stat = new MemoryStat(TIMESTAMP, TOTAL, FREE, BUFFERS, CACHED, SWAP_TOTAL, SWAP_FREE, COMMIT_LIMIT); MemoryStatDAO dao = new MemoryStatDAOImpl(storage); diff -r 852cfb9a5fb9 -r cd020319d8ed numa/common/src/main/java/com/redhat/thermostat/numa/common/internal/NumaDAOImpl.java --- a/numa/common/src/main/java/com/redhat/thermostat/numa/common/internal/NumaDAOImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/numa/common/src/main/java/com/redhat/thermostat/numa/common/internal/NumaDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -51,7 +51,6 @@ import com.redhat.thermostat.storage.core.HostRef; import com.redhat.thermostat.storage.core.Key; import com.redhat.thermostat.storage.core.PreparedStatement; -import com.redhat.thermostat.storage.core.Replace; import com.redhat.thermostat.storage.core.StatementDescriptor; import com.redhat.thermostat.storage.core.StatementExecutionException; import com.redhat.thermostat.storage.core.Storage; @@ -75,7 +74,7 @@ @Override public void putNumaStat(NumaStat stat) { - Add add = storage.createAdd(numaStatCategory); + Add add = storage.createAdd(numaStatCategory); add.setPojo(stat); add.apply(); } @@ -87,7 +86,7 @@ @Override public void putNumberOfNumaNodes(int numNodes) { - Add replace = storage.createAdd(numaHostCategory); + Add replace = storage.createAdd(numaHostCategory); NumaHostInfo numaHostInfo = new NumaHostInfo(); numaHostInfo.setNumNumaNodes(numNodes); replace.setPojo(numaHostInfo); diff -r 852cfb9a5fb9 -r cd020319d8ed numa/common/src/test/java/com/redhat/thermostat/numa/common/internal/NumaDAOImplTest.java --- a/numa/common/src/test/java/com/redhat/thermostat/numa/common/internal/NumaDAOImplTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/numa/common/src/test/java/com/redhat/thermostat/numa/common/internal/NumaDAOImplTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -38,6 +38,7 @@ import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -53,7 +54,6 @@ import com.redhat.thermostat.numa.common.NumaNodeStat; import com.redhat.thermostat.numa.common.NumaStat; import com.redhat.thermostat.storage.core.Add; -import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Cursor; import com.redhat.thermostat.storage.core.DescriptorParsingException; import com.redhat.thermostat.storage.core.HostRef; @@ -93,7 +93,8 @@ @Test public void testPutNumaStat() { - Add add = mock(Add.class); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); when(storage.createAdd(NumaDAO.numaStatCategory)).thenReturn(add); NumaNodeStat stat = new NumaNodeStat(); @@ -122,8 +123,9 @@ @Test public void testPutNumberOfNumaNodes() { Storage storage = mock(Storage.class); - Add add = mock(Add.class); - when(storage.createAdd(any(Category.class))).thenReturn(add); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); + when(storage.createAdd(eq(NumaDAO.numaHostCategory))).thenReturn(add); NumaDAOImpl dao = new NumaDAOImpl(storage); diff -r 852cfb9a5fb9 -r cd020319d8ed storage/core/src/main/java/com/redhat/thermostat/storage/core/Add.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/Add.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/Add.java Fri Aug 23 17:08:35 2013 +0200 @@ -47,18 +47,18 @@ * @see Replace * @see Update */ -public interface Add { +public interface Add extends DataModifyingStatement { /** - * Sets the POJO that is to be put into the storage. + * Sets the POJO that is to be added into storage. * - * @param pojo the pojo to be put into the storage + * @param pojo the pojo to be added into storage */ void setPojo(Pojo pojo); /** - * Applies this {@code Add} operation to the storage. + * Applies this {@code Add} operation to storage. */ - void apply(); + int apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed storage/core/src/main/java/com/redhat/thermostat/storage/core/Categories.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/Categories.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/Categories.java Fri Aug 23 17:08:35 2013 +0200 @@ -44,29 +44,29 @@ public class Categories { - private static final Map namesToCategories = new HashMap<>(); + private static final Map> namesToCategories = new HashMap<>(); public static synchronized boolean contains(String name) { return namesToCategories.containsKey(name); } - public static synchronized void add(Category category) { + public static synchronized void add(Category category) { if (namesToCategories.containsKey(category.getName())) { throw new IllegalArgumentException("category already registered"); } namesToCategories.put(category.getName(), category); } - public static synchronized void remove(Category category) { + public static synchronized void remove(Category category) { namesToCategories.remove(category.getName()); } - public static synchronized Category getByName(String categoryName) { + public static synchronized Category getByName(String categoryName) { return namesToCategories.get(categoryName); } - public static synchronized List getAllCategories() { - return Collections.unmodifiableList(new ArrayList(namesToCategories.values())); + public static synchronized List> getAllCategories() { + return Collections.unmodifiableList(new ArrayList>(namesToCategories.values())); } } diff -r 852cfb9a5fb9 -r cd020319d8ed storage/core/src/main/java/com/redhat/thermostat/storage/core/DataModifyingStatement.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/DataModifyingStatement.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/DataModifyingStatement.java Fri Aug 23 17:08:35 2013 +0200 @@ -11,10 +11,21 @@ public interface DataModifyingStatement extends Statement { /** + * Default success status. The status code itself has no meaning other than + * indicating success. Suitable to be returned on {@link #apply()}. + */ + public static final int DEFAULT_STATUS_SUCCESS = 0; + /** + * Default failure status. The status code itself has no meaning other than + * indicating failure. Suitable to be returned on {@link #apply()}. + */ + public static final int DEFAULT_STATUS_FAILURE = -1; + + /** * Executes this statement. * - * @return a number greater than zero on success. A negative failure code - * otherwise. + * @return a number greater than or equal to zero on success. A negative + * failure code otherwise. */ - int execute(); + int apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.java Fri Aug 23 17:08:35 2013 +0200 @@ -51,7 +51,7 @@ private static final int SHUTDOWN_TIMEOUT_SECONDS = 3; - private class QueuedReplace extends AddReplaceHelper implements Replace { + private class QueuedReplace extends AddReplaceHelper implements Replace { private Expression expression; @@ -60,8 +60,9 @@ } @Override - public void apply() { + public int apply() { replaceImpl(getCategory(), getPojo(), expression); + return DataModifyingStatement.DEFAULT_STATUS_SUCCESS; } @Override @@ -71,23 +72,24 @@ } - private class QueuedAdd extends AddReplaceHelper implements Add { + private class QueuedAdd extends AddReplaceHelper implements Add { private QueuedAdd(Category category) { super(category); } @Override - public void apply() { + public int apply() { addImpl(getCategory(), getPojo()); + return DataModifyingStatement.DEFAULT_STATUS_SUCCESS; } } - private class QueuedUpdate implements Update { - private Update delegateUpdate; + private class QueuedUpdate implements Update { + private Update delegateUpdate; - QueuedUpdate(Update delegateUpdate) { + QueuedUpdate(Update delegateUpdate) { this.delegateUpdate = delegateUpdate; } @@ -98,12 +100,12 @@ } @Override - public void set(Key key, T value) { + public void set(Key key, S value) { delegateUpdate.set(key, value); } @Override - public void apply() { + public int apply() { executor.execute(new Runnable() { @Override @@ -112,6 +114,7 @@ } }); + return DataModifyingStatement.DEFAULT_STATUS_SUCCESS; } } @@ -148,14 +151,14 @@ } @Override - public Add createAdd(Category into) { - QueuedAdd add = new QueuedAdd(into); + public Add createAdd(Category into) { + QueuedAdd add = new QueuedAdd<>(into); return add; } @Override - public Replace createReplace(Category into) { - QueuedReplace replace = new QueuedReplace(into); + public Replace createReplace(Category into) { + QueuedReplace replace = new QueuedReplace<>(into); return replace; } @@ -165,7 +168,7 @@ @Override public void run() { - Replace replace = delegate.createReplace(category); + Replace replace = delegate.createReplace(category); replace.setPojo(pojo); replace.where(expression); replace.apply(); @@ -181,7 +184,7 @@ @Override public void run() { - Add add = delegate.createAdd(category); + Add add = delegate.createAdd(category); add.setPojo(pojo); add.apply(); } @@ -224,13 +227,13 @@ } @Override - public Update createUpdate(Category category) { - QueuedUpdate update = new QueuedUpdate(delegate.createUpdate(category)); + public Update createUpdate(Category category) { + QueuedUpdate update = new QueuedUpdate<>(delegate.createUpdate(category)); return update; } @Override - public Remove createRemove(Category category) { + public Remove createRemove(Category category) { return delegate.createRemove(category); } diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/Remove.java Fri Aug 23 17:08:35 2013 +0200 @@ -37,6 +37,7 @@ package com.redhat.thermostat.storage.core; +import com.redhat.thermostat.storage.model.Pojo; import com.redhat.thermostat.storage.query.Expression; /** @@ -46,7 +47,7 @@ * @see Update * @see Replace */ -public interface Remove { +public interface Remove extends DataModifyingStatement { /** * Boolean expression in order to restrict the set of records to be removed @@ -60,7 +61,7 @@ /** * Applies this remove operation. */ - void apply(); + int apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed storage/core/src/main/java/com/redhat/thermostat/storage/core/Replace.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/Replace.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/Replace.java Fri Aug 23 17:08:35 2013 +0200 @@ -56,12 +56,13 @@ * @see Remove * @see Update */ -public interface Replace { +public interface Replace extends DataModifyingStatement { /** * Sets the POJO that will be used to replace the value in storage. * - * @param pojo the pojo to be put into the storage + * @param pojo the pojo which describes the updated values or the new + * record to be added to storage. */ void setPojo(Pojo pojo); @@ -73,7 +74,7 @@ /** * Applies this {@code Replace} operation to the storage. */ - void apply(); + int apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/Storage.java Fri Aug 23 17:08:35 2013 +0200 @@ -80,8 +80,8 @@ */ Connection getConnection(); - Add createAdd(Category category); - Replace createReplace(Category category); + Add createAdd(Category category); + Replace createReplace(Category category); /** * Drop all data related to the specified agent. @@ -92,8 +92,8 @@ InputStream loadFile(String filename); - Update createUpdate(Category category); - Remove createRemove(Category category); + Update createUpdate(Category category); + Remove createRemove(Category category); void shutdown(); diff -r 852cfb9a5fb9 -r cd020319d8ed storage/core/src/main/java/com/redhat/thermostat/storage/core/Update.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/Update.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/Update.java Fri Aug 23 17:08:35 2013 +0200 @@ -36,6 +36,7 @@ package com.redhat.thermostat.storage.core; +import com.redhat.thermostat.storage.model.Pojo; import com.redhat.thermostat.storage.query.Expression; /** @@ -45,7 +46,7 @@ * @see Replace * @see Remove */ -public interface Update { +public interface Update extends DataModifyingStatement { /** * Given a boolean expression, this method specifies a where condition for @@ -67,11 +68,11 @@ * @param value * the value to set */ - void set(Key key, T value); + void set(Key key, S value); /** * Applies this update operation. */ - void apply(); + int apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -182,7 +182,7 @@ @Override public void addAgentInformation(AgentInformation agentInfo) { - Add replace = storage.createAdd(CATEGORY); + Add replace = storage.createAdd(CATEGORY); replace.setPojo(agentInfo); replace.apply(); } @@ -190,14 +190,14 @@ @Override public void removeAgentInformation(AgentInformation agentInfo) { Expression expr = factory.equalTo(Key.AGENT_ID, agentInfo.getAgentId()); - Remove remove = storage.createRemove(CATEGORY); + Remove remove = storage.createRemove(CATEGORY); remove.where(expr); remove.apply(); } @Override public void updateAgentInformation(AgentInformation agentInfo) { - Update update = storage.createUpdate(CATEGORY); + Update update = storage.createUpdate(CATEGORY); Expression expr = factory.equalTo(Key.AGENT_ID, agentInfo.getAgentId()); update.where(expr); update.set(START_TIME_KEY, agentInfo.getStartTime()); diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/BackendInfoDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -108,7 +108,7 @@ @Override public void addBackendInformation(BackendInformation info) { - Add add = storage.createAdd(BackendInfoDAO.CATEGORY); + Add add = storage.createAdd(BackendInfoDAO.CATEGORY); add.setPojo(info); add.apply(); } @@ -116,7 +116,7 @@ @Override public void removeBackendInformation(BackendInformation info) { Expression expr = factory.equalTo(BACKEND_NAME, info.getName()); - Remove remove = storage.createRemove(CATEGORY); + Remove remove = storage.createRemove(CATEGORY); remove.where(expr); remove.apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOImpl.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -120,7 +120,7 @@ @Override public void putHostInfo(HostInfo info) { - Add add = storage.createAdd(hostInfoCategory); + Add add = storage.createAdd(hostInfoCategory); add.setPojo(info); add.apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/NetworkInterfaceInfoDAOImpl.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/NetworkInterfaceInfoDAOImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/NetworkInterfaceInfoDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -100,7 +100,7 @@ @Override public void putNetworkInterfaceInfo(NetworkInterfaceInfo info) { - Replace replace = storage.createReplace(networkInfoCategory); + Replace replace = storage.createReplace(networkInfoCategory); ExpressionFactory factory = new ExpressionFactory(); String agentId = info.getAgentId(); if (agentId == null) { diff -r 852cfb9a5fb9 -r cd020319d8ed storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOImpl.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -173,14 +173,14 @@ @Override public void putVmInfo(VmInfo info) { - Add replace = storage.createAdd(vmInfoCategory); + Add replace = storage.createAdd(vmInfoCategory); replace.setPojo(info); replace.apply(); } @Override public void putVmStoppedTime(String vmId, long timestamp) { - Update update = storage.createUpdate(vmInfoCategory); + Update update = storage.createUpdate(vmInfoCategory); Expression expr = factory.equalTo(Key.VM_ID, vmId); update.where(expr); update.set(VmInfoDAO.stopTimeKey, timestamp); diff -r 852cfb9a5fb9 -r cd020319d8ed storage/core/src/main/java/com/redhat/thermostat/storage/internal/statement/PreparedStatementImpl.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/statement/PreparedStatementImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/statement/PreparedStatementImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -115,7 +115,7 @@ } catch (Exception e) { throw new StatementExecutionException(e); } - return dmlStatement.execute(); + return dmlStatement.apply(); } @Override diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/test/java/com/redhat/thermostat/storage/core/QueuedStorageTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -198,14 +198,15 @@ private QueuedStorage queuedStorage; private Storage delegateStorage; - private Add delegateAdd; - private Replace delegateReplace; + private Add delegateAdd; + private Replace delegateReplace; private TestExecutor executor; private TestExecutor fileExecutor; private InputStream expectedFile; + @SuppressWarnings("unchecked") @Before public void setUp() { executor = new TestExecutor(); @@ -215,7 +216,7 @@ delegateAdd = mock(Add.class); delegateReplace = mock(Replace.class); - Remove remove = mock(Remove.class); + Remove remove = mock(Remove.class); when(delegateStorage.createAdd(any(Category.class))).thenReturn(delegateAdd); when(delegateStorage.createReplace(any(Category.class))).thenReturn(delegateReplace); when(delegateStorage.createRemove(any(Category.class))).thenReturn(remove); @@ -239,7 +240,7 @@ Category category = mock(Category.class); Pojo pojo = mock(Pojo.class); - Replace replace = queuedStorage.createReplace(category); + Replace replace = queuedStorage.createReplace(category); replace.setPojo(pojo); Expression expression = new ExpressionFactory().equalTo(Key.AGENT_ID, "foo"); replace.where(expression); @@ -260,14 +261,15 @@ assertNull(fileExecutor.getTask()); } + @SuppressWarnings("unchecked") @Test public void testUpdatePojo() { - Update delegateUpdate = mock(Update.class); + Update delegateUpdate = mock(Update.class); when(delegateStorage.createUpdate(any(Category.class))).thenReturn(delegateUpdate); Category category = mock(Category.class); - Update update = queuedStorage.createUpdate(category); + Update update = queuedStorage.createUpdate(category); verify(delegateStorage).createUpdate(category); verifyNoMoreInteractions(delegateStorage); @@ -435,13 +437,13 @@ } @Override - public Add createAdd(Category category) { + public Add createAdd(Category category) { // not implemented throw new AssertionError(); } @Override - public Replace createReplace(Category category) { + public Replace createReplace(Category category) { // not implemented throw new AssertionError(); } @@ -466,13 +468,13 @@ } @Override - public Update createUpdate(Category category) { + public Update createUpdate(Category category) { // not implemented throw new AssertionError(); } @Override - public Remove createRemove(Category category) { + public Remove createRemove(Category category) { // not implemented throw new AssertionError(); } diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -261,8 +261,9 @@ @Test public void verifyAddAgentInformation() { Storage storage = mock(Storage.class); - Add add = mock(Add.class); - when(storage.createAdd(any(Category.class))).thenReturn(add); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); + when(storage.createAdd(eq(AgentInfoDAO.CATEGORY))).thenReturn(add); AgentInfoDAO dao = new AgentInfoDAOImpl(storage); @@ -276,9 +277,10 @@ @Test public void verifyUpdateAgentInformation() { - Update mockUpdate = mock(Update.class); + @SuppressWarnings("unchecked") + Update mockUpdate = mock(Update.class); Storage storage = mock(Storage.class); - when(storage.createUpdate(any(Category.class))).thenReturn(mockUpdate); + when(storage.createUpdate(eq(AgentInfoDAO.CATEGORY))).thenReturn(mockUpdate); AgentInfoDAO dao = new AgentInfoDAOImpl(storage); dao.updateAgentInformation(agentInfo1); @@ -297,7 +299,8 @@ @Test public void verifyRemoveAgentInformation() { - Remove mockRemove = mock(Remove.class); + @SuppressWarnings("unchecked") + Remove mockRemove = mock(Remove.class); Storage storage = mock(Storage.class); when(storage.createRemove(eq(AgentInfoDAO.CATEGORY))).thenReturn(mockRemove); AgentInfoDAO dao = new AgentInfoDAOImpl(storage); diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/BackendInfoDAOTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -128,8 +128,9 @@ @Test public void verifyAddBackendInformation() { Storage storage = mock(Storage.class); - Add add = mock(Add.class); - when(storage.createAdd(any(Category.class))).thenReturn(add); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); + when(storage.createAdd(eq(BackendInfoDAO.CATEGORY))).thenReturn(add); BackendInfoDAO dao = new BackendInfoDAOImpl(storage); @@ -176,7 +177,8 @@ @Test public void verifyRemoveBackendInformation() { - Remove remove = mock(Remove.class); + @SuppressWarnings("unchecked") + Remove remove = mock(Remove.class); Storage storage = mock(Storage.class); when(storage.createRemove(eq(BackendInfoDAO.CATEGORY))).thenReturn(remove); BackendInfoDAO dao = new BackendInfoDAOImpl(storage); diff -r 852cfb9a5fb9 -r cd020319d8ed storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOTest.java --- a/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -40,6 +40,7 @@ import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -51,7 +52,6 @@ import org.junit.Test; import com.redhat.thermostat.storage.core.Add; -import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Cursor; import com.redhat.thermostat.storage.core.DescriptorParsingException; import com.redhat.thermostat.storage.core.HostRef; @@ -212,8 +212,9 @@ @Test public void testPutHostInfo() { Storage storage = mock(Storage.class); - Add add = mock(Add.class); - when(storage.createAdd(any(Category.class))).thenReturn(add); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); + when(storage.createAdd(eq(HostInfoDAO.hostInfoCategory))).thenReturn(add); AgentInfoDAO agentInfo = mock(AgentInfoDAO.class); diff -r 852cfb9a5fb9 -r cd020319d8ed storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/NetworkInterfaceInfoDAOTest.java --- a/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/NetworkInterfaceInfoDAOTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/NetworkInterfaceInfoDAOTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -40,6 +40,7 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -50,7 +51,6 @@ import org.junit.Test; -import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Cursor; import com.redhat.thermostat.storage.core.DescriptorParsingException; import com.redhat.thermostat.storage.core.HostRef; @@ -147,8 +147,9 @@ private void doTestPutNetworkInerfaceInfo(boolean agentIdFromStorage, String agentId) { Storage storage = mock(Storage.class); - Replace replace = mock(Replace.class); - when(storage.createReplace(any(Category.class))).thenReturn(replace); + @SuppressWarnings("unchecked") + Replace replace = mock(Replace.class); + when(storage.createReplace(eq(NetworkInterfaceInfoDAO.networkInfoCategory))).thenReturn(replace); if (agentIdFromStorage) { when(storage.getAgentId()).thenReturn(agentId); } diff -r 852cfb9a5fb9 -r cd020319d8ed storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOTest.java --- a/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -40,6 +40,7 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -54,7 +55,6 @@ import org.junit.Test; import com.redhat.thermostat.storage.core.Add; -import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Cursor; import com.redhat.thermostat.storage.core.DescriptorParsingException; import com.redhat.thermostat.storage.core.HostRef; @@ -315,8 +315,9 @@ public void testPutVmInfo() { Storage storage = mock(Storage.class); - Add add = mock(Add.class); - when(storage.createAdd(any(Category.class))).thenReturn(add); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); + when(storage.createAdd(eq(VmInfoDAO.vmInfoCategory))).thenReturn(add); VmInfo info = new VmInfo(vmId, vmPid, startTime, stopTime, jVersion, jHome, mainClass, commandLine, vmName, vmInfo, vmVersion, vmArgs, @@ -331,9 +332,10 @@ @Test public void testPutVmStoppedTime() { - Update mockUpdate = mock(Update.class); + @SuppressWarnings("unchecked") + Update mockUpdate = mock(Update.class); Storage storage = mock(Storage.class); - when(storage.createUpdate(any(Category.class))).thenReturn(mockUpdate); + when(storage.createUpdate(eq(VmInfoDAO.vmInfoCategory))).thenReturn(mockUpdate); VmInfoDAO dao = new VmInfoDAOImpl(storage); dao.putVmStoppedTime(vmId, stopTime); diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java Fri Aug 23 17:08:35 2013 +0200 @@ -49,6 +49,7 @@ import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; +import com.mongodb.WriteResult; import com.mongodb.gridfs.GridFS; import com.mongodb.gridfs.GridFSDBFile; import com.mongodb.gridfs.GridFSInputFile; @@ -100,20 +101,20 @@ } } - private class MongoAdd extends AddReplaceHelper implements Add { + private class MongoAdd extends AddReplaceHelper implements Add { private MongoAdd(Category category) { super(category); } @Override - public void apply() { - addImpl(getCategory(), getPojo()); + public int apply() { + return addImpl(getCategory(), getPojo()); } } - private class MongoReplace extends AddReplaceHelper implements Replace { + private class MongoReplace extends AddReplaceHelper implements Replace { private DBObject query; private final MongoExpressionParser parser; @@ -124,13 +125,13 @@ } @Override - public void apply() { + public int apply() { if (query == null) { String msg = "where expression must be set. " + "Please call where() before apply()."; throw new IllegalStateException(msg); } - replaceImpl(getCategory(), getPojo(), query); + return replaceImpl(getCategory(), getPojo(), query); } @Override @@ -140,7 +141,7 @@ } - private class MongoRemove implements Remove { + private class MongoRemove implements Remove { @SuppressWarnings("rawtypes") private final Category category; @@ -162,8 +163,8 @@ } @Override - public void apply() { - removePojo(category, query); + public int apply() { + return removePojo(category, query); } } @@ -228,27 +229,35 @@ } @Override - public Add createAdd(Category into) { - MongoAdd add = new MongoAdd(into); + public Add createAdd(Category into) { + MongoAdd add = new MongoAdd<>(into); return add; } @Override - public Replace createReplace(Category into) { - MongoReplace replace = new MongoReplace(into); + public Replace createReplace(Category into) { + MongoReplace replace = new MongoReplace<>(into); return replace; } - private void addImpl(final Category cat, final Pojo pojo) { + private int addImpl(final Category cat, final Pojo pojo) { DBCollection coll = getCachedCollection(cat); DBObject toInsert = preparePut(pojo); - coll.insert(toInsert); + WriteResult result = coll.insert(toInsert); + return numAffectedRecords(result); } - private void replaceImpl(final Category cat, final Pojo pojo, final DBObject query) { + private int replaceImpl(final Category cat, final Pojo pojo, final DBObject query) { DBCollection coll = getCachedCollection(cat); DBObject toInsert = preparePut(pojo); - coll.update(query, toInsert, true, false); + WriteResult result = coll.update(query, toInsert, true, false); + return numAffectedRecords(result); + } + + private int numAffectedRecords(WriteResult result) { + // response code corresponds to the number of records affected. + int responseCode = result.getN(); + return responseCode; } private DBObject preparePut(final Pojo pojo) { @@ -260,17 +269,19 @@ return toInsert; } - void updatePojo(MongoUpdate mongoUpdate) { + int updatePojo(MongoUpdate mongoUpdate) { Category cat = mongoUpdate.getCategory(); DBCollection coll = getCachedCollection(cat); DBObject query = mongoUpdate.getQuery(); DBObject values = mongoUpdate.getValues(); - coll.update(query, values); + WriteResult result = coll.update(query, values); + return numAffectedRecords(result); } - private void removePojo(Category category, DBObject query) { + private int removePojo(Category category, DBObject query) { DBCollection coll = getCachedCollection(category); - coll.remove(query); + WriteResult result = coll.remove(query); + return numAffectedRecords(result); } private DBCollection getCachedCollection(Category category) { @@ -337,13 +348,13 @@ } @Override - public Update createUpdate(Category category) { - return new MongoUpdate(this, category); + public Update createUpdate(Category category) { + return new MongoUpdate<>(this, category); } @Override - public Remove createRemove(Category category) { - return new MongoRemove(category); + public Remove createRemove(Category category) { + return new MongoRemove<>(category); } Cursor findAllPojos(MongoQuery mongoQuery, Class resultClass) { diff -r 852cfb9a5fb9 -r cd020319d8ed storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoUpdate.java --- a/storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoUpdate.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoUpdate.java Fri Aug 23 17:08:35 2013 +0200 @@ -42,29 +42,30 @@ import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Key; import com.redhat.thermostat.storage.core.Update; +import com.redhat.thermostat.storage.model.Pojo; import com.redhat.thermostat.storage.query.Expression; -class MongoUpdate implements Update { +class MongoUpdate implements Update { private static final String SET_MODIFIER = "$set"; private MongoStorage storage; private DBObject query; private DBObject values; - private Category category; + private Category category; private MongoExpressionParser parser; - public MongoUpdate(MongoStorage storage, Category category) { + public MongoUpdate(MongoStorage storage, Category category) { this(storage, category, new MongoExpressionParser()); } - MongoUpdate(MongoStorage storage, Category category, MongoExpressionParser parser) { + MongoUpdate(MongoStorage storage, Category category, MongoExpressionParser parser) { this.storage = storage; this.category = category; this.parser = parser; } - Category getCategory() { + Category getCategory() { return category; } @@ -78,7 +79,7 @@ } @Override - public void set(Key key, T value) { + public void set(Key key, S value) { if (values == null) { values = new BasicDBObject(); } @@ -90,8 +91,8 @@ } @Override - public void apply() { - storage.updatePojo(this); + public int apply() { + return storage.updatePojo(this); } } diff -r 852cfb9a5fb9 -r cd020319d8ed storage/mongo/src/test/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorageTest.java --- a/storage/mongo/src/test/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorageTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/storage/mongo/src/test/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorageTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -77,6 +77,7 @@ import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoURI; +import com.mongodb.WriteResult; import com.mongodb.gridfs.GridFS; import com.mongodb.gridfs.GridFSDBFile; import com.mongodb.gridfs.GridFSInputFile; @@ -206,6 +207,19 @@ when(testCollection.find()).thenReturn(cursor); when(testCollection.findOne(any(DBObject.class))).thenReturn(value1); when(testCollection.getCount()).thenReturn(2L); + + WriteResult mockWriteResult = mock(WriteResult.class); + // fake that 1 record was affected for all db write ops. + when(mockWriteResult.getN()).thenReturn(1); + // mock for remove + when(testCollection.remove(any(DBObject.class))).thenReturn(mockWriteResult); + // mock for update + when(testCollection.update(any(DBObject.class), any(DBObject.class))).thenReturn(mockWriteResult); + // mock for replace + when(testCollection.update(any(DBObject.class), any(DBObject.class), eq(true), eq(false))).thenReturn(mockWriteResult); + // mock for add + when(testCollection.insert(any(DBObject.class))).thenReturn(mockWriteResult); + emptyTestCollection = PowerMockito.mock(DBCollection.class); when(emptyTestCollection.getCount()).thenReturn(0L); when(db.collectionExists(anyString())).thenReturn(false); diff -r 852cfb9a5fb9 -r cd020319d8ed thread/collector/src/main/java/com/redhat/thermostat/thread/dao/impl/ThreadDaoImpl.java --- a/thread/collector/src/main/java/com/redhat/thermostat/thread/dao/impl/ThreadDaoImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/thread/collector/src/main/java/com/redhat/thermostat/thread/dao/impl/ThreadDaoImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -138,7 +138,8 @@ @Override public void saveCapabilities(VMThreadCapabilities caps) { - Replace replace = storage.createReplace(THREAD_CAPABILITIES); + @SuppressWarnings("unchecked") + Replace replace = storage.createReplace(THREAD_CAPABILITIES); ExpressionFactory factory = new ExpressionFactory(); String agentId = caps.getAgentId(); if (agentId == null) { @@ -154,7 +155,8 @@ @Override public void saveSummary(ThreadSummary summary) { - Add add = storage.createAdd(THREAD_SUMMARY); + @SuppressWarnings("unchecked") + Add add = storage.createAdd(THREAD_SUMMARY); add.setPojo(summary); add.apply(); } @@ -210,7 +212,8 @@ @Override public void saveHarvestingStatus(ThreadHarvestingStatus status) { - Add add = storage.createAdd(THREAD_HARVESTING_STATUS); + @SuppressWarnings("unchecked") + Add add = storage.createAdd(THREAD_HARVESTING_STATUS); add.setPojo(status); add.apply(); } @@ -241,7 +244,8 @@ @Override public void saveThreadInfo(ThreadInfoData info) { - Add add = storage.createAdd(THREAD_INFO); + @SuppressWarnings("unchecked") + Add add = storage.createAdd(THREAD_INFO); add.setPojo(info); add.apply(); } @@ -297,7 +301,8 @@ @Override public void saveDeadLockStatus(VmDeadLockData deadLockInfo) { - Add add = storage.createAdd(DEADLOCK_INFO); + @SuppressWarnings("unchecked") + Add add = storage.createAdd(DEADLOCK_INFO); add.setPojo(deadLockInfo); add.apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed thread/collector/src/test/java/com/redhat/thermostat/thread/dao/impl/ThreadDaoImplTest.java --- a/thread/collector/src/test/java/com/redhat/thermostat/thread/dao/impl/ThreadDaoImplTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/thread/collector/src/test/java/com/redhat/thermostat/thread/dao/impl/ThreadDaoImplTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -42,6 +42,7 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertNull; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -52,7 +53,6 @@ import org.junit.Test; import com.redhat.thermostat.storage.core.Add; -import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Cursor; import com.redhat.thermostat.storage.core.DescriptorParsingException; import com.redhat.thermostat.storage.core.HostRef; @@ -200,8 +200,9 @@ private void doTestSaveVMCaps(boolean agentIdFromStorage, String agentId) { Storage storage = mock(Storage.class); - Replace replace = mock(Replace.class); - when(storage.createReplace(any(Category.class))).thenReturn(replace); + @SuppressWarnings("unchecked") + Replace replace = mock(Replace.class); + when(storage.createReplace(eq(ThreadDao.THREAD_CAPABILITIES))).thenReturn(replace); if (agentIdFromStorage) { when(storage.getAgentId()).thenReturn(agentId); } @@ -274,7 +275,8 @@ @Test public void testSaveDeadLockStatus() { Storage storage = mock(Storage.class); - Add add = mock(Add.class); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); when(storage.createAdd(ThreadDaoImpl.DEADLOCK_INFO)).thenReturn(add); VmDeadLockData status = mock(VmDeadLockData.class); @@ -322,7 +324,8 @@ @Test public void testSetHarvestingStatus() { Storage storage = mock(Storage.class); - Add add = mock(Add.class); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); when(storage.createAdd(ThreadDaoImpl.THREAD_HARVESTING_STATUS)).thenReturn(add); ThreadHarvestingStatus status = mock(ThreadHarvestingStatus.class); diff -r 852cfb9a5fb9 -r cd020319d8ed vm-classstat/common/src/main/java/com/redhat/thermostat/vm/classstat/common/internal/VmClassStatDAOImpl.java --- a/vm-classstat/common/src/main/java/com/redhat/thermostat/vm/classstat/common/internal/VmClassStatDAOImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/vm-classstat/common/src/main/java/com/redhat/thermostat/vm/classstat/common/internal/VmClassStatDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -63,7 +63,7 @@ @Override public void putVmClassStat(VmClassStat stat) { - Add add = storage.createAdd(vmClassStatsCategory); + Add add = storage.createAdd(vmClassStatsCategory); add.setPojo(stat); add.apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed vm-classstat/common/src/test/java/com/redhat/thermostat/vm/classstat/common/internal/VmClassStatDAOTest.java --- a/vm-classstat/common/src/test/java/com/redhat/thermostat/vm/classstat/common/internal/VmClassStatDAOTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/vm-classstat/common/src/test/java/com/redhat/thermostat/vm/classstat/common/internal/VmClassStatDAOTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -39,6 +39,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -50,7 +51,6 @@ import org.junit.Test; import com.redhat.thermostat.storage.core.Add; -import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Cursor; import com.redhat.thermostat.storage.core.DescriptorParsingException; import com.redhat.thermostat.storage.core.HostRef; @@ -133,8 +133,9 @@ public void testPutVmClassStat() { Storage storage = mock(Storage.class); - Add add = mock(Add.class); - when(storage.createAdd(any(Category.class))).thenReturn(add); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); + when(storage.createAdd(eq(VmClassStatDAO.vmClassStatsCategory))).thenReturn(add); VmClassStat stat = new VmClassStat(VM_ID, TIMESTAMP, LOADED_CLASSES); VmClassStatDAO dao = new VmClassStatDAOImpl(storage); diff -r 852cfb9a5fb9 -r cd020319d8ed vm-cpu/common/src/main/java/com/redhat/thermostat/vm/cpu/common/internal/VmCpuStatDAOImpl.java --- a/vm-cpu/common/src/main/java/com/redhat/thermostat/vm/cpu/common/internal/VmCpuStatDAOImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/vm-cpu/common/src/main/java/com/redhat/thermostat/vm/cpu/common/internal/VmCpuStatDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -63,7 +63,7 @@ @Override public void putVmCpuStat(VmCpuStat stat) { - Add add = storage.createAdd(vmCpuStatCategory); + Add add = storage.createAdd(vmCpuStatCategory); add.setPojo(stat); add.apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed vm-cpu/common/src/test/java/com/redhat/thermostat/vm/cpu/common/internal/VmCpuStatDAOTest.java --- a/vm-cpu/common/src/test/java/com/redhat/thermostat/vm/cpu/common/internal/VmCpuStatDAOTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/vm-cpu/common/src/test/java/com/redhat/thermostat/vm/cpu/common/internal/VmCpuStatDAOTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -39,6 +39,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -51,7 +52,6 @@ import org.junit.Test; import com.redhat.thermostat.storage.core.Add; -import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Cursor; import com.redhat.thermostat.storage.core.DescriptorParsingException; import com.redhat.thermostat.storage.core.HostRef; @@ -134,8 +134,9 @@ @Test public void testPutVmCpuStat() { Storage storage = mock(Storage.class); - Add add = mock(Add.class); - when(storage.createAdd(any(Category.class))).thenReturn(add); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); + when(storage.createAdd(eq(VmCpuStatDAO.vmCpuStatCategory))).thenReturn(add); VmCpuStat stat = new VmCpuStat(TIMESTAMP, VM_ID, CPU_LOAD); VmCpuStatDAO dao = new VmCpuStatDAOImpl(storage); diff -r 852cfb9a5fb9 -r cd020319d8ed vm-heap-analysis/common/src/main/java/com/redhat/thermostat/vm/heap/analysis/common/internal/HeapDAOImpl.java --- a/vm-heap-analysis/common/src/main/java/com/redhat/thermostat/vm/heap/analysis/common/internal/HeapDAOImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/vm-heap-analysis/common/src/main/java/com/redhat/thermostat/vm/heap/analysis/common/internal/HeapDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -97,7 +97,7 @@ if (histogramData != null) { heapInfo.setHistogramId(histogramId); } - Add add = storage.createAdd(heapInfoCategory); + Add add = storage.createAdd(heapInfoCategory); add.setPojo(heapInfo); add.apply(); diff -r 852cfb9a5fb9 -r cd020319d8ed vm-heap-analysis/common/src/test/java/com/redhat/thermostat/vm/heap/analysis/common/internal/HeapDAOTest.java --- a/vm-heap-analysis/common/src/test/java/com/redhat/thermostat/vm/heap/analysis/common/internal/HeapDAOTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/vm-heap-analysis/common/src/test/java/com/redhat/thermostat/vm/heap/analysis/common/internal/HeapDAOTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -85,7 +85,7 @@ private HeapDAO dao; private Storage storage; - private Add add; + private Add add; private HeapInfo heapInfo; private File heapDumpData; private ObjectHistogram histogram; diff -r 852cfb9a5fb9 -r cd020319d8ed vm-jmx/common/src/main/java/com/redhat/thermostat/vm/jmx/common/internal/JmxNotificationDAOImpl.java --- a/vm-jmx/common/src/main/java/com/redhat/thermostat/vm/jmx/common/internal/JmxNotificationDAOImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/vm-jmx/common/src/main/java/com/redhat/thermostat/vm/jmx/common/internal/JmxNotificationDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -96,7 +96,7 @@ @Override public void addNotificationStatus(JmxNotificationStatus status) { - Add add = storage.createAdd(NOTIFICATION_STATUS); + Add add = storage.createAdd(NOTIFICATION_STATUS); add.setPojo(status); add.apply(); } @@ -132,7 +132,7 @@ @Override public void addNotification(JmxNotification notification) { - Add add = storage.createAdd(NOTIFICATIONS); + Add add = storage.createAdd(NOTIFICATIONS); add.setPojo(notification); add.apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed vm-jmx/common/src/test/java/com/redhat/thermostat/vm/jmx/common/internal/JmxNotificationDAOImplTest.java --- a/vm-jmx/common/src/test/java/com/redhat/thermostat/vm/jmx/common/internal/JmxNotificationDAOImplTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/vm-jmx/common/src/test/java/com/redhat/thermostat/vm/jmx/common/internal/JmxNotificationDAOImplTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -98,7 +98,8 @@ @Test public void verifyAddNotificationStatus() { - Add add = mock(Add.class); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); when(storage.createAdd(JmxNotificationDAOImpl.NOTIFICATION_STATUS)).thenReturn(add); JmxNotificationStatus data = mock(JmxNotificationStatus.class); @@ -143,7 +144,8 @@ @Test public void verfiyAddNotification() { - Add add = mock(Add.class); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); when(storage.createAdd(JmxNotificationDAOImpl.NOTIFICATIONS)).thenReturn(add); JmxNotification data = mock(JmxNotification.class); diff -r 852cfb9a5fb9 -r cd020319d8ed vm-memory/common/src/main/java/com/redhat/thermostat/vm/memory/common/internal/VmMemoryStatDAOImpl.java --- a/vm-memory/common/src/main/java/com/redhat/thermostat/vm/memory/common/internal/VmMemoryStatDAOImpl.java Mon Sep 02 11:07:54 2013 +0200 +++ b/vm-memory/common/src/main/java/com/redhat/thermostat/vm/memory/common/internal/VmMemoryStatDAOImpl.java Fri Aug 23 17:08:35 2013 +0200 @@ -101,7 +101,7 @@ @Override public void putVmMemoryStat(VmMemoryStat stat) { - Add add = storage.createAdd(vmMemoryStatsCategory); + Add add = storage.createAdd(vmMemoryStatsCategory); add.setPojo(stat); add.apply(); } diff -r 852cfb9a5fb9 -r cd020319d8ed vm-memory/common/src/test/java/com/redhat/thermostat/vm/memory/common/internal/VmMemoryStatDAOTest.java --- a/vm-memory/common/src/test/java/com/redhat/thermostat/vm/memory/common/internal/VmMemoryStatDAOTest.java Mon Sep 02 11:07:54 2013 +0200 +++ b/vm-memory/common/src/test/java/com/redhat/thermostat/vm/memory/common/internal/VmMemoryStatDAOTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -39,6 +39,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -53,7 +54,6 @@ import org.junit.Test; import com.redhat.thermostat.storage.core.Add; -import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Cursor; import com.redhat.thermostat.storage.core.DescriptorParsingException; import com.redhat.thermostat.storage.core.HostRef; @@ -205,8 +205,9 @@ VmMemoryStat stat = new VmMemoryStat(1, "vmId", generations.toArray(new Generation[generations.size()])); Storage storage = mock(Storage.class); - Add add = mock(Add.class); - when(storage.createAdd(any(Category.class))).thenReturn(add); + @SuppressWarnings("unchecked") + Add add = mock(Add.class); + when(storage.createAdd(eq(VmMemoryStatDAO.vmMemoryStatsCategory))).thenReturn(add); VmMemoryStatDAO dao = new VmMemoryStatDAOImpl(storage); dao.putVmMemoryStat(stat); diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java Fri Aug 23 17:08:35 2013 +0200 @@ -94,6 +94,7 @@ import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Connection; import com.redhat.thermostat.storage.core.Cursor; +import com.redhat.thermostat.storage.core.DataModifyingStatement; import com.redhat.thermostat.storage.core.DescriptorParsingException; import com.redhat.thermostat.storage.core.IllegalDescriptorException; import com.redhat.thermostat.storage.core.IllegalPatchException; @@ -299,49 +300,49 @@ } - private class WebAddImpl extends WebAdd { + private class WebAddImpl extends WebAdd { private WebAddImpl(int categoryId) { super(categoryId); } @Override - public void apply() { - addImpl(this); + public int apply() { + return addImpl(this); } } - private class WebReplaceImpl extends WebReplace { + private class WebReplaceImpl extends WebReplace { private WebReplaceImpl(int categoryId) { super(categoryId); } @Override - public void apply() { - replaceImpl(this); + public int apply() { + return replaceImpl(this); } } - private class WebUpdateImpl extends WebUpdate implements Update { + private class WebUpdateImpl extends WebUpdate { @Override - public void apply() { - updatePojo(this); + public int apply() { + return updatePojo(this); } } - private class WebRemoveImpl extends WebRemove { + private class WebRemoveImpl extends WebRemove { private WebRemoveImpl(int categoryId) { super(categoryId); } @Override - public void apply() { - removePojo(this); + public int apply() { + return removePojo(this); } } @@ -533,13 +534,13 @@ } @Override - public Remove createRemove(Category category) { - return new WebRemoveImpl(categoryIds.get(category)); + public Remove createRemove(Category category) { + return new WebRemoveImpl<>(categoryIds.get(category)); } @Override - public Update createUpdate(Category category) { - WebUpdateImpl updateImpl = new WebUpdateImpl(); + public Update createUpdate(Category category) { + WebUpdateImpl updateImpl = new WebUpdateImpl<>(); updateImpl.setCategoryId(categoryIds.get(category)); return updateImpl; } @@ -635,20 +636,20 @@ } @Override - public Add createAdd(Category into) { + public Add createAdd(Category into) { int categoryId = getCategoryId(into); - WebAdd add = new WebAddImpl(categoryId); + WebAdd add = new WebAddImpl<>(categoryId); return add; } @Override - public Replace createReplace(Category into) { + public Replace createReplace(Category into) { int categoryId = getCategoryId(into); - WebReplace replace = new WebReplaceImpl(categoryId); + WebReplace replace = new WebReplaceImpl<>(categoryId); return replace; } - private void addImpl(final WebAdd add) throws StorageException { + private int addImpl(final WebAdd add) throws StorageException { Pojo pojo = add.getPojo(); maybeAddAgentId(pojo); NameValuePair pojoParam = new BasicNameValuePair("pojo", @@ -657,9 +658,10 @@ gson.toJson(add)); List formParams = Arrays.asList(addParam, pojoParam); post(endpoint + "/add-pojo", formParams).close(); + return DataModifyingStatement.DEFAULT_STATUS_SUCCESS; } - private void replaceImpl(final WebReplace replace) throws StorageException { + private int replaceImpl(final WebReplace replace) throws StorageException { Pojo pojo = replace.getPojo(); maybeAddAgentId(pojo); NameValuePair replaceParam = new BasicNameValuePair("replace", @@ -668,6 +670,7 @@ gson.toJson(pojo)); List formParams = Arrays.asList(replaceParam, pojoParam); post(endpoint + "/replace-pojo", formParams).close(); + return DataModifyingStatement.DEFAULT_STATUS_SUCCESS; } private void maybeAddAgentId(final Pojo pojo) throws AssertionError { @@ -680,11 +683,12 @@ } } - private void removePojo(Remove remove) throws StorageException { + private int removePojo(Remove remove) throws StorageException { NameValuePair removeParam = new BasicNameValuePair("remove", gson.toJson(remove)); List formparams = Arrays.asList(removeParam); post(endpoint + "/remove-pojo", formparams).close(); + return DataModifyingStatement.DEFAULT_STATUS_SUCCESS; } @Override @@ -692,8 +696,8 @@ this.agentId = agentId; } - private void updatePojo(Update update) throws StorageException { - WebUpdate webUp = (WebUpdate) update; + private int updatePojo(Update update) throws StorageException { + WebUpdate webUp = (WebUpdate) update; List updateValues = webUp.getUpdates(); List values = new ArrayList<>(updateValues.size()); for (WebUpdate.UpdateValue updateValue : updateValues) { @@ -707,6 +711,7 @@ List formparams = Arrays .asList(updateParam, valuesParam); post(endpoint + "/update-pojo", formparams).close(); + return DataModifyingStatement.DEFAULT_STATUS_SUCCESS; } public void setEndpoint(String endpoint) { diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/web/client/src/test/java/com/redhat/thermostat/web/client/internal/WebStorageTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -402,7 +402,7 @@ UUID agentId = new UUID(1, 2); storage.setAgentId(agentId); - Add add = storage.createAdd(category); + Add add = storage.createAdd(category); add.setPojo(obj); prepareServer(); @@ -416,7 +416,8 @@ assertEquals(2, params.length); String[] parts = params[0].split("="); assertEquals("add", parts[0]); - WebAdd add2 = gson.fromJson(parts[1], WebAdd.class); + @SuppressWarnings("unchecked") + WebAdd add2 = gson.fromJson(parts[1], WebAdd.class); assertEquals(42, add2.getCategoryId()); parts = params[1].split("="); @@ -439,7 +440,7 @@ UUID agentId = new UUID(1, 2); storage.setAgentId(agentId); - Replace replace = storage.createReplace(category); + Replace replace = storage.createReplace(category); Expression expr = new ExpressionFactory().equalTo(key1, "fluff"); replace.setPojo(obj); replace.where(expr); @@ -459,7 +460,8 @@ assertEquals(2, params.length); String[] parts = params[0].split("="); assertEquals("replace", parts[0]); - WebReplace insert = gson.fromJson(parts[1], WebReplace.class); + @SuppressWarnings("unchecked") + WebReplace insert = gson.fromJson(parts[1], WebReplace.class); assertEquals(42, insert.getCategoryId()); parts = params[1].split("="); @@ -474,7 +476,7 @@ @Test public void testCreateRemove() { - WebRemove remove = (WebRemove) storage.createRemove(category); + WebRemove remove = (WebRemove) storage.createRemove(category); assertEquals(42, remove.getCategoryId()); Expression expr = factory.equalTo(key1, "test"); remove.where(expr); @@ -484,7 +486,7 @@ @Test public void testRemovePojo() throws UnsupportedEncodingException, IOException { Expression expr = factory.equalTo(key1, "test"); - Remove remove = storage.createRemove(category); + Remove remove = storage.createRemove(category); remove.where(expr); prepareServer(); @@ -500,7 +502,7 @@ String line = URLDecoder.decode(bufRead.readLine(), "UTF-8"); String[] parts = line.split("="); assertEquals("remove", parts[0]); - WebRemove actualRemove = gson.fromJson(parts[1], WebRemove.class); + WebRemove actualRemove = gson.fromJson(parts[1], WebRemove.class); assertEquals(42, actualRemove.getCategoryId()); assertEquals(expr, actualRemove.getWhereExpression()); @@ -508,7 +510,7 @@ @Test public void testCreateUpdate() { - WebUpdate update = (WebUpdate) storage.createUpdate(category); + WebUpdate update = (WebUpdate) storage.createUpdate(category); assertNotNull(update); assertEquals(42, update.getCategoryId()); @@ -527,7 +529,7 @@ @Test public void testUpdate() throws UnsupportedEncodingException, IOException, JsonSyntaxException, ClassNotFoundException { - Update update = storage.createUpdate(category); + Update update = storage.createUpdate(category); Expression expr = factory.equalTo(key1, "test"); update.where(expr); update.set(key1, "fluff"); @@ -548,7 +550,7 @@ assertEquals(2, params.length); String[] parts = params[0].split("="); assertEquals("update", parts[0]); - WebUpdate receivedUpdate = gson.fromJson(parts[1], WebUpdate.class); + WebUpdate receivedUpdate = gson.fromJson(parts[1], WebUpdate.class); assertEquals(42, receivedUpdate.getCategoryId()); List updates = receivedUpdate.getUpdates(); diff -r 852cfb9a5fb9 -r cd020319d8ed web/common/src/main/java/com/redhat/thermostat/web/common/WebAdd.java --- a/web/common/src/main/java/com/redhat/thermostat/web/common/WebAdd.java Mon Sep 02 11:07:54 2013 +0200 +++ b/web/common/src/main/java/com/redhat/thermostat/web/common/WebAdd.java Fri Aug 23 17:08:35 2013 +0200 @@ -41,7 +41,7 @@ import com.redhat.thermostat.storage.model.Pojo; -public class WebAdd implements Add { +public class WebAdd implements Add { private int categoryId; private transient Pojo pojo; @@ -72,7 +72,7 @@ } @Override - public void apply() { + public int apply() { // Should never be called directly, but overridden by // the actual implementation. Here only so that it can be used // for serialization. diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/web/common/src/main/java/com/redhat/thermostat/web/common/WebRemove.java Fri Aug 23 17:08:35 2013 +0200 @@ -37,9 +37,10 @@ package com.redhat.thermostat.web.common; import com.redhat.thermostat.storage.core.Remove; +import com.redhat.thermostat.storage.model.Pojo; import com.redhat.thermostat.storage.query.Expression; -public class WebRemove implements Remove { +public class WebRemove implements Remove { private final int categoryId; private Expression whereExpression; @@ -62,7 +63,7 @@ } @Override - public void apply() { + public int apply() { // This should never be called. Overridden by the actual // implementation. throw new IllegalStateException(); diff -r 852cfb9a5fb9 -r cd020319d8ed web/common/src/main/java/com/redhat/thermostat/web/common/WebReplace.java --- a/web/common/src/main/java/com/redhat/thermostat/web/common/WebReplace.java Mon Sep 02 11:07:54 2013 +0200 +++ b/web/common/src/main/java/com/redhat/thermostat/web/common/WebReplace.java Fri Aug 23 17:08:35 2013 +0200 @@ -40,7 +40,7 @@ import com.redhat.thermostat.storage.model.Pojo; import com.redhat.thermostat.storage.query.Expression; -public class WebReplace implements Replace { +public class WebReplace implements Replace { private int categoryId; private transient Pojo pojo; @@ -60,7 +60,7 @@ } @Override - public void apply() { + public int apply() { // Should never be called directly, but overridden by // the actual implementation. Here only so that it can be used // for serialization. diff -r 852cfb9a5fb9 -r cd020319d8ed web/common/src/main/java/com/redhat/thermostat/web/common/WebUpdate.java --- a/web/common/src/main/java/com/redhat/thermostat/web/common/WebUpdate.java Mon Sep 02 11:07:54 2013 +0200 +++ b/web/common/src/main/java/com/redhat/thermostat/web/common/WebUpdate.java Fri Aug 23 17:08:35 2013 +0200 @@ -40,9 +40,11 @@ import java.util.List; import com.redhat.thermostat.storage.core.Key; +import com.redhat.thermostat.storage.core.Update; +import com.redhat.thermostat.storage.model.Pojo; import com.redhat.thermostat.storage.query.Expression; -public class WebUpdate { +public class WebUpdate implements Update { public static class UpdateValue { private Key key; @@ -99,7 +101,7 @@ whereExpression = expr; } - public void set(Key key, T value) { + public void set(Key key, S value) { updateValues.add(new UpdateValue(key, value)); } @@ -119,5 +121,12 @@ return updateValues; } + @Override + public int apply() { + // This should never be called. Overridden by the actual + // implementation. + throw new IllegalStateException(); + } + } diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java Fri Aug 23 17:08:35 2013 +0200 @@ -528,10 +528,10 @@ return; } String addParam = req.getParameter("add"); - WebAdd add = gson.fromJson(addParam, WebAdd.class); + WebAdd add = gson.fromJson(addParam, WebAdd.class); int categoryId = add.getCategoryId(); Category category = getCategoryFromId(categoryId); - Add targetAdd = storage.createAdd(category); + Add targetAdd = storage.createAdd(category); Class pojoCls = category.getDataClass(); String pojoParam = req.getParameter("pojo"); Pojo pojo = gson.fromJson(pojoParam, pojoCls); @@ -546,10 +546,10 @@ return; } String replaceParam = req.getParameter("replace"); - WebReplace replace = gson.fromJson(replaceParam, WebReplace.class); + WebReplace replace = gson.fromJson(replaceParam, WebReplace.class); int categoryId = replace.getCategoryId(); Category category = getCategoryFromId(categoryId); - Replace targetReplace = storage.createReplace(category); + Replace targetReplace = storage.createReplace(category); Class pojoCls = category.getDataClass(); String pojoParam = req.getParameter("pojo"); Pojo pojo = gson.fromJson(pojoParam, pojoCls); @@ -567,9 +567,9 @@ } String removeParam = req.getParameter("remove"); - WebRemove remove = gson.fromJson(removeParam, WebRemove.class); + WebRemove remove = gson.fromJson(removeParam, WebRemove.class); Category targetCategory = getCategoryFromId(remove.getCategoryId()); - Remove targetRemove = storage.createRemove(targetCategory); + Remove targetRemove = storage.createRemove(targetCategory); Expression expr = remove.getWhereExpression(); if (expr != null) { targetRemove.where(expr); diff -r 852cfb9a5fb9 -r cd020319d8ed 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 Mon Sep 02 11:07:54 2013 +0200 +++ b/web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java Fri Aug 23 17:08:35 2013 +0200 @@ -895,8 +895,9 @@ setupTrustedCategory(categoryName); registerCategory(testuser, password); - Replace replace = mock(Replace.class); - when(mockStorage.createReplace(any(Category.class))).thenReturn(replace); + @SuppressWarnings("unchecked") + Replace replace = mock(Replace.class); + when(mockStorage.createReplace(eq(category))).thenReturn(replace); TestClass expected1 = new TestClass(); expected1.setKey1("fluff1"); @@ -912,7 +913,7 @@ conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - WebReplace webReplace = new WebReplace(categoryId); + WebReplace webReplace = new WebReplace<>(categoryId); webReplace.where(expectedExpression); Gson gson = new GsonBuilder() .registerTypeHierarchyAdapter(Expression.class, @@ -963,7 +964,7 @@ conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - WebReplace webReplace = new WebReplace(categoryId); + WebReplace webReplace = new WebReplace<>(categoryId); Gson gson = new GsonBuilder() .registerTypeHierarchyAdapter(Expression.class, new ExpressionSerializer()) @@ -1004,8 +1005,9 @@ setupTrustedCategory(categoryName); registerCategory(testuser, password); - Add insert = mock(Add.class); - when(mockStorage.createAdd(any(Category.class))).thenReturn(insert); + @SuppressWarnings("unchecked") + Add insert = mock(Add.class); + when(mockStorage.createAdd(eq(category))).thenReturn(insert); TestClass expected1 = new TestClass(); expected1.setKey1("fluff1"); @@ -1020,7 +1022,7 @@ conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - WebAdd ins = new WebAdd(categoryId); + WebAdd ins = new WebAdd<>(categoryId); Gson gson = new Gson(); OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream()); out.write("add="); @@ -1065,7 +1067,7 @@ conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - WebAdd insert = new WebAdd(categoryId); + WebAdd insert = new WebAdd<>(categoryId); Gson gson = new Gson(); OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream()); out.write("add="); @@ -1109,7 +1111,8 @@ registerCategory(testuser, password); - Remove mockRemove = mock(Remove.class); + @SuppressWarnings("unchecked") + Remove mockRemove = mock(Remove.class); when(mockStorage.createRemove(category)).thenReturn(mockRemove); @@ -1122,7 +1125,7 @@ conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); Expression expr = factory.equalTo(key1, "test"); - WebRemove remove = new WebRemove(categoryId); + WebRemove remove = new WebRemove<>(categoryId); remove.where(expr); Gson gson = new GsonBuilder() .registerTypeHierarchyAdapter(Expression.class, @@ -1169,8 +1172,9 @@ setupTrustedCategory(categoryName); registerCategory(testuser, password); - Update mockUpdate = mock(Update.class); - when(mockStorage.createUpdate(any(Category.class))).thenReturn(mockUpdate); + @SuppressWarnings("unchecked") + Update mockUpdate = mock(Update.class); + when(mockStorage.createUpdate(eq(category))).thenReturn(mockUpdate); String endpoint = getEndpoint(); @@ -1181,7 +1185,7 @@ conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - WebUpdate update = new WebUpdate(); + WebUpdate update = new WebUpdate<>(); update.setCategoryId(categoryId); Expression expr = factory.equalTo(key1, "test"); update.where(expr);