[
https://issues.apache.org/jira/browse/DELTASPIKE-1212?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16986128#comment-16986128
]
Andrew Marinchuk commented on DELTASPIKE-1212:
----------------------------------------------
Hi!
This is a workaround for resolving all properties with some prefix:
{code:java} private @Nonnull Map<String, String>
filterPropsByPrefix(@Nonnull Map<String, String> props, @Nonnull String prefix,
boolean resolveConfig) {
int prefixLength = prefix.length();
Map<String, String> result = new LinkedHashMap<>();
if (resolveConfig) {
for (Entry<String, String> entry : props.entrySet())
// Select only parameters with specified prefix
if (entry.getKey().startsWith(prefix)) {
String key = entry.getKey();
if (ProjectStage.valueOf(key.substring(key.lastIndexOf('.')
+ 1)) != null)
key = key.substring(0, key.lastIndexOf('.'));
result.put(key.substring(prefixLength),
ConfigResolver.getProjectStageAwarePropertyValue(key));
}
} else
for (Entry<String, String> entry : props.entrySet())
if (entry.getKey().startsWith(prefix))
result.put(entry.getKey().substring(prefixLength),
entry.getValue());
return result;
}
{code}
Usage: {code:java}private static final String CONFIG_PREFIX = "myprefix.";
// ...
Map<String, String> allPropsWithPrefix =
filterPropsByPrefix(ConfigResolver.getAllProperties(), CONFIG_PREFIX,
true);{code}
May be method like this could be a good alternative to resolveAllProperties?
> Introduce a ConfigResolver.resolveAllProperties method
> ------------------------------------------------------
>
> Key: DELTASPIKE-1212
> URL: https://issues.apache.org/jira/browse/DELTASPIKE-1212
> Project: DeltaSpike
> Issue Type: New Feature
> Components: Configuration
> Affects Versions: 1.7.0
> Reporter: John D. Ament
> Assignee: John D. Ament
> Priority: Major
>
> Invoking ConfigResolver.getAllProperties does not expand out any inlined
> variables. In addition, assume the following properties file and project
> stage = Development
> {code}
> some-service-url=${edge-server-url}/some-service
> edge-server-url=undefined
> edge-server-url.Development=http://development:8081
> edge-server-url.Staging=http://staging:8081
> edge-server-url.Production=http://prod:8081
> {code}
> calling {{getAllProperties}} returns the raw output of this file.
> Introducing a new {{resolveAllProperties}} method would only return back the
> active values. The expected result would be
> {code}
> some-service-url=http://development:8081/some-service
> edge-server-url=http://development:8081
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)