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