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)