Uploaded image for project: 'Commons Lang'
  1. Commons Lang
  2. LANG-482

Enhance StrSubstitutor to support nested ${var-${subvr}} expansion

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • 3.0
    • lang.text.*
    • None

    Description

      t would be really handy of StrSubstitutor could support nested variable interpolation:

      org.osgi.framework.system.packages=org.osgi.framework; version=1.4.0, \
      org.osgi.service.packageadmin; version=1.2.0, \
      org.osgi.service.startlevel; version=1.1.0, \
      org.osgi.service.url; version=1.0.0, \
      org.osgi.util.tracker; version=1.3.3 \
      ${jre-${java.specification.version}}

      The process being to expand innermost variable references first and work outwards - this allows for very advance config, such as the above, which can dynamically detect the Java version and expand a JRE version specific property into the property being defined.

      Looking at the implementation, it seems it might be a fairly straightforward enhancement to:

      private int substitute(StrBuilder buf, int offset, int length, List priorVariables)

      The code already has the cyclic map in place.

      I already have code that achieves this within Apache Felix, so I will see if I can retro-fit a similar model to the above and if so submit a patch.

      Attachments

        1. StrSubstitutor.java.nested.patch
          6 kB
          Rob Walker
        2. lang-482.diff
          17 kB
          Oliver Heger

        Issue Links

          Activity

            People

              Unassigned Unassigned
              walkerr Rob Walker
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: