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

panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 3fbe164b774 Check specific properties when deserializing XML file 
(#29577)
3fbe164b774 is described below

commit 3fbe164b77443297e099b4c741d60986046f7bd9
Author: Ling Hengqian <[email protected]>
AuthorDate: Sun Dec 31 14:14:34 2023 +0800

    Check specific properties when deserializing XML file (#29577)
---
 .../sqlfederation/optimizer/it/TestCases.java               |  2 ++
 .../sqlfederation/optimizer/it/TestCasesLoader.java         |  2 +-
 .../repository/standalone/jdbc/sql/JDBCRepositorySQL.java   | 13 +++++++++++++
 .../standalone/jdbc/sql/JDBCRepositorySQLLoader.java        |  2 +-
 4 files changed, 17 insertions(+), 2 deletions(-)

diff --git 
a/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCases.java
 
b/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCases.java
index aaddf5b660c..b84e92c7806 100644
--- 
a/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCases.java
+++ 
b/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCases.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.sqlfederation.optimizer.it;
 
+import 
com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import lombok.Getter;
@@ -32,5 +33,6 @@ import java.util.LinkedList;
 public final class TestCases {
     
     @JacksonXmlProperty(localName = "test-case")
+    @JacksonXmlElementWrapper(useWrapping = false)
     private final Collection<TestCase> testCases = new LinkedList<>();
 }
diff --git 
a/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCasesLoader.java
 
b/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCasesLoader.java
index 54ea2a2a374..c8413dfc7c4 100644
--- 
a/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCasesLoader.java
+++ 
b/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCasesLoader.java
@@ -34,7 +34,7 @@ public final class TestCasesLoader {
     
     private static final TestCasesLoader INSTANCE = new TestCasesLoader();
     
-    private static final ObjectMapper XML_MAPPER = 
XmlMapper.builder().defaultUseWrapper(false).build();
+    private static final ObjectMapper XML_MAPPER = XmlMapper.builder().build();
     
     /**
      * Get singleton instance.
diff --git 
a/mode/type/standalone/repository/provider/jdbc/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/sql/JDBCRepositorySQL.java
 
b/mode/type/standalone/repository/provider/jdbc/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/sql/JDBCRepositorySQL.java
index 06a934555d4..ff13c72344b 100644
--- 
a/mode/type/standalone/repository/provider/jdbc/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/sql/JDBCRepositorySQL.java
+++ 
b/mode/type/standalone/repository/provider/jdbc/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/sql/JDBCRepositorySQL.java
@@ -17,41 +17,54 @@
 
 package org.apache.shardingsphere.mode.repository.standalone.jdbc.sql;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import lombok.Getter;
 
 /**
  * JDBC repository SQL.
+ * `required` in {@link com.fasterxml.jackson.annotation.JsonProperty} only 
provides Metadata without detecting Null values, which is actually consistent 
with the design of the JAXB API.
+ * See <a 
href="https://github.com/FasterXML/jackson-dataformat-xml/issues/625";>FasterXML/jackson-dataformat-xml#625</a>
+ *
+ * @see JsonProperty
  */
 @JacksonXmlRootElement(localName = "sql")
 @Getter
 public final class JDBCRepositorySQL {
     
+    @JsonProperty(required = true)
     @JacksonXmlProperty(isAttribute = true)
     private String type;
     
+    @JsonProperty(required = true)
     @JacksonXmlProperty(localName = "driver-class-name", isAttribute = true)
     private String driverClassName;
     
     @JacksonXmlProperty(localName = "default", isAttribute = true)
     private boolean isDefault;
     
+    @JsonProperty(required = true)
     @JacksonXmlProperty(localName = "create-table")
     private String createTableSQL;
     
+    @JsonProperty(required = true)
     @JacksonXmlProperty(localName = "select-by-key")
     private String selectByKeySQL;
     
+    @JsonProperty(required = true)
     @JacksonXmlProperty(localName = "select-by-parent")
     private String selectByParentKeySQL;
     
+    @JsonProperty(required = true)
     @JacksonXmlProperty(localName = "insert")
     private String insertSQL;
     
+    @JsonProperty(required = true)
     @JacksonXmlProperty(localName = "update")
     private String updateSQL;
     
+    @JsonProperty(required = true)
     @JacksonXmlProperty(localName = "delete")
     private String deleteSQL;
 }
diff --git 
a/mode/type/standalone/repository/provider/jdbc/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/sql/JDBCRepositorySQLLoader.java
 
b/mode/type/standalone/repository/provider/jdbc/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/sql/JDBCRepositorySQLLoader.java
index fa5f68bdbb5..870aba4b7b1 100644
--- 
a/mode/type/standalone/repository/provider/jdbc/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/sql/JDBCRepositorySQLLoader.java
+++ 
b/mode/type/standalone/repository/provider/jdbc/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/sql/JDBCRepositorySQLLoader.java
@@ -58,7 +58,7 @@ public final class JDBCRepositorySQLLoader {
     
     private static final Collection<String> JAR_URL_PROTOCOLS = new 
HashSet<>(Arrays.asList("jar", "war", "zip", "wsjar", "vfszip"));
     
-    private static final ObjectMapper XML_MAPPER = 
XmlMapper.builder().defaultUseWrapper(false).build();
+    private static final ObjectMapper XML_MAPPER = XmlMapper.builder().build();
     
     /**
      * Load JDBC repository SQL.

Reply via email to