diff --git a/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/java/org/apache/hadoop/lib/util/ConfigurationUtils.java b/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/java/org/apache/hadoop/lib/util/ConfigurationUtils.java
index 6611dd22fef..baecce4d856 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/java/org/apache/hadoop/lib/util/ConfigurationUtils.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/java/org/apache/hadoop/lib/util/ConfigurationUtils.java
@@ -20,17 +20,7 @@ package org.apache.hadoop.lib.util;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.conf.Configuration;
-import org.w3c.dom.DOMException;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-import org.xml.sax.SAXException;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
@@ -98,62 +88,6 @@ public abstract class ConfigurationUtils {
* @throws IOException thrown if the configuration could not be read.
*/
public static void load(Configuration conf, InputStream is) throws IOException {
- try {
- DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
- // ignore all comments inside the xml file
- docBuilderFactory.setIgnoringComments(true);
- DocumentBuilder builder = docBuilderFactory.newDocumentBuilder();
- Document doc = builder.parse(is);
- parseDocument(conf, doc);
- } catch (SAXException e) {
- throw new IOException(e);
- } catch (ParserConfigurationException e) {
- throw new IOException(e);
- }
+ conf.addResource(is);
}
-
- // Canibalized from FileSystemAccess Configuration.loadResource()
.
- private static void parseDocument(Configuration conf, Document doc) throws IOException {
- try {
- Element root = doc.getDocumentElement();
- if (!"configuration".equals(root.getTagName())) {
- throw new IOException("bad conf file: top-level element not ");
- }
- NodeList props = root.getChildNodes();
- for (int i = 0; i < props.getLength(); i++) {
- Node propNode = props.item(i);
- if (!(propNode instanceof Element)) {
- continue;
- }
- Element prop = (Element) propNode;
- if (!"property".equals(prop.getTagName())) {
- throw new IOException("bad conf file: element not ");
- }
- NodeList fields = prop.getChildNodes();
- String attr = null;
- String value = null;
- for (int j = 0; j < fields.getLength(); j++) {
- Node fieldNode = fields.item(j);
- if (!(fieldNode instanceof Element)) {
- continue;
- }
- Element field = (Element) fieldNode;
- if ("name".equals(field.getTagName()) && field.hasChildNodes()) {
- attr = ((Text) field.getFirstChild()).getData().trim();
- }
- if ("value".equals(field.getTagName()) && field.hasChildNodes()) {
- value = ((Text) field.getFirstChild()).getData();
- }
- }
-
- if (attr != null && value != null) {
- conf.set(attr, value);
- }
- }
-
- } catch (DOMException e) {
- throw new IOException(e);
- }
- }
-
}
diff --git a/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/lib/util/TestConfigurationUtils.java b/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/lib/util/TestConfigurationUtils.java
index 925edc54084..b868d0b3a2b 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/lib/util/TestConfigurationUtils.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/java/org/apache/hadoop/lib/util/TestConfigurationUtils.java
@@ -44,11 +44,13 @@ public class TestConfigurationUtils {
}
- @Test(expected = IOException.class)
- public void constructorsFail3() throws Exception {
- InputStream is = new ByteArrayInputStream("".getBytes());
+ @Test
+ public void constructors3() throws Exception {
+ InputStream is = new ByteArrayInputStream(
+ "".getBytes());
Configuration conf = new Configuration(false);
ConfigurationUtils.load(conf, is);
+ assertEquals("val1", conf.get("key1"));
}
@Test
@@ -124,4 +126,16 @@ public class TestConfigurationUtils {
assertEquals(conf.get("user.name"), "foo");
}
+ @Test
+ public void testCompactFormatProperty() throws IOException {
+ final String testfile = "test-compact-format-property.xml";
+ Configuration conf = new Configuration(false);
+ assertEquals(0, conf.size());
+ ConfigurationUtils.load(conf,
+ Thread.currentThread()
+ .getContextClassLoader().getResource(testfile).openStream());
+ assertEquals(2, conf.size());
+ assertEquals("val1", conf.get("key.1"));
+ assertEquals("val2", conf.get("key.2"));
+ }
}
diff --git a/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/resources/test-compact-format-property.xml b/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/resources/test-compact-format-property.xml
new file mode 100644
index 00000000000..f216c4c5ca8
--- /dev/null
+++ b/hadoop-hdfs-project/hadoop-hdfs-httpfs/src/test/resources/test-compact-format-property.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+