Return-Path: Delivered-To: apmail-commons-commits-archive@minotaur.apache.org Received: (qmail 73382 invoked from network); 9 Mar 2009 21:00:49 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 9 Mar 2009 21:00:49 -0000 Received: (qmail 35185 invoked by uid 500); 9 Mar 2009 21:00:48 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 35133 invoked by uid 500); 9 Mar 2009 21:00:48 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 35124 invoked by uid 99); 9 Mar 2009 21:00:48 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 09 Mar 2009 14:00:48 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 09 Mar 2009 21:00:47 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 295E223889BB; Mon, 9 Mar 2009 21:00:27 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r751830 - in /commons/proper/configuration/branches/configuration2_experimental/src: main/java/org/apache/commons/configuration2/ main/java/org/apache/commons/configuration2/interpol/ test/java/org/apache/commons/configuration2/ Date: Mon, 09 Mar 2009 21:00:26 -0000 To: commits@commons.apache.org From: joehni@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090309210027.295E223889BB@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: joehni Date: Mon Mar 9 21:00:26 2009 New Revision: 751830 URL: http://svn.apache.org/viewvc?rev=751830&view=rev Log: Fix local lookups for SubsetConfiguration (CONFIGURATION-369). Modified: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/interpol/ConfigurationInterpolator.java commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java Modified: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java?rev=751830&r1=751829&r2=751830&view=diff ============================================================================== --- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java (original) +++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java Mon Mar 9 21:00:26 2009 @@ -17,7 +17,12 @@ package org.apache.commons.configuration2; +import org.apache.commons.configuration2.interpol.ConfigurationInterpolator; +import org.apache.commons.lang.text.StrLookup; + import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; /** *

A subset of another configuration. The new Configuration object contains @@ -195,7 +200,7 @@ { return new SubsetIterator(parent.getKeys(prefix)); } - + @Override protected Object interpolate(Object base) { @@ -206,6 +211,7 @@ else { SubsetConfiguration config = new SubsetConfiguration(parent, ""); + getInterpolator().registerLocalLookups(config.getInterpolator()); return config.interpolate(base); } } @@ -323,7 +329,7 @@ /** * A specialized iterator to be returned by the getKeys() * methods. This implementation wraps an iterator from the parent - * configuration. The keys returned by this iterator are correspondigly + * configuration. The keys returned by this iterator are correspondingly * transformed. */ private class SubsetIterator implements Iterator Modified: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/interpol/ConfigurationInterpolator.java URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/interpol/ConfigurationInterpolator.java?rev=751830&r1=751829&r2=751830&view=diff ============================================================================== --- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/interpol/ConfigurationInterpolator.java (original) +++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/interpol/ConfigurationInterpolator.java Mon Mar 9 21:00:26 2009 @@ -16,6 +16,7 @@ */ package org.apache.commons.configuration2.interpol; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -229,7 +230,7 @@ * * @return a set with the registered variable prefixes */ - public Set prefixSet() + public Set prefixSet() { return localLookups.keySet(); } @@ -313,13 +314,23 @@ */ protected StrLookup fetchLookupForPrefix(String prefix) { - StrLookup lookup = (StrLookup) localLookups.get(prefix); + StrLookup lookup = localLookups.get(prefix); if (lookup == null) { lookup = StrLookup.noneLookup(); } return lookup; } + + /** + * Registers the local lookup instances for the given interpolator. + * + * @param interpolator the instance receiving the local lookups + * @since upcoming + */ + public void registerLocalLookups(ConfigurationInterpolator interpolator) { + interpolator.localLookups.putAll(localLookups); + } // static initializer, sets up the map with the standard lookups static Modified: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java?rev=751830&r1=751829&r2=751830&view=diff ============================================================================== --- commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java (original) +++ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java Mon Mar 9 21:00:26 2009 @@ -26,6 +26,8 @@ import java.util.Set; import org.apache.commons.configuration2.flat.BaseConfiguration; +import org.apache.commons.configuration2.interpol.ConfigurationInterpolator; +import org.apache.commons.lang.text.StrLookup; import junit.framework.TestCase; @@ -160,7 +162,7 @@ assertEquals("prefix", "prefix", subset.getPrefix()); } - public void testThrowtExceptionOnMissing() + public void testThrowExceptionOnMissing() { BaseConfiguration config = new BaseConfiguration(); config.setThrowExceptionOnMissing(true); @@ -208,7 +210,7 @@ keys.add("type"); while(itKeys.hasNext()) { - String k = (String) itKeys.next(); + String k = itKeys.next(); assertTrue(keys.contains(k)); keys.remove(k); } @@ -283,4 +285,33 @@ assertFalse("Wrong value of list parsing flag in parent", config .isDelimiterParsingDisabled()); } + + /** + * Tests manipulating the interpolator. + */ + public void testInterpolator() + { + BaseConfiguration config = new BaseConfiguration(); + AbstractConfiguration subset = (AbstractConfiguration) config + .subset("prefix"); + InterpolationTestHelper.testGetInterpolator(subset); + } + + // TODO: Next step + public void todoTestLocalLookupsInInterpolorAreInherited() { + BaseConfiguration config = new BaseConfiguration(); + ConfigurationInterpolator interpolator = config.getInterpolator(); + interpolator.registerLookup("brackets", new StrLookup(){ + + @Override + public String lookup(String key) { + return "(" + key +")"; + } + + }); + config.setProperty("prefix.var", "${brackets:x}"); + AbstractConfiguration subset = (AbstractConfiguration) config + .subset("prefix"); + assertEquals("Local lookup was not inherited", "(x)", subset.getString("var", "")); + } }