Improve code quality 73/115373/3
authorBogumil Zebek <bogumil.zebek@nokia.com>
Wed, 25 Nov 2020 11:33:58 +0000 (12:33 +0100)
committerVasyl Razinkov <vasyl.razinkov@est.tech>
Mon, 30 Nov 2020 10:49:43 +0000 (10:49 +0000)
- YamlToObjectConverter

Issue-ID: SDC-3389
Signed-off-by: Zebek Bogumil <bogumil.zebek@nokia.com>
Change-Id: I2819a423b375065b067ed9f0d147737ac07a7ba4

sdc-distribution-client/src/main/java/org/onap/sdc/utils/YamlToObjectConverter.java

index add82bc..ab0a528 100644 (file)
@@ -22,11 +22,11 @@ package org.onap.sdc.utils;
 
 import java.beans.IntrospectionException;
 import java.io.File;
-import java.io.IOException;
 import java.io.InputStream;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.HashMap;
+import java.util.Map;
 
 import org.onap.sdc.utils.heat.HeatConfiguration;
 import org.slf4j.Logger;
@@ -42,15 +42,17 @@ public class YamlToObjectConverter {
     private static Logger log = LoggerFactory
             .getLogger(YamlToObjectConverter.class.getName());
 
-    private static HashMap<String, Yaml> yamls = new HashMap<String, Yaml>();
+    private static final Map<String, Yaml> YAMLS = new HashMap<>();
 
-    private static Yaml defaultYaml = new Yaml();
+    private static final Yaml DEFAULT_YAML = new Yaml();
 
     static {
+        YAMLS.put(HeatConfiguration.class.getName(), provideYamlForHeatConfiguration());
+    }
 
+    private static Yaml provideYamlForHeatConfiguration() {
         org.yaml.snakeyaml.constructor.Constructor heatConstructor = new org.yaml.snakeyaml.constructor.Constructor(HeatConfiguration.class);
         TypeDescription heatDescription = new TypeDescription(HeatConfiguration.class);
-        //heatDescription.putListPropertyType("parameters", HeatParameterConfiguration.class);
         heatConstructor.addTypeDescription(heatDescription);
         PropertyUtils propertyUtils = new PropertyUtils() {
             @Override
@@ -66,85 +68,49 @@ public class YamlToObjectConverter {
         propertyUtils.setSkipMissingProperties(true);
         heatConstructor.setPropertyUtils(propertyUtils);
 
-        Yaml yaml = new Yaml(heatConstructor);
-
-        yamls.put(HeatConfiguration.class.getName(), yaml);
-
-    }
-
-    private static <T> Yaml getYamlByClassName(Class<T> className) {
-
-        Yaml yaml = yamls.get(className.getName());
-        if (yaml == null) {
-            yaml = defaultYaml;
-        }
-
-        return yaml;
+        return new Yaml(heatConstructor);
     }
 
     public <T> T convert(String dirPath, Class<T> className,
                          String configFileName) {
-
         T config = null;
 
         try {
-
             String fullFileName = dirPath + File.separator + configFileName;
-
             config = convert(fullFileName, className);
-
         } catch (Exception e) {
-            log.error("Failed to convert yaml file " + configFileName
-                    + " to object.", e);
+            log.error("Failed to convert yaml file {} to object.", configFileName, e);
         }
 
         return config;
     }
 
     public <T> T convert(String fullFileName, Class<T> className) {
-
         T config = null;
 
         Yaml yaml = getYamlByClassName(className);
 
-        InputStream in = null;
         try {
-
             File f = new File(fullFileName);
             if (!f.exists()) {
-                log.warn("The file " + fullFileName
-                        + " cannot be found. Ignore reading configuration.");
-                return null;
-            }
-            in = Files.newInputStream(Paths.get(fullFileName));
-
-            config = yaml.loadAs(in, className);
-
-            // System.out.println(config.toString());
-        } catch (Exception e) {
-            log.error("Failed to convert yaml file " + fullFileName
-                    + " to object.", e);
-        } finally {
-            if (in != null) {
-                try {
-                    in.close();
-                } catch (IOException e) {
-                    // TODO Auto-generated catch block
-                    e.printStackTrace();
+                log.warn("The file {} cannot be found. Ignore reading configuration.", fullFileName);
+            } else {
+                try (InputStream in = Files.newInputStream(Paths.get(fullFileName))) {
+                    config = yaml.loadAs(in, className);
                 }
             }
+        } catch (Exception e) {
+            log.error("Failed to convert yaml file {} to object.", fullFileName, e);
         }
 
         return config;
     }
 
     public <T> T convertFromString(String yamlContents, Class<T> className) {
-
         T config = null;
 
-        Yaml yaml = getYamlByClassName(className);
-
         try {
+            Yaml yaml = getYamlByClassName(className);
             config = yaml.loadAs(yamlContents, className);
         } catch (Exception e) {
             log.error("Failed to convert YAML {} to object.", yamlContents, e);
@@ -152,4 +118,13 @@ public class YamlToObjectConverter {
 
         return config;
     }
+
+    private static synchronized <T> Yaml getYamlByClassName(Class<T> className) {
+        Yaml yaml = YAMLS.get(className.getName());
+        if (yaml == null) {
+            yaml = DEFAULT_YAML;
+        }
+
+        return yaml;
+    }
 }