You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by je...@apache.org on 2020/01/10 16:53:05 UTC

[hadoop] branch branch-2.9 updated: HADOOP-16749. Configuration parsing of CDATA values are blank

This is an automated email from the ASF dual-hosted git repository.

jeagles pushed a commit to branch branch-2.9
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/branch-2.9 by this push:
     new bc53074  HADOOP-16749. Configuration parsing of CDATA values are blank
bc53074 is described below

commit bc530743b3cd3ef6876aa0a19607ebe8c0097e52
Author: Daryn Sharp <da...@apache.org>
AuthorDate: Fri Jan 10 10:48:45 2020 -0600

    HADOOP-16749. Configuration parsing of CDATA values are blank
    
    Signed-off-by: Jonathan Eagles <je...@gmail.com>
    (cherry picked from commit 23a77050e08a8d57581da43fa8d6cd11ad8eaa0e)
---
 .../java/org/apache/hadoop/conf/Configuration.java |  1 +
 .../org/apache/hadoop/conf/TestConfiguration.java  | 38 ++++++++++++++++++++++
 2 files changed, 39 insertions(+)

diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
index 9ee1baf..6601b23 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java
@@ -2889,6 +2889,7 @@ public class Configuration implements Iterable<Map.Entry<String,String>>,
           break;
 
         case XMLStreamConstants.CHARACTERS:
+        case XMLStreamConstants.CDATA:
           if (parseToken) {
             char[] text = reader.getTextCharacters();
             token.append(text, reader.getTextStart(), reader.getTextLength());
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java
index 6fcff58..398f0aa 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfiguration.java
@@ -63,6 +63,7 @@ import org.apache.log4j.Logger;
 import org.apache.log4j.spi.LoggingEvent;
 import org.hamcrest.CoreMatchers;
 import org.junit.Assert;
+import org.junit.Test;
 import org.mockito.Mockito;
 
 import static org.apache.hadoop.util.PlatformName.IBM_JAVA;
@@ -2095,4 +2096,41 @@ public class TestConfiguration extends TestCase {
       TestConfiguration.class.getName()
     });
   }
+
+  @Test
+  public void testCDATA() throws IOException {
+    String xml = new String(
+        "<configuration>" +
+          "<property>" +
+            "<name>cdata</name>" +
+            "<value><![CDATA[>cdata]]></value>" +
+          "</property>\n" +
+          "<property>" +
+            "<name>cdata-multiple</name>" +
+            "<value><![CDATA[>cdata1]]> and <![CDATA[>cdata2]]></value>" +
+          "</property>\n" +
+          "<property>" +
+            "<name>cdata-multiline</name>" +
+            "<value><![CDATA[>cdata\nmultiline<>]]></value>" +
+          "</property>\n" +
+          "<property>" +
+            "<name>cdata-whitespace</name>" +
+            "<value>  prefix <![CDATA[>cdata]]>\nsuffix  </value>" +
+          "</property>\n" +
+        "</configuration>");
+    Configuration conf = checkCDATA(xml.getBytes());
+    ByteArrayOutputStream os = new ByteArrayOutputStream();
+    conf.writeXml(os);
+    checkCDATA(os.toByteArray());
+  }
+
+  private static Configuration checkCDATA(byte[] bytes) {
+    Configuration conf = new Configuration(false);
+    conf.addResource(new ByteArrayInputStream(bytes));
+    assertEquals(">cdata", conf.get("cdata"));
+    assertEquals(">cdata1 and >cdata2", conf.get("cdata-multiple"));
+    assertEquals(">cdata\nmultiline<>", conf.get("cdata-multiline"));
+    assertEquals("  prefix >cdata\nsuffix  ", conf.get("cdata-whitespace"));
+    return conf;
+  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org