From 1777d1336dc7eaf3aa6c8e89fb5462c7700128d2 Mon Sep 17 00:00:00 2001 From: vempo Date: Wed, 31 Oct 2018 18:39:44 +0200 Subject: Fixed Sonar violations in configuration Simplified code, added unit tests. Change-Id: I0a35daf8a2d4cfd0979e30363c9fad30e7c0570b Issue-ID: SDC-1867 Signed-off-by: vempo --- .../org/onap/config/impl/ConfigurationImpl.java | 31 ++++++++++------------ 1 file changed, 14 insertions(+), 17 deletions(-) (limited to 'common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/ConfigurationImpl.java') diff --git a/common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/ConfigurationImpl.java b/common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/ConfigurationImpl.java index 8f8a39d82c..c51c8621a9 100644 --- a/common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/ConfigurationImpl.java +++ b/common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/ConfigurationImpl.java @@ -21,6 +21,7 @@ import static org.onap.config.ConfigurationUtils.isBlank; import java.io.File; import java.lang.reflect.Constructor; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Modifier; import java.net.URL; import java.util.ArrayList; @@ -32,6 +33,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Predicate; +import org.apache.commons.configuration2.ex.ConfigurationException; import org.onap.config.ConfigurationUtils; import org.onap.config.Constants; import org.onap.config.NonConfigResource; @@ -42,22 +44,18 @@ public class ConfigurationImpl implements org.onap.config.api.Configuration { private static final String KEY_CANNOT_BE_NULL = "Key can't be null."; - private static final Object LOCK = new Object(); + private static final NonConfigResource nonConfigResource = new NonConfigResource(); - private static boolean instantiated = false; + static { - public ConfigurationImpl() throws Exception { - - synchronized (LOCK) { + try { init(); + } catch (ConfigurationException e) { + throw new IllegalStateException("Failed to initialize configuration"); } } - private void init() throws Exception { - - if (instantiated) { - return; - } + private static void init() throws ConfigurationException { Map moduleConfigStore = new HashMap<>(); List classpathResources = ConfigurationUtils.getAllClassPathResources(); @@ -72,7 +70,7 @@ public class ConfigurationImpl implements org.onap.config.api.Configuration { } moduleConfig.addConfig(url); } else { - NonConfigResource.add(url); + nonConfigResource.add(url); } } String configLocation = System.getProperty("config.location"); @@ -90,7 +88,7 @@ public class ConfigurationImpl implements org.onap.config.api.Configuration { } moduleConfig.addConfig(file); } else { - NonConfigResource.add(file); + nonConfigResource.add(file); } } } @@ -135,11 +133,9 @@ public class ConfigurationImpl implements org.onap.config.api.Configuration { } } } - - instantiated = true; } - private void populateFinalConfigurationIncrementally(Map configs) { + private static void populateFinalConfigurationIncrementally(Map configs) { if (configs.get(Constants.DEFAULT_TENANT + Constants.KEY_ELEMENTS_DELIMITER + Constants.DB_NAMESPACE) != null) { ConfigurationRepository.lookup().populateConfiguration( @@ -362,7 +358,8 @@ public class ConfigurationImpl implements org.onap.config.api.Configuration { } private T read(String tenant, String namespace, Class clazz, String keyPrefix, Hint... hints) - throws Exception { + throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { + Config confAnnotation = clazz.getAnnotation(Config.class); if (confAnnotation != null && confAnnotation.key().length() > 0 && !keyPrefix.endsWith(".")) { keyPrefix += (confAnnotation.key() + "."); @@ -455,7 +452,7 @@ public class ConfigurationImpl implements org.onap.config.api.Configuration { if (String.class.equals(clazz)) { if (obj.toString().startsWith("@") && ConfigurationUtils.isExternalLookup(processingHint)) { String contents = ConfigurationUtils.getFileContents( - NonConfigResource.locate(obj.toString().substring(1).trim())); + nonConfigResource.locate(obj.toString().substring(1).trim())); if (contents == null) { contents = ConfigurationUtils.getFileContents(obj.toString().substring(1).trim()); } -- cgit 1.2.3-korg