changeset 1224:b015c7f31a11 0.13-branch

Use explicit types for write operations. Reviewed-by: neugens Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-August/007986.html
author Severin Gehwolf <sgehwolf@redhat.com>
date Fri, 16 Aug 2013 18:52:06 +0200
parents 1fd7faa8502a
children 74a70d3e9877
files host-cpu/common/src/main/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOImpl.java host-memory/common/src/main/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOImpl.java numa/common/src/main/java/com/redhat/thermostat/numa/common/internal/NumaDAOImpl.java storage/core/src/main/java/com/redhat/thermostat/storage/core/BasePut.java storage/core/src/main/java/com/redhat/thermostat/storage/core/DataModifyingStatement.java storage/core/src/main/java/com/redhat/thermostat/storage/core/Put.java storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.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/main/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOImpl.java storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/NetworkInterfaceInfoDAOImpl.java storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOImpl.java storage/core/src/test/java/com/redhat/thermostat/storage/core/BasePutTest.java storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java storage/mongo/src/test/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorageTest.java thread/collector/src/main/java/com/redhat/thermostat/thread/dao/impl/ThreadDaoImpl.java vm-classstat/common/src/main/java/com/redhat/thermostat/vm/classstat/common/internal/VmClassStatDAOImpl.java vm-cpu/common/src/main/java/com/redhat/thermostat/vm/cpu/common/internal/VmCpuStatDAOImpl.java vm-gc/common/src/main/java/com/redhat/thermostat/vm/gc/common/internal/VmGcStatDAOImpl.java vm-heap-analysis/common/src/main/java/com/redhat/thermostat/vm/heap/analysis/common/internal/HeapDAOImpl.java vm-memory/common/src/main/java/com/redhat/thermostat/vm/memory/common/internal/VmMemoryStatDAOImpl.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/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java
diffstat 24 files changed, 112 insertions(+), 90 deletions(-) [+]
line wrap: on
line diff
--- a/host-cpu/common/src/main/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/host-cpu/common/src/main/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -38,11 +38,11 @@
 
 import java.util.List;
 
+import com.redhat.thermostat.storage.core.Add;
 import com.redhat.thermostat.storage.core.HostLatestPojoListGetter;
 import com.redhat.thermostat.storage.core.HostRef;
 import com.redhat.thermostat.host.cpu.common.CpuStatDAO;
 import com.redhat.thermostat.host.cpu.common.model.CpuStat;
-import com.redhat.thermostat.storage.core.Put;
 import com.redhat.thermostat.storage.core.Storage;
 
 class CpuStatDAOImpl implements CpuStatDAO {
@@ -64,7 +64,7 @@
 
     @Override
     public void putCpuStat(CpuStat stat) {
-        Put add = storage.createAdd(cpuStatCategory);
+        Add add = storage.createAdd(cpuStatCategory);
         add.setPojo(stat);
         add.apply();
     }
--- a/host-memory/common/src/main/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/host-memory/common/src/main/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -38,11 +38,11 @@
 
 import java.util.List;
 
+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.HostLatestPojoListGetter;
 import com.redhat.thermostat.storage.core.HostRef;
-import com.redhat.thermostat.host.memory.common.MemoryStatDAO;
-import com.redhat.thermostat.host.memory.common.model.MemoryStat;
-import com.redhat.thermostat.storage.core.Put;
 import com.redhat.thermostat.storage.core.Storage;
 
 public class MemoryStatDAOImpl implements MemoryStatDAO {
@@ -64,7 +64,7 @@
 
     @Override
     public void putMemoryStat(MemoryStat stat) {
-        Put add = storage.createAdd(memoryStatCategory);
+        Add add = storage.createAdd(memoryStatCategory);
         add.setPojo(stat);
         add.apply();
     }
--- a/numa/common/src/main/java/com/redhat/thermostat/numa/common/internal/NumaDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/numa/common/src/main/java/com/redhat/thermostat/numa/common/internal/NumaDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -51,7 +51,7 @@
 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.Put;
+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 +75,7 @@
 
     @Override
     public void putNumaStat(NumaStat stat) {
-        Put add = storage.createAdd(numaStatCategory);
+        Add add = storage.createAdd(numaStatCategory);
         add.setPojo(stat);
         add.apply();
     }
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/BasePut.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/BasePut.java	Fri Aug 16 18:52:06 2013 +0200
@@ -37,22 +37,20 @@
 
 package com.redhat.thermostat.storage.core;
 
+import java.util.Objects;
+
 import com.redhat.thermostat.storage.model.Pojo;
 
-
 public abstract class BasePut implements Put {
 
-    private Category category;
+    private final Category<?> category;
     private Pojo pojo;
-
-    public final void setCategory(Category category) {
-        if (this.category != null) {
-            throw new IllegalStateException();
-        }
-        this.category = category;
+    
+    public BasePut(Category<?> category) {
+        this.category = Objects.requireNonNull(category);
     }
 
-    public final Category getCategory() {
+    public final Category<?> getCategory() {
         return category;
     }
 
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/DataModifyingStatement.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/DataModifyingStatement.java	Fri Aug 16 18:52:06 2013 +0200
@@ -13,7 +13,8 @@
     /**
      * Executes this statement.
      * 
-     * @return Zero on success. A non-zero failure code otherwise.
+     * @return a number greater than zero on success. A negative failure code
+     *         otherwise.
      */
     int execute();
 }
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/Put.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/Put.java	Fri Aug 16 18:52:06 2013 +0200
@@ -40,7 +40,7 @@
 import com.redhat.thermostat.storage.model.Pojo;
 
 
-public interface Put {
+interface Put {
 
     /**
      * Sets the POJO that is to be put into the database.
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.java	Fri Aug 16 18:52:06 2013 +0200
@@ -52,6 +52,10 @@
 
     private class QueuedReplace extends BasePut implements Replace {
 
+        private QueuedReplace(Category<?> category) {
+            super(category);
+        }
+        
         @Override
         public void apply() {
             replaceImpl(getCategory(), getPojo());
@@ -61,6 +65,10 @@
 
     private class QueuedAdd extends BasePut implements Add {
 
+        private QueuedAdd(Category<?> category) {
+            super(category);
+        }
+        
         @Override
         public void apply() {
             addImpl(getCategory(), getPojo());
@@ -133,15 +141,13 @@
 
     @Override
     public Add createAdd(Category<?> into) {
-        QueuedAdd add = new QueuedAdd();
-        add.setCategory(into);
+        QueuedAdd add = new QueuedAdd(into);
         return add;
     }
 
     @Override
     public Replace createReplace(Category<?> into) {
-        QueuedReplace replace = new QueuedReplace();
-        replace.setCategory(into);
+        QueuedReplace replace = new QueuedReplace(into);
         return replace;
     }
 
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -43,6 +43,7 @@
 import java.util.logging.Logger;
 
 import com.redhat.thermostat.common.utils.LoggingUtils;
+import com.redhat.thermostat.storage.core.Add;
 import com.redhat.thermostat.storage.core.Category;
 import com.redhat.thermostat.storage.core.CategoryAdapter;
 import com.redhat.thermostat.storage.core.Cursor;
@@ -50,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.Put;
 import com.redhat.thermostat.storage.core.Remove;
 import com.redhat.thermostat.storage.core.StatementDescriptor;
 import com.redhat.thermostat.storage.core.StatementExecutionException;
@@ -182,7 +182,7 @@
 
     @Override
     public void addAgentInformation(AgentInformation agentInfo) {
-        Put replace = storage.createAdd(CATEGORY);
+        Add replace = storage.createAdd(CATEGORY);
         replace.setPojo(agentInfo);
         replace.apply();
     }
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/BackendInfoDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/BackendInfoDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -44,12 +44,12 @@
 
 import com.redhat.thermostat.common.OrderedComparator;
 import com.redhat.thermostat.common.utils.LoggingUtils;
+import com.redhat.thermostat.storage.core.Add;
 import com.redhat.thermostat.storage.core.Cursor;
 import com.redhat.thermostat.storage.core.DescriptorParsingException;
 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.Put;
 import com.redhat.thermostat.storage.core.Remove;
 import com.redhat.thermostat.storage.core.StatementDescriptor;
 import com.redhat.thermostat.storage.core.StatementExecutionException;
@@ -108,7 +108,7 @@
 
     @Override
     public void addBackendInformation(BackendInformation info) {
-        Put add = storage.createAdd(BackendInfoDAO.CATEGORY);
+        Add add = storage.createAdd(BackendInfoDAO.CATEGORY);
         add.setPojo(info);
         add.apply();
     }
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -44,6 +44,7 @@
 import java.util.logging.Logger;
 
 import com.redhat.thermostat.common.utils.LoggingUtils;
+import com.redhat.thermostat.storage.core.Add;
 import com.redhat.thermostat.storage.core.Category;
 import com.redhat.thermostat.storage.core.CategoryAdapter;
 import com.redhat.thermostat.storage.core.Cursor;
@@ -51,7 +52,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.Put;
 import com.redhat.thermostat.storage.core.StatementDescriptor;
 import com.redhat.thermostat.storage.core.StatementExecutionException;
 import com.redhat.thermostat.storage.core.Storage;
@@ -120,7 +120,7 @@
 
     @Override
     public void putHostInfo(HostInfo info) {
-        Put add = storage.createAdd(hostInfoCategory);
+        Add add = storage.createAdd(hostInfoCategory);
         add.setPojo(info);
         add.apply();
     }
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/NetworkInterfaceInfoDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/NetworkInterfaceInfoDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -48,7 +48,7 @@
 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.Put;
+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;
@@ -98,7 +98,7 @@
 
     @Override
     public void putNetworkInterfaceInfo(NetworkInterfaceInfo info) {
-        Put replace = storage.createReplace(networkInfoCategory);
+        Replace replace = storage.createReplace(networkInfoCategory);
         replace.setPojo(info);
         replace.apply();
     }
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -44,6 +44,7 @@
 import java.util.logging.Logger;
 
 import com.redhat.thermostat.common.utils.LoggingUtils;
+import com.redhat.thermostat.storage.core.Add;
 import com.redhat.thermostat.storage.core.Category;
 import com.redhat.thermostat.storage.core.CategoryAdapter;
 import com.redhat.thermostat.storage.core.Cursor;
@@ -51,7 +52,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.Put;
 import com.redhat.thermostat.storage.core.StatementDescriptor;
 import com.redhat.thermostat.storage.core.StatementExecutionException;
 import com.redhat.thermostat.storage.core.Storage;
@@ -173,7 +173,7 @@
 
     @Override
     public void putVmInfo(VmInfo info) {
-        Put replace = storage.createAdd(vmInfoCategory);
+        Add replace = storage.createAdd(vmInfoCategory);
         replace.setPojo(info);
         replace.apply();
     }
--- a/storage/core/src/test/java/com/redhat/thermostat/storage/core/BasePutTest.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/storage/core/src/test/java/com/redhat/thermostat/storage/core/BasePutTest.java	Fri Aug 16 18:52:06 2013 +0200
@@ -37,47 +37,37 @@
 
 package com.redhat.thermostat.storage.core;
 
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.fail;
 import static org.mockito.Mockito.mock;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
 import com.redhat.thermostat.storage.model.Pojo;
 
 public class BasePutTest {
-
-    private BasePut insert;
-
+    
+    private Category<?> category;
+    
     @Before
-    public void setUp() {
-        insert = new BasePut() {
-            public void apply() {
-                // Do nothing.
-            }
-        };
-    }
-
-    @After
-    public void tearDown() {
-        insert = null;
+    public void setup() {
+        category = mock(Category.class);
     }
 
     @Test
     public void testCategory() {
-        Category category = mock(Category.class);
+        TestBasePut insert = new TestBasePut(category);
 
-        assertNull(insert.getCategory());
-        insert.setCategory(category);
+        assertNotNull(insert.getCategory());
         assertSame(category, insert.getCategory());
 
         try {
-            insert.setCategory(category);
+            insert = new TestBasePut(null);
             fail();
-        } catch (IllegalStateException ex) {
+        } catch (NullPointerException ex) {
             // Ok.
         }
     }
@@ -86,9 +76,22 @@
     public void testPojo() {
         Pojo pojo = mock(Pojo.class);
 
+        TestBasePut insert = new TestBasePut(category);
         assertNull(insert.getPojo());
         insert.setPojo(pojo);
         assertSame(pojo, insert.getPojo());
+    }
+    
+    private static class TestBasePut extends BasePut {
+
+        public TestBasePut(Category<?> category) {
+            super(category);
+        }
+
+        @Override
+        public void apply() {
+            // Do nothing
+        }
         
     }
 }
--- a/storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java	Fri Aug 16 18:52:06 2013 +0200
@@ -102,6 +102,10 @@
 
     private class MongoAdd extends BasePut implements Add {
 
+        private MongoAdd(Category<?> category) {
+            super(category);
+        }
+        
         @Override
         public void apply() {
             addImpl(getCategory(), getPojo());
@@ -111,6 +115,10 @@
 
     private class MongoReplace extends BasePut implements Replace {
 
+        private MongoReplace(Category<?> category) {
+            super(category);
+        }
+        
         @Override
         public void apply() {
             replaceImpl(getCategory(), getPojo());
@@ -207,15 +215,13 @@
 
     @Override
     public Add createAdd(Category<?> into) {
-        MongoAdd add = new MongoAdd();
-        add.setCategory(into);
+        MongoAdd add = new MongoAdd(into);
         return add;
     }
 
     @Override
     public Replace createReplace(Category<?> into) {
-        MongoReplace replace = new MongoReplace();
-        replace.setCategory(into);
+        MongoReplace replace = new MongoReplace(into);
         return replace;
     }
 
--- a/storage/mongo/src/test/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorageTest.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/storage/mongo/src/test/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorageTest.java	Fri Aug 16 18:52:06 2013 +0200
@@ -87,8 +87,8 @@
 import com.redhat.thermostat.storage.core.Entity;
 import com.redhat.thermostat.storage.core.Key;
 import com.redhat.thermostat.storage.core.Persist;
-import com.redhat.thermostat.storage.core.Put;
 import com.redhat.thermostat.storage.core.Query;
+import com.redhat.thermostat.storage.core.Replace;
 import com.redhat.thermostat.storage.core.Update;
 import com.redhat.thermostat.storage.dao.HostInfoDAO;
 import com.redhat.thermostat.storage.model.AggregateCount;
@@ -358,7 +358,7 @@
         MongoStorage storage = makeStorage();
         TestClass pojo = new TestClass();
         pojo.setAgentId("123");
-        Put add = storage.createAdd(testCategory);
+        Add add = storage.createAdd(testCategory);
         add.setPojo(pojo);
         add.apply();
         ArgumentCaptor<DBObject> dbobj = ArgumentCaptor.forClass(DBObject.class);
@@ -462,7 +462,7 @@
         pojo.setKey5("test5");
 
         MongoStorage storage = makeStorage();
-        Put replace = storage.createReplace(testCategory);
+        Replace replace = storage.createReplace(testCategory);
         replace.setPojo(pojo);
         replace.apply();
 
--- a/thread/collector/src/main/java/com/redhat/thermostat/thread/dao/impl/ThreadDaoImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/thread/collector/src/main/java/com/redhat/thermostat/thread/dao/impl/ThreadDaoImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -43,12 +43,13 @@
 import java.util.logging.Logger;
 
 import com.redhat.thermostat.common.utils.LoggingUtils;
+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.Key;
 import com.redhat.thermostat.storage.core.PreparedStatement;
-import com.redhat.thermostat.storage.core.Put;
+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;
@@ -135,14 +136,14 @@
     
     @Override
     public void saveCapabilities(VMThreadCapabilities caps) {
-        Put replace = storage.createReplace(THREAD_CAPABILITIES);
+        Replace replace = storage.createReplace(THREAD_CAPABILITIES);
         replace.setPojo(caps);
         replace.apply();
     }
     
     @Override
     public void saveSummary(ThreadSummary summary) {
-        Put add = storage.createAdd(THREAD_SUMMARY);
+        Add add = storage.createAdd(THREAD_SUMMARY);
         add.setPojo(summary);
         add.apply();
     }
@@ -198,7 +199,7 @@
 
     @Override
     public void saveHarvestingStatus(ThreadHarvestingStatus status) {
-        Put add = storage.createAdd(THREAD_HARVESTING_STATUS);
+        Add add = storage.createAdd(THREAD_HARVESTING_STATUS);
         add.setPojo(status);
         add.apply();
     }
@@ -229,7 +230,7 @@
 
     @Override
     public void saveThreadInfo(ThreadInfoData info) {
-        Put add = storage.createAdd(THREAD_INFO);
+        Add add = storage.createAdd(THREAD_INFO);
         add.setPojo(info);
         add.apply();
     }
@@ -285,7 +286,7 @@
 
     @Override
     public void saveDeadLockStatus(VmDeadLockData deadLockInfo) {
-        Put add = storage.createAdd(DEADLOCK_INFO);
+        Add add = storage.createAdd(DEADLOCK_INFO);
         add.setPojo(deadLockInfo);
         add.apply();
     }
--- a/vm-classstat/common/src/main/java/com/redhat/thermostat/vm/classstat/common/internal/VmClassStatDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/vm-classstat/common/src/main/java/com/redhat/thermostat/vm/classstat/common/internal/VmClassStatDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -38,7 +38,7 @@
 
 import java.util.List;
 
-import com.redhat.thermostat.storage.core.Put;
+import com.redhat.thermostat.storage.core.Add;
 import com.redhat.thermostat.storage.core.Storage;
 import com.redhat.thermostat.storage.core.VmLatestPojoListGetter;
 import com.redhat.thermostat.storage.core.VmRef;
@@ -63,7 +63,7 @@
 
     @Override
     public void putVmClassStat(VmClassStat stat) {
-        Put add = storage.createAdd(vmClassStatsCategory);
+        Add add = storage.createAdd(vmClassStatsCategory);
         add.setPojo(stat);
         add.apply();
     }
--- a/vm-cpu/common/src/main/java/com/redhat/thermostat/vm/cpu/common/internal/VmCpuStatDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/vm-cpu/common/src/main/java/com/redhat/thermostat/vm/cpu/common/internal/VmCpuStatDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -38,10 +38,10 @@
 
 import java.util.List;
 
-import com.redhat.thermostat.storage.core.Put;
+import com.redhat.thermostat.storage.core.Add;
+import com.redhat.thermostat.storage.core.Storage;
 import com.redhat.thermostat.storage.core.VmLatestPojoListGetter;
 import com.redhat.thermostat.storage.core.VmRef;
-import com.redhat.thermostat.storage.core.Storage;
 import com.redhat.thermostat.vm.cpu.common.VmCpuStatDAO;
 import com.redhat.thermostat.vm.cpu.common.model.VmCpuStat;
 
@@ -63,7 +63,7 @@
 
     @Override
     public void putVmCpuStat(VmCpuStat stat) {
-        Put add = storage.createAdd(vmCpuStatCategory);
+        Add add = storage.createAdd(vmCpuStatCategory);
         add.setPojo(stat);
         add.apply();
     }
--- a/vm-gc/common/src/main/java/com/redhat/thermostat/vm/gc/common/internal/VmGcStatDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/vm-gc/common/src/main/java/com/redhat/thermostat/vm/gc/common/internal/VmGcStatDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -38,7 +38,7 @@
 
 import java.util.List;
 
-import com.redhat.thermostat.storage.core.Put;
+import com.redhat.thermostat.storage.core.Add;
 import com.redhat.thermostat.storage.core.Storage;
 import com.redhat.thermostat.storage.core.VmLatestPojoListGetter;
 import com.redhat.thermostat.storage.core.VmRef;
@@ -63,7 +63,7 @@
 
     @Override
     public void putVmGcStat(VmGcStat stat) {
-        Put add = storage.createAdd(vmGcStatCategory);
+        Add add = storage.createAdd(vmGcStatCategory);
         add.setPojo(stat);
         add.apply();
     }
--- a/vm-heap-analysis/common/src/main/java/com/redhat/thermostat/vm/heap/analysis/common/internal/HeapDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/vm-heap-analysis/common/src/main/java/com/redhat/thermostat/vm/heap/analysis/common/internal/HeapDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -51,11 +51,11 @@
 import java.util.logging.Logger;
 
 import com.redhat.thermostat.common.utils.LoggingUtils;
+import com.redhat.thermostat.storage.core.Add;
 import com.redhat.thermostat.storage.core.Cursor;
 import com.redhat.thermostat.storage.core.DescriptorParsingException;
 import com.redhat.thermostat.storage.core.Key;
 import com.redhat.thermostat.storage.core.PreparedStatement;
-import com.redhat.thermostat.storage.core.Put;
 import com.redhat.thermostat.storage.core.StatementDescriptor;
 import com.redhat.thermostat.storage.core.StatementExecutionException;
 import com.redhat.thermostat.storage.core.Storage;
@@ -97,7 +97,7 @@
         if (histogramData != null) {
             heapInfo.setHistogramId(histogramId);
         }
-        Put add = storage.createAdd(heapInfoCategory);
+        Add add = storage.createAdd(heapInfoCategory);
         add.setPojo(heapInfo);
         add.apply();
 
--- a/vm-memory/common/src/main/java/com/redhat/thermostat/vm/memory/common/internal/VmMemoryStatDAOImpl.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/vm-memory/common/src/main/java/com/redhat/thermostat/vm/memory/common/internal/VmMemoryStatDAOImpl.java	Fri Aug 16 18:52:06 2013 +0200
@@ -41,11 +41,11 @@
 import java.util.logging.Logger;
 
 import com.redhat.thermostat.common.utils.LoggingUtils;
+import com.redhat.thermostat.storage.core.Add;
 import com.redhat.thermostat.storage.core.Cursor;
 import com.redhat.thermostat.storage.core.DescriptorParsingException;
 import com.redhat.thermostat.storage.core.Key;
 import com.redhat.thermostat.storage.core.PreparedStatement;
-import com.redhat.thermostat.storage.core.Put;
 import com.redhat.thermostat.storage.core.StatementDescriptor;
 import com.redhat.thermostat.storage.core.StatementExecutionException;
 import com.redhat.thermostat.storage.core.Storage;
@@ -101,7 +101,7 @@
 
     @Override
     public void putVmMemoryStat(VmMemoryStat stat) {
-        Put add = storage.createAdd(vmMemoryStatsCategory);
+        Add add = storage.createAdd(vmMemoryStatsCategory);
         add.setPojo(stat);
         add.apply();
     }
--- a/web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java	Fri Aug 16 18:52:06 2013 +0200
@@ -301,6 +301,10 @@
 
     private class WebAdd extends BasePut implements Add {
 
+        private WebAdd(Category<?> category) {
+            super(category);
+        }
+        
         @Override
         public void apply() {
             int categoryId = getCategoryId(getCategory());
@@ -311,6 +315,10 @@
 
     private class WebReplace extends BasePut implements Replace {
 
+        private WebReplace(Category<?> category) {
+            super(category);
+        }
+        
         @Override
         public void apply() {
             int categoryId = getCategoryId(getCategory());
@@ -630,15 +638,13 @@
 
     @Override
     public Add createAdd(Category<?> into) {
-        WebAdd add = new WebAdd();
-        add.setCategory(into);
+        WebAdd add = new WebAdd(into);
         return add;
     }
 
     @Override
     public Replace createReplace(Category<?> into) {
-        WebReplace replace = new WebReplace();
-        replace.setCategory(into);
+        WebReplace replace = new WebReplace(into);
         return replace;
     }
     
--- a/web/client/src/test/java/com/redhat/thermostat/web/client/internal/WebStorageTest.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/web/client/src/test/java/com/redhat/thermostat/web/client/internal/WebStorageTest.java	Fri Aug 16 18:52:06 2013 +0200
@@ -102,8 +102,8 @@
 import com.redhat.thermostat.storage.core.PreparedParameter;
 import com.redhat.thermostat.storage.core.PreparedParameters;
 import com.redhat.thermostat.storage.core.PreparedStatement;
-import com.redhat.thermostat.storage.core.Put;
 import com.redhat.thermostat.storage.core.Remove;
+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.Update;
@@ -400,7 +400,7 @@
         UUID agentId = new UUID(1, 2);
         storage.setAgentId(agentId);
 
-        Put replace = storage.createReplace(category);
+        Replace replace = storage.createReplace(category);
         replace.setPojo(obj);
 
         prepareServer();
--- a/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java	Mon Aug 19 14:11:20 2013 +0200
+++ b/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java	Fri Aug 16 18:52:06 2013 +0200
@@ -74,6 +74,7 @@
 import com.redhat.thermostat.common.utils.LoggingUtils;
 import com.redhat.thermostat.shared.config.Configuration;
 import com.redhat.thermostat.shared.config.InvalidConfigurationException;
+import com.redhat.thermostat.storage.core.Add;
 import com.redhat.thermostat.storage.core.Categories;
 import com.redhat.thermostat.storage.core.Category;
 import com.redhat.thermostat.storage.core.CategoryAdapter;
@@ -86,9 +87,9 @@
 import com.redhat.thermostat.storage.core.PreparedParameter;
 import com.redhat.thermostat.storage.core.PreparedParameters;
 import com.redhat.thermostat.storage.core.PreparedStatement;
-import com.redhat.thermostat.storage.core.Put;
 import com.redhat.thermostat.storage.core.Query;
 import com.redhat.thermostat.storage.core.Remove;
+import com.redhat.thermostat.storage.core.Replace;
 import com.redhat.thermostat.storage.core.StatementDescriptor;
 import com.redhat.thermostat.storage.core.Storage;
 import com.redhat.thermostat.storage.core.Update;
@@ -529,12 +530,12 @@
         WebInsert insert = gson.fromJson(insertParam, WebInsert.class);
         int categoryId = insert.getCategoryId();
         Category<?> category = getCategoryFromId(categoryId);
-        Put targetPut = storage.createAdd(category);
+        Add targetAdd = storage.createAdd(category);
         Class<? extends Pojo> pojoCls = category.getDataClass();
         String pojoParam = req.getParameter("pojo");
         Pojo pojo = gson.fromJson(pojoParam, pojoCls);
-        targetPut.setPojo(pojo);
-        targetPut.apply();
+        targetAdd.setPojo(pojo);
+        targetAdd.apply();
         resp.setStatus(HttpServletResponse.SC_OK);
     }
     
@@ -547,12 +548,12 @@
         WebInsert insert = gson.fromJson(insertParam, WebInsert.class);
         int categoryId = insert.getCategoryId();
         Category<?> category = getCategoryFromId(categoryId);
-        Put targetPut = storage.createReplace(category);
+        Replace targetReplace = storage.createReplace(category);
         Class<? extends Pojo> pojoCls = category.getDataClass();
         String pojoParam = req.getParameter("pojo");
         Pojo pojo = gson.fromJson(pojoParam, pojoCls);
-        targetPut.setPojo(pojo);
-        targetPut.apply();
+        targetReplace.setPojo(pojo);
+        targetReplace.apply();
         resp.setStatus(HttpServletResponse.SC_OK);
     }