X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FConfigurationImpl.java;h=56b2d094c7682543f14415191e9e184744b3102f;hp=061e1ab448f97ce9ad08541be9b0b1b6d4e73c30;hb=b17e0e95db4cd85de976b9aa077e8b1ab1bb1474;hpb=660a4a4a51718896518b8c4deeeb6e0bb3637bde 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 061e1ab448..56b2d094c7 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 @@ -10,6 +10,9 @@ package org.opendaylight.controller.cluster.datastore; import com.google.common.base.Optional; import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableList.Builder; +import com.google.common.collect.ImmutableMap; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; import com.typesafe.config.ConfigObject; @@ -29,9 +32,9 @@ import org.slf4j.LoggerFactory; public class ConfigurationImpl implements Configuration { - private final List moduleShards = new ArrayList<>(); + private final List moduleShards; - private final List modules = new ArrayList<>(); + private final List modules; private static final Logger LOG = LoggerFactory.getLogger(DistributedDataStore.class); @@ -44,6 +47,8 @@ public class ConfigurationImpl implements Configuration { // key = shardName, value = list of replicaNames (replicaNames are the same as memberNames) private final Map> shardReplicaNames = new HashMap<>(); + private final Map namespaceToModuleName; + private final Map moduleNameToStrategy; public ConfigurationImpl(final String moduleShardsConfigPath, @@ -74,9 +79,27 @@ public class ConfigurationImpl implements Configuration { modulesConfig = ConfigFactory.load(modulesConfigPath); } - readModuleShards(moduleShardsConfig); + this.moduleShards = readModuleShards(moduleShardsConfig); + this.modules = readModules(modulesConfig); - readModules(modulesConfig); + this.moduleNameToStrategy = createModuleNameToStrategy(modules); + this.namespaceToModuleName = createNamespaceToModuleName(modules); + } + + private static Map createModuleNameToStrategy(Iterable modules) { + final com.google.common.collect.ImmutableMap.Builder b = ImmutableMap.builder(); + for (Module m : modules) { + b.put(m.getName(), m.getShardStrategy()); + } + return b.build(); + } + + private static Map createNamespaceToModuleName(Iterable modules) { + final com.google.common.collect.ImmutableMap.Builder b = ImmutableMap.builder(); + for (Module m : modules) { + b.put(m.getNameSpace(), m.getName()); + } + return b.build(); } @Override public List getMemberShardNames(final String memberName){ @@ -104,30 +127,22 @@ public class ConfigurationImpl implements Configuration { } - @Override public Optional getModuleNameFromNameSpace(final String nameSpace) { - + @Override + public Optional getModuleNameFromNameSpace(final String nameSpace) { Preconditions.checkNotNull(nameSpace, "nameSpace should not be null"); - - for(Module m : modules){ - if(m.getNameSpace().equals(nameSpace)){ - return Optional.of(m.getName()); - } - } - return Optional.absent(); + return Optional.fromNullable(namespaceToModuleName.get(nameSpace)); } - @Override public Map getModuleNameToShardStrategyMap() { - Map map = new HashMap<>(); - for(Module m : modules){ - map.put(m.getName(), m.getShardStrategy()); - } - return map; + @Override + public Map getModuleNameToShardStrategyMap() { + return moduleNameToStrategy; } @Override public List getShardNamesFromModuleName(final String moduleName) { Preconditions.checkNotNull(moduleName, "moduleName should not be null"); + // FIXME: can be constant view of moduleShards for(ModuleShard m : moduleShards){ if(m.getModuleName().equals(moduleName)){ List l = new ArrayList<>(); @@ -174,21 +189,25 @@ public class ConfigurationImpl implements Configuration { - private void readModules(final Config modulesConfig) { + private List readModules(final Config modulesConfig) { List modulesConfigObjectList = modulesConfig.getObjectList("modules"); + final Builder b = ImmutableList.builder(); for(ConfigObject o : modulesConfigObjectList){ ConfigObjectWrapper w = new ConfigObjectWrapper(o); - modules.add(new Module(w.stringValue("name"), w.stringValue( + b.add(new Module(w.stringValue("name"), w.stringValue( "namespace"), w.stringValue("shard-strategy"))); } + + return b.build(); } - private void readModuleShards(final Config moduleShardsConfig) { + private static List readModuleShards(final Config moduleShardsConfig) { List moduleShardsConfigObjectList = moduleShardsConfig.getObjectList("module-shards"); + final Builder b = ImmutableList.builder(); for(ConfigObject moduleShardConfigObject : moduleShardsConfigObjectList){ String moduleName = moduleShardConfigObject.get("name").unwrapped().toString(); @@ -204,12 +223,14 @@ public class ConfigurationImpl implements Configuration { shards.add(new Shard(shardName, replicas)); } - this.moduleShards.add(new ModuleShard(moduleName, shards)); + b.add(new ModuleShard(moduleName, shards)); } + + return b.build(); } - private class ModuleShard { + private static class ModuleShard { private final String moduleName; private final List shards; @@ -227,7 +248,7 @@ public class ConfigurationImpl implements Configuration { } } - private class Shard { + private static class Shard { private final String name; private final List replicas;