Author: oheger Date: Wed Dec 26 21:02:07 2012 New Revision: 1426025 URL: http://svn.apache.org/viewvc?rev=1426025&view=rev Log: CombinedConfigurationBuilder now correctly configures a CatalogResolver with a ConfigurationInterpolator.
Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedConfigurationBuilder.java commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedConfigurationBuilder.java commons/proper/configuration/trunk/src/test/resources/testCCEntityResolver.xml Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedConfigurationBuilder.java URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedConfigurationBuilder.java?rev=1426025&r1=1426024&r2=1426025&view=diff ============================================================================== --- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedConfigurationBuilder.java (original) +++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/CombinedConfigurationBuilder.java Wed Dec 26 21:02:07 2012 @@ -48,6 +48,8 @@ import org.apache.commons.configuration. import org.apache.commons.configuration.builder.FileBasedConfigurationBuilder; import org.apache.commons.configuration.builder.XMLBuilderParametersImpl; import org.apache.commons.configuration.builder.XMLBuilderProperties; +import org.apache.commons.configuration.interpol.ConfigurationInterpolator; +import org.apache.commons.configuration.interpol.Lookup; import org.apache.commons.configuration.resolver.CatalogResolver; import org.apache.commons.configuration.tree.DefaultExpressionEngine; import org.apache.commons.configuration.tree.OverrideCombiner; @@ -896,9 +898,10 @@ public class CombinedConfigurationBuilde { BeanHelper.setProperty(resolver, "baseDir", basePath); } - // BeanHelper.setProperty(resolver, "substitutor", - // getSubstitutor()); - // setEntityResolver(resolver); + ConfigurationInterpolator ci = new ConfigurationInterpolator(); + ci.registerLookups(fetchPrefixLookups()); + BeanHelper.setProperty(resolver, "interpolator", ci); + xmlParams.setEntityResolver(resolver); } } @@ -1185,6 +1188,19 @@ public class CombinedConfigurationBuilde } /** + * Returns a map with the current prefix lookup objects. This map is + * obtained from the {@code ConfigurationInterpolator} of the configuration + * under construction. + * + * @return the map with current prefix lookups (may be <b>null</b>) + */ + private Map<String, ? extends Lookup> fetchPrefixLookups() + { + CombinedConfiguration cc = getConfigurationUnderConstruction(); + return (cc != null) ? cc.getInterpolator().getLookups() : null; + } + + /** * Creates a default builder for the definition configuration and * initializes it with a parameters object. The default builder creates an * {@code XMLConfiguration}; it expects a corresponding file specification. Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedConfigurationBuilder.java URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedConfigurationBuilder.java?rev=1426025&r1=1426024&r2=1426025&view=diff ============================================================================== --- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedConfigurationBuilder.java (original) +++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestCombinedConfigurationBuilder.java Wed Dec 26 21:02:07 2012 @@ -51,8 +51,8 @@ import org.apache.commons.configuration. import org.apache.commons.configuration.builder.XMLBuilderParametersImpl; import org.apache.commons.configuration.event.ConfigurationErrorListener; import org.apache.commons.configuration.event.ConfigurationListener; +import org.apache.commons.configuration.interpol.ConfigurationInterpolator; import org.apache.commons.configuration.resolver.CatalogResolver; -import org.apache.commons.configuration.resolver.DefaultEntityResolver; import org.easymock.EasyMock; import org.junit.Before; import org.junit.Test; @@ -659,8 +659,11 @@ public class TestCombinedConfigurationBu CombinedConfiguration cc = factory.getConfiguration(); XMLConfiguration xmlConf = (XMLConfiguration) cc.getConfiguration("xml"); - assertTrue("Wrong entity resolver: " + xmlConf.getEntityResolver(), - xmlConf.getEntityResolver() instanceof EntityResolverTestImpl); + EntityResolverWithPropertiesTestImpl resolver = + (EntityResolverWithPropertiesTestImpl) xmlConf + .getEntityResolver(); + assertFalse("No lookups", resolver.getInterpolator().getLookups() + .isEmpty()); } /** @@ -946,14 +949,6 @@ public class TestCombinedConfigurationBu } /** - * A special entity resolver implementation for testing whether a resolver - * can be defined in the definition file. - */ - public static class EntityResolverTestImpl extends DefaultEntityResolver - { - } - - /** * A specialized entity resolver implementation for testing whether * properties of a catalog resolver are correctly set. */ @@ -966,6 +961,9 @@ public class TestCombinedConfigurationBu /** The file system. */ private FileSystem fileSystem; + /** The ConfigurationInterpolator. */ + private ConfigurationInterpolator interpolator; + public FileSystem getFileSystem() { return fileSystem; @@ -989,6 +987,18 @@ public class TestCombinedConfigurationBu super.setBaseDir(baseDir); baseDirectory = baseDir; } + + public ConfigurationInterpolator getInterpolator() + { + return interpolator; + } + + @Override + public void setInterpolator(ConfigurationInterpolator interpolator) + { + super.setInterpolator(interpolator); + this.interpolator = interpolator; + } } /** Modified: commons/proper/configuration/trunk/src/test/resources/testCCEntityResolver.xml URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/resources/testCCEntityResolver.xml?rev=1426025&r1=1426024&r2=1426025&view=diff ============================================================================== --- commons/proper/configuration/trunk/src/test/resources/testCCEntityResolver.xml (original) +++ commons/proper/configuration/trunk/src/test/resources/testCCEntityResolver.xml Wed Dec 26 21:02:07 2012 @@ -23,7 +23,7 @@ <configuration> <header> <entity-resolver - config-class="org.apache.commons.configuration.builder.combined.TestCombinedConfigurationBuilder$EntityResolverTestImpl"/> + config-class="org.apache.commons.configuration.builder.combined.TestCombinedConfigurationBuilder$EntityResolverWithPropertiesTestImpl"/> </header> <xml fileName="test.xml" config-name="xml"/> </configuration>