From: Robert Varga Date: Mon, 26 Jan 2015 13:45:30 +0000 (+0100) Subject: Use a singleton instance for DefaultShardStrategy X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=c685d3b17321084d41a94c92871da476aab39eb9 Use a singleton instance for DefaultShardStrategy Instead of instantiating the DefaultShardStrategy everywhere it is used, share a singleton instance. Change-Id: I24ebd4b1d713a09b4fc4161e9c8c69a088af5ac6 Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ConfigurationImpl.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ConfigurationImpl.java index df5a576f6e..0541e3a48b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ConfigurationImpl.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ConfigurationImpl.java @@ -286,7 +286,7 @@ public class ConfigurationImpl implements Configuration { if(ModuleShardStrategy.NAME.equals(shardStrategy)){ this.shardStrategy = new ModuleShardStrategy(name, ConfigurationImpl.this); } else { - this.shardStrategy = new DefaultShardStrategy(); + this.shardStrategy = DefaultShardStrategy.getInstance(); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardstrategy/DefaultShardStrategy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardstrategy/DefaultShardStrategy.java index 55c682b860..6a3de4256b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardstrategy/DefaultShardStrategy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardstrategy/DefaultShardStrategy.java @@ -16,13 +16,21 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; * The default shard stores data for all modules for which a specific set of shards has not been configured *

*/ -public class DefaultShardStrategy implements ShardStrategy{ +public final class DefaultShardStrategy implements ShardStrategy { + public static final String NAME = "default"; + public static final String DEFAULT_SHARD = "default"; + private static final DefaultShardStrategy INSTANCE = new DefaultShardStrategy(); - public static final String NAME = "default"; - public static final String DEFAULT_SHARD = "default"; + private DefaultShardStrategy() { + // Hidden to force a singleton instnace + } - @Override - public String findShard(YangInstanceIdentifier path) { - return DEFAULT_SHARD; - } + public static DefaultShardStrategy getInstance() { + return INSTANCE; + } + + @Override + public String findShard(YangInstanceIdentifier path) { + return DEFAULT_SHARD; + } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ShardStrategyFactory.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ShardStrategyFactory.java index 62fb65482b..fd786c903e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ShardStrategyFactory.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ShardStrategyFactory.java @@ -36,7 +36,7 @@ public class ShardStrategyFactory { String moduleName = getModuleName(path); ShardStrategy shardStrategy = moduleNameToStrategyMap.get(moduleName); if (shardStrategy == null) { - return new DefaultShardStrategy(); + return DefaultShardStrategy.getInstance(); } return shardStrategy; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/DefaultShardStrategyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/DefaultShardStrategyTest.java index c065782af5..5842d566ab 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/DefaultShardStrategyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/DefaultShardStrategyTest.java @@ -5,10 +5,9 @@ import org.junit.Test; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; public class DefaultShardStrategyTest { - - @Test - public void testFindShard() throws Exception { - String shard = new DefaultShardStrategy().findShard(TestModel.TEST_PATH); - Assert.assertEquals(DefaultShardStrategy.DEFAULT_SHARD, shard); - } + @Test + public void testFindShard() throws Exception { + String shard = DefaultShardStrategy.getInstance().findShard(TestModel.TEST_PATH); + Assert.assertEquals(DefaultShardStrategy.DEFAULT_SHARD, shard); + } } \ No newline at end of file