HADOOP-8749. HADOOP-8031 changed the way in which relative xincludes are handled in Configuration. (ahmed via tucu)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1381704 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
2616974383
commit
6b807d0c7b
|
@ -260,6 +260,9 @@ Release 2.0.1-alpha - UNRELEASED
|
||||||
HADOOP-8766. FileContextMainOperationsBaseTest should randomize the root
|
HADOOP-8766. FileContextMainOperationsBaseTest should randomize the root
|
||||||
dir. (Colin Patrick McCabe via atm)
|
dir. (Colin Patrick McCabe via atm)
|
||||||
|
|
||||||
|
HADOOP-8749. HADOOP-8031 changed the way in which relative xincludes are handled in
|
||||||
|
Configuration. (ahmed via tucu)
|
||||||
|
|
||||||
BREAKDOWN OF HDFS-3042 SUBTASKS
|
BREAKDOWN OF HDFS-3042 SUBTASKS
|
||||||
|
|
||||||
HADOOP-8220. ZKFailoverController doesn't handle failure to become active
|
HADOOP-8220. ZKFailoverController doesn't handle failure to become active
|
||||||
|
|
|
@ -1833,11 +1833,11 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
|
||||||
if (url == null) {
|
if (url == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return parse(builder, url.openStream());
|
return parse(builder, url.openStream(), url.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private Document parse(DocumentBuilder builder, InputStream is)
|
private Document parse(DocumentBuilder builder, InputStream is,
|
||||||
throws IOException, SAXException {
|
String systemId) throws IOException, SAXException {
|
||||||
if (!quietmode) {
|
if (!quietmode) {
|
||||||
LOG.info("parsing input stream " + is);
|
LOG.info("parsing input stream " + is);
|
||||||
}
|
}
|
||||||
|
@ -1845,7 +1845,8 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
return builder.parse(is);
|
return (systemId == null) ? builder.parse(is) : builder.parse(is,
|
||||||
|
systemId);
|
||||||
} finally {
|
} finally {
|
||||||
is.close();
|
is.close();
|
||||||
}
|
}
|
||||||
|
@ -1913,10 +1914,11 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
|
||||||
if (!quiet) {
|
if (!quiet) {
|
||||||
LOG.info("parsing File " + file);
|
LOG.info("parsing File " + file);
|
||||||
}
|
}
|
||||||
doc = parse(builder, new BufferedInputStream(new FileInputStream(file)));
|
doc = parse(builder, new BufferedInputStream(
|
||||||
|
new FileInputStream(file)), ((Path)resource).toString());
|
||||||
}
|
}
|
||||||
} else if (resource instanceof InputStream) {
|
} else if (resource instanceof InputStream) {
|
||||||
doc = parse(builder, (InputStream) resource);
|
doc = parse(builder, (InputStream) resource, null);
|
||||||
returnCachedProperties = true;
|
returnCachedProperties = true;
|
||||||
} else if (resource instanceof Properties) {
|
} else if (resource instanceof Properties) {
|
||||||
overlay(properties, (Properties)resource);
|
overlay(properties, (Properties)resource);
|
||||||
|
|
|
@ -358,6 +358,36 @@ public class TestConfiguration extends TestCase {
|
||||||
tearDown();
|
tearDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testRelativeIncludes() throws Exception {
|
||||||
|
tearDown();
|
||||||
|
String relConfig = new File("./tmp/test-config.xml").getAbsolutePath();
|
||||||
|
String relConfig2 = new File("./tmp/test-config2.xml").getAbsolutePath();
|
||||||
|
|
||||||
|
new File(new File(relConfig).getParent()).mkdirs();
|
||||||
|
out = new BufferedWriter(new FileWriter(relConfig2));
|
||||||
|
startConfig();
|
||||||
|
appendProperty("a", "b");
|
||||||
|
endConfig();
|
||||||
|
|
||||||
|
out = new BufferedWriter(new FileWriter(relConfig));
|
||||||
|
startConfig();
|
||||||
|
// Add the relative path instead of the absolute one.
|
||||||
|
addInclude(new File(relConfig2).getName());
|
||||||
|
appendProperty("c", "d");
|
||||||
|
endConfig();
|
||||||
|
|
||||||
|
// verify that the includes file contains all properties
|
||||||
|
Path fileResource = new Path(relConfig);
|
||||||
|
conf.addResource(fileResource);
|
||||||
|
assertEquals(conf.get("a"), "b");
|
||||||
|
assertEquals(conf.get("c"), "d");
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
new File(relConfig).delete();
|
||||||
|
new File(relConfig2).delete();
|
||||||
|
new File(new File(relConfig).getParent()).delete();
|
||||||
|
}
|
||||||
|
|
||||||
BufferedWriter out;
|
BufferedWriter out;
|
||||||
|
|
||||||
public void testIntegerRanges() {
|
public void testIntegerRanges() {
|
||||||
|
|
Loading…
Reference in New Issue