Details
-
New Feature
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.7.2
-
None
-
None
Description
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
TypedResolver#withLookupPath(String... lookupPaths)
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
TypedResolver<String> ds = ConfigResolver.resolve("myprj.datasource") .withLookupPath("${dbvendor}", "${deltaspike.projectstage}"); ds.get();
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.