HADOOP-6161. Add get/setEnum methods to Configuration.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@796052 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
cd86632a70
commit
3200b2ec58
|
@ -480,6 +480,8 @@ Trunk (unreleased changes)
|
|||
|
||||
HADOOP-6146. Upgrade to JetS3t version 0.7.1. (tomwhite)
|
||||
|
||||
HADOOP-6161. Add get/setEnum methods to Configuration. (cdouglas)
|
||||
|
||||
OPTIMIZATIONS
|
||||
|
||||
HADOOP-5595. NameNode does not need to run a replicator to choose a
|
||||
|
|
|
@ -595,6 +595,30 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
|
|||
setIfUnset(name, Boolean.toString(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of the <code>name</code> property to the given type. This
|
||||
* is equivalent to <code>set(<name>, value.toString())</code>.
|
||||
* @param name property name
|
||||
* @param value new value
|
||||
*/
|
||||
public <T extends Enum<T>> void setEnum(String name, T value) {
|
||||
set(name, value.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Return value matching this enumerated type.
|
||||
* @param name Property name
|
||||
* @param defaultValue Value returned if no mapping exists
|
||||
* @throws IllegalArgumentException If mapping is illegal for the type
|
||||
* provided
|
||||
*/
|
||||
public <T extends Enum<T>> T getEnum(String name, T defaultValue) {
|
||||
final String val = get(name);
|
||||
return null == val
|
||||
? defaultValue
|
||||
: Enum.valueOf(defaultValue.getDeclaringClass(), val);
|
||||
}
|
||||
|
||||
/**
|
||||
* A class that represents a set of positive integer ranges. It parses
|
||||
* strings of the form: "2-3,5,7-" where ranges are separated by comma and
|
||||
|
|
|
@ -327,6 +327,23 @@ public class TestConfiguration extends TestCase {
|
|||
assertEquals(-20, conf.getLong("test.int3", 0));
|
||||
}
|
||||
|
||||
enum Dingo { FOO, BAR };
|
||||
enum Yak { RAB, FOO };
|
||||
public void testEnum() throws IOException {
|
||||
Configuration conf = new Configuration();
|
||||
conf.setEnum("test.enum", Dingo.FOO);
|
||||
assertSame(Dingo.FOO, conf.getEnum("test.enum", Dingo.BAR));
|
||||
assertSame(Yak.FOO, conf.getEnum("test.enum", Yak.RAB));
|
||||
boolean fail = false;
|
||||
try {
|
||||
conf.setEnum("test.enum", Dingo.BAR);
|
||||
Yak y = conf.getEnum("test.enum", Yak.FOO);
|
||||
} catch (IllegalArgumentException e) {
|
||||
fail = true;
|
||||
}
|
||||
assertTrue(fail);
|
||||
}
|
||||
|
||||
public void testReload() throws IOException {
|
||||
out=new BufferedWriter(new FileWriter(CONFIG));
|
||||
startConfig();
|
||||
|
|
Loading…
Reference in New Issue