You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltaspike.apache.org by "Thomas Andraschko (JIRA)" <ji...@apache.org> on 2019/08/12 10:58:00 UTC

[jira] [Updated] (DELTASPIKE-1241) [Config] fallback chain logic

     [ https://issues.apache.org/jira/browse/DELTASPIKE-1241?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thomas Andraschko updated DELTASPIKE-1241:
------------------------------------------
    Fix Version/s:     (was: 1.9.1)
                   1.9.2

> [Config] fallback chain logic
> -----------------------------
>
>                 Key: DELTASPIKE-1241
>                 URL: https://issues.apache.org/jira/browse/DELTASPIKE-1241
>             Project: DeltaSpike
>          Issue Type: New Feature
>          Components: Configuration
>    Affects Versions: 1.7.2
>            Reporter: Mark Struberg
>            Assignee: Mark Struberg
>            Priority: Major
>             Fix For: 1.9.2
>
>
> We got the request to add handling similar to ConfigResolver#getProjectStageAwarePropertyValue and ConfigResolver#getPropertyAwarePropertyValue but in a more generic way.
> Something I've been experimenting with since a long time was to introduce a more generic logic based on different lookup paths with themselves represent a postfix. 
> The idea is to extend the TypedResolver with a method
> {code}
> TypedResolver#withLookupPath(String... lookupPaths)
> {code} 
> where each lookupPath String could either be a hardcoded value (e.g. evaluated upfront) or a variable "${somevariable}" which will be evaluted on the fly. 
> ConfigResolver.getPropertyAwarePropertyValue("dbvendor") could e.g. also be written as 
> {code}
> TypedResolver<String> ds = 
>     ConfigResolver.resolve("myprj.datasource")
>        .withLookupPath("${dbvendor}", "${deltaspike.projectstage}");
> ds.get();
> {code}
> Assuming we are in the ProjectStage UnitTest this would result in the following lookup paths:
>      * datasource.mysql.UnitTest
>      * datasource.mysql
>      * datasource.UnitTest
>      * datasource
> The lookupChain is kind of a binary field with all flags set to 1 (in the sample this would be: 11) and then decremented for each lookup (11, 10, 01, 00). Where 1 means to lookup with the specific postfix and 0 without.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)