[ http://issues.apache.org/jira/browse/CONFIGURATION-192?page=all ]
Oliver Heger resolved CONFIGURATION-192.
----------------------------------------
Fix Version/s: Nightly Builds
Resolution: Fixed
The variable substitution features of the new Commons Lang text package have
been incorporated to implement enhanced variable interpolation. A new Class
ConfigurationInterpolator is responsible for interpolation. It manages a set of
lookup objects that are associated with specific variable prefixes. Standard
lookup objects for system properties and constants are provided. The user guide
was updated in this respect, too.
> [configuration] Enhancement of interpolation features
> -----------------------------------------------------
>
> Key: CONFIGURATION-192
> URL: http://issues.apache.org/jira/browse/CONFIGURATION-192
> Project: Commons Configuration
> Issue Type: Improvement
> Environment: Operating System: other
> Platform: Other
> Reporter: Oliver Heger
> Assigned To: Oliver Heger
> Priority: Minor
> Fix For: Nightly Builds
>
> Attachments: interpolation.diff, Interpolator.java,
> Interpolator.java, TestInterpolator.java, TestInterpolator.java,
> VariableResolver.java
>
>
> At the moment interpolation is only supported by the getString() and
> getStringArray() methods. This proposal suggests adding interpolation support
> for other getter methods, too, and at the same time making it more
> customizable
> (including the ability to disable it at all).
> A first step in achieving this could be to refactor the interpolation
> functionality out of AbstractConfiguration and into a new Interpolator class.
> This class would provide a main interpolation method and would also maintain
> an
> arbitrary number of objects that know how to resolve variables of certain
> types.
> Each Configuration object would be assigned an Interpolator instance, to which
> it would delegate interpolation tasks.
> Customization of the interpolation features could be done by assigning an
> Interpolator object to a configuration that has been initialized with a custom
> set of variable resolver objects. If no Interpolator is assigned, no
> interpolation will be performed.
> Variable resolver objects are very simple: They define a method which takes a
> variable's name and return its value. The variable resolver to use for a
> concrete variable is determined by a prefix that can be set for each variable.
> So a variable like ${sys:user.home} e.g. might refer to the system properties
> resolver. Variables without a prefix are handled by a default resolver, which
> is
> implemented by the Configuration object itself, so that the Configuration's
> properties are used as variable values (which is backwards compatible to the
> current functionality).
> It should be possible to define a default Interpolator (or at least a default
> set of variable resolvers) that is to be used by each Configuration object as
> long as no special Interpolator is set. This could be done through a static
> field in AbstractConfiguration.
> Useful specific variable resolver classes could be:
> - The already mentioned system properties resolver, which would make system
> properties accessable in each configuration.
> - A resolver that would read constant values from specified classes.
> - A resolver that would evaluate expressions in an expression language like
> EL.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]