Bug 9056 - Class FileModuleShardConfigProvider does not load
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / config / FileModuleShardConfigProvider.java
index 80fc09c97a1a57ddadbe242c41c3dc3cb46e3ea0..3f65b59b734ed01d6505e47a99206aa9c26ba02f 100644 (file)
@@ -14,6 +14,8 @@ import java.io.File;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
+import org.opendaylight.controller.cluster.access.concepts.MemberName;
 import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategyFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -29,75 +31,72 @@ public class FileModuleShardConfigProvider implements ModuleShardConfigProvider
     private final String moduleShardsConfigPath;
     private final String modulesConfigPath;
 
-    public FileModuleShardConfigProvider(String moduleShardsConfigPath, String modulesConfigPath) {
+    public FileModuleShardConfigProvider(final String moduleShardsConfigPath, final String modulesConfigPath) {
         this.moduleShardsConfigPath = moduleShardsConfigPath;
         this.modulesConfigPath = modulesConfigPath;
     }
 
     @Override
-    public Map<String, ModuleConfig.Builder> retrieveModuleConfigs(Configuration configuration) {
-        File moduleShardsFile = new File("./configuration/initial/" + moduleShardsConfigPath);
-        File modulesFile = new File("./configuration/initial/" + modulesConfigPath);
+    public Map<String, ModuleConfig.Builder> retrieveModuleConfigs(final Configuration configuration) {
+        final File moduleShardsFile = new File(moduleShardsConfigPath);
+        final File modulesFile = new File(modulesConfigPath);
 
         Config moduleShardsConfig = null;
-        if(moduleShardsFile.exists()) {
+        if (moduleShardsFile.exists()) {
             LOG.info("module shards config file exists - reading config from it");
             moduleShardsConfig = ConfigFactory.parseFile(moduleShardsFile);
         } else {
             LOG.warn("module shards configuration read from resource");
-            moduleShardsConfig = ConfigFactory.load(moduleShardsConfigPath);
+            moduleShardsConfig = ConfigFactory.load(moduleShardsFile.getPath());
         }
 
         Config modulesConfig = null;
-        if(modulesFile.exists()) {
+        if (modulesFile.exists()) {
             LOG.info("modules config file exists - reading config from it");
             modulesConfig = ConfigFactory.parseFile(modulesFile);
         } else {
             LOG.warn("modules configuration read from resource");
-            modulesConfig = ConfigFactory.load(modulesConfigPath);
+            modulesConfig = ConfigFactory.load(modulesFile.getPath());
         }
 
-        Map<String, ModuleConfig.Builder> moduleConfigMap = readModuleShardsConfig(moduleShardsConfig);
+        final Map<String, ModuleConfig.Builder> moduleConfigMap = readModuleShardsConfig(moduleShardsConfig);
         readModulesConfig(modulesConfig, moduleConfigMap, configuration);
 
         return moduleConfigMap;
     }
 
-    private static void readModulesConfig(final Config modulesConfig, Map<String, ModuleConfig.Builder> moduleConfigMap,
-            Configuration configuration) {
-        List<? extends ConfigObject> modulesConfigObjectList = modulesConfig.getObjectList("modules");
+    private static void readModulesConfig(final Config modulesConfig,
+            final Map<String, ModuleConfig.Builder> moduleConfigMap, final Configuration configuration) {
+        final List<? extends ConfigObject> modulesConfigObjectList = modulesConfig.getObjectList("modules");
 
-        for(ConfigObject o : modulesConfigObjectList){
-            ConfigObjectWrapper w = new ConfigObjectWrapper(o);
+        for (final ConfigObject o : modulesConfigObjectList) {
+            final ConfigObjectWrapper wrapper = new ConfigObjectWrapper(o);
 
-            String moduleName = w.stringValue("name");
-            ModuleConfig.Builder builder = moduleConfigMap.get(moduleName);
-            if(builder == null) {
-                builder = ModuleConfig.builder(moduleName);
-                moduleConfigMap.put(moduleName, builder);
-            }
+            final String moduleName = wrapper.stringValue("name");
+            final ModuleConfig.Builder builder = moduleConfigMap.computeIfAbsent(moduleName, ModuleConfig::builder);
 
-            builder.nameSpace(w.stringValue("namespace"));
+            builder.nameSpace(wrapper.stringValue("namespace"));
             builder.shardStrategy(ShardStrategyFactory.newShardStrategyInstance(moduleName,
-                    w.stringValue("shard-strategy"), configuration));
+                    wrapper.stringValue("shard-strategy"), configuration));
         }
     }
 
     private static Map<String, ModuleConfig.Builder> readModuleShardsConfig(final Config moduleShardsConfig) {
-        List<? extends ConfigObject> moduleShardsConfigObjectList =
+        final List<? extends ConfigObject> moduleShardsConfigObjectList =
             moduleShardsConfig.getObjectList("module-shards");
 
-        Map<String, ModuleConfig.Builder> moduleConfigMap = new HashMap<>();
-        for(ConfigObject moduleShardConfigObject : moduleShardsConfigObjectList){
-            String moduleName = moduleShardConfigObject.get("name").unwrapped().toString();
-            ModuleConfig.Builder builder = ModuleConfig.builder(moduleName);
+        final Map<String, ModuleConfig.Builder> moduleConfigMap = new HashMap<>();
+        for (final ConfigObject moduleShardConfigObject : moduleShardsConfigObjectList) {
+            final String moduleName = moduleShardConfigObject.get("name").unwrapped().toString();
+            final ModuleConfig.Builder builder = ModuleConfig.builder(moduleName);
 
-            List<? extends ConfigObject> shardsConfigObjectList =
+            final List<? extends ConfigObject> shardsConfigObjectList =
                 moduleShardConfigObject.toConfig().getObjectList("shards");
 
-            for(ConfigObject shard : shardsConfigObjectList){
-                String shardName = shard.get("name").unwrapped().toString();
-                List<String> replicas = shard.toConfig().getStringList("replicas");
+            for (final ConfigObject shard : shardsConfigObjectList) {
+                final String shardName = shard.get("name").unwrapped().toString();
+                final List<MemberName> replicas = shard.toConfig().getStringList("replicas").stream()
+                        .map(MemberName::forName).collect(Collectors.toList());
                 builder.shardConfig(shardName, replicas);
             }
 
@@ -107,15 +106,15 @@ public class FileModuleShardConfigProvider implements ModuleShardConfigProvider
         return moduleConfigMap;
     }
 
-    private static class ConfigObjectWrapper{
+    private static class ConfigObjectWrapper {
 
         private final ConfigObject configObject;
 
-        ConfigObjectWrapper(final ConfigObject configObject){
+        ConfigObjectWrapper(final ConfigObject configObject) {
             this.configObject = configObject;
         }
 
-        public String stringValue(final String name){
+        public String stringValue(final String name) {
             return configObject.get(name).unwrapped().toString();
         }
     }