2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.onap.config.api;
19 import java.util.Arrays;
20 import java.util.Collections;
21 import java.util.List;
24 public interface Configuration {
26 ThreadLocal<String> TENANT = new ThreadLocal<>();
29 * Sets tenant for current thread.
31 * @param id tenant id; may be <code>null</code> in which case a default will be used.
33 static void setTenantId(String id) {
35 if (id != null && id.trim().length() > 0) {
42 default String getAsString(String key) {
43 return getAsString(null, key);
46 default String getAsString(String namespace, String key) {
47 return getAsString(TENANT.get(), namespace, key);
50 default String getAsString(String tenantId, String namespace, String key) {
51 return get(tenantId, namespace, key, String.class);
54 <T> T get(String tenant, String namespace, String key, Class<T> clazz, Hint... hints);
56 default Byte getAsByteValue(String key) {
57 return getAsByteValue(null, key);
60 default Byte getAsByteValue(String namespace, String key) {
61 return getAsByteValue(TENANT.get(), namespace, key);
64 default Byte getAsByteValue(String tenantId, String namespace, String key) {
65 return get(tenantId, namespace, key, Byte.class);
68 default Short getAsShortValue(String key) {
69 return getAsShortValue(null, key);
72 default Short getAsShortValue(String namespace, String key) {
73 return getAsShortValue(TENANT.get(), namespace, key);
76 default Short getAsShortValue(String tenantId, String namespace, String key) {
77 return get(tenantId, namespace, key, Short.class);
80 default Integer getAsIntegerValue(String key) {
81 return getAsIntegerValue(null, key);
84 default Integer getAsIntegerValue(String namespace, String key) {
85 return getAsIntegerValue(TENANT.get(), namespace, key);
88 default Integer getAsIntegerValue(String tenantId, String namespace, String key) {
89 return get(tenantId, namespace, key, Integer.class);
92 default Long getAsLongValue(String key) {
93 return getAsLongValue(null, key);
96 default Long getAsLongValue(String namespace, String key) {
97 return getAsLongValue(TENANT.get(), namespace, key);
100 default Long getAsLongValue(String tenantId, String namespace, String key) {
101 return get(tenantId, namespace, key, Long.class);
104 default Float getAsFloatValue(String key) {
105 return getAsFloatValue(null, key);
108 default Float getAsFloatValue(String namespace, String key) {
109 return getAsFloatValue(TENANT.get(), namespace, key);
112 default Float getAsFloatValue(String tenantId, String namespace, String key) {
113 return get(tenantId, namespace, key, Float.class);
116 default Double getAsDoubleValue(String key) {
117 return getAsDoubleValue(null, key);
120 default Double getAsDoubleValue(String namespace, String key) {
121 return getAsDoubleValue(TENANT.get(), namespace, key);
124 default Double getAsDoubleValue(String tenantId, String namespace, String key) {
125 return get(tenantId, namespace, key, Double.class);
128 default Boolean getAsBooleanValue(String key) {
129 return getAsBooleanValue(null, key);
132 default Boolean getAsBooleanValue(String namespace, String key) {
133 return getAsBooleanValue(TENANT.get(), namespace, key);
136 default Boolean getAsBooleanValue(String tenantId, String namespace, String key) {
137 return get(tenantId, namespace, key, Boolean.class);
140 default Character getAsCharValue(String key) {
141 return getAsCharValue(null, key);
144 default Character getAsCharValue(String namespace, String key) {
145 return getAsCharValue(TENANT.get(), namespace, key);
148 default Character getAsCharValue(String tenantId, String namespace, String key) {
149 return get(tenantId, namespace, key, Character.class);
152 default <T> T populateConfiguration(Class<T> clazz) {
153 return populateConfiguration(null, clazz);
156 default <T> T populateConfiguration(String namespace, Class<T> clazz) {
157 return populateConfiguration(TENANT.get(), namespace, clazz);
160 default <T> T populateConfiguration(String tenantId, String namespace, Class<T> clazz) {
161 return get(tenantId, namespace, null, clazz, Hint.EXTERNAL_LOOKUP);
164 default List<String> getAsStringValues(String key) {
165 return getAsStringValues(null, key);
168 default List<String> getAsStringValues(String namespace, String key) {
169 return getAsStringValues(TENANT.get(), namespace, key);
172 default List<String> getAsStringValues(String tenantId, String namespace, String key) {
173 String[] tempArray = get(tenantId, namespace, key, String[].class);
174 return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
177 default List<Byte> getAsByteValues(String key) {
178 return getAsByteValues(null, key);
181 default List<Byte> getAsByteValues(String namespace, String key) {
182 return getAsByteValues(TENANT.get(), namespace, key);
185 default List<Byte> getAsByteValues(String tenantId, String namespace, String key) {
186 Byte[] tempArray = get(tenantId, namespace, key, Byte[].class);
187 return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
190 default List<Short> getAsShortValues(String key) {
191 return getAsShortValues(null, key);
194 default List<Short> getAsShortValues(String namespace, String key) {
195 return getAsShortValues(TENANT.get(), namespace, key);
198 default List<Short> getAsShortValues(String tenantId, String namespace, String key) {
199 Short[] tempArray = get(tenantId, namespace, key, Short[].class);
200 return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
203 default List<Integer> getAsIntegerValues(String key) {
204 return getAsIntegerValues(null, key);
207 default List<Integer> getAsIntegerValues(String namespace, String key) {
208 return getAsIntegerValues(TENANT.get(), namespace, key);
211 default List<Integer> getAsIntegerValues(String tenantId, String namespace, String key) {
212 Integer[] tempArray = get(tenantId, namespace, key, Integer[].class);
213 return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
216 default List<Double> getAsDoubleValues(String key) {
217 return getAsDoubleValues(null, key);
220 default List<Double> getAsDoubleValues(String namespace, String key) {
221 return getAsDoubleValues(TENANT.get(), namespace, key);
224 default List<Double> getAsDoubleValues(String tenantId, String namespace, String key) {
225 Double[] tempArray = get(tenantId, namespace, key, Double[].class);
226 return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
229 default List<Float> getAsFloatValues(String key) {
230 return getAsFloatValues(null, key);
233 default List<Float> getAsFloatValues(String namespace, String key) {
234 return getAsFloatValues(TENANT.get(), namespace, key);
237 default List<Float> getAsFloatValues(String tenantId, String namespace, String key) {
238 Float[] tempArray = get(tenantId, namespace, key, Float[].class);
239 return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
242 default List<Boolean> getAsBooleanValues(String key) {
243 return getAsBooleanValues(null, key);
246 default List<Boolean> getAsBooleanValues(String namespace, String key) {
247 return getAsBooleanValues(TENANT.get(), namespace, key);
250 default List<Boolean> getAsBooleanValues(String tenantId, String namespace, String key) {
251 Boolean[] tempArray = get(tenantId, namespace, key, Boolean[].class);
252 return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
255 default List<Character> getAsCharacterValues(String key) {
256 return getAsCharacterValues(null, key);
259 default List<Character> getAsCharacterValues(String namespace, String key) {
260 return getAsCharacterValues(TENANT.get(), namespace, key);
263 default List<Character> getAsCharacterValues(String tenantId, String namespace, String key) {
264 Character[] tempArray = get(tenantId, namespace, key, Character[].class);
265 return tempArray == null ? Collections.emptyList() : Arrays.asList(tempArray);
268 default <T> Map<String, T> populateMap(String key, Class<T> clazz) {
269 return populateMap(null, key, clazz);
272 default <T> Map<String, T> populateMap(String namespace, String key, Class<T> clazz) {
273 return populateMap(TENANT.get(), namespace, key, clazz);
276 <T> Map<String, T> populateMap(String tenantId, String namespace, String key, Class<T> clazz);
278 default Map generateMap(String key) {
279 return generateMap(null, key);
282 default Map generateMap(String namespace, String key) {
283 return generateMap(TENANT.get(), namespace, key);
286 Map generateMap(String tenantId, String namespace, String key);