Uploaded image for project: 'DeltaSpike'
  1. DeltaSpike
  2. DELTASPIKE-1241

[Config] fallback chain logic

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 1.7.2
    • None
    • Configuration
    • 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.

      Attachments

        Activity

          People

            struberg Mark Struberg
            struberg Mark Struberg
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: