HADOOP-8524. Allow users to get source of a Configuration parameter. (harsh)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1352689 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
126dd6adef
commit
d1138f0914
|
@ -209,6 +209,9 @@ Branch-2 ( Unreleased changes )
|
|||
|
||||
HADOOP-8368. Use CMake rather than autotools to build native code (ccccabe via tucu)
|
||||
|
||||
HADOOP-8524. Allow users to get source of a Configuration
|
||||
parameter (harsh)
|
||||
|
||||
BUG FIXES
|
||||
|
||||
HADOOP-8372. NetUtils.normalizeHostName() incorrectly handles hostname
|
||||
|
|
|
@ -1070,6 +1070,38 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the absolute path to the resource object (file, URL, etc.), for a given
|
||||
* property name.
|
||||
*
|
||||
* @param name - The property name to get the source of.
|
||||
* @return null - If the property or its source wasn't found or if the property
|
||||
* was defined in code (i.e. in a Configuration instance, not from a physical
|
||||
* resource). Otherwise, returns the absolute path of the resource that loaded
|
||||
* the property name, as a String.
|
||||
*/
|
||||
@InterfaceStability.Unstable
|
||||
public synchronized String getPropertySource(String name) {
|
||||
if (properties == null) {
|
||||
// If properties is null, it means a resource was newly added
|
||||
// but the props were cleared so as to load it upon future
|
||||
// requests. So lets force a load by asking a properties list.
|
||||
getProps();
|
||||
}
|
||||
// Return a null right away if our properties still
|
||||
// haven't loaded or the resource mapping isn't defined
|
||||
if (properties == null || updatingResource == null) {
|
||||
return null;
|
||||
} else {
|
||||
String source = updatingResource.get(name);
|
||||
if (source == null || source.equals(UNKNOWN_RESOURCE)) {
|
||||
return null;
|
||||
} else {
|
||||
return source;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
|
|
|
@ -663,6 +663,26 @@ public class TestConfiguration extends TestCase {
|
|||
conf.getPattern("test.pattern3", defaultPattern).pattern());
|
||||
}
|
||||
|
||||
public void testPropertySource() throws IOException {
|
||||
out = new BufferedWriter(new FileWriter(CONFIG));
|
||||
startConfig();
|
||||
appendProperty("test.foo", "bar");
|
||||
endConfig();
|
||||
Path fileResource = new Path(CONFIG);
|
||||
conf.addResource(fileResource);
|
||||
conf.set("fs.defaultFS", "value");
|
||||
assertEquals(
|
||||
"Resource string returned for a file-loaded property" +
|
||||
" must be a proper absolute path",
|
||||
fileResource,
|
||||
new Path(conf.getPropertySource("test.foo")));
|
||||
assertEquals("Resource string returned for a set() property must be null",
|
||||
null,
|
||||
conf.getPropertySource("fs.defaultFS"));
|
||||
assertEquals("Resource string returned for an unset property must be null",
|
||||
null, conf.getPropertySource("fs.defaultFoo"));
|
||||
}
|
||||
|
||||
public void testSocketAddress() throws IOException {
|
||||
Configuration conf = new Configuration();
|
||||
final String defaultAddr = "host:1";
|
||||
|
|
Loading…
Reference in New Issue