Code formatting of configuration framework

Fixed code formatting, removed meaningless Javadoc comments,
added copyright headers, minor (and safe) static analysis fixes.

Change-Id: I3eda1f242905da5b80e024cf30a69ff59381fc43
Issue-ID: SDC-1867
Signed-off-by: vempo <vitaliy.emporopulo@amdocs.com>
diff --git a/common/onap-common-configuration-management/onap-configuration-management-api/pom.xml b/common/onap-common-configuration-management/onap-configuration-management-api/pom.xml
index 376ff9a..08be65a 100644
--- a/common/onap-common-configuration-management/onap-configuration-management-api/pom.xml
+++ b/common/onap-common-configuration-management/onap-configuration-management-api/pom.xml
@@ -1,5 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/Config.java b/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/Config.java
index 406f45a..73ddc5d 100644
--- a/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/Config.java
+++ b/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/Config.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.onap.config.api;
 
 import java.lang.annotation.ElementType;
@@ -5,17 +21,9 @@
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-/**
- * The interface Config.
- */
 @Target({ElementType.TYPE, ElementType.FIELD})
 @Retention(RetentionPolicy.RUNTIME)
 public @interface Config {
 
-    /**
-     * Key string.
-     *
-     * @return the string
-     */
     String key();
 }
diff --git a/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/Configuration.java b/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/Configuration.java
index 58eedd7..3232d49 100644
--- a/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/Configuration.java
+++ b/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/Configuration.java
@@ -1,831 +1,338 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.onap.config.api;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-/**
- * The interface Configuration.
- */
 public interface Configuration {
-  /**
-   * The constant tenant.
-   */
-  public static ThreadLocal<String> tenant = new ThreadLocal<>();
 
-  /**
-   * Sets tenant id.
-   *
-   * @param id the id
-   */
-  public static void setTenantId(String id) {
-    if (id != null && id.trim().length() > 0) {
-      tenant.set(id);
+    ThreadLocal<String> TENANT = new ThreadLocal<>();
+
+    /**
+     * Sets tenant for current thread.
+     *
+     * @param id tenant id; may be <code>null</code> in which case a default will be used.
+     */
+    static void setTenantId(String id) {
+
+        if (id != null && id.trim().length() > 0) {
+            TENANT.set(id);
+        } else {
+            TENANT.remove();
+        }
     }
-  }
 
-  /**
-   * Gets as string.
-   *
-   * @param key the key
-   * @return the as string
-   */
-  public default String getAsString(String key) {
-    return getAsString(null, key);
-  }
+    default String getAsString(String key) {
+        return getAsString(null, key);
+    }
 
-  /**
-   * Gets as string.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as string
-   */
-  public default String getAsString(String namespace, String key) {
-    return getAsString(tenant.get(), namespace, key);
-  }
+    default String getAsString(String namespace, String key) {
+        return getAsString(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as string.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as string
-   */
-  public default String getAsString(String tenantId, String namespace, String key) {
-    return get(tenantId, namespace, key, String.class);
-  }
+    default String getAsString(String tenantId, String namespace, String key) {
+        return get(tenantId, namespace, key, String.class);
+    }
 
-  /**
-   * Gets as byte value.
-   *
-   * @param key the key
-   * @return the as byte value
-   */
-  public default Byte getAsByteValue(String key) {
-    return getAsByteValue(null, key);
-  }
+    <T> T get(String tenant, String namespace, String key, Class<T> clazz, Hint... hints);
 
-  /**
-   * Gets as byte value.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as byte value
-   */
-  public default Byte getAsByteValue(String namespace, String key) {
-    return getAsByteValue(tenant.get(), namespace, key);
-  }
+    default Byte getAsByteValue(String key) {
+        return getAsByteValue(null, key);
+    }
 
-  /**
-   * Gets as byte value.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as byte value
-   */
-  public default Byte getAsByteValue(String tenantId, String namespace, String key) {
-    return get(tenantId, namespace, key, Byte.class);
-  }
+    default Byte getAsByteValue(String namespace, String key) {
+        return getAsByteValue(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as short value.
-   *
-   * @param key the key
-   * @return the as short value
-   */
-  public default Short getAsShortValue(String key) {
-    return getAsShortValue(null, key);
-  }
+    default Byte getAsByteValue(String tenantId, String namespace, String key) {
+        return get(tenantId, namespace, key, Byte.class);
+    }
 
-  /**
-   * Gets as short value.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as short value
-   */
-  public default Short getAsShortValue(String namespace, String key) {
-    return getAsShortValue(tenant.get(), namespace, key);
-  }
+    default Short getAsShortValue(String key) {
+        return getAsShortValue(null, key);
+    }
 
-  /**
-   * Gets as short value.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as short value
-   */
-  public default Short getAsShortValue(String tenantId, String namespace, String key) {
-    return get(tenantId, namespace, key, Short.class);
-  }
+    default Short getAsShortValue(String namespace, String key) {
+        return getAsShortValue(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as integer value.
-   *
-   * @param key the key
-   * @return the as integer value
-   */
-  public default Integer getAsIntegerValue(String key) {
-    return getAsIntegerValue(null, key);
-  }
+    default Short getAsShortValue(String tenantId, String namespace, String key) {
+        return get(tenantId, namespace, key, Short.class);
+    }
 
-  /**
-   * Gets as integer value.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as integer value
-   */
-  public default Integer getAsIntegerValue(String namespace, String key) {
-    return getAsIntegerValue(tenant.get(), namespace, key);
-  }
+    default Integer getAsIntegerValue(String key) {
+        return getAsIntegerValue(null, key);
+    }
 
-  /**
-   * Gets as integer value.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as integer value
-   */
-  public default Integer getAsIntegerValue(String tenantId, String namespace, String key) {
-    return get(tenantId, namespace, key, Integer.class);
-  }
+    default Integer getAsIntegerValue(String namespace, String key) {
+        return getAsIntegerValue(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as long value.
-   *
-   * @param key the key
-   * @return the as long value
-   */
-  public default Long getAsLongValue(String key) {
-    return getAsLongValue(null, key);
-  }
+    default Integer getAsIntegerValue(String tenantId, String namespace, String key) {
+        return get(tenantId, namespace, key, Integer.class);
+    }
 
-  /**
-   * Gets as long value.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as long value
-   */
-  public default Long getAsLongValue(String namespace, String key) {
-    return getAsLongValue(tenant.get(), namespace, key);
-  }
+    default Long getAsLongValue(String key) {
+        return getAsLongValue(null, key);
+    }
 
-  /**
-   * Gets as long value.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as long value
-   */
-  public default Long getAsLongValue(String tenantId, String namespace, String key) {
-    return get(tenantId, namespace, key, Long.class);
-  }
+    default Long getAsLongValue(String namespace, String key) {
+        return getAsLongValue(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as float value.
-   *
-   * @param key the key
-   * @return the as float value
-   */
-  public default Float getAsFloatValue(String key) {
-    return getAsFloatValue(null, key);
-  }
+    default Long getAsLongValue(String tenantId, String namespace, String key) {
+        return get(tenantId, namespace, key, Long.class);
+    }
 
-  /**
-   * Gets as float value.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as float value
-   */
-  public default Float getAsFloatValue(String namespace, String key) {
-    return getAsFloatValue(tenant.get(), namespace, key);
-  }
+    default Float getAsFloatValue(String key) {
+        return getAsFloatValue(null, key);
+    }
 
-  /**
-   * Gets as float value.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as float value
-   */
-  public default Float getAsFloatValue(String tenantId, String namespace, String key) {
-    return get(tenantId, namespace, key, Float.class);
-  }
+    default Float getAsFloatValue(String namespace, String key) {
+        return getAsFloatValue(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as double value.
-   *
-   * @param key the key
-   * @return the as double value
-   */
-  public default Double getAsDoubleValue(String key) {
-    return getAsDoubleValue(null, key);
-  }
+    default Float getAsFloatValue(String tenantId, String namespace, String key) {
+        return get(tenantId, namespace, key, Float.class);
+    }
 
-  /**
-   * Gets as double value.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as double value
-   */
-  public default Double getAsDoubleValue(String namespace, String key) {
-    return getAsDoubleValue(tenant.get(), namespace, key);
-  }
+    default Double getAsDoubleValue(String key) {
+        return getAsDoubleValue(null, key);
+    }
 
-  /**
-   * Gets as double value.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as double value
-   */
-  public default Double getAsDoubleValue(String tenantId, String namespace, String key) {
-    return get(tenantId, namespace, key, Double.class);
-  }
+    default Double getAsDoubleValue(String namespace, String key) {
+        return getAsDoubleValue(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as boolean value.
-   *
-   * @param key the key
-   * @return the as boolean value
-   */
-  public default Boolean getAsBooleanValue(String key) {
-    return getAsBooleanValue(null, key);
-  }
+    default Double getAsDoubleValue(String tenantId, String namespace, String key) {
+        return get(tenantId, namespace, key, Double.class);
+    }
 
-  /**
-   * Gets as boolean value.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as boolean value
-   */
-  public default Boolean getAsBooleanValue(String namespace, String key) {
-    return getAsBooleanValue(tenant.get(), namespace, key);
-  }
+    default Boolean getAsBooleanValue(String key) {
+        return getAsBooleanValue(null, key);
+    }
 
-  /**
-   * Gets as boolean value.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as boolean value
-   */
-  public default Boolean getAsBooleanValue(String tenantId, String namespace, String key) {
-    return get(tenantId, namespace, key, Boolean.class);
-  }
+    default Boolean getAsBooleanValue(String namespace, String key) {
+        return getAsBooleanValue(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as char value.
-   *
-   * @param key the key
-   * @return the as char value
-   */
-  public default Character getAsCharValue(String key) {
-    return getAsCharValue(null, key);
-  }
+    default Boolean getAsBooleanValue(String tenantId, String namespace, String key) {
+        return get(tenantId, namespace, key, Boolean.class);
+    }
 
-  /**
-   * Gets as char value.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as char value
-   */
-  public default Character getAsCharValue(String namespace, String key) {
-    return getAsCharValue(tenant.get(), namespace, key);
-  }
+    default Character getAsCharValue(String key) {
+        return getAsCharValue(null, key);
+    }
 
-  /**
-   * Gets as char value.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as char value
-   */
-  public default Character getAsCharValue(String tenantId, String namespace, String key) {
-    return get(tenantId, namespace, key, Character.class);
-  }
+    default Character getAsCharValue(String namespace, String key) {
+        return getAsCharValue(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Populate configuration t.
-   *
-   * @param <T>   the type parameter
-   * @param clazz the clazz
-   * @return the t
-   */
-  public default <T> T populateConfiguration(Class<T> clazz) {
-    return populateConfiguration(null, clazz);
-  }
+    default Character getAsCharValue(String tenantId, String namespace, String key) {
+        return get(tenantId, namespace, key, Character.class);
+    }
 
-  /**
-   * Populate configuration t.
-   *
-   * @param <T>       the type parameter
-   * @param namespace the namespace
-   * @param clazz     the clazz
-   * @return the t
-   */
-  public default <T> T populateConfiguration(String namespace, Class<T> clazz) {
-    return populateConfiguration(tenant.get(), namespace, clazz);
-  }
+    default <T> T populateConfiguration(Class<T> clazz) {
+        return populateConfiguration(null, clazz);
+    }
 
-  /**
-   * Populate configuration t.
-   *
-   * @param <T>       the type parameter
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param clazz     the clazz
-   * @return the t
-   */
-  public default <T> T populateConfiguration(String tenantId, String namespace, Class<T> clazz) {
-    return get(tenantId, namespace, null, clazz, Hint.EXTERNAL_LOOKUP);
-  }
+    default <T> T populateConfiguration(String namespace, Class<T> clazz) {
+        return populateConfiguration(TENANT.get(), namespace, clazz);
+    }
 
-  /**
-   * Gets dynamic configuration.
-   *
-   * @param <T>          the type parameter
-   * @param key          the key
-   * @param clazz        the clazz
-   * @param defaultValue the default value
-   * @return the dynamic configuration
-   */
-  public default <T> DynamicConfiguration<T> getDynamicConfiguration(String key, Class<T> clazz,
-                                                                     T defaultValue) {
-    return getDynamicConfiguration(null, key, clazz, defaultValue);
-  }
+    default <T> T populateConfiguration(String tenantId, String namespace, Class<T> clazz) {
+        return get(tenantId, namespace, null, clazz, Hint.EXTERNAL_LOOKUP);
+    }
 
-  /**
-   * Gets dynamic configuration.
-   *
-   * @param <T>          the type parameter
-   * @param namespace    the namespace
-   * @param key          the key
-   * @param clazz        the clazz
-   * @param defaultValue the default value
-   * @return the dynamic configuration
-   */
-  public default <T> DynamicConfiguration<T> getDynamicConfiguration(String namespace, String key,
-                                                                     Class<T> clazz,
-                                                                     T defaultValue) {
-    return getDynamicConfiguration(tenant.get(), namespace, key, clazz, defaultValue);
-  }
+    default <T> DynamicConfiguration<T> getDynamicConfiguration(String key, Class<T> clazz, T defaultValue) {
+        return getDynamicConfiguration(null, key, clazz, defaultValue);
+    }
 
-  /**
-   * Gets dynamic configuration.
-   *
-   * @param <T>          the type parameter
-   * @param tenant       the tenant
-   * @param namespace    the namespace
-   * @param key          the key
-   * @param clazz        the clazz
-   * @param defaultValue the default value
-   * @return the dynamic configuration
-   */
-  public default <T> DynamicConfiguration<T> getDynamicConfiguration(String tenant,
-                                                                     String namespace, String key,
-                                                                     Class<T> clazz,
-                                                                     T defaultValue) {
-    return DynamicConfiguration
-        .getDynamicConfiguration(tenant, namespace, key, clazz, defaultValue, this);
-  }
+    default <T> DynamicConfiguration<T> getDynamicConfiguration(String namespace, String key, Class<T> clazz,
+            T defaultValue) {
+        return getDynamicConfiguration(TENANT.get(), namespace, key, clazz, defaultValue);
+    }
 
-  /**
-   * Gets dynamic configuration values.
-   *
-   * @param <T>          the type parameter
-   * @param key          the key
-   * @param clazz        the clazz
-   * @param defaultValue the default value
-   * @return the dynamic configuration values
-   */
-  public default <T> DynamicConfiguration<List<T>> getDynamicConfigurationValues(String key,
-                                                                                 Class<T> clazz,
-                                                                                 T defaultValue) {
-    return getDynamicConfigurationValues(null, key, clazz, defaultValue);
-  }
+    default <T> DynamicConfiguration<T> getDynamicConfiguration(String tenant, String namespace, String key,
+            Class<T> clazz, T defaultValue) {
+        return DynamicConfiguration.getDynamicConfiguration(tenant, namespace, key, clazz, defaultValue, this);
+    }
 
-  /**
-   * Gets dynamic configuration values.
-   *
-   * @param <T>          the type parameter
-   * @param namespace    the namespace
-   * @param key          the key
-   * @param clazz        the clazz
-   * @param defaultValue the default value
-   * @return the dynamic configuration values
-   */
-  public default <T> DynamicConfiguration<List<T>> getDynamicConfigurationValues(String namespace,
-                                                                                 String key,
-                                                                                 Class<T> clazz,
-                                                                                 T defaultValue) {
-    return getDynamicConfigurationValues(tenant.get(), namespace, key, clazz, defaultValue);
-  }
+    default <T> DynamicConfiguration<List<T>> getDynamicConfigurationValues(String key, Class<T> clazz,
+            T defaultValue) {
+        return getDynamicConfigurationValues(null, key, clazz, defaultValue);
+    }
+
+    default <T> DynamicConfiguration<List<T>> getDynamicConfigurationValues(String namespace, String key,
+            Class<T> clazz, T defaultValue) {
+        return getDynamicConfigurationValues(TENANT.get(), namespace, key, clazz, defaultValue);
+    }
+
+    default <T> DynamicConfiguration<List<T>> getDynamicConfigurationValues(String tenant, String namespace, String key,
+            Class<T> clazz, T defaultValue) {
+        return DynamicConfiguration.getDynConfiguration(tenant, namespace, key, clazz, defaultValue, this);
+    }
+
+    default List<String> getAsStringValues(String key) {
+        return getAsStringValues(null, key);
+    }
 
-  /**
-   * Gets dynamic configuration values.
-   *
-   * @param <T>          the type parameter
-   * @param tenant       the tenant
-   * @param namespace    the namespace
-   * @param key          the key
-   * @param clazz        the clazz
-   * @param defaultValue the default value
-   * @return the dynamic configuration values
-   */
-  public default <T> DynamicConfiguration<List<T>> getDynamicConfigurationValues(String tenant,
-                                                                                 String namespace,
-                                                                                 String key,
-                                                                                 Class<T> clazz,
-                                                                                 T defaultValue) {
-    return DynamicConfiguration
-        .getDynConfiguration(tenant, namespace, key, clazz, defaultValue, this);
-  }
+    default List<String> getAsStringValues(String namespace, String key) {
+        return getAsStringValues(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as string values.
-   *
-   * @param key the key
-   * @return the as string values
-   */
-  public default List<String> getAsStringValues(String key) {
-    return getAsStringValues(null, key);
-  }
+    default List<String> getAsStringValues(String tenantId, String namespace, String key) {
+        String[] tempArray = get(tenantId, namespace, key, String[].class);
+        return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
+    }
 
-  /**
-   * Gets as string values.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as string values
-   */
-  public default List<String> getAsStringValues(String namespace, String key) {
-    return getAsStringValues(tenant.get(), namespace, key);
-  }
+    default List<Byte> getAsByteValues(String key) {
+        return getAsByteValues(null, key);
+    }
 
-  /**
-   * Gets as string values.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as string values
-   */
-  public default List<String> getAsStringValues(String tenantId, String namespace, String key) {
-    String[] tempArray = get(tenantId, namespace, key, String[].class);
-    return tempArray == null ? Arrays.asList() : Arrays.asList(tempArray);
-  }
+    default List<Byte> getAsByteValues(String namespace, String key) {
+        return getAsByteValues(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as byte values.
-   *
-   * @param key the key
-   * @return the as byte values
-   */
-  public default List<Byte> getAsByteValues(String key) {
-    return getAsByteValues(null, key);
-  }
+    default List<Byte> getAsByteValues(String tenantId, String namespace, String key) {
+        Byte[] tempArray = get(tenantId, namespace, key, Byte[].class);
+        return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
+    }
 
-  /**
-   * Gets as byte values.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as byte values
-   */
-  public default List<Byte> getAsByteValues(String namespace, String key) {
-    return getAsByteValues(tenant.get(), namespace, key);
-  }
+    default List<Short> getAsShortValues(String key) {
+        return getAsShortValues(null, key);
+    }
 
-  /**
-   * Gets as byte values.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as byte values
-   */
-  public default List<Byte> getAsByteValues(String tenantId, String namespace, String key) {
-    Byte[] tempArray = get(tenantId, namespace, key, Byte[].class);
-    return tempArray == null ? Arrays.asList() : Arrays.asList(tempArray);
-  }
+    default List<Short> getAsShortValues(String namespace, String key) {
+        return getAsShortValues(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as short values.
-   *
-   * @param key the key
-   * @return the as short values
-   */
-  public default List<Short> getAsShortValues(String key) {
-    return getAsShortValues(null, key);
-  }
+    default List<Short> getAsShortValues(String tenantId, String namespace, String key) {
+        Short[] tempArray = get(tenantId, namespace, key, Short[].class);
+        return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
+    }
 
-  /**
-   * Gets as short values.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as short values
-   */
-  public default List<Short> getAsShortValues(String namespace, String key) {
-    return getAsShortValues(tenant.get(), namespace, key);
-  }
+    default List<Integer> getAsIntegerValues(String key) {
+        return getAsIntegerValues(null, key);
+    }
 
-  /**
-   * Gets as short values.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as short values
-   */
-  public default List<Short> getAsShortValues(String tenantId, String namespace, String key) {
-    Short[] tempArray = get(tenantId, namespace, key, Short[].class);
-    return tempArray == null ? Arrays.asList() : Arrays.asList(tempArray);
-  }
+    default List<Integer> getAsIntegerValues(String namespace, String key) {
+        return getAsIntegerValues(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as integer values.
-   *
-   * @param key the key
-   * @return the as integer values
-   */
-  public default List<Integer> getAsIntegerValues(String key) {
-    return getAsIntegerValues(null, key);
-  }
+    default List<Integer> getAsIntegerValues(String tenantId, String namespace, String key) {
+        Integer[] tempArray = get(tenantId, namespace, key, Integer[].class);
+        return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
+    }
 
-  /**
-   * Gets as integer values.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as integer values
-   */
-  public default List<Integer> getAsIntegerValues(String namespace, String key) {
-    return getAsIntegerValues(tenant.get(), namespace, key);
-  }
+    default List<Double> getAsDoubleValues(String key) {
+        return getAsDoubleValues(null, key);
+    }
 
-  /**
-   * Gets as integer values.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as integer values
-   */
-  public default List<Integer> getAsIntegerValues(String tenantId, String namespace, String key) {
-    Integer[] tempArray = get(tenantId, namespace, key, Integer[].class);
-    return tempArray == null ? Arrays.asList() : Arrays.asList(tempArray);
-  }
+    default List<Double> getAsDoubleValues(String namespace, String key) {
+        return getAsDoubleValues(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as double values.
-   *
-   * @param key the key
-   * @return the as double values
-   */
-  public default List<Double> getAsDoubleValues(String key) {
-    return getAsDoubleValues(null, key);
-  }
+    default List<Double> getAsDoubleValues(String tenantId, String namespace, String key) {
+        Double[] tempArray = get(tenantId, namespace, key, Double[].class);
+        return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
+    }
 
-  /**
-   * Gets as double values.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as double values
-   */
-  public default List<Double> getAsDoubleValues(String namespace, String key) {
-    return getAsDoubleValues(tenant.get(), namespace, key);
-  }
+    default List<Float> getAsFloatValues(String key) {
+        return getAsFloatValues(null, key);
+    }
 
-  /**
-   * Gets as double values.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as double values
-   */
-  public default List<Double> getAsDoubleValues(String tenantId, String namespace, String key) {
-    Double[] tempArray = get(tenantId, namespace, key, Double[].class);
-    return tempArray == null ? Arrays.asList() : Arrays.asList(tempArray);
-  }
+    default List<Float> getAsFloatValues(String namespace, String key) {
+        return getAsFloatValues(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as float values.
-   *
-   * @param key the key
-   * @return the as float values
-   */
-  public default List<Float> getAsFloatValues(String key) {
-    return getAsFloatValues(null, key);
-  }
+    default List<Float> getAsFloatValues(String tenantId, String namespace, String key) {
+        Float[] tempArray = get(tenantId, namespace, key, Float[].class);
+        return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
+    }
 
-  /**
-   * Gets as float values.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as float values
-   */
-  public default List<Float> getAsFloatValues(String namespace, String key) {
-    return getAsFloatValues(tenant.get(), namespace, key);
-  }
+    default List<Boolean> getAsBooleanValues(String key) {
+        return getAsBooleanValues(null, key);
+    }
 
-  /**
-   * Gets as float values.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as float values
-   */
-  public default List<Float> getAsFloatValues(String tenantId, String namespace, String key) {
-    Float[] tempArray = get(tenantId, namespace, key, Float[].class);
-    return tempArray == null ? Arrays.asList() : Arrays.asList(tempArray);
-  }
+    default List<Boolean> getAsBooleanValues(String namespace, String key) {
+        return getAsBooleanValues(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as boolean values.
-   *
-   * @param key the key
-   * @return the as boolean values
-   */
-  public default List<Boolean> getAsBooleanValues(String key) {
-    return getAsBooleanValues(null, key);
-  }
+    default List<Boolean> getAsBooleanValues(String tenantId, String namespace, String key) {
+        Boolean[] tempArray = get(tenantId, namespace, key, Boolean[].class);
+        return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
+    }
 
-  /**
-   * Gets as boolean values.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as boolean values
-   */
-  public default List<Boolean> getAsBooleanValues(String namespace, String key) {
-    return getAsBooleanValues(tenant.get(), namespace, key);
-  }
+    default List<Character> getAsCharacterValues(String key) {
+        return getAsCharacterValues(null, key);
+    }
 
-  /**
-   * Gets as boolean values.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as boolean values
-   */
-  public default List<Boolean> getAsBooleanValues(String tenantId, String namespace, String key) {
-    Boolean[] tempArray = get(tenantId, namespace, key, Boolean[].class);
-    return tempArray == null ? Arrays.asList() : Arrays.asList(tempArray);
-  }
+    default List<Character> getAsCharacterValues(String namespace, String key) {
+        return getAsCharacterValues(TENANT.get(), namespace, key);
+    }
 
-  /**
-   * Gets as character values.
-   *
-   * @param key the key
-   * @return the as character values
-   */
-  public default List<Character> getAsCharacterValues(String key) {
-    return getAsCharacterValues(null, key);
-  }
+    default List<Character> getAsCharacterValues(String tenantId, String namespace, String key) {
+        Character[] tempArray = get(tenantId, namespace, key, Character[].class);
+        return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
+    }
 
-  /**
-   * Gets as character values.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as character values
-   */
-  public default List<Character> getAsCharacterValues(String namespace, String key) {
-    return getAsCharacterValues(tenant.get(), namespace, key);
-  }
+    default void addConfigurationChangeListener(String key, ConfigurationChangeListener myself) {
+        addConfigurationChangeListener(null, key, myself);
+    }
 
-  /**
-   * Gets as character values.
-   *
-   * @param tenantId  the tenant id
-   * @param namespace the namespace
-   * @param key       the key
-   * @return the as character values
-   */
-  public default List<Character> getAsCharacterValues(String tenantId, String namespace,
-                                                      String key) {
-    Character[] tempArray = get(tenantId, namespace, key, Character[].class);
-    return tempArray == null ? Arrays.asList() : Arrays.asList(tempArray);
-  }
+    default void addConfigurationChangeListener(String namespace, String key, ConfigurationChangeListener myself) {
+        addConfigurationChangeListener(TENANT.get(), namespace, key, myself);
+    }
 
-  /**
-   * Get t.
-   *
-   * @param <T>       the type parameter
-   * @param tenant    the tenant
-   * @param namespace the namespace
-   * @param key       the key
-   * @param clazz     the clazz
-   * @param hints     the hints
-   * @return the t
-   */
-  public <T> T get(String tenant, String namespace, String key, Class<T> clazz, Hint... hints);
+    void addConfigurationChangeListener(String tenant, String namespace, String key,
+            ConfigurationChangeListener myself);
 
-  /**
-   * Add configuration change listener.
-   *
-   * @param key    the key
-   * @param myself the myself
-   */
-  public default void addConfigurationChangeListener(String key,
-                                                     ConfigurationChangeListener myself) {
-    addConfigurationChangeListener(null, key, myself);
-  }
+    default void removeConfigurationChangeListener(String key, ConfigurationChangeListener myself) {
+        removeConfigurationChangeListener(null, key, myself);
+    }
 
-  /**
-   * Add configuration change listener.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @param myself    the myself
-   */
-  public default void addConfigurationChangeListener(String namespace, String key,
-                                                     ConfigurationChangeListener myself) {
-    addConfigurationChangeListener(tenant.get(), namespace, key, myself);
-  }
+    default void removeConfigurationChangeListener(String namespace, String key, ConfigurationChangeListener myself) {
+        removeConfigurationChangeListener(TENANT.get(), namespace, key, myself);
+    }
 
-  /**
-   * Add configuration change listener.
-   *
-   * @param tenant    the tenant
-   * @param namespace the namespace
-   * @param key       the key
-   * @param myself    the myself
-   */
-  public void addConfigurationChangeListener(String tenant, String namespace, String key,
-                                             ConfigurationChangeListener myself);
+    void removeConfigurationChangeListener(String tenant, String namespace, String key,
+            ConfigurationChangeListener myself);
 
-  /**
-   * Remove configuration change listener.
-   *
-   * @param key    the key
-   * @param myself the myself
-   */
-  public default void removeConfigurationChangeListener(String key,
-                                                        ConfigurationChangeListener myself) {
-    removeConfigurationChangeListener(null, key, myself);
-  }
+    default <T> Map<String, T> populateMap(String key, Class<T> clazz) {
+        return populateMap(null, key, clazz);
+    }
 
-  /**
-   * Remove configuration change listener.
-   *
-   * @param namespace the namespace
-   * @param key       the key
-   * @param myself    the myself
-   */
-  public default void removeConfigurationChangeListener(String namespace, String key,
-                                                        ConfigurationChangeListener myself) {
-    removeConfigurationChangeListener(tenant.get(), namespace, key, myself);
-  }
+    default <T> Map<String, T> populateMap(String namespace, String key, Class<T> clazz) {
+        return populateMap(TENANT.get(), namespace, key, clazz);
+    }
 
-  /**
-   * Remove configuration change listener.
-   *
-   * @param tenant    the tenant
-   * @param namespace the namespace
-   * @param key       the key
-   * @param myself    the myself
-   */
-  public void removeConfigurationChangeListener(String tenant, String namespace, String key,
-                                                ConfigurationChangeListener myself);
+    <T> Map<String, T> populateMap(String tenantId, String namespace, String key, Class<T> clazz);
 
-  public default <T> Map<String, T> populateMap(String key, Class<T> clazz){
-    return populateMap(null, key, clazz);
-  }
-  public default <T> Map<String, T> populateMap(String namespace, String key, Class<T> clazz){
-    return populateMap(tenant.get(), namespace, key, clazz);
-  }
-  public <T> Map<String, T> populateMap(String tenantId, String namespace, String key, Class<T> clazz);
+    default Map generateMap(String key) {
+        return generateMap(null, key);
+    }
 
-  public default Map generateMap(String key){
-    return generateMap(null, key);
-  }
-  public default Map generateMap(String namespace, String key){
-    return generateMap(tenant.get(), namespace, key);
-  }
-  public Map generateMap(String tenantId, String namespace, String key);
+    default Map generateMap(String namespace, String key) {
+        return generateMap(TENANT.get(), namespace, key);
+    }
 
+    Map generateMap(String tenantId, String namespace, String key);
 }
diff --git a/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/ConfigurationChangeListener.java b/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/ConfigurationChangeListener.java
index 451a75f..dddd751 100644
--- a/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/ConfigurationChangeListener.java
+++ b/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/ConfigurationChangeListener.java
@@ -1,14 +1,29 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.onap.config.api;
 
 public interface ConfigurationChangeListener {
 
-  public default void notify(String tenantId, String component, String key, Object oldValue,
-                             Object newValue) {
-  }
+    default void notify(String tenantId, String component, String key, Object oldValue, Object newValue) {
+    }
 
-  public default void notify(String component, String key, Object oldValue, Object newValue) {
-  }
+    default void notify(String component, String key, Object oldValue, Object newValue) {
+    }
 
-  public default void notify(String key, Object oldValue, Object newValue) {
-  }
+    default void notify(String key, Object oldValue, Object newValue) {
+    }
 }
diff --git a/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/ConfigurationManager.java b/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/ConfigurationManager.java
index 0e8f1409..d91fdb1 100644
--- a/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/ConfigurationManager.java
+++ b/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/ConfigurationManager.java
@@ -1,98 +1,52 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.onap.config.api;
 
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Proxy;
 import java.util.Collection;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.ServiceLoader;
 
-/**
- * The interface Configuration manager.
- */
 public interface ConfigurationManager extends Configuration {
 
-  /**
-   * The constant config.
-   */
-  public static final Configuration config = lookup();
+    Configuration CONFIG = lookup();
 
-  /**
-   * Lookup configuration.
-   *
-   * @return the configuration
-   */
-  public static Configuration lookup() {
-    if (config == null) {
-      ServiceLoader<ConfigurationManager> loader = ServiceLoader.load(ConfigurationManager.class);
-      for (ConfigurationManager configuration : loader) {
-        return (Configuration) Proxy.newProxyInstance(ConfigurationManager.class.getClassLoader(),
-            new Class[]{Configuration.class}, (object, method, args) -> {
-              try {
-                return method.invoke(configuration, args);
-              } catch (InvocationTargetException ite) {
-                throw ite.getTargetException();
-              }
-            });
-      }
+    static Configuration lookup() {
+
+        if (CONFIG == null) {
+            ServiceLoader<ConfigurationManager> loader = ServiceLoader.load(ConfigurationManager.class);
+            Iterator<ConfigurationManager> configManagers = loader.iterator();
+            return configManagers.hasNext() ? configManagers.next() : null;
+        }
+
+        return CONFIG;
     }
-    return config;
-  }
 
-  /**
-   * Gets configuration value.
-   *
-   * @param queryData the query data
-   * @return the configuration value
-   */
-  public String getConfigurationValue(Map<String, Object> queryData);
+    String getConfigurationValue(Map<String, Object> queryData);
 
-  /**
-   * Update configuration value.
-   *
-   * @param updateData the update data
-   */
-  public void updateConfigurationValue(Map<String, Object> updateData);
+    void updateConfigurationValue(Map<String, Object> updateData);
 
-  /**
-   * List configuration map.
-   *
-   * @param query the query
-   * @return the map
-   */
-  public Map<String, String> listConfiguration(Map<String, Object> query);
+    Map<String, String> listConfiguration(Map<String, Object> query);
 
-  /**
-   * Update configuration values boolean.
-   *
-   * @param tenant              the tenant
-   * @param namespace           the namespace
-   * @param configKeyValueStore the config key value store
-   * @return the boolean
-   */
-  public boolean updateConfigurationValues(String tenant, String namespace,
-                                           Map configKeyValueStore);
+    boolean updateConfigurationValues(String tenant, String namespace, Map configKeyValueStore);
 
-  /**
-   * Gets tenants.
-   *
-   * @return the tenants
-   */
-  public Collection<String> getTenants();
+    Collection<String> getTenants();
 
-  /**
-   * Gets namespaces.
-   *
-   * @return the namespaces
-   */
-  public Collection<String> getNamespaces();
+    Collection<String> getNamespaces();
 
-  /**
-   * Gets keys.
-   *
-   * @param tenant    the tenant
-   * @param namespace the namespace
-   * @return the keys
-   */
-  public Collection<String> getKeys(String tenant, String namespace);
+    Collection<String> getKeys(String tenant, String namespace);
 }
diff --git a/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/DynamicConfiguration.java b/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/DynamicConfiguration.java
index 969749b..c2973a4 100644
--- a/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/DynamicConfiguration.java
+++ b/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/DynamicConfiguration.java
@@ -1,146 +1,104 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.onap.config.api;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
-/**
- * The type Dynamic configuration.
- *
- * @param <T> the type parameter
- */
+
 public class DynamicConfiguration<T> {
 
-  /**
-   * The Tenant.
-   */
-  String tenant;
-  /**
-   * The Namespace.
-   */
-  String namespace;
-  /**
-   * The Key.
-   */
-  String key;
-  /**
-   * The Configuration.
-   */
-  Configuration configuration;
-  /**
-   * The Clazz.
-   */
-  Class clazz;
-  /**
-   * The Default value.
-   */
-  T defaultValue;
+    private String tenant;
 
-  /**
-   * Gets dynamic configuration.
-   *
-   * @param <T>           the type parameter
-   * @param tenant        the tenant
-   * @param namespace     the namespace
-   * @param key           the key
-   * @param clazz         the clazz
-   * @param defaultValue  the default value
-   * @param configuration the configuration
-   * @return the dynamic configuration
-   */
-  public static <T> DynamicConfiguration<T> getDynamicConfiguration(String tenant, String namespace,
-                                                                    String key, Class<T> clazz,
-                                                                    T defaultValue,
-                                                                    Configuration configuration) {
-    DynamicConfiguration<T> dynamicConfiguration = new DynamicConfiguration<>();
-    dynamicConfiguration.tenant = tenant;
-    dynamicConfiguration.namespace = namespace;
-    dynamicConfiguration.key = key;
-    dynamicConfiguration.clazz = clazz;
-    dynamicConfiguration.defaultValue = defaultValue;
-    dynamicConfiguration.configuration = configuration;
-    return dynamicConfiguration;
-  }
+    private String namespace;
 
-  /**
-   * Gets dyn configuration.
-   *
-   * @param <K>           the type parameter
-   * @param tenant        the tenant
-   * @param namespace     the namespace
-   * @param key           the key
-   * @param clazz         the clazz
-   * @param defaultValue  the default value
-   * @param configuration the configuration
-   * @return the dyn configuration
-   */
-  public static <K> DynamicConfiguration<List<K>> getDynConfiguration(String tenant,
-                                                                      String namespace, String key,
-                                                                      Class<K> clazz,
-                                                                      K defaultValue,
-                                                                      Configuration configuration) {
-    if (clazz.isPrimitive()) {
-      throw new RuntimeException(
-          "Only Wrapper classes like Integer, Long, Double, "
-              + "Boolean etc including String are supported.");
+    private String key;
+
+    private Configuration configuration;
+
+    private Class clazz;
+
+    private T defaultValue;
+
+    public static <K> DynamicConfiguration<List<K>> getDynConfiguration(String tenant, String namespace, String key,
+            Class<K> clazz, K defaultValue, Configuration configuration) {
+        if (clazz.isPrimitive()) {
+            throw new RuntimeException("Only Wrapper classes like Integer, Long, Double, "
+                                               + "Boolean etc including String are supported.");
+        }
+        return getDynamicConfiguration(tenant, namespace, key, getArrayClass(clazz),
+                Collections.singletonList(defaultValue), configuration);
     }
-    return getDynamicConfiguration(tenant, namespace, key, getArrayClass(clazz),
-        Arrays.asList(defaultValue), configuration);
-  }
 
-  /**
-   * Gets array class.
-   *
-   * @param clazz the clazz
-   * @return the array class
-   */
-  public static Class getArrayClass(Class clazz) {
-    Class arrayClass = null;
-    switch (clazz.getName()) {
-      case "java.lang.Byte":
-        arrayClass = Byte[].class;
-        break;
-      case "java.lang.Short":
-        arrayClass = Short[].class;
-        break;
-      case "java.lang.Integer":
-        arrayClass = Integer[].class;
-        break;
-      case "java.lang.Long":
-        arrayClass = Long[].class;
-        break;
-      case "java.lang.Float":
-        arrayClass = Float[].class;
-        break;
-      case "java.lang.Double":
-        arrayClass = Double[].class;
-        break;
-      case "java.lang.Boolean":
-        arrayClass = Boolean[].class;
-        break;
-      case "java.lang.Character":
-        arrayClass = Character[].class;
-        break;
-      case "java.lang.String":
-        arrayClass = String[].class;
-        break;
-      default:
+    public static <T> DynamicConfiguration<T> getDynamicConfiguration(String tenant, String namespace, String key,
+            Class<T> clazz, T defaultValue, Configuration configuration) {
+        DynamicConfiguration<T> dynamicConfiguration = new DynamicConfiguration<>();
+        dynamicConfiguration.tenant = tenant;
+        dynamicConfiguration.namespace = namespace;
+        dynamicConfiguration.key = key;
+        dynamicConfiguration.clazz = clazz;
+        dynamicConfiguration.defaultValue = defaultValue;
+        dynamicConfiguration.configuration = configuration;
+        return dynamicConfiguration;
     }
-    return arrayClass;
-  }
 
-  /**
-   * Get t.
-   *
-   * @return the t
-   */
-  public T get() {
-    Object toReturn = configuration
-        .get(tenant, namespace, key, clazz, Hint.LATEST_LOOKUP, Hint.EXTERNAL_LOOKUP,
-            Hint.NODE_SPECIFIC);
-    if (toReturn != null && toReturn.getClass().isArray()) {
-      toReturn = Arrays.asList((Object[]) toReturn);
+    public static Class getArrayClass(Class clazz) {
+        Class arrayClass = null;
+        switch (clazz.getName()) {
+            case "java.lang.Byte":
+                arrayClass = Byte[].class;
+                break;
+            case "java.lang.Short":
+                arrayClass = Short[].class;
+                break;
+            case "java.lang.Integer":
+                arrayClass = Integer[].class;
+                break;
+            case "java.lang.Long":
+                arrayClass = Long[].class;
+                break;
+            case "java.lang.Float":
+                arrayClass = Float[].class;
+                break;
+            case "java.lang.Double":
+                arrayClass = Double[].class;
+                break;
+            case "java.lang.Boolean":
+                arrayClass = Boolean[].class;
+                break;
+            case "java.lang.Character":
+                arrayClass = Character[].class;
+                break;
+            case "java.lang.String":
+                arrayClass = String[].class;
+                break;
+            default:
+        }
+        return arrayClass;
     }
-    return toReturn == null ? defaultValue : (T) toReturn;
-  }
+
+    public T get() {
+        Object toReturn = configuration.get(tenant, namespace, key, clazz, Hint.LATEST_LOOKUP, Hint.EXTERNAL_LOOKUP,
+                Hint.NODE_SPECIFIC);
+        if (toReturn != null && toReturn.getClass().isArray()) {
+            toReturn = Arrays.asList((Object[]) toReturn);
+        }
+        return toReturn == null ? defaultValue : (T) toReturn;
+    }
 
 }
diff --git a/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/Hint.java b/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/Hint.java
index 17b58f6..373b643 100644
--- a/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/Hint.java
+++ b/common/onap-common-configuration-management/onap-configuration-management-api/src/main/java/org/onap/config/api/Hint.java
@@ -1,18 +1,34 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.onap.config.api;
 
 public enum Hint {
 
-  DEFAULT(0b0), LATEST_LOOKUP(0b1), EXTERNAL_LOOKUP(0b10), NODE_SPECIFIC(0b100);
+    DEFAULT(0b0), LATEST_LOOKUP(0b1), EXTERNAL_LOOKUP(0b10), NODE_SPECIFIC(0b100);
 
-  private final int lookupHint;
+    private final int lookupHint;
 
-  private Hint(int hnt) {
-    lookupHint = hnt;
-  }
+    Hint(int hint) {
+        lookupHint = hint;
+    }
 
-  public int value() {
-    return lookupHint;
-  }
+    public int value() {
+        return lookupHint;
+    }
 
 
 }