diff options
author | Dan Timoney <dtimoney@att.com> | 2021-02-17 15:25:45 -0500 |
---|---|---|
committer | Dan Timoney <dtimoney@att.com> | 2021-02-18 16:05:55 -0500 |
commit | 69e393da4cce52a0491fffff2dc81fbe59aeca08 (patch) | |
tree | 404cc750fa69ba2a89c7a2fce921da34db5edda4 /core/utils/provider/src/main | |
parent | 56c27daf1656fd6436f8c818c771cf803079e1ea (diff) |
Add new EnvProperties class
Added new class EnvProperties, which extends java.util.Properties
and supports property values containing embedded environment
variable references. Updated code to use this class to load
svclogic.properties, and updated dmaap listener to use
that class to load dmaap listener configuration.
Issue-ID: SDNC-1482
Signed-off-by: Dan Timoney <dtimoney@att.com>
Change-Id: I7538b719631d8c10c27d059aeb4f70ce92760ebd
Diffstat (limited to 'core/utils/provider/src/main')
-rw-r--r-- | core/utils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/common/EnvProperties.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/core/utils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/common/EnvProperties.java b/core/utils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/common/EnvProperties.java new file mode 100644 index 000000000..2e9f2673d --- /dev/null +++ b/core/utils/provider/src/main/java/org/onap/ccsdk/sli/core/utils/common/EnvProperties.java @@ -0,0 +1,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(); + + } +} |