You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Oliver Heger (JIRA)" <ji...@apache.org> on 2006/12/30 17:43:22 UTC

[jira] Resolved: (CONFIGURATION-192) [configuration] Enhancement of interpolation features

     [ 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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org