Mark Struberg created DELTASPIKE-1241: -----------------------------------------
Summary: [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 Fix For: 1.8.0 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 (v6.3.15#6346)