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

Reply via email to