Repository: hadoop Updated Branches: refs/heads/branch-2 ea51ef44f -> 0fb1457d8
HADOOP-15357. Configuration.getPropsWithPrefix no longer does variable substitution. Contributed by Jim Brennan Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/0fb1457d Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/0fb1457d Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/0fb1457d Branch: refs/heads/branch-2 Commit: 0fb1457d862660e14c3f5cf42d2cc5a2475ee097 Parents: ea51ef4 Author: Jason Lowe <jl...@apache.org> Authored: Tue Apr 10 16:44:03 2018 -0500 Committer: Jason Lowe <jl...@apache.org> Committed: Tue Apr 10 16:59:31 2018 -0500 ---------------------------------------------------------------------- .../org/apache/hadoop/conf/Configuration.java | 11 ++++----- .../apache/hadoop/conf/TestConfiguration.java | 25 +++++++++++++++----- 2 files changed, 23 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/0fb1457d/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java index bfb1a67..802242f 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java @@ -2669,15 +2669,12 @@ public class Configuration implements Iterable<Map.Entry<String,String>>, */ public Map<String, String> getPropsWithPrefix(String confPrefix) { Properties props = getProps(); - Enumeration e = props.propertyNames(); Map<String, String> configMap = new HashMap<>(); - String name = null; - while (e.hasMoreElements()) { - name = (String) e.nextElement(); + for (String name : props.stringPropertyNames()) { if (name.startsWith(confPrefix)) { - String value = props.getProperty(name); - name = name.substring(confPrefix.length()); - configMap.put(name, value); + String value = get(name); + String keyName = name.substring(confPrefix.length()); + configMap.put(keyName, value); } } return configMap; http://git-wip-us.apache.org/repos/asf/hadoop/blob/0fb1457d/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java index bceae3c..214be63 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java @@ -1966,16 +1966,29 @@ public class TestConfiguration extends TestCase { public void testGettingPropertiesWithPrefix() throws Exception { Configuration conf = new Configuration(); for (int i = 0; i < 10; i++) { - conf.set("prefix" + ".name" + i, "value"); + conf.set("prefix." + "name" + i, "value" + i); } conf.set("different.prefix" + ".name", "value"); - Map<String, String> props = conf.getPropsWithPrefix("prefix"); - assertEquals(props.size(), 10); + Map<String, String> prefixedProps = conf.getPropsWithPrefix("prefix."); + assertEquals(prefixedProps.size(), 10); + for (int i = 0; i < 10; i++) { + assertEquals("value" + i, prefixedProps.get("name" + i)); + } + // Repeat test with variable substitution + conf.set("foo", "bar"); + for (int i = 0; i < 10; i++) { + conf.set("subprefix." + "subname" + i, "value_${foo}" + i); + } + prefixedProps = conf.getPropsWithPrefix("subprefix."); + assertEquals(prefixedProps.size(), 10); + for (int i = 0; i < 10; i++) { + assertEquals("value_bar" + i, prefixedProps.get("subname" + i)); + } // test call with no properties for a given prefix - props = conf.getPropsWithPrefix("none"); - assertNotNull(props.isEmpty()); - assertTrue(props.isEmpty()); + prefixedProps = conf.getPropsWithPrefix("none"); + assertNotNull(prefixedProps.isEmpty()); + assertTrue(prefixedProps.isEmpty()); } public static void main(String[] argv) throws Exception { --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org