HADOOP-13556. Change Configuration.getPropsWithPrefix to use getProps instead of iterator. (Larry McCay via asuresh)
This commit is contained in:
parent
8acdf5c274
commit
b6c2c9058e
|
@ -2700,11 +2700,14 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
|
||||||
* @return mapping of configuration properties with prefix stripped
|
* @return mapping of configuration properties with prefix stripped
|
||||||
*/
|
*/
|
||||||
public Map<String, String> getPropsWithPrefix(String confPrefix) {
|
public Map<String, String> getPropsWithPrefix(String confPrefix) {
|
||||||
|
Properties props = getProps();
|
||||||
|
Enumeration e = props.propertyNames();
|
||||||
Map<String, String> configMap = new HashMap<>();
|
Map<String, String> configMap = new HashMap<>();
|
||||||
for (Map.Entry<String, String> entry : this) {
|
String name = null;
|
||||||
String name = entry.getKey();
|
while (e.hasMoreElements()) {
|
||||||
|
name = (String) e.nextElement();
|
||||||
if (name.startsWith(confPrefix)) {
|
if (name.startsWith(confPrefix)) {
|
||||||
String value = this.get(name);
|
String value = props.getProperty(name);
|
||||||
name = name.substring(confPrefix.length());
|
name = name.substring(confPrefix.length());
|
||||||
configMap.put(name, value);
|
configMap.put(name, value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2242,6 +2242,21 @@ public class TestConfiguration {
|
||||||
FileUtil.fullyDelete(tmpDir);
|
FileUtil.fullyDelete(tmpDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testGettingPropertiesWithPrefix() throws Exception {
|
||||||
|
Configuration conf = new Configuration();
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
conf.set("prefix" + ".name" + i, "value");
|
||||||
|
}
|
||||||
|
conf.set("different.prefix" + ".name", "value");
|
||||||
|
Map<String, String> props = conf.getPropsWithPrefix("prefix");
|
||||||
|
assertEquals(props.size(), 10);
|
||||||
|
|
||||||
|
// test call with no properties for a given prefix
|
||||||
|
props = conf.getPropsWithPrefix("none");
|
||||||
|
assertNotNull(props.isEmpty());
|
||||||
|
assertTrue(props.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String[] argv) throws Exception {
|
public static void main(String[] argv) throws Exception {
|
||||||
junit.textui.TestRunner.main(new String[]{
|
junit.textui.TestRunner.main(new String[]{
|
||||||
TestConfiguration.class.getName()
|
TestConfiguration.class.getName()
|
||||||
|
|
Loading…
Reference in New Issue