commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ron (JIRA)" <j...@apache.org>
Subject [jira] Updated: (CONFIGURATION-395) groovy for interpolation and expression engine
Date Sun, 06 Sep 2009 09:51:57 GMT

     [ 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.


Mime
View raw message