Mercurial > hg > release > thermostat-0.15
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;