blob: 2e9f2673daff62301c98a69eaf8e9ad3624def4c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
package org.onap.ccsdk.sli.core.utils.common;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.Enumeration;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EnvProperties extends Properties {
@Override
public synchronized void load(Reader reader) throws IOException {
super.load(reader);
resolveAllValues();
}
@Override
public synchronized void load(InputStream inStream) throws IOException {
super.load(inStream);
resolveAllValues();
}
@Override
public synchronized Object setProperty(String key, String value) {
return super.setProperty(key, EnvProperties.resolveValue(value));
}
private void resolveAllValues() {
Enumeration<?> propNames = propertyNames();
while (propNames.hasMoreElements()) {
String propName = (String) propNames.nextElement();
super.setProperty(propName, EnvProperties.resolveValue(getProperty(propName)));
}
}
public static String resolveValue(String value) {
if (value == null) {
return null;
}
Pattern p = Pattern.compile("\\$\\{(\\w+)((?:\\:\\-)([^\\}]*))?\\}");
Matcher m = p.matcher(value);
StringBuffer sb = new StringBuffer();
while (m.find()) {
String envVarName = null == m.group(1) ? m.group(2) : m.group(1);
String envVarDefault = null == m.group(3) ? "" : m.group(3);
String envVarValue = System.getenv(envVarName);
m.appendReplacement(sb,
null == envVarValue ? Matcher.quoteReplacement(envVarDefault) : Matcher.quoteReplacement(envVarValue));
}
m.appendTail(sb);
return sb.toString();
}
}
|