This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 f895ac98c8f Removes use of JAXB API via jackson-dataformat-xml (#29384)
f895ac98c8f is described below
commit f895ac98c8f65a0b555dc06db2a347db55b5ef62
Author: Ling Hengqian <[email protected]>
AuthorDate: Wed Dec 13 12:52:08 2023 +0800
Removes use of JAXB API via jackson-dataformat-xml (#29384)
* Removes use of JAXB API via jackson-dataformat-xml
* Removes JAXB API in sql-federation-optimizer test
---
distribution/proxy/src/main/release-docs/LICENSE | 23 ++++++-------------
.../jdbc-driver/spring-boot/_index.cn.md | 16 ++++---------
.../jdbc-driver/spring-boot/_index.en.md | 17 ++++----------
.../add_Narayana_dependency.cn.md | 5 -----
.../add_Narayana_dependency.en.md | 5 -----
.../jaxb-runtime/2.3.1/reflect-config.json | 12 ----------
infra/util/pom.xml | 5 ++++-
kernel/sql-federation/optimizer/pom.xml | 14 ++----------
.../optimizer/it/SQLStatementCompilerIT.java | 3 +--
.../sqlfederation/optimizer/it/TestCase.java | 11 +++------
.../optimizer/it/TestCaseAssertion.java | 8 ++-----
.../sqlfederation/optimizer/it/TestCases.java | 8 +++----
.../optimizer/it/TestCasesLoader.java | 14 +++++++-----
.../transaction/type/xa/provider/narayana/pom.xml | 13 -----------
.../standalone/repository/provider/jdbc/pom.xml | 12 ++--------
.../standalone/jdbc/sql/JDBCRepositorySQL.java | 26 ++++++++++------------
.../jdbc/sql/JDBCRepositorySQLLoader.java | 20 +++++++++--------
pom.xml | 2 +-
18 files changed, 65 insertions(+), 149 deletions(-)
diff --git a/distribution/proxy/src/main/release-docs/LICENSE
b/distribution/proxy/src/main/release-docs/LICENSE
index 3afa524a8fc..3ec175e8aed 100644
--- a/distribution/proxy/src/main/release-docs/LICENSE
+++ b/distribution/proxy/src/main/release-docs/LICENSE
@@ -258,11 +258,13 @@ The text of each license is the standard Apache 2.0
license.
httpcore5-h2 5.1.3: https://hc.apache.org/httpcomponents-core-5.1.x,
Apache 2.0
httpcore5 5.1.3: https://hc.apache.org/httpcomponents-core-5.1.x, Apache
2.0
j2objc-annotations 1.3 https://github.com/google/j2objc/, Apache 2.0
- jackson-annotations 2.14.0: http://github.com/FasterXML/jackson, Apache 2.0
- jackson-core 2.14.0: http://github.com/FasterXML/jackson, Apache 2.0
- jackson-databind 2.14.0: http://github.com/FasterXML/jackson, Apache 2.0
- jackson-dataformat-yaml 2.14.0: http://github.com/FasterXML/jackson,
Apache 2.0
- jackson-datatype-jsr310 2.14.0: http://github.com/FasterXML/jackson,
Apache 2.0
+ jackson-annotations 2.16.0: http://github.com/FasterXML/jackson, Apache 2.0
+ jackson-core 2.16.0: http://github.com/FasterXML/jackson, Apache 2.0
+ jackson-databind 2.16.0: http://github.com/FasterXML/jackson, Apache 2.0
+ jackson-dataformat-xml 2.16.0:
https://github.com/FasterXML/jackson-dataformat-xml, Apache 2.0
+ jackson-dataformat-yaml 2.16.0: http://github.com/FasterXML/jackson,
Apache 2.0
+ jackson-datatype-jdk8 2.16.0:
http://github.com/FasterXML/jackson-modules-java8, Apache 2.0
+ jackson-datatype-jsr310 2.16.0: http://github.com/FasterXML/jackson,
Apache 2.0
jcl-over-slf4j 1.7.36: https://github.com/qos-ch/slf4j, Apache 2.0
jetcd-api 0.7.6: https://github.com/etcd-io/jetcd, Apache 2.0
jetcd-common 0.7.6: https://github.com/etcd-io/jetcd, Apache 2.0
@@ -336,17 +338,6 @@ The text of each license is also included at
licenses/LICENSE-[project].txt.
jts-io-common 1.19.0: https://github.com/locationtech/jts, EDL 1.0
jts-core 1.19.0: https://github.com/locationtech/jts, EDL 1.0
-========================================================================
-EDL licenses
-========================================================================
-
-The following components are provided under the EDL License. See project link
for details.
-The text of each license is also included at licenses/LICENSE-[project].txt.
-
- jakarta.activation-api 1.2.2: https://github.com/jakartaee/jaf-api, EDL 1.0
- jakarta.xml.bind-api 2.3.3: https://github.com/jakartaee/jaxb-api, EDL 1.0
- jaxb-runtime 2.3.9 https://eclipse-ee4j.github.io/jaxb-ri/, EDL 1.0
-
========================================================================
EPL licenses
========================================================================
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/spring-boot/_index.cn.md
b/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/spring-boot/_index.cn.md
index 36a4ef88670..88175b1a857 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/spring-boot/_index.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/spring-boot/_index.cn.md
@@ -35,16 +35,15 @@ spring.datasource.url=jdbc:shardingsphere:classpath:xxx.yaml
直接使用该数据源;或者将 ShardingSphereDataSource 配置在 JPA、Hibernate、MyBatis 等 ORM 框架中配合使用。
-## 针对 Spring Boot OSS 3 的特殊处理
+## 针对 Spring Boot OSS 3 的处理
Spring Boot OSS 3 对 Jakarta EE 和 Java 17 进行了 “大爆炸” 升级,涉及大量复杂情况。
-对于正在使用 Java EE 8 API 及其实现的 ShardingSphere JDBC 而言,如果用户希望在 Spring Boot OSS 3
等基于 Jakarta EE 9+ API 的 Web
-Framework 上使用 ShardingSphere JDBC,则需要引入 Java EE 8 的 JAXB 的实现。
-
-这在 Maven 的 `pom.xml` 体现为如下内容。你也可以使用其他的 JAXB API 的实现。此配置同样适用于其他基于 Jakarta EE 的
Web Framework,如
+ShardingSphere 的 XA 分布式事务尚未在 Spring Boot OSS 3 上就绪,此限制同样适用于其他基于 Jakarta EE 9+
的 Web Framework,如
Quarkus 3,Micronaut Framework 4 和 Helidon 3。
+用户仅需要配置如下。
+
```xml
<project>
<dependencies>
@@ -53,17 +52,10 @@ Quarkus 3,Micronaut Framework 4 和 Helidon 3。
<artifactId>shardingsphere-jdbc-core</artifactId>
<version>${shardingsphere.version}</version>
</dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>2.3.9</version>
- </dependency>
</dependencies>
</project>
```
-此外,ShardingSphere 的 XA 分布式事务尚未在 Spring Boot OSS 3 上就绪。
-
## 针对低版本的 Spring Boot OSS 2 的特殊处理
ShardingSphere 的所有特性均可在 Spring Boot OSS 2 上使用,但低版本的 Spring Boot OSS 可能需要手动指定
SnakeYAML 的版本为 2.2 。
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/spring-boot/_index.en.md
b/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/spring-boot/_index.en.md
index cf7be453d13..f2a502fa3ac 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/spring-boot/_index.en.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/yaml-config/jdbc-driver/spring-boot/_index.en.md
@@ -35,16 +35,14 @@ The YAML configuration file in 'spring.datasource.url'
currently support in two
Use this data source directly; or configure ShardingSphereDataSource to be
used in conjunction with ORM frameworks such as JPA, Hibernate, and MyBatis.
-## Special handling for Spring Boot OSS 3
+## Handling for Spring Boot OSS 3
Spring Boot OSS 3 has made a "big bang" upgrade to Jakarta EE and Java 17,
with all complications involved.
-For ShardingSphere JDBC that is using the Java EE 8 API and its
implementation, if you want to use ShardingSphere JDBC
-on a Jakarta EE 9+ API-based web framework such as Spring Boot OSS 3, you need
to introduce a JAXB implementation of
-Java EE 8.
+ShardingSphere's XA distributed transactions are not yet ready on Spring Boot
OSS 3. This limitation also applies to other
+Jakarta EE 9+ based Web Frameworks, such as Quarkus 3, Micronaut Framework 4
and Helidon 3.
-This is reflected in Maven's `pom.xml` as follows. You can also use other JAXB
API implementations. This configuration
-also applies to other Jakarta EE-based Web Frameworks, such as Quarkus 3,
Micronaut Framework 4 and Helidon 3.
+Users only need to configure as follows.
```xml
<project>
@@ -54,17 +52,10 @@ also applies to other Jakarta EE-based Web Frameworks, such
as Quarkus 3, Micron
<artifactId>shardingsphere-jdbc-core</artifactId>
<version>${shardingsphere.version}</version>
</dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <version>2.3.9</version>
- </dependency>
</dependencies>
</project>
```
-In addition, ShardingSphere's XA distributed transactions are not yet ready on
Spring Boot OSS 3.
-
## Special handling for earlier versions of Spring Boot OSS 2
All features of ShardingSphere are available on Spring Boot OSS 2, but earlier
versions of Spring Boot OSS may require
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/startup/dependencies-download/add_Narayana_dependency.cn.md
b/docs/document/content/user-manual/shardingsphere-proxy/startup/dependencies-download/add_Narayana_dependency.cn.md
index b348f336629..24aa04948d8 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/startup/dependencies-download/add_Narayana_dependency.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/startup/dependencies-download/add_Narayana_dependency.cn.md
@@ -11,10 +11,6 @@ weight = 2
-
[arjuna-5.12.4.Final.jar](https://repo1.maven.org/maven2/org/jboss/narayana/arjunacore/arjuna/5.12.4.Final/arjuna-5.12.4.Final.jar)
-
[common-5.12.4.Final.jar](https://repo1.maven.org/maven2/org/jboss/narayana/common/5.12.4.Final/common-5.12.4.Final.jar)
--
[istack-commons-runtime-3.0.12.jar](https://repo1.maven.org/maven2/com/sun/istack/istack-commons-runtime/3.0.12/istack-commons-runtime-3.0.12.jar)
--
[jakarta.activation-api-1.2.2.jar](https://repo1.maven.org/maven2/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2.jar)
--
[jakarta.xml.bind-api-2.3.3.jar](https://repo1.maven.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3.jar)
--
[jaxb-runtime-2.3.9.jar](https://repo1.maven.org/maven2/org/glassfish/jaxb/jaxb-runtime/2.3.9/jaxb-runtime-2.3.9.jar)
-
[jboss-connector-api_1.7_spec-1.0.0.Final.jar](https://repo1.maven.org/maven2/org/jboss/spec/javax/resource/jboss-connector-api_1.7_spec/1.0.0.Final/jboss-connector-api_1.7_spec-1.0.0.Final.jar)
-
[jboss-logging-3.2.1.Final.jar](https://repo1.maven.org/maven2/org/jboss/logging/jboss-logging/3.2.1.Final/jboss-logging-3.2.1.Final.jar)
-
[jboss-transaction-api_1.2_spec-1.0.0.Alpha3.jar](https://repo1.maven.org/maven2/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.0.0.Alpha3/jboss-transaction-api_1.2_spec-1.0.0.Alpha3.jar)
@@ -22,6 +18,5 @@ weight = 2
-
[jta-5.12.4.Final.jar](https://repo1.maven.org/maven2/org/jboss/narayana/jta/jta/5.12.4.Final/jta-5.12.4.Final.jar)
-
[narayana-jts-integration-5.12.4.Final.jar](https://repo1.maven.org/maven2/org/jboss/narayana/jts/narayana-jts-integration/5.12.4.Final/narayana-jts-integration-5.12.4.Final.jar)
-
[shardingsphere-transaction-xa-narayana.jar](https://mvnrepository.com/artifact/org.apache.shardingsphere/shardingsphere-transaction-xa-narayana)
--
[txw2-2.3.9.jar](https://repo1.maven.org/maven2/org/glassfish/jaxb/txw2/2.3.9/txw2-2.3.9.jar)
请根据 `proxy` 版本下载对应 `shardingsphere-transaction-xa-narayana.jar` 文件。
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/startup/dependencies-download/add_Narayana_dependency.en.md
b/docs/document/content/user-manual/shardingsphere-proxy/startup/dependencies-download/add_Narayana_dependency.en.md
index 8f357796fa6..64aed2321f4 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/startup/dependencies-download/add_Narayana_dependency.en.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/startup/dependencies-download/add_Narayana_dependency.en.md
@@ -11,10 +11,6 @@ Adding Narayana dependencies requires downloading the
following jar files and ad
-
[arjuna-5.12.4.Final.jar](https://repo1.maven.org/maven2/org/jboss/narayana/arjunacore/arjuna/5.12.4.Final/arjuna-5.12.4.Final.jar)
-
[common-5.12.4.Final.jar](https://repo1.maven.org/maven2/org/jboss/narayana/common/5.12.4.Final/common-5.12.4.Final.jar)
--
[istack-commons-runtime-3.0.12.jar](https://repo1.maven.org/maven2/com/sun/istack/istack-commons-runtime/3.0.12/istack-commons-runtime-3.0.12.jar)
--
[jakarta.activation-api-1.2.2.jar](https://repo1.maven.org/maven2/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2.jar)
--
[jakarta.xml.bind-api-2.3.3.jar](https://repo1.maven.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3.jar)
--
[jaxb-runtime-2.3.9.jar](https://repo1.maven.org/maven2/org/glassfish/jaxb/jaxb-runtime/2.3.9/jaxb-runtime-2.3.9.jar)
-
[jboss-connector-api_1.7_spec-1.0.0.Final.jar](https://repo1.maven.org/maven2/org/jboss/spec/javax/resource/jboss-connector-api_1.7_spec/1.0.0.Final/jboss-connector-api_1.7_spec-1.0.0.Final.jar)
-
[jboss-logging-3.2.1.Final.jar](https://repo1.maven.org/maven2/org/jboss/logging/jboss-logging/3.2.1.Final/jboss-logging-3.2.1.Final.jar)
-
[jboss-transaction-api_1.2_spec-1.0.0.Alpha3.jar](https://repo1.maven.org/maven2/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.0.0.Alpha3/jboss-transaction-api_1.2_spec-1.0.0.Alpha3.jar)
@@ -22,6 +18,5 @@ Adding Narayana dependencies requires downloading the
following jar files and ad
-
[jta-5.12.4.Final.jar](https://repo1.maven.org/maven2/org/jboss/narayana/jta/jta/5.12.4.Final/jta-5.12.4.Final.jar)
-
[narayana-jts-integration-5.12.4.Final.jar](https://repo1.maven.org/maven2/org/jboss/narayana/jts/narayana-jts-integration/5.12.4.Final/narayana-jts-integration-5.12.4.Final.jar)
-
[shardingsphere-transaction-xa-narayana.jar](https://mvnrepository.com/artifact/org.apache.shardingsphere/shardingsphere-transaction-xa-narayana)
--
[txw2-2.3.9.jar](https://repo1.maven.org/maven2/org/glassfish/jaxb/txw2/2.3.9/txw2-2.3.9.jar)
Please download the corresponding `shardingsphere-transaction-xa-narayana.jar`
file according to the `proxy` version.
diff --git
a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.glassfish.jaxb/jaxb-runtime/2.3.1/reflect-config.json
b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.glassfish.jaxb/jaxb-runtime/2.3.1/reflect-config.json
deleted file mode 100644
index bf4ceb54aca..00000000000
---
a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.glassfish.jaxb/jaxb-runtime/2.3.1/reflect-config.json
+++ /dev/null
@@ -1,12 +0,0 @@
-[
-{
- "condition":{"typeReachable":"com.sun.xml.bind.v2.ContextFactory"},
- "name":"com.sun.xml.bind.v2.ContextFactory",
-
"methods":[{"name":"createContext","parameterTypes":["java.lang.Class[]","java.util.Map"]
}]
-},
-{
-
"condition":{"typeReachable":"com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty"},
- "name":"com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty",
-
"methods":[{"name":"<init>","parameterTypes":["com.sun.xml.bind.v2.runtime.JAXBContextImpl","com.sun.xml.bind.v2.model.runtime.RuntimeElementPropertyInfo"]
}]
-}
-]
diff --git a/infra/util/pom.xml b/infra/util/pom.xml
index cfa62de778d..78a15331b4c 100644
--- a/infra/util/pom.xml
+++ b/infra/util/pom.xml
@@ -44,7 +44,10 @@
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
- <version>${jackson.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
<dependency>
diff --git a/kernel/sql-federation/optimizer/pom.xml
b/kernel/sql-federation/optimizer/pom.xml
index 95be72a2f35..b7c84ddf0f6 100644
--- a/kernel/sql-federation/optimizer/pom.xml
+++ b/kernel/sql-federation/optimizer/pom.xml
@@ -95,18 +95,8 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>jakarta.xml.bind</groupId>
- <artifactId>jakarta.xml.bind-api</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>jakarta.activation</groupId>
- <artifactId>jakarta.activation-api</artifactId>
+ <groupId>com.fasterxml.jackson.dataformat</groupId>
+ <artifactId>jackson-dataformat-xml</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
diff --git
a/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/SQLStatementCompilerIT.java
b/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/SQLStatementCompilerIT.java
index d90c558c1e6..f7bcbd4aaa8 100644
---
a/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/SQLStatementCompilerIT.java
+++
b/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/SQLStatementCompilerIT.java
@@ -45,7 +45,6 @@ import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;
import org.junit.jupiter.params.provider.ArgumentsSource;
-import javax.xml.bind.JAXBException;
import java.io.IOException;
import java.sql.Types;
import java.util.Arrays;
@@ -252,7 +251,7 @@ class SQLStatementCompilerIT {
private static class TestCaseArgumentsProvider implements
ArgumentsProvider {
- @SneakyThrows({IOException.class, JAXBException.class})
+ @SneakyThrows(IOException.class)
@Override
public Stream<? extends Arguments> provideArguments(final
ExtensionContext extensionContext) {
return
TestCasesLoader.getInstance().generate().stream().map(Arguments::of);
diff --git
a/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCase.java
b/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCase.java
index f6567cb8ca6..5a8162da3b7 100644
---
a/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCase.java
+++
b/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCase.java
@@ -17,26 +17,21 @@
package org.apache.shardingsphere.sqlfederation.optimizer.it;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import lombok.Getter;
import lombok.Setter;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-
/**
* JAXB definition of test case.
*/
-@XmlAccessorType(XmlAccessType.FIELD)
@Getter
@Setter
public final class TestCase {
- @XmlAttribute(name = "sql")
+ @JacksonXmlProperty(localName = "sql", isAttribute = true)
private String sql;
- @XmlElement(name = "assertion")
+ @JacksonXmlProperty(localName = "assertion")
private TestCaseAssertion assertion;
@Override
diff --git
a/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCaseAssertion.java
b/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCaseAssertion.java
index 69ad3a1ee3d..555b534b274 100644
---
a/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCaseAssertion.java
+++
b/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/TestCaseAssertion.java
@@ -17,21 +17,17 @@
package org.apache.shardingsphere.sqlfederation.optimizer.it;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import lombok.Getter;
import lombok.Setter;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-
/**
* JAXB definition of test case assertion.
*/
-@XmlAccessorType(XmlAccessType.FIELD)
@Getter
@Setter
public final class TestCaseAssertion {
- @XmlAttribute(name = "expected-result")
+ @JacksonXmlProperty(localName = "expected-result", isAttribute = true)
private String expectedResult;
}
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 9ae8338a8c7..aaddf5b660c 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,20 +17,20 @@
package org.apache.shardingsphere.sqlfederation.optimizer.it;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Getter;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
import java.util.Collection;
import java.util.LinkedList;
/**
* JAXB definition of test cases.
*/
-@XmlRootElement(name = "test-cases")
+@JacksonXmlRootElement(localName = "test-cases")
@Getter
public final class TestCases {
- @XmlElement(name = "test-case")
+ @JacksonXmlProperty(localName = "test-case")
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 12b42b55331..54ea2a2a374 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
@@ -17,8 +17,9 @@
package org.apache.shardingsphere.sqlfederation.optimizer.it;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
@@ -33,6 +34,8 @@ public final class TestCasesLoader {
private static final TestCasesLoader INSTANCE = new TestCasesLoader();
+ private static final ObjectMapper XML_MAPPER =
XmlMapper.builder().defaultUseWrapper(false).build();
+
/**
* Get singleton instance.
*
@@ -47,9 +50,8 @@ public final class TestCasesLoader {
*
* @return collection of test cases
* @throws IOException exception for read file.
- * @throws JAXBException exception for parse xml file.
*/
- public Collection<TestCase> generate() throws IOException, JAXBException {
+ public Collection<TestCase> generate() throws IOException {
Collection<TestCase> result = new LinkedList<>();
URL queryCaseUrl =
Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResource("cases/federation-query-sql-cases.xml"));
URL deleteCaseUrl =
Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResource("cases/federation-delete-sql-cases.xml"));
@@ -58,9 +60,9 @@ public final class TestCasesLoader {
return result;
}
- private Collection<TestCase> loadTestCase(final URL url) throws
IOException, JAXBException {
+ private Collection<TestCase> loadTestCase(final URL url) throws
IOException {
try (FileReader reader = new FileReader(url.getFile())) {
- TestCases testCases = (TestCases)
JAXBContext.newInstance(TestCases.class).createUnmarshaller().unmarshal(reader);
+ TestCases testCases = XML_MAPPER.readValue(reader,
TestCases.class);
return testCases.getTestCases();
}
}
diff --git a/kernel/transaction/type/xa/provider/narayana/pom.xml
b/kernel/transaction/type/xa/provider/narayana/pom.xml
index e4c885b93ad..0a9ab30d458 100644
--- a/kernel/transaction/type/xa/provider/narayana/pom.xml
+++ b/kernel/transaction/type/xa/provider/narayana/pom.xml
@@ -57,18 +57,5 @@
<version>${jboss-logging.version}</version>
<scope>provided</scope>
</dependency>
-
- <dependency>
- <groupId>jakarta.xml.bind</groupId>
- <artifactId>jakarta.xml.bind-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- </dependency>
- <dependency>
- <groupId>jakarta.activation</groupId>
- <artifactId>jakarta.activation-api</artifactId>
- </dependency>
</dependencies>
</project>
diff --git a/mode/type/standalone/repository/provider/jdbc/pom.xml
b/mode/type/standalone/repository/provider/jdbc/pom.xml
index e3f6186772b..c1574048988 100644
--- a/mode/type/standalone/repository/provider/jdbc/pom.xml
+++ b/mode/type/standalone/repository/provider/jdbc/pom.xml
@@ -41,16 +41,8 @@
</dependency>
<dependency>
- <groupId>jakarta.xml.bind</groupId>
- <artifactId>jakarta.xml.bind-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jaxb</groupId>
- <artifactId>jaxb-runtime</artifactId>
- </dependency>
- <dependency>
- <groupId>jakarta.activation</groupId>
- <artifactId>jakarta.activation-api</artifactId>
+ <groupId>com.fasterxml.jackson.dataformat</groupId>
+ <artifactId>jackson-dataformat-xml</artifactId>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
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 d4369adf9b1..06a934555d4 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,43 +17,41 @@
package org.apache.shardingsphere.mode.repository.standalone.jdbc.sql;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Getter;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-
/**
* JDBC repository SQL.
*/
-@XmlRootElement(name = "sql")
+@JacksonXmlRootElement(localName = "sql")
@Getter
public final class JDBCRepositorySQL {
- @XmlAttribute(required = true)
+ @JacksonXmlProperty(isAttribute = true)
private String type;
- @XmlAttribute(name = "driver-class-name", required = true)
+ @JacksonXmlProperty(localName = "driver-class-name", isAttribute = true)
private String driverClassName;
- @XmlAttribute(name = "default")
+ @JacksonXmlProperty(localName = "default", isAttribute = true)
private boolean isDefault;
- @XmlElement(name = "create-table", required = true)
+ @JacksonXmlProperty(localName = "create-table")
private String createTableSQL;
- @XmlElement(name = "select-by-key", required = true)
+ @JacksonXmlProperty(localName = "select-by-key")
private String selectByKeySQL;
- @XmlElement(name = "select-by-parent", required = true)
+ @JacksonXmlProperty(localName = "select-by-parent")
private String selectByParentKeySQL;
- @XmlElement(name = "insert", required = true)
+ @JacksonXmlProperty(localName = "insert")
private String insertSQL;
- @XmlElement(name = "update", required = true)
+ @JacksonXmlProperty(localName = "update")
private String updateSQL;
- @XmlElement(name = "delete", 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 2d7ea1cb9a7..fa5f68bdbb5 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
@@ -17,12 +17,12 @@
package org.apache.shardingsphere.mode.repository.standalone.jdbc.sql;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.SneakyThrows;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
import java.io.IOException;
import java.io.InputStream;
import java.net.JarURLConnection;
@@ -58,13 +58,15 @@ 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();
+
/**
* Load JDBC repository SQL.
*
* @param type type of JDBC repository SQL
* @return loaded JDBC repository SQL
*/
- @SneakyThrows({JAXBException.class, IOException.class,
URISyntaxException.class})
+ @SneakyThrows({IOException.class, URISyntaxException.class})
public static JDBCRepositorySQL load(final String type) {
Enumeration<URL> resources =
Thread.currentThread().getContextClassLoader().getResources(ROOT_DIRECTORY);
if (null == resources) {
@@ -126,11 +128,11 @@ public final class JDBCRepositorySQLLoader {
final JDBCRepositorySQL[] result = new JDBCRepositorySQL[1];
Files.walkFileTree(Paths.get(url.toURI()), new
SimpleFileVisitor<Path>() {
- @SneakyThrows(JAXBException.class)
@Override
public FileVisitResult visitFile(final Path file, final
BasicFileAttributes attributes) throws IOException {
if (file.toString().endsWith(FILE_EXTENSION)) {
- JDBCRepositorySQL provider = (JDBCRepositorySQL)
JAXBContext.newInstance(JDBCRepositorySQL.class).createUnmarshaller().unmarshal(Files.newInputStream(file.toAbsolutePath()));
+ InputStream inputStream =
Files.newInputStream(file.toAbsolutePath());
+ JDBCRepositorySQL provider =
XML_MAPPER.readValue(inputStream, JDBCRepositorySQL.class);
if (provider.isDefault()) {
result[0] = provider;
}
@@ -149,11 +151,11 @@ public final class JDBCRepositorySQLLoader {
final JDBCRepositorySQL[] result = new JDBCRepositorySQL[1];
Files.walkFileTree(Paths.get(url.toURI()), new
SimpleFileVisitor<Path>() {
- @SneakyThrows(JAXBException.class)
@Override
public FileVisitResult visitFile(final Path file, final
BasicFileAttributes attributes) throws IOException {
if (file.toString().endsWith(FILE_EXTENSION)) {
- JDBCRepositorySQL provider = (JDBCRepositorySQL)
JAXBContext.newInstance(JDBCRepositorySQL.class).createUnmarshaller().unmarshal(Files.newInputStream(file.toFile().toPath()));
+ InputStream inputStream =
Files.newInputStream(file.toFile().toPath());
+ JDBCRepositorySQL provider =
XML_MAPPER.readValue(inputStream, JDBCRepositorySQL.class);
if (provider.isDefault()) {
result[0] = provider;
}
@@ -168,7 +170,7 @@ public final class JDBCRepositorySQLLoader {
return result[0];
}
- private static JDBCRepositorySQL loadFromJar(final URL url, final String
type) throws JAXBException, IOException {
+ private static JDBCRepositorySQL loadFromJar(final URL url, final String
type) throws IOException {
JDBCRepositorySQL result = null;
try (JarFile jar = ((JarURLConnection)
url.openConnection()).getJarFile()) {
Enumeration<JarEntry> entries = jar.entries();
@@ -178,7 +180,7 @@ public final class JDBCRepositorySQLLoader {
continue;
}
final InputStream inputStream =
Thread.currentThread().getContextClassLoader().getResourceAsStream(name);
- JDBCRepositorySQL provider = (JDBCRepositorySQL)
JAXBContext.newInstance(JDBCRepositorySQL.class).createUnmarshaller().unmarshal(inputStream);
+ JDBCRepositorySQL provider = XML_MAPPER.readValue(inputStream,
JDBCRepositorySQL.class);
if (provider.isDefault()) {
result = provider;
}
diff --git a/pom.xml b/pom.xml
index 005806bb7e7..b84dd0f003f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,7 +78,7 @@
<antlr4.version>4.10.1</antlr4.version>
<snakeyaml.version>2.2</snakeyaml.version>
<gson.version>2.10.1</gson.version>
- <jackson.version>2.14.0</jackson.version>
+ <jackson.version>2.16.0</jackson.version>
<json-path.version>2.8.0</json-path.version>
<json-smart.version>2.4.10</json-smart.version>
<accessors-smart.version>2.4.9</accessors-smart.version>