diff --git a/paimon-common/src/main/java/org/apache/paimon/utils/HadoopUtils.java b/paimon-common/src/main/java/org/apache/paimon/utils/HadoopUtils.java index be25fce4d2d7..a37c64dbb847 100644 --- a/paimon-common/src/main/java/org/apache/paimon/utils/HadoopUtils.java +++ b/paimon-common/src/main/java/org/apache/paimon/utils/HadoopUtils.java @@ -221,13 +221,19 @@ public static void readHadoopXml(String xml, Configuration conf) { } for (int i = 0; i < propertyNodes.getLength(); i++) { Node propertyNode = propertyNodes.item(i); - if (propertyNode.getNodeType() == 1) { + if (1 == propertyNode.getNodeType()) { Element propertyElement = (Element) propertyNode; - String key = propertyElement.getElementsByTagName("name").item(0).getTextContent(); - String value = - propertyElement.getElementsByTagName("value").item(0).getTextContent(); - if (!StringUtils.isNullOrWhitespaceOnly(value)) { - conf.set(key, value); + if (null != propertyElement.getElementsByTagName("name") + && null != propertyElement.getElementsByTagName("name").item(0) + && null != propertyElement.getElementsByTagName("value") + && null != propertyElement.getElementsByTagName("value").item(0)) { + String name = + propertyElement.getElementsByTagName("name").item(0).getTextContent(); + String value = + propertyElement.getElementsByTagName("value").item(0).getTextContent(); + if (!StringUtils.isNullOrWhitespaceOnly(value)) { + conf.set(name, value); + } } } } diff --git a/paimon-common/src/test/java/org/apache/paimon/utils/HadoopUtilsITCase.java b/paimon-common/src/test/java/org/apache/paimon/utils/HadoopUtilsITCase.java index 312ea96fef15..2fa50244b6fe 100644 --- a/paimon-common/src/test/java/org/apache/paimon/utils/HadoopUtilsITCase.java +++ b/paimon-common/src/test/java/org/apache/paimon/utils/HadoopUtilsITCase.java @@ -70,4 +70,24 @@ public FileIO load(Path path) { return LocalFileIO.create(); } } + + @Test + public void testReadHadoopXml() { + String xml = + "" + + "paimon.test.key0" + + "" + + "" + + "paimon.test.key1" + + "" + + "" + + "" + + "paimon.test.key2" + + "test.value" + + "" + + ""; + Configuration conf = new Configuration(); + HadoopUtils.readHadoopXml(xml, conf); + assertThat(conf.get("paimon.test.key2")).isEqualTo("test.value"); + } }