On Jan 11, 2012, at 309AM, Greg Trasuk wrote: > > On Wed, 2012-01-11 at 01:01, Peter Firmstone wrote: >> You could try Dennis Reedy's Groovy Configuration Provider, that'll give >> you Pojo's with Java like syntax. We still need to add an ant task to >> generate the groovy javadoc too. >> >> It would be nice to see that system used by default. >> > > Just curious...What is the advantage of Groovy's syntax over > ConfigurationFile?
You get to use *real* code in your configuration. From my experience people are usually very confused with configuration file syntax, and why it is java-like but you cannot use any logic. Just to show a simple example for reggie (I hope you'll be able to get the gist of it), figuring out the correct unicast discovery host based on a system property would be as follows (note the initialUnicastDiscoveryProperty is declared just as a property as well): @Component('com.sun.jini.reggie') class ReggieConfig { int initialUnicastDiscoveryPort = 10500 String[] getInitialMemberGroups() { def groups = [System.getProperty(Constants.GROUPS_PROPERTY_NAME, System.getProperty('user.name'))] return groups as String[] } String getUnicastDiscoveryHost() { String host = java.net.InetAddress.getLocalHost().getHostAddress() String value = System.getProperty("java.rmi.server.hostname") if(value != null) { host = java.net.InetAddress.getByName(value).getHostAddress() } return host } } Inheritance is supported as well, etc.. etc ... I also use a DynamicConfiguration (extends AbstractConfiguration) class as well. Its use is shown here: DynamicConfiguration config = new DynamicConfiguration(); config.setEntry("org.rioproject.watch", "collectionSize", collectionSize); Watch watch = construct2("watch", config); Lastly, I recall Calum Shaw-Mackay was doing work with the Glyph project that was using annotations to wire up configs with annotations. > > Also, I just had an interesting thought: What if a service deployer (as > in "ServiceStarter is a service deployer") were to scan the service > class for JSR330 @Inject annotations and plug in values taken from the > config file? Sure, that would be nice (just be careful not to fill up the perm-gen space when looking for annotations though). I'm wondering though how you would map the component and name to the property or method to be set. Dennis