1 package org.openecomp.sdc.tosca.parser.config;
3 import com.google.common.base.Charsets;
4 import com.google.common.io.Resources;
5 import org.openecomp.sdc.tosca.parser.utils.YamlToObjectConverter;
6 import org.slf4j.Logger;
7 import org.slf4j.LoggerFactory;
9 import java.io.IOException;
11 import java.util.HashMap;
15 public class ConfigurationManager {
17 private static Logger log = LoggerFactory.getLogger(ConfigurationManager.class.getName());
19 private static final String CONFIGURATION_DIR = "config/";
20 private static volatile ConfigurationManager instance;
23 Map<String, Object> configurations = new HashMap<String, Object>();
25 private ConfigurationManager() {
26 initialConfigObjectsFromFiles();
29 private void initialConfigObjectsFromFiles() {
30 loadConfigurationClass(ErrorConfiguration.class);
31 loadConfigurationClass(Configuration.class);
32 loadConfigurationClass(JtoscaValidationIssueConfiguration.class);
35 private <T> void loadConfigurationClass(Class<T> clazz) {
36 T object = getObjectFromYaml(clazz);
37 configurations.put(clazz.getSimpleName(), object);
40 private <T> void loadConfigurationClass(Class<T> clazz, String fileName) {
41 T object = getObjectFromYaml(clazz,fileName);
42 configurations.put(clazz.getSimpleName(), object);
45 public static <T> T getObjectFromYaml(Class<T> className) {
46 return getObjectFromYaml(className, null);
49 public static <T> T getObjectFromYaml(Class<T> className, String fileName) {
52 String configFileName = fileName != null ? fileName : calculateFileName(className); ;
54 URL url = Resources.getResource(CONFIGURATION_DIR + configFileName);
55 String configFileContents = null;
57 configFileContents = Resources.toString(url, Charsets.UTF_8);
58 } catch (IOException e) {
59 log.error("ConfigurationManager - Failed to load configuration file {}", configFileName, e);
61 YamlToObjectConverter yamlToObjectConverter = new YamlToObjectConverter();
62 T object = yamlToObjectConverter.convertFromString(configFileContents, className);
68 public static ConfigurationManager getInstance() {
69 if (instance == null) {
70 synchronized (ConfigurationManager.class) {
71 if (instance == null) {
72 instance = new ConfigurationManager();
79 private static <T> String calculateFileName(Class<T> className) {
81 String[] words = className.getSimpleName().split("(?=\\p{Upper})");
83 StringBuilder builder = new StringBuilder();
85 // There cannot be a null value returned from "split" - words != null is
87 // if (words != null) {
88 boolean isFirst = true;
89 for (int i = 0; i < words.length; i++) {
91 String word = words[i];
92 if (word != null && !word.isEmpty()) {
98 builder.append(words[i].toLowerCase());
101 return builder.toString() + ".yaml";
104 * } else { return className.getSimpleName().toLowerCase() + Constants.YAML_SUFFIX; }
109 public ErrorConfiguration getErrorConfiguration() {
110 return (ErrorConfiguration) configurations.get((ErrorConfiguration.class.getSimpleName()));
112 public JtoscaValidationIssueConfiguration getJtoscaValidationIssueConfiguration() {
113 return (JtoscaValidationIssueConfiguration) configurations.get((JtoscaValidationIssueConfiguration.class.getSimpleName()));
115 public void setJtoscaValidationIssueConfiguration(String fileName) {
116 loadConfigurationClass(JtoscaValidationIssueConfiguration.class, fileName);
118 public Configuration getConfiguration() {
119 return (Configuration) configurations.get((Configuration.class.getSimpleName()));
121 public void setErrorConfiguration(String fileName) {
122 loadConfigurationClass(ErrorConfiguration.class, fileName);