[ 
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)

Reply via email to