[ http://issues.apache.org/jira/browse/CONFIGURATION-215?page=comments#action_12416623 ]
Oliver Heger commented on CONFIGURATION-215: -------------------------------------------- Two thoughts: - Such a method for checking from which source a property was loaded would only make sense for composite configurations, i.e. ATM the classes CompositeConfiguration and CombinedConfiguration, wouldn't it? For other - simple - configurations the source is always the configuration itself. - getURL() would only be a special case that is applicable to file-based configurations. Maybe somewhen later somebody dealing with different database configurations might want to find out, from which database table a certain property was loaded. Then a URL would be useless. The same is true for JNDI configurations you mentioned already. So I would suggest the following solution: A method Configuration getSource(String key); can be added to composite configurations, which retrieves the source configuration of a specified property. For your special use case, when you know that you are dealing with file-based configurations only, you can then do something like: URL url = ((FileConfiguration) compositeConfiguration.getSource("myProperty")).getURL(); Would this be okay with you? > Using relative URLs > ------------------- > > Key: CONFIGURATION-215 > URL: http://issues.apache.org/jira/browse/CONFIGURATION-215 > Project: Commons Configuration > Type: Improvement > Reporter: Michiel Kalkman > Priority: Minor > > It would be useful to be able to specify URLs in configuration item values > that are relative to the configuration. > A sample. I have the following files. > A/config.xml which refers to > B/specificConfigForB.xml which refers to > B/somefile > Now specifying the location of somefile in specificConfigForB.xml should be > possible using a relative URL, such that it is possible to retrieve the > absolute URL of somefile through: > a) the absolute URL of A/config.xml (e.g.: file:/c:/A/config.xml or > http://A/config.xml) > b) the relative URL of somefile specified in B/specificConfigForB.xml (like > <somefile>somefile</somefile>) > (1) One solution is to make it possible to find the location of the > configuration file that specifies the relative URL. Or more general, commons > config should know where a given configuration item is stored. > In this case it might be an idea to implement a getURL() on the Configuration > interface which uses: > 1. the absolute URL of the composite configuration file, (A/config.xml) > 2. the relative URL to the specfying configuration file, > (B/specificConfigForB.xml) > 3. the relative URL specified (in B/specificConfigForB.xml) > (2) Another solution is to specify a special meta variable (like ${url}) that > can be used to specify the location of the specifying configuration file wrt > the composite configuration file. E.g. <somefile>${url}/somefile</somefile> > would result in ../B/somefile. > (3) Another solution would be to specify a special attribute to indicate that > the value specified is an URL. Like <somefile type="URL">somefile</somefile>. > The advantage of solution (1) is that no extra semantics are introduced to > the configuration files. Furthermore, it might possibly be useful in > debugging situations. The advantages of solution (2) is that in this manner > other meta variables might be introduced. The disadvantage of solution (3) is > that this one cannot be applied to property files. > See also > http://mail-archives.apache.org/mod_mbox/jakarta-commons-user/200606.mbox/[EMAIL > PROTECTED] -- 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]