Repository: hadoop Updated Branches: refs/heads/branch-3.1 3414bf6db -> ffceb907f
HADOOP-15357. Configuration.getPropsWithPrefix no longer does variable substitution. Contributed by Jim Brennan (cherry picked from commit e81397545a273cf9a090010eb644b836e0ef8c7b) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/ffceb907 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/ffceb907 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/ffceb907 Branch: refs/heads/branch-3.1 Commit: ffceb907fe6290ae462cadaf3942c0db3b4c9525 Parents: 3414bf6 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:49:27 2018 -0500 ---------------------------------------------------------------------- .../org/apache/hadoop/conf/Configuration.java | 11 +++------ .../apache/hadoop/conf/TestConfiguration.java | 26 +++++++++++++++----- 2 files changed, 24 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/ffceb907/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 6557356..0b2196b 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 @@ -2866,15 +2866,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/ffceb907/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 f1d68cd..265e007 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 @@ -2320,19 +2320,33 @@ public class TestConfiguration { FileUtil.fullyDelete(tmpDir); } + @Test 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