1 package org.onap.config.api;
3 import java.util.Arrays;
7 * The type Dynamic configuration.
9 * @param <T> the type parameter
11 public class DynamicConfiguration<T> {
28 Configuration configuration;
39 * Gets dynamic configuration.
41 * @param <T> the type parameter
42 * @param tenant the tenant
43 * @param namespace the namespace
45 * @param clazz the clazz
46 * @param defaultValue the default value
47 * @param configuration the configuration
48 * @return the dynamic configuration
50 public static <T> DynamicConfiguration<T> getDynamicConfiguration(String tenant, String namespace,
51 String key, Class<T> clazz,
53 Configuration configuration) {
54 DynamicConfiguration<T> dynamicConfiguration = new DynamicConfiguration<>();
55 dynamicConfiguration.tenant = tenant;
56 dynamicConfiguration.namespace = namespace;
57 dynamicConfiguration.key = key;
58 dynamicConfiguration.clazz = clazz;
59 dynamicConfiguration.defaultValue = defaultValue;
60 dynamicConfiguration.configuration = configuration;
61 return dynamicConfiguration;
65 * Gets dyn configuration.
67 * @param <K> the type parameter
68 * @param tenant the tenant
69 * @param namespace the namespace
71 * @param clazz the clazz
72 * @param defaultValue the default value
73 * @param configuration the configuration
74 * @return the dyn configuration
76 public static <K> DynamicConfiguration<List<K>> getDynConfiguration(String tenant,
77 String namespace, String key,
80 Configuration configuration) {
81 if (clazz.isPrimitive()) {
82 throw new RuntimeException(
83 "Only Wrapper classes like Integer, Long, Double, "
84 + "Boolean etc including String are supported.");
86 return getDynamicConfiguration(tenant, namespace, key, getArrayClass(clazz),
87 Arrays.asList(defaultValue), configuration);
93 * @param clazz the clazz
94 * @return the array class
96 public static Class getArrayClass(Class clazz) {
97 Class arrayClass = null;
98 switch (clazz.getName()) {
99 case "java.lang.Byte":
100 arrayClass = Byte[].class;
102 case "java.lang.Short":
103 arrayClass = Short[].class;
105 case "java.lang.Integer":
106 arrayClass = Integer[].class;
108 case "java.lang.Long":
109 arrayClass = Long[].class;
111 case "java.lang.Float":
112 arrayClass = Float[].class;
114 case "java.lang.Double":
115 arrayClass = Double[].class;
117 case "java.lang.Boolean":
118 arrayClass = Boolean[].class;
120 case "java.lang.Character":
121 arrayClass = Character[].class;
123 case "java.lang.String":
124 arrayClass = String[].class;
137 Object toReturn = configuration
138 .get(tenant, namespace, key, clazz, Hint.LATEST_LOOKUP, Hint.EXTERNAL_LOOKUP,
140 if (toReturn != null && toReturn.getClass().isArray()) {
141 toReturn = Arrays.asList((Object[]) toReturn);
143 return toReturn == null ? defaultValue : (T) toReturn;