HADOOP-7542. Change Configuration XML format to 1.1 to support for serializing additional characters Contributed by Christopher Egner.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1174562 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Harsh J 2011-09-23 07:26:00 +00:00
parent 1eb7008753
commit 36d7ab3489
3 changed files with 20 additions and 2 deletions

View File

@ -26,6 +26,8 @@ Trunk (unreleased changes)
HADOOP-7621. alfredo config should be in a file not readable by users HADOOP-7621. alfredo config should be in a file not readable by users
(Alejandro Abdelnur via atm) (Alejandro Abdelnur via atm)
HADOOP-7542. Change Configuration XML format to 1.1 to support for serializing additional characters (Christopher Egner via harsh)
Release 0.23.0 - Unreleased Release 0.23.0 - Unreleased
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -1632,6 +1632,10 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
try { try {
doc = doc =
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
// Allow a broader set of control characters to appear in job confs.
// cf https://issues.apache.org/jira/browse/MAPREDUCE-109
doc.setXmlVersion( "1.1" );
} catch (ParserConfigurationException pe) { } catch (ParserConfigurationException pe) {
throw new IOException(pe); throw new IOException(pe);
} }

View File

@ -58,7 +58,7 @@ public class TestConfiguration extends TestCase {
} }
private void startConfig() throws IOException{ private void startConfig() throws IOException{
out.write("<?xml version=\"1.0\"?>\n"); out.write("<?xml version=\"1.1\"?>\n");
out.write("<configuration>\n"); out.write("<configuration>\n");
} }
@ -221,6 +221,18 @@ public class TestConfiguration extends TestCase {
assertEquals("this contains a comment", conf.get("my.comment")); assertEquals("this contains a comment", conf.get("my.comment"));
} }
public void testControlAInValue() throws IOException {
out = new BufferedWriter(new FileWriter(CONFIG));
startConfig();
appendProperty("my.char", "&#1;");
appendProperty("my.string", "some&#1;string");
endConfig();
Path fileResource = new Path(CONFIG);
conf.addResource(fileResource);
assertEquals("\u0001", conf.get("my.char"));
assertEquals("some\u0001string", conf.get("my.string"));
}
public void testTrim() throws IOException { public void testTrim() throws IOException {
out=new BufferedWriter(new FileWriter(CONFIG)); out=new BufferedWriter(new FileWriter(CONFIG));
startConfig(); startConfig();
@ -298,7 +310,7 @@ public class TestConfiguration extends TestCase {
conf.writeXml(baos); conf.writeXml(baos);
String result = baos.toString(); String result = baos.toString();
assertTrue("Result has proper header", result.startsWith( assertTrue("Result has proper header", result.startsWith(
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><configuration>")); "<?xml version=\"1.1\" encoding=\"UTF-8\" standalone=\"no\"?><configuration>"));
assertTrue("Result has proper footer", result.endsWith("</configuration>")); assertTrue("Result has proper footer", result.endsWith("</configuration>"));
} }