[ 
https://issues.apache.org/jira/browse/CONFIGURATION-395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ron updated CONFIGURATION-395:
------------------------------

    Description: 
Currently the expression engine can be set but not the interpolation.
This patch proposes the ability to set a user specified interpolation engine.
It includes a groovy interpolation engine. Groovy comes naturally as an 
expressions and interpolation language in the java environment

API usage:

                AbstractConfiguration c = new 
PropertiesConfiguration("conf/test.conf");
                c.setInterpolator(new GInterpolator(c));
                System.out.println(c.getString("test"));

Configuration examples:

library.path.1=${ if  
("${System.getProperty{('os.name')}".toLowerCase().startsWith("windows")) 
"libw.dll"; else "libl" }
password=${println 'enter password'; readln}

I think that this is more feature rich than JEXL and is easier to use for java 
programmers.

- Ron




  was:
Currently the expression engine can be set but not the interpolation.
This patch proposes the ability to set a user specified interpolation engine.
It includes a groovy interpolation engine. Groovy comes naturally as an 
expressions and interpolation language in the java environment

API usage:

                AbstractConfiguration c = new 
PropertiesConfiguration("conf/test.conf");
                c.setInterpolator(new GInterpolator(c));
                System.out.println(c.getString("test"));

Configuration examples:

library.path.1=${ if  
("${System.getProperty{('os.name')}".toLowerCase().startsWith("windows")) 
"libw.dll"; else "libl" }
password=${println 'enter password'; readln}

I think that this is more feature rich than JEXL and is easier to use for java 
programmers.

- Ron



PS: I have added some more features:

I have extended this to enable caching and add custom imports.
thus in the example below query(..) will be executed only once.
custom imports can be predefined, so that they do not have to be included in 
the configuration.

API:

AbstractConfiguration c = new PropertiesConfiguration("conf/test.conf");
c.setInterpolator(new GInterpolator(c, true, new String[]{"util.Utils"}));
System.out.println(c.getString("password"));
System.out.println(c.getString("password"));

configuration example:

password=${Utils.query('enter password')}


> groovy for interpolation and expression engine
> ----------------------------------------------
>
>                 Key: CONFIGURATION-395
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-395
>             Project: Commons Configuration
>          Issue Type: Improvement
>          Components: Expression engine, Interpolation
>            Reporter: ron
>            Priority: Minor
>         Attachments: AbstractConfiguration.patch, ConfigurationBinding.java, 
> GInterpolator.java, GInterpolator.java, Interpolator.java
>
>
> Currently the expression engine can be set but not the interpolation.
> This patch proposes the ability to set a user specified interpolation engine.
> It includes a groovy interpolation engine. Groovy comes naturally as an 
> expressions and interpolation language in the java environment
> API usage:
>               AbstractConfiguration c = new 
> PropertiesConfiguration("conf/test.conf");
>               c.setInterpolator(new GInterpolator(c));
>               System.out.println(c.getString("test"));
> Configuration examples:
> library.path.1=${ if  
> ("${System.getProperty{('os.name')}".toLowerCase().startsWith("windows")) 
> "libw.dll"; else "libl" }
> password=${println 'enter password'; readln}
> I think that this is more feature rich than JEXL and is easier to use for 
> java programmers.
> - Ron

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to