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>


Reply via email to