1 package org.openecomp.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 DynamicConfiguration<List<K>> dynamicConfiguration = new DynamicConfiguration<>();
87 dynamicConfiguration.tenant = tenant;
88 dynamicConfiguration.namespace = namespace;
89 dynamicConfiguration.key = key;
90 dynamicConfiguration.clazz = getArrayClass(clazz);
91 dynamicConfiguration.defaultValue = Arrays.asList(defaultValue);
92 dynamicConfiguration.configuration = configuration;
93 return dynamicConfiguration;
99 * @param clazz the clazz
100 * @return the array class
102 public static Class getArrayClass(Class clazz) {
103 switch (clazz.getName()) {
104 case "java.lang.Byte":
106 case "java.lang.Short":
107 return Short[].class;
108 case "java.lang.Integer":
109 return Integer[].class;
110 case "java.lang.Long":
112 case "java.lang.Float":
113 return Float[].class;
114 case "java.lang.Double":
115 return Double[].class;
116 case "java.lang.Boolean":
117 return Boolean[].class;
118 case "java.lang.Character":
119 return Character[].class;
120 case "java.lang.String":
121 return String[].class;
133 Object toReturn = configuration
134 .get(tenant, namespace, key, clazz, Hint.LATEST_LOOKUP, Hint.EXTERNAL_LOOKUP,
136 if (toReturn != null && toReturn.getClass().isArray()) {
137 toReturn = Arrays.asList((Object[]) toReturn);
139 return toReturn == null ? defaultValue : (T) toReturn;