Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.6, Nightly Builds
-
None
-
None
Description
The DefaultConfigurationBuilder does not set the basepath of nested DefaultConfigurationBuilders:
I've the following structure:
/WEB-INF/config/defs/def-1.xml
/WEB-INF/config/defs/def-2.xml
/WEB-INF/config/config1.properties
I use a DefaultConfigurationBuilder, with the following contents in the
def-1.xml:
<configuration>
<override>
<properties fileName="../config1.properties"/>
<configuration fileName="def-2.xml"/>
</override>
</configuration>
I use this code:
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
builder.setURL(ctx.getResource("/WEB-INF/config/defs/def-1.xml"));
Configuration c = builder.getConfiguration(true);
This gives an exception:
Caused by: org.apache.commons.configuration.ConfigurationException:
Cannot locate configuration source def-2.xml
at
org.apache.commons.configuration.AbstractFileConfiguration.load(AbstractFileConfiguration.java:217)
[...]
Seems to be that AbstractFileConfiguration.basePath is not set by the
DefaultConfigurationBuilder.ConfigurationBuilderProvider, while it is
set by DefaultConfigurationBuilder.FileConfigurationProvider (in
initBeanInstance(Object, BeanDeclaration)).
I'll attach a quick n dirty fix against 1.6 (can't get trunk to build), but I doubt it's the best fix. It's just a copy of FileConfigurationProvider#initBeanInstance in ConfigurationBuilderProvider.