changeset 1232:7936f09da466

Remove Put from public API Reviewed-by: jerboaa Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-August/008042.html
author Omair Majid <omajid@redhat.com>
date Tue, 27 Aug 2013 11:50:35 -0400
parents f790fc01d0bc
children 4279c0994a38
files storage/core/src/main/java/com/redhat/thermostat/storage/core/Add.java storage/core/src/main/java/com/redhat/thermostat/storage/core/AddReplaceHelper.java storage/core/src/main/java/com/redhat/thermostat/storage/core/BasePut.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/core/Replace.java storage/core/src/test/java/com/redhat/thermostat/storage/core/AddReplaceHelperTest.java storage/core/src/test/java/com/redhat/thermostat/storage/core/BasePutTest.java storage/core/src/test/java/com/redhat/thermostat/storage/core/QueuedStorageTest.java storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java
diffstat 10 files changed, 206 insertions(+), 241 deletions(-) [+]
line wrap: on
line diff
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/Add.java	Tue Aug 27 10:23:45 2013 -0400
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/Add.java	Tue Aug 27 11:50:35 2013 -0400
@@ -37,17 +37,28 @@
 
 package com.redhat.thermostat.storage.core;
 
+import com.redhat.thermostat.storage.model.Pojo;
+
 /**
  * Write operation to be used for adding new records into
  * storage.
  *
- * @see Update
+ * @see Remove
  * @see Replace
- * @see Remove
+ * @see Update
  */
-public interface Add extends Put {
-    
-    
+public interface Add {
 
+    /**
+     * Sets the POJO that is to be put into the storage.
+     *
+     * @param pojo the pojo to be put into the storage
+     */
+    void setPojo(Pojo pojo);
+
+    /**
+     * Applies this {@code Add} operation to the storage.
+     */
+    void apply();
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/AddReplaceHelper.java	Tue Aug 27 11:50:35 2013 -0400
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2012, 2013 Red Hat, Inc.
+ *
+ * This file is part of Thermostat.
+ *
+ * Thermostat is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2, or (at your
+ * option) any later version.
+ *
+ * Thermostat is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Thermostat; see the file COPYING.  If not see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Linking this code with other modules is making a combined work
+ * based on this code.  Thus, the terms and conditions of the GNU
+ * General Public License cover the whole combination.
+ *
+ * As a special exception, the copyright holders of this code give
+ * you permission to link this code with independent modules to
+ * produce an executable, regardless of the license terms of these
+ * independent modules, and to copy and distribute the resulting
+ * executable under terms of your choice, provided that you also
+ * meet, for each linked independent module, the terms and conditions
+ * of the license of that module.  An independent module is a module
+ * which is not derived from or based on this code.  If you modify
+ * this code, you may extend this exception to your version of the
+ * library, but you are not obligated to do so.  If you do not wish
+ * to do so, delete this exception statement from your version.
+ */
+
+
+package com.redhat.thermostat.storage.core;
+
+import java.util.Objects;
+
+import com.redhat.thermostat.storage.model.Pojo;
+
+/** Helps in implementing {@link Add} and {@link Replace} classes */
+public abstract class AddReplaceHelper {
+
+    private final Category<?> category;
+    private Pojo pojo;
+    
+    public AddReplaceHelper(Category<?> category) {
+        this.category = Objects.requireNonNull(category);
+    }
+
+    public final Category<?> getCategory() {
+        return category;
+    }
+
+    public final void setPojo(Pojo pojo) {
+        this.pojo = pojo;
+    }
+
+    public final Pojo getPojo() {
+        return pojo;
+    }
+
+}
+
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/BasePut.java	Tue Aug 27 10:23:45 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright 2012, 2013 Red Hat, Inc.
- *
- * This file is part of Thermostat.
- *
- * Thermostat is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- *
- * Thermostat is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Thermostat; see the file COPYING.  If not see
- * <http://www.gnu.org/licenses/>.
- *
- * Linking this code with other modules is making a combined work
- * based on this code.  Thus, the terms and conditions of the GNU
- * General Public License cover the whole combination.
- *
- * As a special exception, the copyright holders of this code give
- * you permission to link this code with independent modules to
- * produce an executable, regardless of the license terms of these
- * independent modules, and to copy and distribute the resulting
- * executable under terms of your choice, provided that you also
- * meet, for each linked independent module, the terms and conditions
- * of the license of that module.  An independent module is a module
- * which is not derived from or based on this code.  If you modify
- * this code, you may extend this exception to your version of the
- * library, but you are not obligated to do so.  If you do not wish
- * to do so, delete this exception statement from your version.
- */
-
-
-package com.redhat.thermostat.storage.core;
-
-import java.util.Objects;
-
-import com.redhat.thermostat.storage.model.Pojo;
-
-public abstract class BasePut implements Put {
-
-    private final Category<?> category;
-    private Pojo pojo;
-    
-    public BasePut(Category<?> category) {
-        this.category = Objects.requireNonNull(category);
-    }
-
-    public final Category<?> getCategory() {
-        return category;
-    }
-
-    @Override
-    public final void setPojo(Pojo pojo) {
-        this.pojo = pojo;
-    }
-
-    public final Pojo getPojo() {
-        return pojo;
-    }
-
-}
-
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/Put.java	Tue Aug 27 10:23:45 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright 2012, 2013 Red Hat, Inc.
- *
- * This file is part of Thermostat.
- *
- * Thermostat is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- *
- * Thermostat is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Thermostat; see the file COPYING.  If not see
- * <http://www.gnu.org/licenses/>.
- *
- * Linking this code with other modules is making a combined work
- * based on this code.  Thus, the terms and conditions of the GNU
- * General Public License cover the whole combination.
- *
- * As a special exception, the copyright holders of this code give
- * you permission to link this code with independent modules to
- * produce an executable, regardless of the license terms of these
- * independent modules, and to copy and distribute the resulting
- * executable under terms of your choice, provided that you also
- * meet, for each linked independent module, the terms and conditions
- * of the license of that module.  An independent module is a module
- * which is not derived from or based on this code.  If you modify
- * this code, you may extend this exception to your version of the
- * library, but you are not obligated to do so.  If you do not wish
- * to do so, delete this exception statement from your version.
- */
-
-
-package com.redhat.thermostat.storage.core;
-
-import com.redhat.thermostat.storage.model.Pojo;
-
-
-interface Put {
-
-    /**
-     * Sets the POJO that is to be put into the database.
-     * 
-     * @param the pojo to be put into the database
-     */
-    void setPojo(Pojo pojo);
-
-    /**
-     * Applies this put operation to the database.
-     */
-    void apply();
-}
-
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.java	Tue Aug 27 10:23:45 2013 -0400
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.java	Tue Aug 27 11:50:35 2013 -0400
@@ -51,7 +51,7 @@
 
     private static final int SHUTDOWN_TIMEOUT_SECONDS = 3;
 
-    private class QueuedReplace extends BasePut implements Replace {
+    private class QueuedReplace extends AddReplaceHelper implements Replace {
 
         private Expression expression;
         
@@ -71,7 +71,7 @@
         
     }
 
-    private class QueuedAdd extends BasePut implements Add {
+    private class QueuedAdd extends AddReplaceHelper implements Add {
 
         private QueuedAdd(Category<?> category) {
             super(category);
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/Replace.java	Tue Aug 27 10:23:45 2013 -0400
+++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/Replace.java	Tue Aug 27 11:50:35 2013 -0400
@@ -37,27 +37,43 @@
 
 package com.redhat.thermostat.storage.core;
 
+import com.redhat.thermostat.storage.model.Pojo;
 import com.redhat.thermostat.storage.query.Expression;
 
 /**
  * Write operation which should be used if any existing record should get
  * updated with new values. It can be thought of as {@link Update} for
  * <strong>all</strong> properties of a record.
- * 
+ * <p>
  * The only distinction to a regular {@link Update} is that if Replace is used
- * and the associated where yields no result, a <strong>new</strong> record will
- * be insterted into Storage.
+ * and the associated {@code where} expression yields no result, a
+ * <strong>new</strong> record will be insterted into Storage.
  * <p>
  * The result of this operation is undefined if the {@code where} expression
  * matches more than one record in storage.
- * 
+ *
  * @see Add
  * @see Remove
  * @see Update
  */
-public interface Replace extends Put {
+public interface Replace {
+
+    /**
+     * Sets the POJO that will be used to replace the value in storage.
+     *
+     * @param pojo the pojo to be put into the storage
+     */
+    void setPojo(Pojo pojo);
 
+    /**
+     * Specifies what criteria to use to find the record to replace
+     */
     void where(Expression expression);
 
+    /**
+     * Applies this {@code Replace} operation to the storage.
+     */
+    void apply();
+
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/storage/core/src/test/java/com/redhat/thermostat/storage/core/AddReplaceHelperTest.java	Tue Aug 27 11:50:35 2013 -0400
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2012, 2013 Red Hat, Inc.
+ *
+ * This file is part of Thermostat.
+ *
+ * Thermostat is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2, or (at your
+ * option) any later version.
+ *
+ * Thermostat is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Thermostat; see the file COPYING.  If not see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Linking this code with other modules is making a combined work
+ * based on this code.  Thus, the terms and conditions of the GNU
+ * General Public License cover the whole combination.
+ *
+ * As a special exception, the copyright holders of this code give
+ * you permission to link this code with independent modules to
+ * produce an executable, regardless of the license terms of these
+ * independent modules, and to copy and distribute the resulting
+ * executable under terms of your choice, provided that you also
+ * meet, for each linked independent module, the terms and conditions
+ * of the license of that module.  An independent module is a module
+ * which is not derived from or based on this code.  If you modify
+ * this code, you may extend this exception to your version of the
+ * library, but you are not obligated to do so.  If you do not wish
+ * to do so, delete this exception statement from your version.
+ */
+
+
+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.Before;
+import org.junit.Test;
+
+import com.redhat.thermostat.storage.model.Pojo;
+
+public class AddReplaceHelperTest {
+    
+    private Category<?> category;
+    
+    @Before
+    public void setup() {
+        category = mock(Category.class);
+    }
+
+    @Test
+    public void testCategory() {
+        TestBasePut insert = new TestBasePut(category);
+
+        assertNotNull(insert.getCategory());
+        assertSame(category, insert.getCategory());
+
+        try {
+            insert = new TestBasePut(null);
+            fail();
+        } catch (NullPointerException ex) {
+            // Ok.
+        }
+    }
+
+    @Test
+    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 AddReplaceHelper {
+
+        public TestBasePut(Category<?> category) {
+            super(category);
+        }
+        
+    }
+}
+
--- a/storage/core/src/test/java/com/redhat/thermostat/storage/core/BasePutTest.java	Tue Aug 27 10:23:45 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright 2012, 2013 Red Hat, Inc.
- *
- * This file is part of Thermostat.
- *
- * Thermostat is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- *
- * Thermostat is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Thermostat; see the file COPYING.  If not see
- * <http://www.gnu.org/licenses/>.
- *
- * Linking this code with other modules is making a combined work
- * based on this code.  Thus, the terms and conditions of the GNU
- * General Public License cover the whole combination.
- *
- * As a special exception, the copyright holders of this code give
- * you permission to link this code with independent modules to
- * produce an executable, regardless of the license terms of these
- * independent modules, and to copy and distribute the resulting
- * executable under terms of your choice, provided that you also
- * meet, for each linked independent module, the terms and conditions
- * of the license of that module.  An independent module is a module
- * which is not derived from or based on this code.  If you modify
- * this code, you may extend this exception to your version of the
- * library, but you are not obligated to do so.  If you do not wish
- * to do so, delete this exception statement from your version.
- */
-
-
-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.Before;
-import org.junit.Test;
-
-import com.redhat.thermostat.storage.model.Pojo;
-
-public class BasePutTest {
-    
-    private Category<?> category;
-    
-    @Before
-    public void setup() {
-        category = mock(Category.class);
-    }
-
-    @Test
-    public void testCategory() {
-        TestBasePut insert = new TestBasePut(category);
-
-        assertNotNull(insert.getCategory());
-        assertSame(category, insert.getCategory());
-
-        try {
-            insert = new TestBasePut(null);
-            fail();
-        } catch (NullPointerException ex) {
-            // Ok.
-        }
-    }
-
-    @Test
-    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/core/src/test/java/com/redhat/thermostat/storage/core/QueuedStorageTest.java	Tue Aug 27 10:23:45 2013 -0400
+++ b/storage/core/src/test/java/com/redhat/thermostat/storage/core/QueuedStorageTest.java	Tue Aug 27 11:50:35 2013 -0400
@@ -239,11 +239,11 @@
         Category<?> category = mock(Category.class);
         Pojo pojo = mock(Pojo.class);
 
-        Replace put = queuedStorage.createReplace(category);
-        put.setPojo(pojo);
+        Replace replace = queuedStorage.createReplace(category);
+        replace.setPojo(pojo);
         Expression expression = new ExpressionFactory().equalTo(Key.AGENT_ID, "foo");
-        put.where(expression);
-        put.apply();
+        replace.where(expression);
+        replace.apply();
 
         Runnable r = executor.getTask();
         assertNotNull(r);
--- a/storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java	Tue Aug 27 10:23:45 2013 -0400
+++ b/storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java	Tue Aug 27 11:50:35 2013 -0400
@@ -58,7 +58,7 @@
 import com.redhat.thermostat.storage.core.AggregateQuery;
 import com.redhat.thermostat.storage.core.AggregateQuery.AggregateFunction;
 import com.redhat.thermostat.storage.core.BackingStorage;
-import com.redhat.thermostat.storage.core.BasePut;
+import com.redhat.thermostat.storage.core.AddReplaceHelper;
 import com.redhat.thermostat.storage.core.Category;
 import com.redhat.thermostat.storage.core.Connection;
 import com.redhat.thermostat.storage.core.Connection.ConnectionListener;
@@ -100,7 +100,7 @@
         }
     }
 
-    private class MongoAdd extends BasePut implements Add {
+    private class MongoAdd extends AddReplaceHelper implements Add {
 
         private MongoAdd(Category<?> category) {
             super(category);
@@ -113,7 +113,7 @@
         
     }
 
-    private class MongoReplace extends BasePut implements Replace {
+    private class MongoReplace extends AddReplaceHelper implements Replace {
         
         private DBObject query;
         private final MongoExpressionParser parser;