From 3528b03d0172f66571d8e21e9cc7acf73551db06 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 09:50:59 +0800
Subject: [PATCH 01/32] add module `spring-framework-fake-for-java8`
---
pom.xml | 1 +
spring-framework-fake-for-java8/pom.xml | 63 ++++++++++++
.../aot/generate/GenerationContext.java | 35 +++++++
.../aot/hint/ExecutableMode.java | 29 ++++++
.../aot/hint/MemberCategory.java | 49 ++++++++++
.../springframework/aot/hint/ProxyHints.java | 41 ++++++++
.../aot/hint/ReflectionHints.java | 85 +++++++++++++++++
.../aot/hint/ResourceHints.java | 72 ++++++++++++++
.../aot/hint/RuntimeHints.java | 45 +++++++++
.../aot/hint/RuntimeHintsRegistrar.java | 30 ++++++
.../aot/hint/SerializationHints.java | 47 +++++++++
.../aot/hint/TypeReference.java | 52 ++++++++++
.../aot/BeanRegistrationAotContribution.java | 39 ++++++++
.../aot/BeanRegistrationAotProcessor.java | 36 +++++++
.../factory/aot/BeanRegistrationCode.java | 31 ++++++
.../beans/factory/support/RegisteredBean.java | 95 +++++++++++++++++++
16 files changed, 750 insertions(+)
create mode 100644 spring-framework-fake-for-java8/pom.xml
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/aot/generate/GenerationContext.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ExecutableMode.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/MemberCategory.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ProxyHints.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ReflectionHints.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ResourceHints.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHints.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHintsRegistrar.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/SerializationHints.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/TypeReference.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotProcessor.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCode.java
create mode 100644 spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/support/RegisteredBean.java
diff --git a/pom.xml b/pom.xml
index 90e31432011..498b3fcd493 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,6 +53,7 @@
rm
rm-datasource
spring
+ spring-framework-fake-for-java8
tcc
test
tm
diff --git a/spring-framework-fake-for-java8/pom.xml b/spring-framework-fake-for-java8/pom.xml
new file mode 100644
index 00000000000..993c0fd2b25
--- /dev/null
+++ b/spring-framework-fake-for-java8/pom.xml
@@ -0,0 +1,63 @@
+
+
+
+
+ io.seata
+ seata-parent
+ ${revision}
+
+ 4.0.0
+
+ seata-spring-framework-fake-for-java8
+
+ ${project.artifactId} ${project.version}
+ spring-framework-fake-for-java8 for Seata built with Maven
+
+
+
+ org.springframework
+ spring-beans
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ provided
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-pmd-plugin
+
+ true
+
+
+
+
+
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/generate/GenerationContext.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/generate/GenerationContext.java
new file mode 100644
index 00000000000..eb97d861a72
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/generate/GenerationContext.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.aot.generate;
+
+import org.springframework.aot.hint.RuntimeHints;
+
+/**
+ * GenerationContext's fake
+ *
+ * @author wang.liang
+ */
+public interface GenerationContext {
+
+// GeneratedClasses getGeneratedClasses();
+//
+// GeneratedFiles getGeneratedFiles();
+
+ RuntimeHints getRuntimeHints();
+
+ GenerationContext withName(String name);
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ExecutableMode.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ExecutableMode.java
new file mode 100644
index 00000000000..5ef52463e8f
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ExecutableMode.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.aot.hint;
+
+/**
+ * ExecutableMode's fake
+ *
+ * @author wang.liang
+ */
+public enum ExecutableMode {
+
+ INTROSPECT,
+
+ INVOKE;
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/MemberCategory.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/MemberCategory.java
new file mode 100644
index 00000000000..da204fbd589
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/MemberCategory.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.aot.hint;
+
+/**
+ * MemberCategory's fake
+ *
+ * @author wang.liang
+ */
+public enum MemberCategory {
+
+ PUBLIC_FIELDS,
+
+ DECLARED_FIELDS,
+
+ INTROSPECT_PUBLIC_CONSTRUCTORS,
+
+ INTROSPECT_DECLARED_CONSTRUCTORS,
+
+ INVOKE_PUBLIC_CONSTRUCTORS,
+
+ INVOKE_DECLARED_CONSTRUCTORS,
+
+ INTROSPECT_PUBLIC_METHODS,
+
+ INTROSPECT_DECLARED_METHODS,
+
+ INVOKE_PUBLIC_METHODS,
+
+ INVOKE_DECLARED_METHODS,
+
+ PUBLIC_CLASSES,
+
+ DECLARED_CLASSES;
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ProxyHints.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ProxyHints.java
new file mode 100644
index 00000000000..235f68f9200
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ProxyHints.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.aot.hint;
+
+/**
+ * ProxyHints's fake
+ *
+ * @author wang.liang
+ */
+public class ProxyHints {
+
+// public Stream jdkProxyHints() {
+// return null;
+// }
+//
+// public ProxyHints registerJdkProxy(Consumer jdkProxyHint) {
+// return this;
+// }
+
+ public ProxyHints registerJdkProxy(TypeReference... proxiedInterfaces) {
+ return this;
+ }
+
+ public ProxyHints registerJdkProxy(Class>... proxiedInterfaces) {
+ return this;
+ }
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ReflectionHints.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ReflectionHints.java
new file mode 100644
index 00000000000..4fb53fefcc3
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ReflectionHints.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.aot.hint;
+
+import org.springframework.lang.Nullable;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+/**
+ * ReflectionHints's fake
+ *
+ * @author wang.liang
+ */
+public class ReflectionHints {
+
+// public Stream typeHints() {
+// return this.types.values().stream().map(Builder::build);
+// }
+//
+// @Nullable
+// public TypeHint getTypeHint(TypeReference type) {
+// return null;
+// }
+//
+// @Nullable
+// public TypeHint getTypeHint(Class> type) {
+// return null;
+// }
+//
+// public ReflectionHints registerType(TypeReference type, Consumer typeHint) {
+// return this;
+// }
+
+ public ReflectionHints registerType(TypeReference type, MemberCategory... memberCategories) {
+ return this;
+ }
+
+// public ReflectionHints registerType(Class> type, Consumer typeHint) {
+// return this;
+// }
+
+ public ReflectionHints registerType(Class> type, MemberCategory... memberCategories) {
+ return null;
+ }
+
+// public ReflectionHints registerTypeIfPresent(@Nullable ClassLoader classLoader, String typeName, Consumer typeHint) {
+// return this;
+// }
+
+ public ReflectionHints registerTypeIfPresent(@Nullable ClassLoader classLoader, String typeName, MemberCategory... memberCategories) {
+ return null;
+ }
+
+// public ReflectionHints registerTypes(Iterable types, Consumer typeHint) {
+// return this;
+// }
+
+ public ReflectionHints registerField(Field field) {
+ return null;
+ }
+
+ public ReflectionHints registerConstructor(Constructor> constructor, ExecutableMode mode) {
+ return null;
+ }
+
+ public ReflectionHints registerMethod(Method method, ExecutableMode mode) {
+ return null;
+ }
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ResourceHints.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ResourceHints.java
new file mode 100644
index 00000000000..8ac66667611
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ResourceHints.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.aot.hint;
+
+import org.springframework.core.io.Resource;
+
+/**
+ * ResourceHints's fake
+ *
+ * @author wang.liang
+ */
+public class ResourceHints {
+
+// public Stream resourcePatternHints() {
+// return null;
+// }
+//
+// public Stream resourceBundleHints() {
+// return null;
+// }
+//
+// public ResourceHints registerPatternIfPresent(@Nullable ClassLoader classLoader, String location,
+// Consumer resourceHint) {
+// return this;
+// }
+//
+// public ResourceHints registerPattern(@Nullable Consumer resourceHint) {
+// ResourcePatternHints.Builder builder = new ResourcePatternHints.Builder();
+// if (resourceHint != null) {
+// resourceHint.accept(builder);
+// }
+// this.resourcePatternHints.add(builder.build());
+// return this;
+// }
+
+ public ResourceHints registerPattern(String include) {
+ return this;
+ }
+
+ public void registerResource(Resource resource) {
+ }
+
+// public ResourceHints registerType(TypeReference type) {
+// return this;
+// }
+
+ public ResourceHints registerType(Class> type) {
+ return this;
+ }
+
+// public ResourceHints registerResourceBundle(String baseName, @Nullable Consumer resourceHint) {
+// return this;
+// }
+
+ public ResourceHints registerResourceBundle(String baseName) {
+ return this;
+ }
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHints.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHints.java
new file mode 100644
index 00000000000..195d2721f75
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHints.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.aot.hint;
+
+/**
+ * RuntimeHints's fake
+ *
+ * @author wang.liang
+ */
+public class RuntimeHints {
+
+ public ReflectionHints reflection() {
+ return null;
+ }
+
+ public ResourceHints resources() {
+ return null;
+ }
+
+ public SerializationHints serialization() {
+ return null;
+ }
+
+ public ProxyHints proxies() {
+ return null;
+ }
+
+ public ReflectionHints jni() {
+ return null;
+ }
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHintsRegistrar.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHintsRegistrar.java
new file mode 100644
index 00000000000..54e2bc7e036
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHintsRegistrar.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.aot.hint;
+
+import org.springframework.lang.Nullable;
+
+/**
+ * RuntimeHintsRegistrar's fake
+ *
+ * @author wang.liang
+ */
+@FunctionalInterface
+public interface RuntimeHintsRegistrar {
+
+ void registerHints(RuntimeHints hints, @Nullable ClassLoader classLoader);
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/SerializationHints.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/SerializationHints.java
new file mode 100644
index 00000000000..5d38a4dda62
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/SerializationHints.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.aot.hint;
+
+import java.io.Serializable;
+
+/**
+ * SerializationHints's fake
+ *
+ * @author wang.liang
+ */
+public class SerializationHints {
+
+// public Stream javaSerializationHints() {
+// return null;
+// }
+//
+// public SerializationHints registerType(TypeReference type, @Nullable Consumer serializationHint) {
+// return this;
+// }
+
+ public SerializationHints registerType(TypeReference type) {
+ return this;
+ }
+
+// public SerializationHints registerType(Class extends Serializable> type, @Nullable Consumer serializationHint) {
+// return this;
+// }
+
+ public SerializationHints registerType(Class extends Serializable> type) {
+ return this;
+ }
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/TypeReference.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/TypeReference.java
new file mode 100644
index 00000000000..767303a8465
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/TypeReference.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.aot.hint;
+
+import org.springframework.lang.Nullable;
+
+import java.util.List;
+
+/**
+ * TypeReference's fake
+ *
+ * @author wang.liang
+ */
+public interface TypeReference {
+
+ String getName();
+
+ String getCanonicalName();
+
+ String getPackageName();
+
+ String getSimpleName();
+
+ @Nullable
+ TypeReference getEnclosingType();
+
+ static TypeReference of(Class> type) {
+ return null;
+ }
+
+ static TypeReference of(String className) {
+ return null;
+ }
+
+ static List listOf(Class>... types) {
+ return null;
+ }
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java
new file mode 100644
index 00000000000..9279acbaff0
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.beans.factory.aot;
+
+import org.springframework.aot.generate.GenerationContext;
+
+/**
+ * BeanRegistrationAotContribution's fake
+ *
+ * @author wang.liang
+ */
+@FunctionalInterface
+public interface BeanRegistrationAotContribution {
+
+// default BeanRegistrationCodeFragments customizeBeanRegistrationCodeFragments(
+// GenerationContext generationContext, BeanRegistrationCodeFragments codeFragments) {
+// return codeFragments;
+// }
+
+ void applyTo(GenerationContext generationContext, BeanRegistrationCode beanRegistrationCode);
+
+// static BeanRegistrationAotContribution withCustomCodeFragments(UnaryOperator defaultCodeFragments) {
+// return null;
+// }
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotProcessor.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotProcessor.java
new file mode 100644
index 00000000000..91b3645a0ae
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotProcessor.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.beans.factory.aot;
+
+import org.springframework.beans.factory.support.RegisteredBean;
+import org.springframework.lang.Nullable;
+
+/**
+ * BeanRegistrationAotProcessor's fake
+ *
+ * @author wang.liang
+ */
+@FunctionalInterface
+public interface BeanRegistrationAotProcessor {
+
+ @Nullable
+ BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean);
+
+ default boolean isBeanExcludedFromAotProcessing() {
+ return true;
+ }
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCode.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCode.java
new file mode 100644
index 00000000000..530607cd9a1
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCode.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.beans.factory.aot;
+
+/**
+ * BeanRegistrationCode's fake
+ *
+ * @author wang.liang
+ */
+public interface BeanRegistrationCode {
+
+// ClassName getClassName();
+//
+// GeneratedMethods getMethods();
+//
+// void addInstancePostProcessor(MethodReference methodReference);
+
+}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/support/RegisteredBean.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/support/RegisteredBean.java
new file mode 100644
index 00000000000..b2282348b18
--- /dev/null
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/support/RegisteredBean.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.beans.factory.support;
+
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.BeanDefinitionHolder;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.core.ResolvableType;
+import org.springframework.lang.Nullable;
+
+import java.lang.reflect.Executable;
+import java.util.function.Supplier;
+
+/**
+ * RegisteredBean's fake
+ *
+ * @author wang.liang
+ */
+public final class RegisteredBean {
+
+ private RegisteredBean(ConfigurableListableBeanFactory beanFactory, Supplier beanName,
+ boolean generatedBeanName, Supplier mergedBeanDefinition,
+ @Nullable RegisteredBean parent) {
+ }
+
+
+ public static RegisteredBean of(ConfigurableListableBeanFactory beanFactory, String beanName) {
+ return null;
+ }
+
+ public static RegisteredBean ofInnerBean(RegisteredBean parent, BeanDefinitionHolder innerBean) {
+ return null;
+ }
+
+ public static RegisteredBean ofInnerBean(RegisteredBean parent, BeanDefinition innerBeanDefinition) {
+ return null;
+ }
+
+ public static RegisteredBean ofInnerBean(RegisteredBean parent,
+ @Nullable String innerBeanName, BeanDefinition innerBeanDefinition) {
+ return null;
+ }
+
+
+ public String getBeanName() {
+ return null;
+ }
+
+ public boolean isGeneratedBeanName() {
+ return true;
+ }
+
+ public ConfigurableListableBeanFactory getBeanFactory() {
+ return null;
+ }
+
+ public Class> getBeanClass() {
+ return null;
+ }
+
+ public ResolvableType getBeanType() {
+ return null;
+ }
+
+ public RootBeanDefinition getMergedBeanDefinition() {
+ return null;
+ }
+
+ public boolean isInnerBean() {
+ return true;
+ }
+
+ @Nullable
+ public RegisteredBean getParent() {
+ return null;
+ }
+
+ public Executable resolveConstructorOrFactoryMethod() {
+ return null;
+ }
+
+}
From 8041cef01d209093efca5a0b502f27d8911d28ad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 09:53:22 +0800
Subject: [PATCH 02/32] Version to `1.7.0-native-SNAPSHOT`, upgrade
`shade-plugin` to `3.2.4`
---
build/pom.xml | 4 ++--
core/src/main/java/io/seata/core/protocol/Version.java | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/build/pom.xml b/build/pom.xml
index 6a94233df26..bcb752d977c 100644
--- a/build/pom.xml
+++ b/build/pom.xml
@@ -63,7 +63,7 @@
- 1.7.0-SNAPSHOT
+ 1.7.0-native-SNAPSHOT
1.8
@@ -103,7 +103,7 @@
2.2.1
3.2.0
3.2.2
- 2.4.3
+ 3.2.4
3.0.2
3.0.0
3.2.0
diff --git a/core/src/main/java/io/seata/core/protocol/Version.java b/core/src/main/java/io/seata/core/protocol/Version.java
index 56e96f47c9e..2f371f8432a 100644
--- a/core/src/main/java/io/seata/core/protocol/Version.java
+++ b/core/src/main/java/io/seata/core/protocol/Version.java
@@ -36,7 +36,7 @@ public class Version {
/**
* The constant CURRENT.
*/
- private static final String CURRENT = "1.7.0-SNAPSHOT";
+ private static final String CURRENT = "1.7.0-native-SNAPSHOT";
private static final String VERSION_0_7_1 = "0.7.1";
private static final String VERSION_1_5_0 = "1.5.0";
private static final int MAX_VERSION_DOT = 3;
From f3e38d047abecc39b9ffe779296858433049bacd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 09:54:05 +0800
Subject: [PATCH 03/32] add some functions for native-image
---
all/pom.xml | 33 ++-
.../java/io/seata/common/aot/NativeUtils.java | 63 +++++
.../common/loader/EnhancedServiceLoader.java | 5 +-
.../io/seata/common/util/ReflectionUtil.java | 19 ++
pom.xml | 1 +
spring-aot/pom.xml | 58 ++++
spring-aot/seata-spring-aot-client/pom.xml | 51 ++++
spring-aot/seata-spring-aot-core/pom.xml | 39 +++
.../java/io/seata/spring/aot/AotUtils.java | 247 ++++++++++++++++++
.../io/seata/spring/aot/ResourceUtil.java | 40 +++
10 files changed, 544 insertions(+), 12 deletions(-)
create mode 100644 common/src/main/java/io/seata/common/aot/NativeUtils.java
create mode 100644 spring-aot/pom.xml
create mode 100644 spring-aot/seata-spring-aot-client/pom.xml
create mode 100644 spring-aot/seata-spring-aot-core/pom.xml
create mode 100644 spring-aot/seata-spring-aot-core/src/main/java/io/seata/spring/aot/AotUtils.java
create mode 100644 spring-aot/seata-spring-aot-core/src/main/java/io/seata/spring/aot/ResourceUtil.java
diff --git a/all/pom.xml b/all/pom.xml
index e0215683f9e..0bf311f1700 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -212,6 +212,16 @@
+
+ io.seata
+ seata-spring-aot-core
+ ${project.version}
+
+
+ io.seata
+ seata-spring-aot-client
+ ${project.version}
+
io.seata
seata-tcc
@@ -421,10 +431,6 @@
edas-sdk
provided
-
- net.bytebuddy
- byte-buddy
-
aopalliance
aopalliance
@@ -623,6 +629,13 @@
org.apache.maven.plugins
maven-shade-plugin
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+
package
@@ -641,17 +654,17 @@
-
+
-
+
META-INF/spring.handlers
-
+
META-INF/spring.schemas
+
+ META-INF/spring/aot.factories
+
diff --git a/common/src/main/java/io/seata/common/aot/NativeUtils.java b/common/src/main/java/io/seata/common/aot/NativeUtils.java
new file mode 100644
index 00000000000..e708d9a78a5
--- /dev/null
+++ b/common/src/main/java/io/seata/common/aot/NativeUtils.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.seata.common.aot;
+
+/**
+ * The native utils
+ *
+ * @author wang.liang
+ */
+public class NativeUtils {
+
+ /**
+ * The native-image code
+ *
+ * @see ImageInfo.java
+ */
+ private static final String NATIVE_IMAGE_CODE = System.getProperty("org.graalvm.nativeimage.imagecode");
+
+
+ public static final String SPRING_AOT_PROCESSING = "spring.aot.processing";
+
+
+ /**
+ * Whether Spring-AOT processing
+ *
+ * @return the boolean
+ */
+ public static boolean isSpringAotProcessing() {
+ return "true".equalsIgnoreCase(System.getProperty(SPRING_AOT_PROCESSING));
+ }
+
+ /**
+ * Gets the native-image code.
+ *
+ * @return the native-image code
+ */
+ public static String getNativeImageCode() {
+ return NATIVE_IMAGE_CODE;
+ }
+
+ /**
+ * Whether run in native-image
+ *
+ * @return the boolean
+ * @see org.springframework.core.NativeDetector#inNativeImage()
+ */
+ public static boolean inNativeImage() {
+ return NATIVE_IMAGE_CODE != null;
+ }
+}
diff --git a/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java b/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java
index dc56d50f76c..92c52d743d0 100644
--- a/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java
+++ b/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java
@@ -44,6 +44,9 @@
*/
public class EnhancedServiceLoader {
+ public static final String SERVICES_DIRECTORY = "META-INF/services/";
+ public static final String SEATA_DIRECTORY = "META-INF/seata/";
+
/**
* Class->InnerEnhancedServiceLoader map
*/
@@ -245,8 +248,6 @@ private static ClassLoader findClassLoader() {
private static class InnerEnhancedServiceLoader {
private static final Logger LOGGER = LoggerFactory.getLogger(InnerEnhancedServiceLoader.class);
- private static final String SERVICES_DIRECTORY = "META-INF/services/";
- private static final String SEATA_DIRECTORY = "META-INF/seata/";
private final Class type;
private final Holder>> definitionsHolder = new Holder<>();
diff --git a/common/src/main/java/io/seata/common/util/ReflectionUtil.java b/common/src/main/java/io/seata/common/util/ReflectionUtil.java
index abc77411db2..1028e7b0e56 100644
--- a/common/src/main/java/io/seata/common/util/ReflectionUtil.java
+++ b/common/src/main/java/io/seata/common/util/ReflectionUtil.java
@@ -130,6 +130,25 @@ public static Class> getWrappedClass(Class> clazz) {
return clazz;
}
+ public static boolean isJavaClass(Class> clazz) {
+ return clazz != null && clazz.getClassLoader() == null;
+ }
+
+ /**
+ * Whether the class exists
+ *
+ * @param className the class name
+ * @return the boolean
+ */
+ public static boolean existsClass(String className) {
+ try {
+ getClassByName(className);
+ return true;
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+
//endregion
diff --git a/pom.xml b/pom.xml
index 498b3fcd493..9fea762bc52 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,6 +53,7 @@
rm
rm-datasource
spring
+ spring-aot
spring-framework-fake-for-java8
tcc
test
diff --git a/spring-aot/pom.xml b/spring-aot/pom.xml
new file mode 100644
index 00000000000..b0fb14ed7cf
--- /dev/null
+++ b/spring-aot/pom.xml
@@ -0,0 +1,58 @@
+
+
+
+
+ io.seata
+ seata-parent
+ ${revision}
+
+ 4.0.0
+
+ seata-spring-aot
+ pom
+
+ ${project.artifactId} ${project.version}
+ spring-aot top parent for Seata built with Maven
+
+
+ seata-spring-aot-core
+ seata-spring-aot-client
+
+
+
+
+ org.springframework
+ spring-context
+
+
+
+ ${project.groupId}
+ seata-spring-framework-fake-for-java8
+ ${project.version}
+ provided
+
+
+
+
+
diff --git a/spring-aot/seata-spring-aot-client/pom.xml b/spring-aot/seata-spring-aot-client/pom.xml
new file mode 100644
index 00000000000..52de9fd9751
--- /dev/null
+++ b/spring-aot/seata-spring-aot-client/pom.xml
@@ -0,0 +1,51 @@
+
+
+
+
+ io.seata
+ seata-spring-aot
+ ${revision}
+
+ 4.0.0
+
+ seata-spring-aot-client
+
+ ${project.artifactId} ${project.version}
+ spring-aot-client for Seata built with Maven
+
+
+
+ ${project.groupId}
+ seata-spring-aot-core
+ ${project.version}
+
+
+ ${project.groupId}
+ seata-spring
+ ${project.version}
+
+
+
+ com.alibaba
+ druid
+ provided
+ true
+
+
+
diff --git a/spring-aot/seata-spring-aot-core/pom.xml b/spring-aot/seata-spring-aot-core/pom.xml
new file mode 100644
index 00000000000..ad270c9d829
--- /dev/null
+++ b/spring-aot/seata-spring-aot-core/pom.xml
@@ -0,0 +1,39 @@
+
+
+
+
+ io.seata
+ seata-spring-aot
+ ${revision}
+
+ 4.0.0
+
+ seata-spring-aot-core
+
+ ${project.artifactId} ${project.version}
+ spring-aot-core for Seata built with Maven
+
+
+
+ ${project.groupId}
+ seata-core
+ ${project.version}
+
+
+
diff --git a/spring-aot/seata-spring-aot-core/src/main/java/io/seata/spring/aot/AotUtils.java b/spring-aot/seata-spring-aot-core/src/main/java/io/seata/spring/aot/AotUtils.java
new file mode 100644
index 00000000000..1d25d7df30c
--- /dev/null
+++ b/spring-aot/seata-spring-aot-core/src/main/java/io/seata/spring/aot/AotUtils.java
@@ -0,0 +1,247 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.seata.spring.aot;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.function.Predicate;
+
+import io.seata.common.aot.NativeUtils;
+import io.seata.common.util.ReflectionUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.aot.hint.MemberCategory;
+import org.springframework.aot.hint.ReflectionHints;
+import org.springframework.core.SpringProperties;
+import org.springframework.core.io.Resource;
+import org.springframework.lang.NonNull;
+import org.springframework.lang.Nullable;
+
+import static io.seata.common.loader.EnhancedServiceLoader.SERVICES_DIRECTORY;
+import static org.springframework.aot.hint.MemberCategory.INVOKE_DECLARED_CONSTRUCTORS;
+import static org.springframework.aot.hint.MemberCategory.INVOKE_DECLARED_METHODS;
+
+/**
+ * The AOT utils
+ *
+ * @author wang.liang
+ */
+public class AotUtils extends NativeUtils {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(AotUtils.class);
+
+ public static final String SPRING_AOT_ENABLED = "spring.aot.enabled";
+
+
+ /**
+ * Usually used for serialization
+ */
+ public static final MemberCategory[] ALL_MEMBER_CATEGORIES = MemberCategory.values();
+
+ /**
+ * Only used for load class
+ */
+ public static final MemberCategory[] EMPTY_MEMBER_CATEGORIES = new MemberCategory[0];
+
+ public static final MemberCategory[] MEMBER_CATEGORIES_FOR_INSTANTIATE = new MemberCategory[]{INVOKE_DECLARED_CONSTRUCTORS};
+
+ public static final MemberCategory[] MEMBER_CATEGORIES_FOR_INSTANTIATE_AND_INVOKE = new MemberCategory[]{INVOKE_DECLARED_CONSTRUCTORS, INVOKE_DECLARED_METHODS};
+
+
+ /**
+ * Whether AOT enabled
+ *
+ * @return the boolean
+ */
+ public static boolean isSpringAotEnabled() {
+ return SpringProperties.getFlag(SPRING_AOT_ENABLED);
+ }
+
+
+ //region # Register type to ReflectionHints
+
+ public static void registerType(ReflectionHints reflectionHints, Class> clazz, MemberCategory... memberCategories) {
+ reflectionHints.registerType(clazz, memberCategories);
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.info("Register reflection type '{}' with member categories {}", clazz.getName(), memberCategories);
+ }
+ }
+
+ public static void registerType(ReflectionHints reflectionHints, String className, MemberCategory... memberCategories) {
+ try {
+ Class> clazz = ReflectionUtil.getClassByName(className);
+ registerType(reflectionHints, clazz, memberCategories);
+ } catch (ClassNotFoundException e) {
+ LOGGER.warn("Register reflection type failed: class not found '{}'.", className);
+ } catch (NoClassDefFoundError e) {
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.warn("Register reflection type '{}' error:", className, e);
+ } else {
+ LOGGER.warn("Register reflection type '{}' error: {}: {}", className, e.getClass().getName(), e.getMessage());
+ }
+ }
+ }
+
+ public static void registerTypes(ReflectionHints reflectionHints, MemberCategory[] memberCategories, String... classNames) {
+ for (String className : classNames) {
+ try {
+ registerType(reflectionHints, ReflectionUtil.getClassByName(className), memberCategories);
+ } catch (ClassNotFoundException e) {
+ LOGGER.warn("Register reflection type failed: class not found '{}'.", className);
+ } catch (NoClassDefFoundError e) {
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.warn("Register reflection type '{}' error:", className, e);
+ } else {
+ LOGGER.warn("Register reflection type '{}' error: {}: {}", className, e.getClass().getName(), e.getMessage());
+ }
+ }
+ }
+ }
+
+ public static void registerTypes(ReflectionHints reflectionHints, MemberCategory[] memberCategories, Class>... classes) {
+ for (Class> clazz : classes) {
+ registerType(reflectionHints, clazz, memberCategories);
+ }
+ }
+
+ /**
+ * Register the types for serialize, without knowing the type of the serializer
+ *
+ * @param reflectionHints the reflection hints
+ * @param classes the classes
+ */
+ public static void registerTypesForSerialize(ReflectionHints reflectionHints, Class>... classes) {
+ registerTypes(reflectionHints, ALL_MEMBER_CATEGORIES, classes);
+ }
+
+ public static void registerTypesForSerialize(ReflectionHints reflectionHints, String... classNames) {
+ registerTypes(reflectionHints, ALL_MEMBER_CATEGORIES, classNames);
+ }
+
+
+ //region ## Register 'classpath*:META-INF/services/*' to ReflectionHints
+
+ public static void registerServices(ReflectionHints reflectionHints, String location, @Nullable Predicate predicate, MemberCategory... memberCategories) {
+ Resource[] resources = ResourceUtil.getResources(location);
+ for (Resource resource : resources) {
+ if (predicate != null && !predicate.test(resource)) {
+ continue;
+ }
+
+ try (InputStreamReader isr = new InputStreamReader(resource.getInputStream()); BufferedReader br = new BufferedReader(isr)) {
+ br.lines().forEach(className -> {
+ AotUtils.registerTypes(reflectionHints, memberCategories, className);
+ });
+ } catch (IOException e) {
+ LOGGER.error("Register services '{}' fail:", resource.getFilename(), e);
+ }
+ }
+ }
+
+ public static void registerServices(ReflectionHints reflectionHints, String location, MemberCategory... memberCategories) {
+ registerServices(reflectionHints, location, null, memberCategories);
+ }
+
+ public static void registerServices(ReflectionHints reflectionHints, @Nullable Predicate predicate, MemberCategory... memberCategories) {
+ registerServices(reflectionHints, "classpath*:" + SERVICES_DIRECTORY + "*", predicate, memberCategories);
+ }
+
+ public static void registerServices(ReflectionHints reflectionHints, MemberCategory... memberCategories) {
+ registerServices(reflectionHints, "classpath*:" + SERVICES_DIRECTORY + "*", null, memberCategories);
+ }
+
+ //endregion ##
+
+
+ //region ## Register all of class to ReflectionHints
+
+ /**
+ * Recursively register the class and its supper classes, interfaces, fields, and the parameters of methods to the reflection hints.
+ *
+ * @param clazz the class
+ * @param registerSelf whether register self
+ * @param reflectionHints the reflection hints
+ * @param memberCategories the member categories
+ */
+ public static void registerAllOfClass(boolean registerSelf, ReflectionHints reflectionHints, Class> clazz, MemberCategory... memberCategories) {
+ registerAllOfClassInternal(new HashSet<>(), registerSelf, reflectionHints, clazz, memberCategories);
+ }
+
+ private static void registerAllOfClassInternal(@NonNull Set> cache, boolean registerSelf, ReflectionHints reflectionHints, Class> clazz, MemberCategory... memberCategories) {
+ if (clazz == null) {
+ return;
+ }
+
+ if (clazz.isPrimitive() || clazz.isEnum() || clazz.isAnnotation()) {
+ return;
+ }
+
+ if (clazz.isArray()) {
+ registerAllOfClassInternal(cache, true, reflectionHints, clazz.getComponentType(), memberCategories);
+ return;
+ }
+
+ if (ReflectionUtil.isJavaClass(clazz)) {
+ return;
+ }
+
+ // Cached to prevent endless loops
+ if (cache.contains(clazz)) {
+ return;
+ }
+ cache.add(clazz);
+
+ // register self
+ if (registerSelf) {
+ registerType(reflectionHints, clazz, memberCategories);
+ }
+
+ // register the interfaces
+ Set> interfaceClasses = ReflectionUtil.getInterfaces(clazz);
+ for (Class> interfaceClass : interfaceClasses) {
+ if (!interfaceClass.equals(clazz)) {
+ registerAllOfClassInternal(cache, true, reflectionHints, interfaceClass, memberCategories);
+ }
+ }
+
+ // register the supper class
+ registerAllOfClassInternal(cache, true, reflectionHints, clazz.getSuperclass(), memberCategories);
+
+ // register the fields
+ Field[] fields = ReflectionUtil.getAllFields(clazz);
+ for (Field field : fields) {
+ registerAllOfClassInternal(cache, true, reflectionHints, field.getType(), memberCategories);
+ }
+
+ // register the parameters of methods
+ Method[] methods = clazz.getMethods();
+ for (Method method : methods) {
+ Class>[] parameterTypes = method.getParameterTypes();
+ for (Class> parameterType : parameterTypes) {
+ registerAllOfClassInternal(cache, true, reflectionHints, parameterType, memberCategories);
+ }
+ }
+ }
+
+ //endregion ##
+
+ //endregion #
+}
diff --git a/spring-aot/seata-spring-aot-core/src/main/java/io/seata/spring/aot/ResourceUtil.java b/spring-aot/seata-spring-aot-core/src/main/java/io/seata/spring/aot/ResourceUtil.java
new file mode 100644
index 00000000000..6d21deb3c7f
--- /dev/null
+++ b/spring-aot/seata-spring-aot-core/src/main/java/io/seata/spring/aot/ResourceUtil.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.seata.spring.aot;
+
+import java.io.IOException;
+
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.core.io.support.ResourcePatternResolver;
+
+/**
+ * Resource util.
+ *
+ * @author wang.liang
+ */
+class ResourceUtil {
+
+ private static final ResourcePatternResolver RESOURCE_RESOLVER = new PathMatchingResourcePatternResolver();
+
+ public static Resource[] getResources(String location) {
+ try {
+ return RESOURCE_RESOLVER.getResources(location);
+ } catch (IOException e) {
+ return new Resource[0];
+ }
+ }
+}
\ No newline at end of file
From da2f61de9b9a8ea271b3d9628ba528446edef5d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 09:57:08 +0800
Subject: [PATCH 04/32] Change proxy `byte-buddy` to `JDK-Proxy`.
---
config/seata-config-core/pom.xml | 4 --
.../io/seata/config/ConfigurationCache.java | 13 +++----
.../SpringBootConfigurationProvider.java | 39 ++++++++++++-------
3 files changed, 32 insertions(+), 24 deletions(-)
diff --git a/config/seata-config-core/pom.xml b/config/seata-config-core/pom.xml
index 72098b12471..f167cca61e2 100644
--- a/config/seata-config-core/pom.xml
+++ b/config/seata-config-core/pom.xml
@@ -40,10 +40,6 @@
org.yaml
snakeyaml
-
- net.bytebuddy
- byte-buddy
-
diff --git a/config/seata-config-core/src/main/java/io/seata/config/ConfigurationCache.java b/config/seata-config-core/src/main/java/io/seata/config/ConfigurationCache.java
index e837ce78fae..f3e6bd6c224 100644
--- a/config/seata-config-core/src/main/java/io/seata/config/ConfigurationCache.java
+++ b/config/seata-config-core/src/main/java/io/seata/config/ConfigurationCache.java
@@ -15,17 +15,16 @@
*/
package io.seata.config;
+import java.lang.reflect.Proxy;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
+
import io.seata.common.util.CollectionUtils;
import io.seata.common.util.DurationUtil;
import io.seata.common.util.StringUtils;
-import net.bytebuddy.ByteBuddy;
-import net.bytebuddy.implementation.InvocationHandlerAdapter;
-import net.bytebuddy.matcher.ElementMatchers;
/**
* @author funkye
@@ -101,8 +100,8 @@ public void onChangeEvent(ConfigurationChangeEvent event) {
}
public Configuration proxy(Configuration originalConfiguration) throws Exception {
- return new ByteBuddy().subclass(Configuration.class).method(ElementMatchers.any())
- .intercept(InvocationHandlerAdapter.of((proxy, method, args) -> {
+ return (Configuration)Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[]{Configuration.class}
+ , (proxy, method, args) -> {
String methodName = method.getName();
if (methodName.startsWith(METHOD_PREFIX) && !methodName.equalsIgnoreCase(METHOD_LATEST_CONFIG)) {
String rawDataId = (String)args[0];
@@ -126,8 +125,8 @@ public Configuration proxy(Configuration originalConfiguration) throws Exception
return wrapper == null ? null : wrapper.convertData(type);
}
return method.invoke(originalConfiguration, args);
- })).make().load(originalConfiguration.getClass().getClassLoader()).getLoaded().getDeclaredConstructor()
- .newInstance();
+ }
+ );
}
private static class ConfigurationCacheInstance {
diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/provider/SpringBootConfigurationProvider.java b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/provider/SpringBootConfigurationProvider.java
index 5a3c4cdd07c..f999561bd39 100644
--- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/provider/SpringBootConfigurationProvider.java
+++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/java/io/seata/spring/boot/autoconfigure/provider/SpringBootConfigurationProvider.java
@@ -16,12 +16,13 @@
package io.seata.spring.boot.autoconfigure.provider;
import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
import java.time.Duration;
import java.util.Map;
import java.util.Objects;
-import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Stream;
import io.seata.common.exception.ShouldNeverHappenException;
import io.seata.common.holder.ObjectHolder;
@@ -32,8 +33,6 @@
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.cglib.proxy.Enhancer;
-import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.lang.Nullable;
@@ -60,8 +59,8 @@ public class SpringBootConfigurationProvider implements ExtConfigurationProvider
@Override
public Configuration provide(Configuration originalConfiguration) {
- return (Configuration)Enhancer.create(originalConfiguration.getClass(),
- (MethodInterceptor)(proxy, method, args, methodProxy) -> {
+ return (Configuration)Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[]{Configuration.class}
+ , (proxy, method, args) -> {
if (method.getName().startsWith(INTERCEPT_METHOD_PREFIX) && args.length > 0) {
Object result;
String rawDataId = (String)args[0];
@@ -115,7 +114,7 @@ public Configuration provide(Configuration originalConfiguration) {
});
}
- private Object getDefaultValueFromPropertyObject(String dataId) throws IllegalAccessException {
+ private Object getDefaultValueFromPropertyObject(String dataId) throws IllegalAccessException, InvocationTargetException {
String propertyPrefix = getPropertyPrefix(dataId);
String propertySuffix = getPropertySuffix(dataId);
@@ -149,17 +148,31 @@ private Object getDefaultValueFromPropertyObject(String dataId) throws IllegalAc
* @author xingfudeshi@gmail.com
*/
@Nullable
- private Object getDefaultValueFromPropertyObject(Object propertyObj, String fieldName) throws IllegalAccessException {
- Optional fieldOptional = Stream.of(propertyObj.getClass().getDeclaredFields())
- .filter(f -> f.getName().equalsIgnoreCase(fieldName)).findAny();
+ private Object getDefaultValueFromPropertyObject(Object propertyObj, String fieldName) throws IllegalAccessException, InvocationTargetException {
+ try {
+ Field field = propertyObj.getClass().getDeclaredField(fieldName);
- // Get defaultValue from the field
- if (fieldOptional.isPresent()) {
- Field field = fieldOptional.get();
if (!Map.class.isAssignableFrom(field.getType())) {
field.setAccessible(true);
return field.get(propertyObj);
}
+ } catch (NoSuchFieldException e) {
+ Method method = null;
+ try {
+ method = propertyObj.getClass().getMethod("get" + Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1));
+ } catch (NoSuchMethodException ex) {
+ try {
+ method = propertyObj.getClass().getMethod("is" + Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1));
+ } catch (NoSuchMethodException exc) {
+ LOGGER.warn("The get method not found for the field '{}#{}'.", propertyObj.getClass().getSimpleName(), fieldName);
+ }
+ }
+ if (method != null) {
+ if (!Map.class.isAssignableFrom(method.getReturnType())) {
+ method.setAccessible(true);
+ return method.invoke(propertyObj);
+ }
+ }
}
return null;
From f1f8374c35881ba6312e05c70fdd7351618e3868 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 10:00:32 +0800
Subject: [PATCH 05/32] Add support for `spring-boot-maven-plugin:process-aot`.
---
.../annotation/GlobalTransactionScanner.java | 25 +++++++++++++++++++
.../SeataAutoDataSourceProxyCreator.java | 12 ++++++++-
2 files changed, 36 insertions(+), 1 deletion(-)
diff --git a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java b/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java
index ef455ea6e54..435b660b267 100644
--- a/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java
+++ b/spring/src/main/java/io/seata/spring/annotation/GlobalTransactionScanner.java
@@ -25,7 +25,9 @@
import javax.annotation.Nullable;
+import io.seata.common.aot.NativeUtils;
import io.seata.common.util.CollectionUtils;
+import io.seata.common.util.ReflectionUtil;
import io.seata.common.util.StringUtils;
import io.seata.config.ConfigurationCache;
import io.seata.config.ConfigurationChangeEvent;
@@ -36,6 +38,7 @@
import io.seata.core.rpc.netty.RmNettyRemotingClient;
import io.seata.core.rpc.netty.TmNettyRemotingClient;
import io.seata.rm.RMClient;
+import io.seata.rm.tcc.api.LocalTCC;
import io.seata.spring.annotation.scannercheckers.PackageScannerChecker;
import io.seata.spring.tcc.TccActionInterceptor;
import io.seata.spring.util.OrderUtil;
@@ -492,9 +495,31 @@ private MethodDesc makeMethodDesc(GlobalTransactional anno, Method method) {
return new MethodDesc(anno, method);
}
+ public static boolean isTccAutoProxy(Class> beanClass) {
+ Set> interfaceClasses = ReflectionUtil.getInterfaces(beanClass);
+ for (Class> interClass : interfaceClasses) {
+ if (interClass.isAnnotationPresent(LocalTCC.class)) {
+ return true;
+ }
+ }
+ return beanClass.isAnnotationPresent(LocalTCC.class);
+ }
+
@Override
protected Object[] getAdvicesAndAdvisorsForBean(Class beanClass, String beanName, TargetSource customTargetSource)
throws BeansException {
+ if (NativeUtils.isSpringAotProcessing()) {
+ if (isTccAutoProxy(beanClass)) {
+ LOGGER.info("Proxy TCC service: {}", beanName);
+ return new Object[]{new TccActionInterceptor()};
+ } else if (existsAnnotation(beanClass)) {
+ LOGGER.info("Proxy TM bean: {}", beanName);
+ return new Object[]{new GlobalTransactionalInterceptor(failureHandlerHook)};
+ } else {
+ return DO_NOT_PROXY;
+ }
+ }
+
return new Object[]{interceptor};
}
diff --git a/spring/src/main/java/io/seata/spring/annotation/datasource/SeataAutoDataSourceProxyCreator.java b/spring/src/main/java/io/seata/spring/annotation/datasource/SeataAutoDataSourceProxyCreator.java
index b5fdb69d4d3..39b4fbe163a 100644
--- a/spring/src/main/java/io/seata/spring/annotation/datasource/SeataAutoDataSourceProxyCreator.java
+++ b/spring/src/main/java/io/seata/spring/annotation/datasource/SeataAutoDataSourceProxyCreator.java
@@ -15,11 +15,12 @@
*/
package io.seata.spring.annotation.datasource;
-import javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
+import javax.sql.DataSource;
+import io.seata.common.aot.NativeUtils;
import io.seata.core.model.BranchType;
import io.seata.rm.datasource.DataSourceProxy;
import io.seata.rm.datasource.SeataDataSourceProxy;
@@ -59,6 +60,15 @@ private Object[] buildAdvisors(String dataSourceProxyMode) {
@Override
protected Object[] getAdvicesAndAdvisorsForBean(Class> beanClass, String beanName, TargetSource customTargetSource) {
+ if (NativeUtils.isSpringAotProcessing()) {
+ if (!DataSource.class.isAssignableFrom(beanClass)) {
+ return DO_NOT_PROXY;
+ }
+
+ if (this.shouldSkip(beanClass, beanName)) {
+ return DO_NOT_PROXY;
+ }
+ }
return advisors;
}
From f9f1248f0146cea7e0919ca4c3b686c94f7815c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 10:05:07 +0800
Subject: [PATCH 06/32] Add reachability-metadata for `/META-INF/services/*`
and `/META-INF/seata/*`.
---
.../seata-common/resource-config.json | 42 ++++++++++++
.../spring/aot/SeataServicesRuntimeHints.java | 68 +++++++++++++++++++
.../resources/META-INF/spring/aot.factories | 2 +
3 files changed, 112 insertions(+)
create mode 100644 common/src/main/resources/META-INF/native-image/io.seata/seata-common/resource-config.json
create mode 100644 spring-aot/seata-spring-aot-core/src/main/java/io/seata/spring/aot/SeataServicesRuntimeHints.java
create mode 100644 spring-aot/seata-spring-aot-core/src/main/resources/META-INF/spring/aot.factories
diff --git a/common/src/main/resources/META-INF/native-image/io.seata/seata-common/resource-config.json b/common/src/main/resources/META-INF/native-image/io.seata/seata-common/resource-config.json
new file mode 100644
index 00000000000..57b859160c0
--- /dev/null
+++ b/common/src/main/resources/META-INF/native-image/io.seata/seata-common/resource-config.json
@@ -0,0 +1,42 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.\\E.*"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.\\E.*"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
+ },
+ "pattern": "\\QMETA-INF\/seata\/com.alibaba.dubbo.rpc.Filter\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
+ },
+ "pattern": "\\QMETA-INF\/seata\/com.alipay.sofa.rpc.filter.Filter\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
+ },
+ "pattern": "\\QMETA-INF\/seata\/com.taobao.hsf.invocation.filter.RPCFilter\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
+ },
+ "pattern": "\\QMETA-INF\/seata\/com.weibo.api.motan.filter.Filter\\E"
+ }
+ ]
+ }
+}
diff --git a/spring-aot/seata-spring-aot-core/src/main/java/io/seata/spring/aot/SeataServicesRuntimeHints.java b/spring-aot/seata-spring-aot-core/src/main/java/io/seata/spring/aot/SeataServicesRuntimeHints.java
new file mode 100644
index 00000000000..1d4412790db
--- /dev/null
+++ b/spring-aot/seata-spring-aot-core/src/main/java/io/seata/spring/aot/SeataServicesRuntimeHints.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.seata.spring.aot;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.function.Predicate;
+
+import org.springframework.aot.hint.RuntimeHints;
+import org.springframework.aot.hint.RuntimeHintsRegistrar;
+import org.springframework.core.io.Resource;
+import org.springframework.lang.Nullable;
+
+import static io.seata.common.loader.EnhancedServiceLoader.SEATA_DIRECTORY;
+import static io.seata.common.loader.EnhancedServiceLoader.SERVICES_DIRECTORY;
+
+/**
+ * The seata /META-INF/services runtime hints registrar
+ *
+ * @author wang.liang
+ */
+class SeataServicesRuntimeHints implements RuntimeHintsRegistrar {
+
+ private static final Set OTHER_SERVICES = new HashSet<>();
+
+ static {
+ OTHER_SERVICES.add("com.alibaba.dubbo.rpc.Filter");
+ OTHER_SERVICES.add("com.alipay.sofa.rpc.filter.Filter");
+ OTHER_SERVICES.add("com.taobao.hsf.invocation.filter.RPCFilter");
+ OTHER_SERVICES.add("com.weibo.api.motan.filter.Filter");
+ }
+
+
+ @Override
+ public void registerHints(RuntimeHints hints, @Nullable ClassLoader classLoader) {
+ // Register the services to reflection hints in 'META-INF/services', only the services required by seata.
+ Predicate predicate = this::isSeataServicesResource;
+ AotUtils.registerServices(hints.reflection(), "classpath*:" + SERVICES_DIRECTORY + "*", predicate, AotUtils.MEMBER_CATEGORIES_FOR_INSTANTIATE);
+ AotUtils.registerServices(hints.reflection(), "classpath*:" + SEATA_DIRECTORY + "*", predicate, AotUtils.MEMBER_CATEGORIES_FOR_INSTANTIATE);
+ }
+
+
+ private boolean isSeataServicesResource(Resource resource) {
+ if (resource.getFilename() == null) {
+ return false;
+ }
+
+ if (resource.getFilename().startsWith("io.seata.")) {
+ return true;
+ }
+
+ return OTHER_SERVICES.contains(resource.getFilename());
+ }
+
+}
diff --git a/spring-aot/seata-spring-aot-core/src/main/resources/META-INF/spring/aot.factories b/spring-aot/seata-spring-aot-core/src/main/resources/META-INF/spring/aot.factories
new file mode 100644
index 00000000000..e6519b7d2de
--- /dev/null
+++ b/spring-aot/seata-spring-aot-core/src/main/resources/META-INF/spring/aot.factories
@@ -0,0 +1,2 @@
+org.springframework.aot.hint.RuntimeHintsRegistrar= \
+io.seata.spring.aot.SeataServicesRuntimeHints
From eb065bf53acb29a4ca0de18238b26dc17a8f5427 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 10:05:42 +0800
Subject: [PATCH 07/32] Add reachability-metadata for `Configuration`
---
.../io.seata/seata-config-core/proxy-config.json | 10 ++++++++++
.../seata-spring-autoconfigure-core/proxy-config.json | 10 ++++++++++
2 files changed, 20 insertions(+)
create mode 100644 config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/proxy-config.json
create mode 100644 seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/proxy-config.json
diff --git a/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/proxy-config.json b/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/proxy-config.json
new file mode 100644
index 00000000000..e46ef9962f0
--- /dev/null
+++ b/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/proxy-config.json
@@ -0,0 +1,10 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationCache"
+ },
+ "interfaces": [
+ "io.seata.config.Configuration"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/proxy-config.json b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/proxy-config.json
new file mode 100644
index 00000000000..86bc6c1305f
--- /dev/null
+++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/proxy-config.json
@@ -0,0 +1,10 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.spring.boot.autoconfigure.provider.SpringBootConfigurationProvider"
+ },
+ "interfaces": [
+ "io.seata.config.Configuration"
+ ]
+ }
+]
\ No newline at end of file
From aec3f80045f3bfae954e3c2b94a78b1356231457 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 10:05:53 +0800
Subject: [PATCH 08/32] Add reachability-metadata for `seata-core`
---
.../io.seata/seata-core/reflect-config.json | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)
create mode 100644 core/src/main/resources/META-INF/native-image/io.seata/seata-core/reflect-config.json
diff --git a/core/src/main/resources/META-INF/native-image/io.seata/seata-core/reflect-config.json b/core/src/main/resources/META-INF/native-image/io.seata/seata-core/reflect-config.json
new file mode 100644
index 00000000000..9185b3e528a
--- /dev/null
+++ b/core/src/main/resources/META-INF/native-image/io.seata/seata-core/reflect-config.json
@@ -0,0 +1,20 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.constants.DubboConstants"
+ },
+ "name": "org.apache.dubbo.rpc.RpcContext"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.SerializerServiceLoader"
+ },
+ "name": "io.seata.serializer.protobuf.ProtobufSerializer",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
From cd7ea26397af2e3c64188635d9c2411b8be20d03 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 10:08:37 +0800
Subject: [PATCH 09/32] Add reachability-metadata for AT mode
---
.../seata-rm-datasource/reflect-config.json | 142 ++++++++++++++++++
.../io.seata/seata-spring/reflect-config.json | 9 ++
.../seata-sqlparser-antlr/reflect-config.json | 14 ++
.../seata-sqlparser-druid/reflect-config.json | 26 ++++
.../resource-config.json | 12 ++
5 files changed, 203 insertions(+)
create mode 100644 rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
create mode 100644 spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/reflect-config.json
create mode 100644 sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/reflect-config.json
create mode 100644 sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/reflect-config.json
create mode 100644 sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/resource-config.json
diff --git a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
new file mode 100644
index 00000000000..709117426e1
--- /dev/null
+++ b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
@@ -0,0 +1,142 @@
+[
+ {
+ "condition": {
+ "typeReachable": "com.mysql.jdbc.Driver"
+ },
+ "name": "io.seata.rm.datasource.exec.mysql.MySQLInsertExecutor",
+ "allDeclaredConstructors": true
+ },
+ {
+ "condition": {
+ "typeReachable": "com.mysql.cj.jdbc.Driver"
+ },
+ "name": "io.seata.rm.datasource.exec.mysql.MySQLInsertExecutor",
+ "allDeclaredConstructors": true
+ },
+ {
+ "condition": {
+ "typeReachable": "oracle.jdbc.driver.OracleDriver"
+ },
+ "name": "io.seata.rm.datasource.exec.oracle.OracleInsertExecutor",
+ "allDeclaredConstructors": true
+ },
+ {
+ "condition": {
+ "typeReachable": "org.postgresql.Driver"
+ },
+ "name": "io.seata.rm.datasource.exec.postgresql.PostgresqlInsertExecutor",
+ "allDeclaredConstructors": true
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.BranchUndoLog"
+ },
+ "name": "io.seata.rm.datasource.undo.BranchUndoLog",
+ "allPublicClasses": true,
+ "allPublicConstructors": true,
+ "allDeclaredConstructors": true,
+ "allDeclaredMethods": true,
+ "allDeclaredFields": true,
+ "allPublicMethods": true,
+ "allPublicFields": true,
+ "allDeclaredClasses": true
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.sql.struct.Row"
+ },
+ "name": "io.seata.rm.datasource.sql.struct.Row",
+ "allPublicClasses": true,
+ "allPublicConstructors": true,
+ "allDeclaredConstructors": true,
+ "allDeclaredMethods": true,
+ "allDeclaredFields": true,
+ "allPublicMethods": true,
+ "allPublicFields": true,
+ "allDeclaredClasses": true
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.sql.struct.TableRecords"
+ },
+ "name": "io.seata.rm.datasource.sql.struct.TableRecords",
+ "allPublicClasses": true,
+ "allPublicConstructors": true,
+ "allDeclaredConstructors": true,
+ "allDeclaredMethods": true,
+ "allDeclaredFields": true,
+ "allPublicMethods": true,
+ "allPublicFields": true,
+ "allDeclaredClasses": true
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.sql.struct.Field"
+ },
+ "name": "io.seata.rm.datasource.sql.struct.Field",
+ "allPublicClasses": true,
+ "allPublicConstructors": true,
+ "allDeclaredConstructors": true,
+ "allDeclaredMethods": true,
+ "allDeclaredFields": true,
+ "allPublicMethods": true,
+ "allPublicFields": true,
+ "allDeclaredClasses": true
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.sql.struct.TableRecords$EmptyTableRecords"
+ },
+ "name": "io.seata.rm.datasource.sql.struct.TableRecords$EmptyTableRecords",
+ "allPublicClasses": true,
+ "allPublicConstructors": true,
+ "allDeclaredConstructors": true,
+ "allDeclaredMethods": true,
+ "allDeclaredFields": true,
+ "allPublicMethods": true,
+ "allPublicFields": true,
+ "allDeclaredClasses": true
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.SQLUndoLog"
+ },
+ "name": "io.seata.rm.datasource.undo.SQLUndoLog",
+ "allPublicClasses": true,
+ "allPublicConstructors": true,
+ "allDeclaredConstructors": true,
+ "allDeclaredMethods": true,
+ "allDeclaredFields": true,
+ "allPublicMethods": true,
+ "allPublicFields": true,
+ "allDeclaredClasses": true
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.sql.struct.cache.AbstractTableMetaCache"
+ },
+ "name": "com.github.benmanes.caffeine.cache.SIMSW",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "com.github.benmanes.caffeine.cache.Caffeine",
+ "com.github.benmanes.caffeine.cache.AsyncCacheLoader",
+ "boolean"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.sql.struct.cache.AbstractTableMetaCache"
+ },
+ "name": "com.github.benmanes.caffeine.cache.PDWMS",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/reflect-config.json b/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/reflect-config.json
new file mode 100644
index 00000000000..09ba99e2b15
--- /dev/null
+++ b/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/reflect-config.json
@@ -0,0 +1,9 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.spring.annotation.datasource.SeataAutoDataSourceProxyAdvice"
+ },
+ "name": "javax.sql.DataSource",
+ "allDeclaredMethods": true
+ }
+]
\ No newline at end of file
diff --git a/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/reflect-config.json b/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/reflect-config.json
new file mode 100644
index 00000000000..39bf63ea631
--- /dev/null
+++ b/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.antlr.AntlrDelegatingSQLRecognizerFactory"
+ },
+ "name": "io.seata.sqlparser.antlr.mysql.AntlrMySQLRecognizerFactory",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/reflect-config.json b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/reflect-config.json
new file mode 100644
index 00000000000..0c9e1a52d37
--- /dev/null
+++ b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/reflect-config.json
@@ -0,0 +1,26 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.DruidDelegatingDbTypeParser"
+ },
+ "name": "io.seata.sqlparser.druid.DruidDbTypeParserImpl",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.DruidDelegatingSQLRecognizerFactory"
+ },
+ "name": "io.seata.sqlparser.druid.DruidSQLRecognizerFactoryImpl",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/resource-config.json b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/resource-config.json
new file mode 100644
index 00000000000..2b4710d907e
--- /dev/null
+++ b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/resource-config.json
@@ -0,0 +1,12 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.DefaultDruidLoader"
+ },
+ "pattern": "\\Qlib\/sqlparser\/druid.jar\\E"
+ }
+ ]
+ }
+}
From d21be4c3ef4616422a3706001aff7eadf917ade3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 10:09:53 +0800
Subject: [PATCH 10/32] Add reachability-metadata for XA mode
---
.../seata-rm-datasource/native-image.properties | 1 +
.../seata-rm-datasource/reflect-config.json | 14 ++++++++++++++
2 files changed, 15 insertions(+)
create mode 100644 rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties
diff --git a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties
new file mode 100644
index 00000000000..a974103baf7
--- /dev/null
+++ b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties
@@ -0,0 +1 @@
+Args = -H:+AddAllCharsets
\ No newline at end of file
diff --git a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
index 709117426e1..865350bc861 100644
--- a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
+++ b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
@@ -138,5 +138,19 @@
"parameterTypes": []
}
]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.util.XAUtils"
+ },
+ "name": "io.seata.rm.datasource.util.XAUtils",
+ "allPublicMethods": true
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.druid.util.MySqlUtils"
+ },
+ "name": "com.alibaba.druid.util.MySqlUtils",
+ "allPublicMethods": true
}
]
\ No newline at end of file
From 7382e0fb7d17ebb99b9cf79a695b16fa114a9dc3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 10:10:06 +0800
Subject: [PATCH 11/32] Add reachability-metadata for TCC mode
---
...aLocalTCCBeanRegistrationAotProcessor.java | 89 +++++++++++++++++++
.../resources/META-INF/spring/aot.factories | 2 +
.../io.seata/seata-spring/reflect-config.json | 12 +++
.../io.seata/seata-tcc/reflect-config.json | 26 ++++++
4 files changed, 129 insertions(+)
create mode 100644 spring-aot/seata-spring-aot-client/src/main/java/io/seata/spring/aot/SeataLocalTCCBeanRegistrationAotProcessor.java
create mode 100644 spring-aot/seata-spring-aot-client/src/main/resources/META-INF/spring/aot.factories
create mode 100644 tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/reflect-config.json
diff --git a/spring-aot/seata-spring-aot-client/src/main/java/io/seata/spring/aot/SeataLocalTCCBeanRegistrationAotProcessor.java b/spring-aot/seata-spring-aot-client/src/main/java/io/seata/spring/aot/SeataLocalTCCBeanRegistrationAotProcessor.java
new file mode 100644
index 00000000000..c6e266d2bf2
--- /dev/null
+++ b/spring-aot/seata-spring-aot-client/src/main/java/io/seata/spring/aot/SeataLocalTCCBeanRegistrationAotProcessor.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.seata.spring.aot;
+
+import java.util.Set;
+
+import io.seata.common.util.ReflectionUtil;
+import io.seata.rm.tcc.api.LocalTCC;
+import io.seata.spring.annotation.GlobalTransactionScanner;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.aot.generate.GenerationContext;
+import org.springframework.aot.hint.ReflectionHints;
+import org.springframework.beans.factory.aot.BeanRegistrationAotContribution;
+import org.springframework.beans.factory.aot.BeanRegistrationAotProcessor;
+import org.springframework.beans.factory.aot.BeanRegistrationCode;
+import org.springframework.beans.factory.support.RegisteredBean;
+
+import static io.seata.spring.aot.AotUtils.ALL_MEMBER_CATEGORIES;
+import static org.springframework.aot.hint.MemberCategory.INVOKE_PUBLIC_METHODS;
+
+/**
+ * The seata-client bean registration AOT processor
+ *
+ * @author wang.liang
+ */
+class SeataLocalTCCBeanRegistrationAotProcessor implements BeanRegistrationAotProcessor {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(SeataLocalTCCBeanRegistrationAotProcessor.class);
+
+ @Override
+ public BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean) {
+ Class> beanClass = registeredBean.getBeanClass();
+ if (GlobalTransactionScanner.isTccAutoProxy(beanClass)) {
+ return new SeataTccBeanRegistrationAotContribution(beanClass);
+ }
+ return null;
+ }
+
+
+ /**
+ * The seata tcc bean registration AOT contribution
+ */
+ private static class SeataTccBeanRegistrationAotContribution implements BeanRegistrationAotContribution {
+
+ private final Class> beanClass;
+
+
+ public SeataTccBeanRegistrationAotContribution(Class> beanClass) {
+ this.beanClass = beanClass;
+ }
+
+
+ @Override
+ public void applyTo(GenerationContext generationContext, BeanRegistrationCode beanRegistrationCode) {
+ ReflectionHints reflectionHints = generationContext.getRuntimeHints().reflection();
+
+ // register the bean class
+ registerClassAndItsInterfacesIfLocalTcc(reflectionHints, beanClass);
+
+ // register the interface classes
+ Set> interfaceClasses = ReflectionUtil.getInterfaces(beanClass);
+ for (Class> interClass : interfaceClasses) {
+ registerClassAndItsInterfacesIfLocalTcc(reflectionHints, interClass);
+ }
+ }
+
+ private void registerClassAndItsInterfacesIfLocalTcc(ReflectionHints reflectionHints, Class> clazz) {
+ if (clazz.isAnnotationPresent(LocalTCC.class)) {
+ reflectionHints.registerType(clazz, INVOKE_PUBLIC_METHODS);
+ LOGGER.info("TCC: Register reflection type '{}' (annotated `@LocalTCC`) with member categories {}", clazz.getName(), INVOKE_PUBLIC_METHODS);
+ AotUtils.registerAllOfClass(false, reflectionHints, clazz, ALL_MEMBER_CATEGORIES);
+ }
+ }
+ }
+}
diff --git a/spring-aot/seata-spring-aot-client/src/main/resources/META-INF/spring/aot.factories b/spring-aot/seata-spring-aot-client/src/main/resources/META-INF/spring/aot.factories
new file mode 100644
index 00000000000..c58d25f79b4
--- /dev/null
+++ b/spring-aot/seata-spring-aot-client/src/main/resources/META-INF/spring/aot.factories
@@ -0,0 +1,2 @@
+org.springframework.beans.factory.aot.BeanRegistrationAotProcessor=\
+io.seata.spring.aot.SeataLocalTCCBeanRegistrationAotProcessor
\ No newline at end of file
diff --git a/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/reflect-config.json b/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/reflect-config.json
index 09ba99e2b15..40ea8e2f635 100644
--- a/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/reflect-config.json
+++ b/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/reflect-config.json
@@ -5,5 +5,17 @@
},
"name": "javax.sql.DataSource",
"allDeclaredMethods": true
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.spring.tcc.TccAnnotationProcessor"
+ },
+ "name": "org.apache.dubbo.config.annotation.Reference"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.spring.tcc.TccAnnotationProcessor"
+ },
+ "name": "com.alipay.sofa.runtime.api.annotation.SofaReference"
}
]
\ No newline at end of file
diff --git a/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/reflect-config.json b/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/reflect-config.json
new file mode 100644
index 00000000000..d73276ba5f6
--- /dev/null
+++ b/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/reflect-config.json
@@ -0,0 +1,26 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.tcc.remoting.parser.HSFRemotingParser"
+ },
+ "name": "com.taobao.hsf.app.api.util.HSFApiConsumerBean"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.tcc.remoting.parser.HSFRemotingParser"
+ },
+ "name": "com.taobao.hsf.app.api.util.HSFApiProviderBean"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.tcc.remoting.parser.HSFRemotingParser"
+ },
+ "name": "com.taobao.hsf.app.spring.util.HSFSpringConsumerBean"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.tcc.remoting.parser.HSFRemotingParser"
+ },
+ "name": "com.taobao.hsf.app.spring.util.HSFSpringProviderBean"
+ }
+]
\ No newline at end of file
From 4a4f16214b363ea2c529f36a1c096efc35b4e357 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 10:39:36 +0800
Subject: [PATCH 12/32] Revert "Add reachability-metadata for XA mode"
This reverts commit d21be4c3ef4616422a3706001aff7eadf917ade3.
---
.../seata-rm-datasource/native-image.properties | 1 -
.../seata-rm-datasource/reflect-config.json | 14 --------------
2 files changed, 15 deletions(-)
delete mode 100644 rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties
diff --git a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties
deleted file mode 100644
index a974103baf7..00000000000
--- a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties
+++ /dev/null
@@ -1 +0,0 @@
-Args = -H:+AddAllCharsets
\ No newline at end of file
diff --git a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
index 865350bc861..709117426e1 100644
--- a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
+++ b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
@@ -138,19 +138,5 @@
"parameterTypes": []
}
]
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.util.XAUtils"
- },
- "name": "io.seata.rm.datasource.util.XAUtils",
- "allPublicMethods": true
- },
- {
- "condition": {
- "typeReachable": "com.alibaba.druid.util.MySqlUtils"
- },
- "name": "com.alibaba.druid.util.MySqlUtils",
- "allPublicMethods": true
}
]
\ No newline at end of file
From 154f9e9ffe04cc9b1d90770590b35bb06210993f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 11:30:02 +0800
Subject: [PATCH 13/32] Add reachability-metadata for XA mode
---
.../native-image.properties | 1 +
.../seata-rm-datasource/reflect-config.json | 212 ++++++++++++++++++
2 files changed, 213 insertions(+)
create mode 100644 rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties
diff --git a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties
new file mode 100644
index 00000000000..a974103baf7
--- /dev/null
+++ b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties
@@ -0,0 +1 @@
+Args = -H:+AddAllCharsets
\ No newline at end of file
diff --git a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
index 709117426e1..d5b35f9296b 100644
--- a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
+++ b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
@@ -138,5 +138,217 @@
"parameterTypes": []
}
]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.util.XAUtils"
+ },
+ "name": "oracle.jdbc.driver.T4CXAConnection",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "java.sql.Connection"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.util.XAUtils"
+ },
+ "name": "oracle.jdbc.xa.client.OracleXAConnection",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "java.sql.Connection"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.druid.util.MySqlUtils"
+ },
+ "name": "com.mysql.jdbc.Util",
+ "methods": [
+ {
+ "name": "isJdbc4",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.druid.util.MySqlUtils"
+ },
+ "name": "com.mysql.jdbc.Connection",
+ "methods": [
+ {
+ "name": "getPinGlobalTxToPhysicalConnection",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.druid.util.MySqlUtils"
+ },
+ "name": "com.mysql.jdbc.jdbc2.optional.SuspendableXAConnection",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "com.mysql.jdbc.Connection"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.druid.util.MySqlUtils"
+ },
+ "name": "com.mysql.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "com.mysql.jdbc.Connection"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.druid.util.MySqlUtils"
+ },
+ "name": "com.mysql.jdbc.jdbc2.optional.MysqlXAConnection",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "com.mysql.jdbc.Connection",
+ "boolean"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.druid.util.MySqlUtils"
+ },
+ "name": "com.mysql.cj.jdbc.JdbcConnection",
+ "methods": [
+ {
+ "name": "getPropertySet",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.mysql.cj.jdbc.JdbcConnection"
+ },
+ "name": "com.mysql.cj.conf.PropertySet",
+ "methods": [
+ {
+ "name": "getBooleanReadableProperty",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.mysql.cj.jdbc.JdbcConnection"
+ },
+ "name": "com.mysql.cj.conf.ReadableProperty",
+ "methods": [
+ {
+ "name": "getValue",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.mysql.cj.jdbc.JdbcConnection"
+ },
+ "name": "com.mysql.cj.conf.RuntimeProperty",
+ "methods": [
+ {
+ "name": "getValue",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.druid.util.MySqlUtils"
+ },
+ "name": "com.mysql.cj.api.jdbc.JdbcConnection",
+ "methods": [
+ {
+ "name": "getPropertySet",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.mysql.cj.api.jdbc.JdbcConnection"
+ },
+ "name": "com.mysql.cj.api.conf.PropertySet",
+ "methods": [
+ {
+ "name": "getBooleanReadableProperty",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.mysql.cj.api.jdbc.JdbcConnection"
+ },
+ "name": "com.mysql.cj.api.conf.ReadableProperty",
+ "methods": [
+ {
+ "name": "getValue",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.druid.util.MySqlUtils"
+ },
+ "name": "com.mysql.cj.jdbc.SuspendableXAConnection",
+ "methods": [
+ {
+ "name": "getInstance",
+ "parameterTypes": [
+ "com.mysql.cj.jdbc.JdbcConnection"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.druid.util.MySqlUtils"
+ },
+ "name": "com.mysql.cj.jdbc.MysqlXAConnection",
+ "methods": [
+ {
+ "name": "getInstance",
+ "parameterTypes": [
+ "com.mysql.cj.jdbc.JdbcConnection",
+ "boolean"
+ ]
+ }
+ ]
}
]
\ No newline at end of file
From 49359390b520634f678fce89c253b14ae00ed4ce Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 15:37:31 +0800
Subject: [PATCH 14/32] Add reachability-metadata for `/META-INF/services/*`
and `/META-INF/seata/*`, and remove the `aot.factories` of the
`SeataServicesRuntimeHints`.
---
.../io.seata/seata-common/reflect-config.json | 14 +
.../seata-common/resource-config.json | 12 +
.../services/io.seata.common.loader.Hello | 2 +-
.../seata-compressor-7z/reflect-config.json | 14 +
.../seata-compressor-7z/resource-config.json | 18 ++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../seata-compressor-gzip/reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../seata-compressor-lz4/reflect-config.json | 14 +
.../seata-compressor-lz4/resource-config.json | 18 ++
.../seata-compressor-zip/reflect-config.json | 14 +
.../seata-compressor-zip/resource-config.json | 18 ++
.../seata-compressor-zstd/reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../seata-config-apollo/reflect-config.json | 14 +
.../seata-config-apollo/resource-config.json | 18 ++
.../seata-config-consul/reflect-config.json | 14 +
.../seata-config-consul/resource-config.json | 18 ++
.../seata-config-core/proxy-config.json | 54 ++++
.../seata-config-core/resource-config.json | 30 ++
.../services/io.seata.config.file.FileConfig | 2 +-
.../seata-config-custom/reflect-config.json | 14 +
.../seata-config-custom/resource-config.json | 18 ++
.../seata-config-custom/reflect-config.json | 14 +
.../seata-config-etcd3/reflect-config.json | 14 +
.../seata-config-etcd3/resource-config.json | 18 ++
.../seata-config-nacos/reflect-config.json | 14 +
.../seata-config-nacos/resource-config.json | 18 ++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../seata-config-zk/reflect-config.json | 14 +
.../seata-config-zk/resource-config.json | 18 ++
.../io.seata/seata-core/reflect-config.json | 168 ++++++++++
.../io.seata/seata-core/resource-config.json | 66 ++++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../reflect-config.json | 74 +++++
.../resource-config.json | 30 ++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../reflect-config.json | 14 +
.../seata-discovery-etcd3/reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../seata-discovery-nacos/reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../seata-discovery-redis/reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../seata-discovery-sofa/reflect-config.json | 14 +
.../seata-discovery-sofa/resource-config.json | 18 ++
.../seata-discovery-zk/reflect-config.json | 14 +
.../seata-discovery-zk/resource-config.json | 18 ++
.../seata-dubbo-alibaba/reflect-config.json | 14 +
.../seata-dubbo-alibaba/resource-config.json | 18 ++
.../io.seata/seata-hsf/reflect-config.json | 14 +
.../io.seata/seata-hsf/resource-config.json | 18 ++
.../io.seata/seata-motan/reflect-config.json | 14 +
.../io.seata/seata-motan/resource-config.json | 18 ++
.../seata-sofa-rpc/reflect-config.json | 26 ++
.../seata-sofa-rpc/resource-config.json | 18 ++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../seata-rm-datasource/reflect-config.json | 300 ++++++++++++++++++
.../seata-rm-datasource/resource-config.json | 102 ++++++
.../seata-rm-datasource/reflect-config.json | 74 +++++
.../seata-rm-datasource/resource-config.json | 54 ++++
.../io.seata.sqlparser.SQLRecognizerFactory | 18 +-
...sqlparser.druid.SQLOperateRecognizerHolder | 16 -
.../io.seata.sqlparser.util.DbTypeParser | 18 +-
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../seata-saga-engine/reflect-config.json | 50 +++
.../seata-saga-engine/resource-config.json | 30 ++
.../seata-saga-rm/reflect-config.json | 26 ++
.../seata-saga-rm/resource-config.json | 30 ++
.../io.seata.core.model.ResourceManager | 2 +-
.../seata-saga-statelang/reflect-config.json | 26 ++
.../seata-saga-statelang/resource-config.json | 18 ++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../seata-serializer-fst/reflect-config.json | 14 +
.../seata-serializer-fst/resource-config.json | 18 ++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../seata-serializer-kryo/reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../reflect-config.json | 14 +
.../resource-config.json | 18 ++
.../resources/META-INF/spring/aot.factories | 2 -
.../io.seata/seata-spring/reflect-config.json | 36 +++
.../seata-spring/resource-config.json | 18 ++
.../seata-sqlparser-antlr/reflect-config.json | 24 ++
.../resource-config.json | 30 ++
.../io.seata.sqlparser.SQLRecognizerFactory | 2 +-
...sqlparser.antlr.SQLOperateRecognizerHolder | 2 +-
.../seata-sqlparser-druid/reflect-config.json | 60 ++++
.../resource-config.json | 36 +++
.../io.seata.sqlparser.SQLRecognizerFactory | 2 +-
.../io.seata.sqlparser.util.DbTypeParser | 2 +-
.../io.seata/seata-tcc/reflect-config.json | 72 +++++
.../io.seata/seata-tcc/resource-config.json | 42 +++
.../io.seata.core.model.ResourceManager | 2 +-
.../io.seata/seata-test/reflect-config.json | 50 +++
.../io.seata/seata-test/resource-config.json | 24 ++
.../io.seata/seata-tm/reflect-config.json | 14 +
.../io.seata/seata-tm/resource-config.json | 18 ++
116 files changed, 2784 insertions(+), 60 deletions(-)
create mode 100644 common/src/test/resources/META-INF/native-image/io.seata/seata-common/reflect-config.json
create mode 100644 common/src/test/resources/META-INF/native-image/io.seata/seata-common/resource-config.json
create mode 100644 compressor/seata-compressor-7z/src/main/resources/META-INF/native-image/io.seata/seata-compressor-7z/reflect-config.json
create mode 100644 compressor/seata-compressor-7z/src/main/resources/META-INF/native-image/io.seata/seata-compressor-7z/resource-config.json
create mode 100644 compressor/seata-compressor-bzip2/src/main/resources/META-INF/native-image/io.seata/seata-compressor-bzip2/reflect-config.json
create mode 100644 compressor/seata-compressor-bzip2/src/main/resources/META-INF/native-image/io.seata/seata-compressor-bzip2/resource-config.json
create mode 100644 compressor/seata-compressor-deflater/src/main/resources/META-INF/native-image/io.seata/seata-compressor-deflater/reflect-config.json
create mode 100644 compressor/seata-compressor-deflater/src/main/resources/META-INF/native-image/io.seata/seata-compressor-deflater/resource-config.json
create mode 100644 compressor/seata-compressor-gzip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-gzip/reflect-config.json
create mode 100644 compressor/seata-compressor-gzip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-gzip/resource-config.json
create mode 100644 compressor/seata-compressor-lz4/src/main/resources/META-INF/native-image/io.seata/seata-compressor-lz4/reflect-config.json
create mode 100644 compressor/seata-compressor-lz4/src/main/resources/META-INF/native-image/io.seata/seata-compressor-lz4/resource-config.json
create mode 100644 compressor/seata-compressor-zip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zip/reflect-config.json
create mode 100644 compressor/seata-compressor-zip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zip/resource-config.json
create mode 100644 compressor/seata-compressor-zstd/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zstd/reflect-config.json
create mode 100644 compressor/seata-compressor-zstd/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zstd/resource-config.json
create mode 100644 config/seata-config-apollo/src/main/resources/META-INF/native-image/io.seata/seata-config-apollo/reflect-config.json
create mode 100644 config/seata-config-apollo/src/main/resources/META-INF/native-image/io.seata/seata-config-apollo/resource-config.json
create mode 100644 config/seata-config-consul/src/main/resources/META-INF/native-image/io.seata/seata-config-consul/reflect-config.json
create mode 100644 config/seata-config-consul/src/main/resources/META-INF/native-image/io.seata/seata-config-consul/resource-config.json
create mode 100644 config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/resource-config.json
create mode 100644 config/seata-config-custom/src/main/resources/META-INF/native-image/io.seata/seata-config-custom/reflect-config.json
create mode 100644 config/seata-config-custom/src/main/resources/META-INF/native-image/io.seata/seata-config-custom/resource-config.json
create mode 100644 config/seata-config-custom/src/test/resources/META-INF/native-image/io.seata/seata-config-custom/reflect-config.json
create mode 100644 config/seata-config-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-config-etcd3/reflect-config.json
create mode 100644 config/seata-config-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-config-etcd3/resource-config.json
create mode 100644 config/seata-config-nacos/src/main/resources/META-INF/native-image/io.seata/seata-config-nacos/reflect-config.json
create mode 100644 config/seata-config-nacos/src/main/resources/META-INF/native-image/io.seata/seata-config-nacos/resource-config.json
create mode 100644 config/seata-config-spring-cloud/src/main/resources/META-INF/native-image/io.seata/seata-config-spring-cloud/reflect-config.json
create mode 100644 config/seata-config-spring-cloud/src/main/resources/META-INF/native-image/io.seata/seata-config-spring-cloud/resource-config.json
create mode 100644 config/seata-config-zk/src/main/resources/META-INF/native-image/io.seata/seata-config-zk/reflect-config.json
create mode 100644 config/seata-config-zk/src/main/resources/META-INF/native-image/io.seata/seata-config-zk/resource-config.json
create mode 100644 core/src/main/resources/META-INF/native-image/io.seata/seata-core/resource-config.json
create mode 100644 discovery/seata-discovery-consul/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/reflect-config.json
create mode 100644 discovery/seata-discovery-consul/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json
create mode 100644 discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/reflect-config.json
create mode 100644 discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json
create mode 100644 discovery/seata-discovery-custom/src/main/resources/META-INF/native-image/io.seata/seata-discovery-custom/reflect-config.json
create mode 100644 discovery/seata-discovery-custom/src/main/resources/META-INF/native-image/io.seata/seata-discovery-custom/resource-config.json
create mode 100644 discovery/seata-discovery-custom/src/test/resources/META-INF/native-image/io.seata/seata-discovery-custom/reflect-config.json
create mode 100644 discovery/seata-discovery-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-discovery-etcd3/reflect-config.json
create mode 100644 discovery/seata-discovery-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-discovery-etcd3/resource-config.json
create mode 100644 discovery/seata-discovery-eureka/src/main/resources/META-INF/native-image/io.seata/seata-discovery-eureka/reflect-config.json
create mode 100644 discovery/seata-discovery-eureka/src/main/resources/META-INF/native-image/io.seata/seata-discovery-eureka/resource-config.json
create mode 100644 discovery/seata-discovery-nacos/src/main/resources/META-INF/native-image/io.seata/seata-discovery-nacos/reflect-config.json
create mode 100644 discovery/seata-discovery-nacos/src/main/resources/META-INF/native-image/io.seata/seata-discovery-nacos/resource-config.json
create mode 100644 discovery/seata-discovery-redis/src/main/resources/META-INF/native-image/io.seata/seata-discovery-redis/reflect-config.json
create mode 100644 discovery/seata-discovery-redis/src/main/resources/META-INF/native-image/io.seata/seata-discovery-redis/resource-config.json
create mode 100644 discovery/seata-discovery-sofa/src/main/resources/META-INF/native-image/io.seata/seata-discovery-sofa/reflect-config.json
create mode 100644 discovery/seata-discovery-sofa/src/main/resources/META-INF/native-image/io.seata/seata-discovery-sofa/resource-config.json
create mode 100644 discovery/seata-discovery-zk/src/main/resources/META-INF/native-image/io.seata/seata-discovery-zk/reflect-config.json
create mode 100644 discovery/seata-discovery-zk/src/main/resources/META-INF/native-image/io.seata/seata-discovery-zk/resource-config.json
create mode 100644 integration/dubbo-alibaba/src/main/resources/META-INF/native-image/io.seata/seata-dubbo-alibaba/reflect-config.json
create mode 100644 integration/dubbo-alibaba/src/main/resources/META-INF/native-image/io.seata/seata-dubbo-alibaba/resource-config.json
create mode 100644 integration/hsf/src/main/resources/META-INF/native-image/io.seata/seata-hsf/reflect-config.json
create mode 100644 integration/hsf/src/main/resources/META-INF/native-image/io.seata/seata-hsf/resource-config.json
create mode 100644 integration/motan/src/main/resources/META-INF/native-image/io.seata/seata-motan/reflect-config.json
create mode 100644 integration/motan/src/main/resources/META-INF/native-image/io.seata/seata-motan/resource-config.json
create mode 100644 integration/sofa-rpc/src/main/resources/META-INF/native-image/io.seata/seata-sofa-rpc/reflect-config.json
create mode 100644 integration/sofa-rpc/src/main/resources/META-INF/native-image/io.seata/seata-sofa-rpc/resource-config.json
create mode 100644 metrics/seata-metrics-exporter-prometheus/src/main/resources/META-INF/native-image/io.seata/seata-metrics-exporter-prometheus/reflect-config.json
create mode 100644 metrics/seata-metrics-exporter-prometheus/src/main/resources/META-INF/native-image/io.seata/seata-metrics-exporter-prometheus/resource-config.json
create mode 100644 metrics/seata-metrics-registry-compact/src/main/resources/META-INF/native-image/io.seata/seata-metrics-registry-compact/reflect-config.json
create mode 100644 metrics/seata-metrics-registry-compact/src/main/resources/META-INF/native-image/io.seata/seata-metrics-registry-compact/resource-config.json
create mode 100644 rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json
create mode 100644 rm-datasource/src/test/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
create mode 100644 rm-datasource/src/test/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json
create mode 100644 saga/seata-saga-engine-store/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine-store/reflect-config.json
create mode 100644 saga/seata-saga-engine-store/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine-store/resource-config.json
create mode 100644 saga/seata-saga-engine/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine/reflect-config.json
create mode 100644 saga/seata-saga-engine/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine/resource-config.json
create mode 100644 saga/seata-saga-rm/src/main/resources/META-INF/native-image/io.seata/seata-saga-rm/reflect-config.json
create mode 100644 saga/seata-saga-rm/src/main/resources/META-INF/native-image/io.seata/seata-saga-rm/resource-config.json
create mode 100644 saga/seata-saga-statelang/src/main/resources/META-INF/native-image/io.seata/seata-saga-statelang/reflect-config.json
create mode 100644 saga/seata-saga-statelang/src/main/resources/META-INF/native-image/io.seata/seata-saga-statelang/resource-config.json
create mode 100644 seata-plugin/seata-jackson-parser-oracle/src/main/resources/META-INF/native-image/io.seata/seata-jackson-parser-oracle/reflect-config.json
create mode 100644 seata-plugin/seata-jackson-parser-oracle/src/main/resources/META-INF/native-image/io.seata/seata-jackson-parser-oracle/resource-config.json
create mode 100644 seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/reflect-config.json
create mode 100644 seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/resource-config.json
create mode 100644 serializer/seata-serializer-fst/src/main/resources/META-INF/native-image/io.seata/seata-serializer-fst/reflect-config.json
create mode 100644 serializer/seata-serializer-fst/src/main/resources/META-INF/native-image/io.seata/seata-serializer-fst/resource-config.json
create mode 100644 serializer/seata-serializer-hessian/src/main/resources/META-INF/native-image/io.seata/seata-serializer-hessian/reflect-config.json
create mode 100644 serializer/seata-serializer-hessian/src/main/resources/META-INF/native-image/io.seata/seata-serializer-hessian/resource-config.json
create mode 100644 serializer/seata-serializer-kryo/src/main/resources/META-INF/native-image/io.seata/seata-serializer-kryo/reflect-config.json
create mode 100644 serializer/seata-serializer-kryo/src/main/resources/META-INF/native-image/io.seata/seata-serializer-kryo/resource-config.json
create mode 100644 serializer/seata-serializer-protobuf/src/main/resources/META-INF/native-image/io.seata/seata-serializer-protobuf/reflect-config.json
create mode 100644 serializer/seata-serializer-protobuf/src/main/resources/META-INF/native-image/io.seata/seata-serializer-protobuf/resource-config.json
create mode 100644 serializer/seata-serializer-seata/src/main/resources/META-INF/native-image/io.seata/seata-serializer-seata/reflect-config.json
create mode 100644 serializer/seata-serializer-seata/src/main/resources/META-INF/native-image/io.seata/seata-serializer-seata/resource-config.json
delete mode 100644 spring-aot/seata-spring-aot-core/src/main/resources/META-INF/spring/aot.factories
create mode 100644 spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/resource-config.json
create mode 100644 sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/resource-config.json
create mode 100644 tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/resource-config.json
create mode 100644 test/src/test/resources/META-INF/native-image/io.seata/seata-test/reflect-config.json
create mode 100644 test/src/test/resources/META-INF/native-image/io.seata/seata-test/resource-config.json
create mode 100644 tm/src/main/resources/META-INF/native-image/io.seata/seata-tm/reflect-config.json
create mode 100644 tm/src/main/resources/META-INF/native-image/io.seata/seata-tm/resource-config.json
diff --git a/common/src/test/resources/META-INF/native-image/io.seata/seata-common/reflect-config.json b/common/src/test/resources/META-INF/native-image/io.seata/seata-common/reflect-config.json
new file mode 100644
index 00000000000..1dc92069584
--- /dev/null
+++ b/common/src/test/resources/META-INF/native-image/io.seata/seata-common/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.Hello"
+ },
+ "name": "io.seata.common.loader.ChineseHello",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/common/src/test/resources/META-INF/native-image/io.seata/seata-common/resource-config.json b/common/src/test/resources/META-INF/native-image/io.seata/seata-common/resource-config.json
new file mode 100644
index 00000000000..8839d21ac7e
--- /dev/null
+++ b/common/src/test/resources/META-INF/native-image/io.seata/seata-common/resource-config.json
@@ -0,0 +1,12 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.Hello"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.common.loader.Hello\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/common/src/test/resources/META-INF/services/io.seata.common.loader.Hello b/common/src/test/resources/META-INF/services/io.seata.common.loader.Hello
index 1b772803d97..afeb748dab9 100644
--- a/common/src/test/resources/META-INF/services/io.seata.common.loader.Hello
+++ b/common/src/test/resources/META-INF/services/io.seata.common.loader.Hello
@@ -1 +1 @@
-io.seata.common.loader.ChineseHello
\ No newline at end of file
+io.seata.common.loader.ChineseHello
diff --git a/compressor/seata-compressor-7z/src/main/resources/META-INF/native-image/io.seata/seata-compressor-7z/reflect-config.json b/compressor/seata-compressor-7z/src/main/resources/META-INF/native-image/io.seata/seata-compressor-7z/reflect-config.json
new file mode 100644
index 00000000000..b49e8b6c200
--- /dev/null
+++ b/compressor/seata-compressor-7z/src/main/resources/META-INF/native-image/io.seata/seata-compressor-7z/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "name": "io.seata.compressor.sevenz.SevenZCompressor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/compressor/seata-compressor-7z/src/main/resources/META-INF/native-image/io.seata/seata-compressor-7z/resource-config.json b/compressor/seata-compressor-7z/src/main/resources/META-INF/native-image/io.seata/seata-compressor-7z/resource-config.json
new file mode 100644
index 00000000000..3ccff14d418
--- /dev/null
+++ b/compressor/seata-compressor-7z/src/main/resources/META-INF/native-image/io.seata/seata-compressor-7z/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/compressor/seata-compressor-bzip2/src/main/resources/META-INF/native-image/io.seata/seata-compressor-bzip2/reflect-config.json b/compressor/seata-compressor-bzip2/src/main/resources/META-INF/native-image/io.seata/seata-compressor-bzip2/reflect-config.json
new file mode 100644
index 00000000000..f5db3d44afc
--- /dev/null
+++ b/compressor/seata-compressor-bzip2/src/main/resources/META-INF/native-image/io.seata/seata-compressor-bzip2/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "name": "io.seata.compressor.bzip2.BZip2Compressor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/compressor/seata-compressor-bzip2/src/main/resources/META-INF/native-image/io.seata/seata-compressor-bzip2/resource-config.json b/compressor/seata-compressor-bzip2/src/main/resources/META-INF/native-image/io.seata/seata-compressor-bzip2/resource-config.json
new file mode 100644
index 00000000000..3ccff14d418
--- /dev/null
+++ b/compressor/seata-compressor-bzip2/src/main/resources/META-INF/native-image/io.seata/seata-compressor-bzip2/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/compressor/seata-compressor-deflater/src/main/resources/META-INF/native-image/io.seata/seata-compressor-deflater/reflect-config.json b/compressor/seata-compressor-deflater/src/main/resources/META-INF/native-image/io.seata/seata-compressor-deflater/reflect-config.json
new file mode 100644
index 00000000000..82cae57a764
--- /dev/null
+++ b/compressor/seata-compressor-deflater/src/main/resources/META-INF/native-image/io.seata/seata-compressor-deflater/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "name": "io.seata.compressor.deflater.DeflaterCompressor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/compressor/seata-compressor-deflater/src/main/resources/META-INF/native-image/io.seata/seata-compressor-deflater/resource-config.json b/compressor/seata-compressor-deflater/src/main/resources/META-INF/native-image/io.seata/seata-compressor-deflater/resource-config.json
new file mode 100644
index 00000000000..3ccff14d418
--- /dev/null
+++ b/compressor/seata-compressor-deflater/src/main/resources/META-INF/native-image/io.seata/seata-compressor-deflater/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/compressor/seata-compressor-gzip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-gzip/reflect-config.json b/compressor/seata-compressor-gzip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-gzip/reflect-config.json
new file mode 100644
index 00000000000..e86eb53c3e1
--- /dev/null
+++ b/compressor/seata-compressor-gzip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-gzip/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "name": "io.seata.compressor.gzip.GzipCompressor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/compressor/seata-compressor-gzip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-gzip/resource-config.json b/compressor/seata-compressor-gzip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-gzip/resource-config.json
new file mode 100644
index 00000000000..3ccff14d418
--- /dev/null
+++ b/compressor/seata-compressor-gzip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-gzip/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/compressor/seata-compressor-lz4/src/main/resources/META-INF/native-image/io.seata/seata-compressor-lz4/reflect-config.json b/compressor/seata-compressor-lz4/src/main/resources/META-INF/native-image/io.seata/seata-compressor-lz4/reflect-config.json
new file mode 100644
index 00000000000..a0303f660de
--- /dev/null
+++ b/compressor/seata-compressor-lz4/src/main/resources/META-INF/native-image/io.seata/seata-compressor-lz4/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "name": "io.seata.compressor.lz4.Lz4Compressor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/compressor/seata-compressor-lz4/src/main/resources/META-INF/native-image/io.seata/seata-compressor-lz4/resource-config.json b/compressor/seata-compressor-lz4/src/main/resources/META-INF/native-image/io.seata/seata-compressor-lz4/resource-config.json
new file mode 100644
index 00000000000..3ccff14d418
--- /dev/null
+++ b/compressor/seata-compressor-lz4/src/main/resources/META-INF/native-image/io.seata/seata-compressor-lz4/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/compressor/seata-compressor-zip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zip/reflect-config.json b/compressor/seata-compressor-zip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zip/reflect-config.json
new file mode 100644
index 00000000000..8e052e52bdb
--- /dev/null
+++ b/compressor/seata-compressor-zip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zip/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "name": "io.seata.compressor.zip.ZipCompressor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/compressor/seata-compressor-zip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zip/resource-config.json b/compressor/seata-compressor-zip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zip/resource-config.json
new file mode 100644
index 00000000000..3ccff14d418
--- /dev/null
+++ b/compressor/seata-compressor-zip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zip/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/compressor/seata-compressor-zstd/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zstd/reflect-config.json b/compressor/seata-compressor-zstd/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zstd/reflect-config.json
new file mode 100644
index 00000000000..772676f43fe
--- /dev/null
+++ b/compressor/seata-compressor-zstd/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zstd/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "name": "io.seata.compressor.zstd.ZstdCompressor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/compressor/seata-compressor-zstd/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zstd/resource-config.json b/compressor/seata-compressor-zstd/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zstd/resource-config.json
new file mode 100644
index 00000000000..3ccff14d418
--- /dev/null
+++ b/compressor/seata-compressor-zstd/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zstd/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.compressor.Compressor"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/config/seata-config-apollo/src/main/resources/META-INF/native-image/io.seata/seata-config-apollo/reflect-config.json b/config/seata-config-apollo/src/main/resources/META-INF/native-image/io.seata/seata-config-apollo/reflect-config.json
new file mode 100644
index 00000000000..d5dad7e68db
--- /dev/null
+++ b/config/seata-config-apollo/src/main/resources/META-INF/native-image/io.seata/seata-config-apollo/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "name": "io.seata.config.apollo.ApolloConfigurationProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/config/seata-config-apollo/src/main/resources/META-INF/native-image/io.seata/seata-config-apollo/resource-config.json b/config/seata-config-apollo/src/main/resources/META-INF/native-image/io.seata/seata-config-apollo/resource-config.json
new file mode 100644
index 00000000000..5ba31ee057a
--- /dev/null
+++ b/config/seata-config-apollo/src/main/resources/META-INF/native-image/io.seata/seata-config-apollo/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/config/seata-config-consul/src/main/resources/META-INF/native-image/io.seata/seata-config-consul/reflect-config.json b/config/seata-config-consul/src/main/resources/META-INF/native-image/io.seata/seata-config-consul/reflect-config.json
new file mode 100644
index 00000000000..575a55ecc9e
--- /dev/null
+++ b/config/seata-config-consul/src/main/resources/META-INF/native-image/io.seata/seata-config-consul/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "name": "io.seata.config.consul.ConsulConfigurationProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/config/seata-config-consul/src/main/resources/META-INF/native-image/io.seata/seata-config-consul/resource-config.json b/config/seata-config-consul/src/main/resources/META-INF/native-image/io.seata/seata-config-consul/resource-config.json
new file mode 100644
index 00000000000..5ba31ee057a
--- /dev/null
+++ b/config/seata-config-consul/src/main/resources/META-INF/native-image/io.seata/seata-config-consul/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/proxy-config.json b/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/proxy-config.json
index e46ef9962f0..c28758f2502 100644
--- a/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/proxy-config.json
+++ b/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/proxy-config.json
@@ -6,5 +6,59 @@
"interfaces": [
"io.seata.config.Configuration"
]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.file.FileConfig"
+ },
+ "name": "io.seata.config.file.SimpleFileConfig",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "java.io.File",
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.file.FileConfig"
+ },
+ "name": "io.seata.config.file.YamlFileConfig",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "java.io.File",
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.processor.Processor"
+ },
+ "name": "io.seata.config.processor.ProcessorProperties",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.processor.Processor"
+ },
+ "name": "io.seata.config.processor.ProcessorYaml",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/resource-config.json b/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/resource-config.json
new file mode 100644
index 00000000000..7f47fe2a43d
--- /dev/null
+++ b/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/resource-config.json
@@ -0,0 +1,30 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.file.FileConfig"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.config.file.FileConfig\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.file.FileConfig"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.config.file.FileConfig\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.processor.Processor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.config.processor.Processor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.processor.Processor"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.config.processor.Processor\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/config/seata-config-core/src/main/resources/META-INF/services/io.seata.config.file.FileConfig b/config/seata-config-core/src/main/resources/META-INF/services/io.seata.config.file.FileConfig
index 911c3d91a46..b44f1b5ce05 100644
--- a/config/seata-config-core/src/main/resources/META-INF/services/io.seata.config.file.FileConfig
+++ b/config/seata-config-core/src/main/resources/META-INF/services/io.seata.config.file.FileConfig
@@ -1,2 +1,2 @@
io.seata.config.file.SimpleFileConfig
-io.seata.config.file.YamlFileConfig
+io.seata.config.file.YamlFileConfig
\ No newline at end of file
diff --git a/config/seata-config-custom/src/main/resources/META-INF/native-image/io.seata/seata-config-custom/reflect-config.json b/config/seata-config-custom/src/main/resources/META-INF/native-image/io.seata/seata-config-custom/reflect-config.json
new file mode 100644
index 00000000000..9cece512be6
--- /dev/null
+++ b/config/seata-config-custom/src/main/resources/META-INF/native-image/io.seata/seata-config-custom/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "name": "io.seata.config.custom.CustomConfigurationProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/config/seata-config-custom/src/main/resources/META-INF/native-image/io.seata/seata-config-custom/resource-config.json b/config/seata-config-custom/src/main/resources/META-INF/native-image/io.seata/seata-config-custom/resource-config.json
new file mode 100644
index 00000000000..5ba31ee057a
--- /dev/null
+++ b/config/seata-config-custom/src/main/resources/META-INF/native-image/io.seata/seata-config-custom/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/config/seata-config-custom/src/test/resources/META-INF/native-image/io.seata/seata-config-custom/reflect-config.json b/config/seata-config-custom/src/test/resources/META-INF/native-image/io.seata/seata-config-custom/reflect-config.json
new file mode 100644
index 00000000000..babebe2a8f3
--- /dev/null
+++ b/config/seata-config-custom/src/test/resources/META-INF/native-image/io.seata/seata-config-custom/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "name": "io.seata.config.CustomConfigurationProviderForTest",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/config/seata-config-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-config-etcd3/reflect-config.json b/config/seata-config-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-config-etcd3/reflect-config.json
new file mode 100644
index 00000000000..00da19d813a
--- /dev/null
+++ b/config/seata-config-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-config-etcd3/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "name": "io.seata.config.etcd3.EtcdConfigurationProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/config/seata-config-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-config-etcd3/resource-config.json b/config/seata-config-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-config-etcd3/resource-config.json
new file mode 100644
index 00000000000..5ba31ee057a
--- /dev/null
+++ b/config/seata-config-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-config-etcd3/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/config/seata-config-nacos/src/main/resources/META-INF/native-image/io.seata/seata-config-nacos/reflect-config.json b/config/seata-config-nacos/src/main/resources/META-INF/native-image/io.seata/seata-config-nacos/reflect-config.json
new file mode 100644
index 00000000000..c8ed1707fce
--- /dev/null
+++ b/config/seata-config-nacos/src/main/resources/META-INF/native-image/io.seata/seata-config-nacos/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "name": "io.seata.config.nacos.NacosConfigurationProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/config/seata-config-nacos/src/main/resources/META-INF/native-image/io.seata/seata-config-nacos/resource-config.json b/config/seata-config-nacos/src/main/resources/META-INF/native-image/io.seata/seata-config-nacos/resource-config.json
new file mode 100644
index 00000000000..5ba31ee057a
--- /dev/null
+++ b/config/seata-config-nacos/src/main/resources/META-INF/native-image/io.seata/seata-config-nacos/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/config/seata-config-spring-cloud/src/main/resources/META-INF/native-image/io.seata/seata-config-spring-cloud/reflect-config.json b/config/seata-config-spring-cloud/src/main/resources/META-INF/native-image/io.seata/seata-config-spring-cloud/reflect-config.json
new file mode 100644
index 00000000000..05f33a9d39b
--- /dev/null
+++ b/config/seata-config-spring-cloud/src/main/resources/META-INF/native-image/io.seata/seata-config-spring-cloud/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "name": "io.seata.config.springcloud.SpringCloudConfigurationProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/config/seata-config-spring-cloud/src/main/resources/META-INF/native-image/io.seata/seata-config-spring-cloud/resource-config.json b/config/seata-config-spring-cloud/src/main/resources/META-INF/native-image/io.seata/seata-config-spring-cloud/resource-config.json
new file mode 100644
index 00000000000..5ba31ee057a
--- /dev/null
+++ b/config/seata-config-spring-cloud/src/main/resources/META-INF/native-image/io.seata/seata-config-spring-cloud/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/config/seata-config-zk/src/main/resources/META-INF/native-image/io.seata/seata-config-zk/reflect-config.json b/config/seata-config-zk/src/main/resources/META-INF/native-image/io.seata/seata-config-zk/reflect-config.json
new file mode 100644
index 00000000000..b3ed5b43182
--- /dev/null
+++ b/config/seata-config-zk/src/main/resources/META-INF/native-image/io.seata/seata-config-zk/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "name": "io.seata.config.zk.ZookeeperConfigurationProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/config/seata-config-zk/src/main/resources/META-INF/native-image/io.seata/seata-config-zk/resource-config.json b/config/seata-config-zk/src/main/resources/META-INF/native-image/io.seata/seata-config-zk/resource-config.json
new file mode 100644
index 00000000000..5ba31ee057a
--- /dev/null
+++ b/config/seata-config-zk/src/main/resources/META-INF/native-image/io.seata/seata-config-zk/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/core/src/main/resources/META-INF/native-image/io.seata/seata-core/reflect-config.json b/core/src/main/resources/META-INF/native-image/io.seata/seata-core/reflect-config.json
index 9185b3e528a..ec2f79715c4 100644
--- a/core/src/main/resources/META-INF/native-image/io.seata/seata-core/reflect-config.json
+++ b/core/src/main/resources/META-INF/native-image/io.seata/seata-core/reflect-config.json
@@ -16,5 +16,173 @@
"parameterTypes": []
}
]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.auth.AuthSigner"
+ },
+ "name": "io.seata.core.auth.DefaultAuthSigner",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.context.ContextCore"
+ },
+ "name": "io.seata.core.context.ThreadLocalContextCore",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.context.ContextCore"
+ },
+ "name": "io.seata.core.context.FastThreadLocalContextCore",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.rpc.hook.RpcHook"
+ },
+ "name": "io.seata.core.rpc.hook.StatusRpcHook",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.lock.LockStoreSql"
+ },
+ "name": "io.seata.core.store.db.sql.lock.MysqlLockStoreSql",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.lock.LockStoreSql"
+ },
+ "name": "io.seata.core.store.db.sql.lock.OracleLockStoreSql",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.lock.LockStoreSql"
+ },
+ "name": "io.seata.core.store.db.sql.lock.OceanbaseLockStoreSql",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.lock.LockStoreSql"
+ },
+ "name": "io.seata.core.store.db.sql.lock.PostgresqlLockStoreSql",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.lock.LockStoreSql"
+ },
+ "name": "io.seata.core.store.db.sql.lock.H2LockStoreSql",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.log.LogStoreSqls"
+ },
+ "name": "io.seata.core.store.db.sql.log.MysqlLogStoreSqls",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.log.LogStoreSqls"
+ },
+ "name": "io.seata.core.store.db.sql.log.OracleLogStoreSqls",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.log.LogStoreSqls"
+ },
+ "name": "io.seata.core.store.db.sql.log.PostgresqlLogStoreSqls",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.log.LogStoreSqls"
+ },
+ "name": "io.seata.core.store.db.sql.log.OceanbaseLogStoreSqls",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.log.LogStoreSqls"
+ },
+ "name": "io.seata.core.store.db.sql.log.H2LogStoreSqls",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/core/src/main/resources/META-INF/native-image/io.seata/seata-core/resource-config.json b/core/src/main/resources/META-INF/native-image/io.seata/seata-core/resource-config.json
new file mode 100644
index 00000000000..fe3f34f1cdd
--- /dev/null
+++ b/core/src/main/resources/META-INF/native-image/io.seata/seata-core/resource-config.json
@@ -0,0 +1,66 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.auth.AuthSigner"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.auth.AuthSigner\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.auth.AuthSigner"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.auth.AuthSigner\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.context.ContextCore"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.context.ContextCore\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.context.ContextCore"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.context.ContextCore\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.rpc.hook.RpcHook"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.rpc.hook.RpcHook\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.rpc.hook.RpcHook"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.rpc.hook.RpcHook\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.lock.LockStoreSql"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.store.db.sql.lock.LockStoreSql\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.lock.LockStoreSql"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.store.db.sql.lock.LockStoreSql\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.log.LogStoreSqls"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.store.db.sql.log.LogStoreSqls\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.sql.log.LogStoreSqls"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.store.db.sql.log.LogStoreSqls\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/discovery/seata-discovery-consul/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/reflect-config.json b/discovery/seata-discovery-consul/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/reflect-config.json
new file mode 100644
index 00000000000..301a05860e6
--- /dev/null
+++ b/discovery/seata-discovery-consul/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "name": "io.seata.discovery.registry.consul.ConsulRegistryProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/discovery/seata-discovery-consul/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json b/discovery/seata-discovery-consul/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json
new file mode 100644
index 00000000000..891a2daf375
--- /dev/null
+++ b/discovery/seata-discovery-consul/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/reflect-config.json b/discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/reflect-config.json
new file mode 100644
index 00000000000..1a99d36dc36
--- /dev/null
+++ b/discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/reflect-config.json
@@ -0,0 +1,74 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.loadbalance.LoadBalance"
+ },
+ "name": "io.seata.discovery.loadbalance.RoundRobinLoadBalance",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.loadbalance.LoadBalance"
+ },
+ "name": "io.seata.discovery.loadbalance.RandomLoadBalance",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.loadbalance.LoadBalance"
+ },
+ "name": "io.seata.discovery.loadbalance.ConsistentHashLoadBalance",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.loadbalance.LoadBalance"
+ },
+ "name": "io.seata.discovery.loadbalance.LeastActiveLoadBalance",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.loadbalance.LoadBalance"
+ },
+ "name": "io.seata.discovery.loadbalance.XIDLoadBalance",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "name": "io.seata.discovery.registry.FileRegistryProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json b/discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json
new file mode 100644
index 00000000000..908df5ca5ad
--- /dev/null
+++ b/discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json
@@ -0,0 +1,30 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.loadbalance.LoadBalance"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.discovery.loadbalance.LoadBalance\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.loadbalance.LoadBalance"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.loadbalance.LoadBalance\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/discovery/seata-discovery-custom/src/main/resources/META-INF/native-image/io.seata/seata-discovery-custom/reflect-config.json b/discovery/seata-discovery-custom/src/main/resources/META-INF/native-image/io.seata/seata-discovery-custom/reflect-config.json
new file mode 100644
index 00000000000..a5116bcf110
--- /dev/null
+++ b/discovery/seata-discovery-custom/src/main/resources/META-INF/native-image/io.seata/seata-discovery-custom/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "name": "io.seata.discovery.registry.custom.CustomRegistryProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/discovery/seata-discovery-custom/src/main/resources/META-INF/native-image/io.seata/seata-discovery-custom/resource-config.json b/discovery/seata-discovery-custom/src/main/resources/META-INF/native-image/io.seata/seata-discovery-custom/resource-config.json
new file mode 100644
index 00000000000..891a2daf375
--- /dev/null
+++ b/discovery/seata-discovery-custom/src/main/resources/META-INF/native-image/io.seata/seata-discovery-custom/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/discovery/seata-discovery-custom/src/test/resources/META-INF/native-image/io.seata/seata-discovery-custom/reflect-config.json b/discovery/seata-discovery-custom/src/test/resources/META-INF/native-image/io.seata/seata-discovery-custom/reflect-config.json
new file mode 100644
index 00000000000..db8a46ecfdf
--- /dev/null
+++ b/discovery/seata-discovery-custom/src/test/resources/META-INF/native-image/io.seata/seata-discovery-custom/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "name": "io.seata.discovery.registry.custom.CustomRegistryProviderForTest",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/discovery/seata-discovery-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-discovery-etcd3/reflect-config.json b/discovery/seata-discovery-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-discovery-etcd3/reflect-config.json
new file mode 100644
index 00000000000..ad34373e0fd
--- /dev/null
+++ b/discovery/seata-discovery-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-discovery-etcd3/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "name": "io.seata.discovery.registry.etcd3.EtcdRegistryProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/discovery/seata-discovery-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-discovery-etcd3/resource-config.json b/discovery/seata-discovery-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-discovery-etcd3/resource-config.json
new file mode 100644
index 00000000000..891a2daf375
--- /dev/null
+++ b/discovery/seata-discovery-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-discovery-etcd3/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/discovery/seata-discovery-eureka/src/main/resources/META-INF/native-image/io.seata/seata-discovery-eureka/reflect-config.json b/discovery/seata-discovery-eureka/src/main/resources/META-INF/native-image/io.seata/seata-discovery-eureka/reflect-config.json
new file mode 100644
index 00000000000..a9a50eaa8ec
--- /dev/null
+++ b/discovery/seata-discovery-eureka/src/main/resources/META-INF/native-image/io.seata/seata-discovery-eureka/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "name": "io.seata.discovery.registry.eureka.EurekaRegistryProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/discovery/seata-discovery-eureka/src/main/resources/META-INF/native-image/io.seata/seata-discovery-eureka/resource-config.json b/discovery/seata-discovery-eureka/src/main/resources/META-INF/native-image/io.seata/seata-discovery-eureka/resource-config.json
new file mode 100644
index 00000000000..891a2daf375
--- /dev/null
+++ b/discovery/seata-discovery-eureka/src/main/resources/META-INF/native-image/io.seata/seata-discovery-eureka/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/discovery/seata-discovery-nacos/src/main/resources/META-INF/native-image/io.seata/seata-discovery-nacos/reflect-config.json b/discovery/seata-discovery-nacos/src/main/resources/META-INF/native-image/io.seata/seata-discovery-nacos/reflect-config.json
new file mode 100644
index 00000000000..391c28cdfe9
--- /dev/null
+++ b/discovery/seata-discovery-nacos/src/main/resources/META-INF/native-image/io.seata/seata-discovery-nacos/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "name": "io.seata.discovery.registry.nacos.NacosRegistryProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/discovery/seata-discovery-nacos/src/main/resources/META-INF/native-image/io.seata/seata-discovery-nacos/resource-config.json b/discovery/seata-discovery-nacos/src/main/resources/META-INF/native-image/io.seata/seata-discovery-nacos/resource-config.json
new file mode 100644
index 00000000000..891a2daf375
--- /dev/null
+++ b/discovery/seata-discovery-nacos/src/main/resources/META-INF/native-image/io.seata/seata-discovery-nacos/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/discovery/seata-discovery-redis/src/main/resources/META-INF/native-image/io.seata/seata-discovery-redis/reflect-config.json b/discovery/seata-discovery-redis/src/main/resources/META-INF/native-image/io.seata/seata-discovery-redis/reflect-config.json
new file mode 100644
index 00000000000..fc26abafdff
--- /dev/null
+++ b/discovery/seata-discovery-redis/src/main/resources/META-INF/native-image/io.seata/seata-discovery-redis/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "name": "io.seata.discovery.registry.redis.RedisRegistryProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/discovery/seata-discovery-redis/src/main/resources/META-INF/native-image/io.seata/seata-discovery-redis/resource-config.json b/discovery/seata-discovery-redis/src/main/resources/META-INF/native-image/io.seata/seata-discovery-redis/resource-config.json
new file mode 100644
index 00000000000..891a2daf375
--- /dev/null
+++ b/discovery/seata-discovery-redis/src/main/resources/META-INF/native-image/io.seata/seata-discovery-redis/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/discovery/seata-discovery-sofa/src/main/resources/META-INF/native-image/io.seata/seata-discovery-sofa/reflect-config.json b/discovery/seata-discovery-sofa/src/main/resources/META-INF/native-image/io.seata/seata-discovery-sofa/reflect-config.json
new file mode 100644
index 00000000000..2e7bb3c74a5
--- /dev/null
+++ b/discovery/seata-discovery-sofa/src/main/resources/META-INF/native-image/io.seata/seata-discovery-sofa/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "name": "io.seata.discovery.registry.sofa.SofaRegistryProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/discovery/seata-discovery-sofa/src/main/resources/META-INF/native-image/io.seata/seata-discovery-sofa/resource-config.json b/discovery/seata-discovery-sofa/src/main/resources/META-INF/native-image/io.seata/seata-discovery-sofa/resource-config.json
new file mode 100644
index 00000000000..891a2daf375
--- /dev/null
+++ b/discovery/seata-discovery-sofa/src/main/resources/META-INF/native-image/io.seata/seata-discovery-sofa/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/discovery/seata-discovery-zk/src/main/resources/META-INF/native-image/io.seata/seata-discovery-zk/reflect-config.json b/discovery/seata-discovery-zk/src/main/resources/META-INF/native-image/io.seata/seata-discovery-zk/reflect-config.json
new file mode 100644
index 00000000000..301262c3441
--- /dev/null
+++ b/discovery/seata-discovery-zk/src/main/resources/META-INF/native-image/io.seata/seata-discovery-zk/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "name": "io.seata.discovery.registry.zk.ZookeeperRegistryProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/discovery/seata-discovery-zk/src/main/resources/META-INF/native-image/io.seata/seata-discovery-zk/resource-config.json b/discovery/seata-discovery-zk/src/main/resources/META-INF/native-image/io.seata/seata-discovery-zk/resource-config.json
new file mode 100644
index 00000000000..891a2daf375
--- /dev/null
+++ b/discovery/seata-discovery-zk/src/main/resources/META-INF/native-image/io.seata/seata-discovery-zk/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.discovery.registry.RegistryProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/integration/dubbo-alibaba/src/main/resources/META-INF/native-image/io.seata/seata-dubbo-alibaba/reflect-config.json b/integration/dubbo-alibaba/src/main/resources/META-INF/native-image/io.seata/seata-dubbo-alibaba/reflect-config.json
new file mode 100644
index 00000000000..3aabc896ced
--- /dev/null
+++ b/integration/dubbo-alibaba/src/main/resources/META-INF/native-image/io.seata/seata-dubbo-alibaba/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.dubbo.rpc.Filter"
+ },
+ "name": "io.seata.integration.dubbo.alibaba.AlibabaDubboTransactionPropagationFilter",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/integration/dubbo-alibaba/src/main/resources/META-INF/native-image/io.seata/seata-dubbo-alibaba/resource-config.json b/integration/dubbo-alibaba/src/main/resources/META-INF/native-image/io.seata/seata-dubbo-alibaba/resource-config.json
new file mode 100644
index 00000000000..16c205f1c3f
--- /dev/null
+++ b/integration/dubbo-alibaba/src/main/resources/META-INF/native-image/io.seata/seata-dubbo-alibaba/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.dubbo.rpc.Filter"
+ },
+ "pattern": "\\QMETA-INF\/services\/com.alibaba.dubbo.rpc.Filter\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alibaba.dubbo.rpc.Filter"
+ },
+ "pattern": "\\QMETA-INF\/seata\/com.alibaba.dubbo.rpc.Filter\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/integration/hsf/src/main/resources/META-INF/native-image/io.seata/seata-hsf/reflect-config.json b/integration/hsf/src/main/resources/META-INF/native-image/io.seata/seata-hsf/reflect-config.json
new file mode 100644
index 00000000000..ec2ca59dbd1
--- /dev/null
+++ b/integration/hsf/src/main/resources/META-INF/native-image/io.seata/seata-hsf/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "com.taobao.hsf.invocation.filter.RPCFilter"
+ },
+ "name": "io.seata.integration.hsf.HsfTransactionFilter",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/integration/hsf/src/main/resources/META-INF/native-image/io.seata/seata-hsf/resource-config.json b/integration/hsf/src/main/resources/META-INF/native-image/io.seata/seata-hsf/resource-config.json
new file mode 100644
index 00000000000..f4f3d4656d7
--- /dev/null
+++ b/integration/hsf/src/main/resources/META-INF/native-image/io.seata/seata-hsf/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "com.taobao.hsf.invocation.filter.RPCFilter"
+ },
+ "pattern": "\\QMETA-INF\/services\/com.taobao.hsf.invocation.filter.RPCFilter\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "com.taobao.hsf.invocation.filter.RPCFilter"
+ },
+ "pattern": "\\QMETA-INF\/seata\/com.taobao.hsf.invocation.filter.RPCFilter\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/integration/motan/src/main/resources/META-INF/native-image/io.seata/seata-motan/reflect-config.json b/integration/motan/src/main/resources/META-INF/native-image/io.seata/seata-motan/reflect-config.json
new file mode 100644
index 00000000000..20fc9d92636
--- /dev/null
+++ b/integration/motan/src/main/resources/META-INF/native-image/io.seata/seata-motan/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "com.weibo.api.motan.filter.Filter"
+ },
+ "name": "io.seata.integration.motan.MotanTransactionFilter",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/integration/motan/src/main/resources/META-INF/native-image/io.seata/seata-motan/resource-config.json b/integration/motan/src/main/resources/META-INF/native-image/io.seata/seata-motan/resource-config.json
new file mode 100644
index 00000000000..f36a7e7d141
--- /dev/null
+++ b/integration/motan/src/main/resources/META-INF/native-image/io.seata/seata-motan/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "com.weibo.api.motan.filter.Filter"
+ },
+ "pattern": "\\QMETA-INF\/services\/com.weibo.api.motan.filter.Filter\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "com.weibo.api.motan.filter.Filter"
+ },
+ "pattern": "\\QMETA-INF\/seata\/com.weibo.api.motan.filter.Filter\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/integration/sofa-rpc/src/main/resources/META-INF/native-image/io.seata/seata-sofa-rpc/reflect-config.json b/integration/sofa-rpc/src/main/resources/META-INF/native-image/io.seata/seata-sofa-rpc/reflect-config.json
new file mode 100644
index 00000000000..21eab9bdc03
--- /dev/null
+++ b/integration/sofa-rpc/src/main/resources/META-INF/native-image/io.seata/seata-sofa-rpc/reflect-config.json
@@ -0,0 +1,26 @@
+[
+ {
+ "condition": {
+ "typeReachable": "com.alipay.sofa.rpc.filter.Filter"
+ },
+ "name": "io.seata.integration.sofa.rpc.TransactionContextProviderFilter",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alipay.sofa.rpc.filter.Filter"
+ },
+ "name": "io.seata.integration.sofa.rpc.TransactionContextConsumerFilter",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/integration/sofa-rpc/src/main/resources/META-INF/native-image/io.seata/seata-sofa-rpc/resource-config.json b/integration/sofa-rpc/src/main/resources/META-INF/native-image/io.seata/seata-sofa-rpc/resource-config.json
new file mode 100644
index 00000000000..71ffed56d32
--- /dev/null
+++ b/integration/sofa-rpc/src/main/resources/META-INF/native-image/io.seata/seata-sofa-rpc/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "com.alipay.sofa.rpc.filter.Filter"
+ },
+ "pattern": "\\QMETA-INF\/services\/com.alipay.sofa.rpc.filter.Filter\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "com.alipay.sofa.rpc.filter.Filter"
+ },
+ "pattern": "\\QMETA-INF\/seata\/com.alipay.sofa.rpc.filter.Filter\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/metrics/seata-metrics-exporter-prometheus/src/main/resources/META-INF/native-image/io.seata/seata-metrics-exporter-prometheus/reflect-config.json b/metrics/seata-metrics-exporter-prometheus/src/main/resources/META-INF/native-image/io.seata/seata-metrics-exporter-prometheus/reflect-config.json
new file mode 100644
index 00000000000..2de446ee26e
--- /dev/null
+++ b/metrics/seata-metrics-exporter-prometheus/src/main/resources/META-INF/native-image/io.seata/seata-metrics-exporter-prometheus/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.metrics.exporter.Exporter"
+ },
+ "name": "io.seata.metrics.exporter.prometheus.PrometheusExporter",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/metrics/seata-metrics-exporter-prometheus/src/main/resources/META-INF/native-image/io.seata/seata-metrics-exporter-prometheus/resource-config.json b/metrics/seata-metrics-exporter-prometheus/src/main/resources/META-INF/native-image/io.seata/seata-metrics-exporter-prometheus/resource-config.json
new file mode 100644
index 00000000000..272559151be
--- /dev/null
+++ b/metrics/seata-metrics-exporter-prometheus/src/main/resources/META-INF/native-image/io.seata/seata-metrics-exporter-prometheus/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.metrics.exporter.Exporter"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.metrics.exporter.Exporter\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.metrics.exporter.Exporter"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.metrics.exporter.Exporter\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/metrics/seata-metrics-registry-compact/src/main/resources/META-INF/native-image/io.seata/seata-metrics-registry-compact/reflect-config.json b/metrics/seata-metrics-registry-compact/src/main/resources/META-INF/native-image/io.seata/seata-metrics-registry-compact/reflect-config.json
new file mode 100644
index 00000000000..5f241d7a6cd
--- /dev/null
+++ b/metrics/seata-metrics-registry-compact/src/main/resources/META-INF/native-image/io.seata/seata-metrics-registry-compact/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.metrics.registry.Registry"
+ },
+ "name": "io.seata.metrics.registry.compact.CompactRegistry",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/metrics/seata-metrics-registry-compact/src/main/resources/META-INF/native-image/io.seata/seata-metrics-registry-compact/resource-config.json b/metrics/seata-metrics-registry-compact/src/main/resources/META-INF/native-image/io.seata/seata-metrics-registry-compact/resource-config.json
new file mode 100644
index 00000000000..c8a8a83b02a
--- /dev/null
+++ b/metrics/seata-metrics-registry-compact/src/main/resources/META-INF/native-image/io.seata/seata-metrics-registry-compact/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.metrics.registry.Registry"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.metrics.registry.Registry\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.metrics.registry.Registry"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.metrics.registry.Registry\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
index d5b35f9296b..64dde84a0af 100644
--- a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
+++ b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
@@ -350,5 +350,305 @@
]
}
]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.ResourceManager"
+ },
+ "name": "io.seata.rm.datasource.DataSourceManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.ResourceManager"
+ },
+ "name": "io.seata.rm.datasource.xa.ResourceManagerXA",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.AbstractRMHandler"
+ },
+ "name": "io.seata.rm.RMHandlerAT",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.AbstractRMHandler"
+ },
+ "name": "io.seata.rm.RMHandlerXA",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.exec.InsertExecutor"
+ },
+ "name": "io.seata.rm.datasource.exec.mysql.MySQLInsertExecutor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "io.seata.rm.datasource.StatementProxy",
+ "io.seata.rm.datasource.exec.StatementCallback",
+ "io.seata.sqlparser.SQLRecognizer"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.exec.InsertExecutor"
+ },
+ "name": "io.seata.rm.datasource.exec.oracle.OracleInsertExecutor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "io.seata.rm.datasource.StatementProxy",
+ "io.seata.rm.datasource.exec.StatementCallback",
+ "io.seata.sqlparser.SQLRecognizer"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.exec.InsertExecutor"
+ },
+ "name": "io.seata.rm.datasource.exec.postgresql.PostgresqlInsertExecutor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "io.seata.rm.datasource.StatementProxy",
+ "io.seata.rm.datasource.exec.StatementCallback",
+ "io.seata.sqlparser.SQLRecognizer"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.sql.struct.TableMetaCache"
+ },
+ "name": "io.seata.rm.datasource.sql.struct.cache.MysqlTableMetaCache",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.sql.struct.TableMetaCache"
+ },
+ "name": "io.seata.rm.datasource.sql.struct.cache.OracleTableMetaCache",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.sql.struct.TableMetaCache"
+ },
+ "name": "io.seata.rm.datasource.sql.struct.cache.PostgresqlTableMetaCache",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoExecutorHolder"
+ },
+ "name": "io.seata.rm.datasource.undo.mysql.MySQLUndoExecutorHolder",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoExecutorHolder"
+ },
+ "name": "io.seata.rm.datasource.undo.oracle.OracleUndoExecutorHolder",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoExecutorHolder"
+ },
+ "name": "io.seata.rm.datasource.undo.postgresql.PostgresqlUndoExecutorHolder",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoLogManager"
+ },
+ "name": "io.seata.rm.datasource.undo.mysql.MySQLUndoLogManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoLogManager"
+ },
+ "name": "io.seata.rm.datasource.undo.oracle.OracleUndoLogManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoLogManager"
+ },
+ "name": "io.seata.rm.datasource.undo.postgresql.PostgresqlUndoLogManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoLogParser"
+ },
+ "name": "io.seata.rm.datasource.undo.parser.FastjsonUndoLogParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoLogParser"
+ },
+ "name": "io.seata.rm.datasource.undo.parser.JacksonUndoLogParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoLogParser"
+ },
+ "name": "io.seata.rm.datasource.undo.parser.ProtostuffUndoLogParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoLogParser"
+ },
+ "name": "io.seata.rm.datasource.undo.parser.KryoUndoLogParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoLogParser"
+ },
+ "name": "io.seata.rm.datasource.undo.parser.FstUndoLogParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.KeywordChecker"
+ },
+ "name": "io.seata.rm.datasource.undo.oracle.keyword.OracleKeywordChecker",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.KeywordChecker"
+ },
+ "name": "io.seata.rm.datasource.undo.mysql.keyword.MySQLKeywordChecker",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.KeywordChecker"
+ },
+ "name": "io.seata.rm.datasource.undo.postgresql.keyword.PostgresqlKeywordChecker",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json
new file mode 100644
index 00000000000..8f0c105d83f
--- /dev/null
+++ b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json
@@ -0,0 +1,102 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.ResourceManager"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.model.ResourceManager\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.ResourceManager"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.model.ResourceManager\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.AbstractRMHandler"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.rm.AbstractRMHandler\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.AbstractRMHandler"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.rm.AbstractRMHandler\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.exec.InsertExecutor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.rm.datasource.exec.InsertExecutor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.exec.InsertExecutor"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.rm.datasource.exec.InsertExecutor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.sql.struct.TableMetaCache"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.rm.datasource.sql.struct.TableMetaCache\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.sql.struct.TableMetaCache"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.rm.datasource.sql.struct.TableMetaCache\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoExecutorHolder"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.rm.datasource.undo.UndoExecutorHolder\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoExecutorHolder"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.rm.datasource.undo.UndoExecutorHolder\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoLogManager"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.rm.datasource.undo.UndoLogManager\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoLogManager"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.rm.datasource.undo.UndoLogManager\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoLogParser"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.rm.datasource.undo.UndoLogParser\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.UndoLogParser"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.rm.datasource.undo.UndoLogParser\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.KeywordChecker"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.KeywordChecker\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.KeywordChecker"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.KeywordChecker\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/rm-datasource/src/test/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json b/rm-datasource/src/test/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
new file mode 100644
index 00000000000..2e31117e9ce
--- /dev/null
+++ b/rm-datasource/src/test/resources/META-INF/native-image/io.seata/seata-rm-datasource/reflect-config.json
@@ -0,0 +1,74 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
+ },
+ "name": "io.seata.sqlparser.druid.mysql.MySQLOperateRecognizerHolder",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
+ },
+ "name": "io.seata.sqlparser.druid.oracle.OracleOperateRecognizerHolder",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
+ },
+ "name": "io.seata.sqlparser.druid.postgresql.PostgresqlOperateRecognizerHolder",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.KeywordChecker"
+ },
+ "name": "io.seata.rm.datasource.undo.h2.keyword.H2KeywordChecker",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
+ },
+ "name": "io.seata.sqlparser.druid.DruidDelegatingSQLRecognizerFactory",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.util.DbTypeParser"
+ },
+ "name": "io.seata.sqlparser.druid.DruidDelegatingDbTypeParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/rm-datasource/src/test/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json b/rm-datasource/src/test/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json
new file mode 100644
index 00000000000..ad44cc981ed
--- /dev/null
+++ b/rm-datasource/src/test/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json
@@ -0,0 +1,54 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.druid.SQLOperateRecognizerHolder\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.druid.SQLOperateRecognizerHolder\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.KeywordChecker"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.KeywordChecker\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.KeywordChecker"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.KeywordChecker\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.SQLRecognizerFactory\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.SQLRecognizerFactory\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.util.DbTypeParser"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.util.DbTypeParser\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.util.DbTypeParser"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.util.DbTypeParser\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/rm-datasource/src/test/resources/META-INF/services/io.seata.sqlparser.SQLRecognizerFactory b/rm-datasource/src/test/resources/META-INF/services/io.seata.sqlparser.SQLRecognizerFactory
index f4b2f829968..e360e22891c 100644
--- a/rm-datasource/src/test/resources/META-INF/services/io.seata.sqlparser.SQLRecognizerFactory
+++ b/rm-datasource/src/test/resources/META-INF/services/io.seata.sqlparser.SQLRecognizerFactory
@@ -1,17 +1 @@
-#
-# Copyright 1999-2019 Seata.io Group.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-io.seata.sqlparser.druid.DruidDelegatingSQLRecognizerFactory
+io.seata.sqlparser.druid.DruidDelegatingSQLRecognizerFactory
\ No newline at end of file
diff --git a/rm-datasource/src/test/resources/META-INF/services/io.seata.sqlparser.druid.SQLOperateRecognizerHolder b/rm-datasource/src/test/resources/META-INF/services/io.seata.sqlparser.druid.SQLOperateRecognizerHolder
index e7a870fdf31..0e290f5bd49 100644
--- a/rm-datasource/src/test/resources/META-INF/services/io.seata.sqlparser.druid.SQLOperateRecognizerHolder
+++ b/rm-datasource/src/test/resources/META-INF/services/io.seata.sqlparser.druid.SQLOperateRecognizerHolder
@@ -1,19 +1,3 @@
-#
-# Copyright 1999-2019 Seata.io Group.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
io.seata.sqlparser.druid.mysql.MySQLOperateRecognizerHolder
io.seata.sqlparser.druid.oracle.OracleOperateRecognizerHolder
io.seata.sqlparser.druid.postgresql.PostgresqlOperateRecognizerHolder
\ No newline at end of file
diff --git a/rm-datasource/src/test/resources/META-INF/services/io.seata.sqlparser.util.DbTypeParser b/rm-datasource/src/test/resources/META-INF/services/io.seata.sqlparser.util.DbTypeParser
index 983f0c35c92..a1eca58fd2a 100644
--- a/rm-datasource/src/test/resources/META-INF/services/io.seata.sqlparser.util.DbTypeParser
+++ b/rm-datasource/src/test/resources/META-INF/services/io.seata.sqlparser.util.DbTypeParser
@@ -1,17 +1 @@
-#
-# Copyright 1999-2019 Seata.io Group.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-io.seata.sqlparser.druid.DruidDelegatingDbTypeParser
+io.seata.sqlparser.druid.DruidDelegatingDbTypeParser
\ No newline at end of file
diff --git a/saga/seata-saga-engine-store/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine-store/reflect-config.json b/saga/seata-saga-engine-store/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine-store/reflect-config.json
new file mode 100644
index 00000000000..f9655b50f39
--- /dev/null
+++ b/saga/seata-saga-engine-store/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine-store/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
+ },
+ "name": "io.seata.saga.engine.pcext.interceptors.InSagaBranchHandlerInterceptor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/saga/seata-saga-engine-store/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine-store/resource-config.json b/saga/seata-saga-engine-store/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine-store/resource-config.json
new file mode 100644
index 00000000000..5e86e5f685d
--- /dev/null
+++ b/saga/seata-saga-engine-store/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine-store/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.saga.engine.pcext.StateHandlerInterceptor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.saga.engine.pcext.StateHandlerInterceptor\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/saga/seata-saga-engine/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine/reflect-config.json b/saga/seata-saga-engine/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine/reflect-config.json
new file mode 100644
index 00000000000..c0e1bb0ad5c
--- /dev/null
+++ b/saga/seata-saga-engine/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine/reflect-config.json
@@ -0,0 +1,50 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
+ },
+ "name": "io.seata.saga.engine.pcext.interceptors.ServiceTaskHandlerInterceptor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
+ },
+ "name": "io.seata.saga.engine.pcext.interceptors.ScriptTaskHandlerInterceptor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
+ },
+ "name": "io.seata.saga.engine.pcext.interceptors.LoopTaskHandlerInterceptor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateRouterInterceptor"
+ },
+ "name": "io.seata.saga.engine.pcext.interceptors.EndStateRouterInterceptor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/saga/seata-saga-engine/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine/resource-config.json b/saga/seata-saga-engine/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine/resource-config.json
new file mode 100644
index 00000000000..d2422792714
--- /dev/null
+++ b/saga/seata-saga-engine/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine/resource-config.json
@@ -0,0 +1,30 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.saga.engine.pcext.StateHandlerInterceptor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.saga.engine.pcext.StateHandlerInterceptor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateRouterInterceptor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.saga.engine.pcext.StateRouterInterceptor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateRouterInterceptor"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.saga.engine.pcext.StateRouterInterceptor\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/saga/seata-saga-rm/src/main/resources/META-INF/native-image/io.seata/seata-saga-rm/reflect-config.json b/saga/seata-saga-rm/src/main/resources/META-INF/native-image/io.seata/seata-saga-rm/reflect-config.json
new file mode 100644
index 00000000000..3fa805310e7
--- /dev/null
+++ b/saga/seata-saga-rm/src/main/resources/META-INF/native-image/io.seata/seata-saga-rm/reflect-config.json
@@ -0,0 +1,26 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.ResourceManager"
+ },
+ "name": "io.seata.saga.rm.SagaResourceManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.AbstractRMHandler"
+ },
+ "name": "io.seata.saga.rm.RMHandlerSaga",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/saga/seata-saga-rm/src/main/resources/META-INF/native-image/io.seata/seata-saga-rm/resource-config.json b/saga/seata-saga-rm/src/main/resources/META-INF/native-image/io.seata/seata-saga-rm/resource-config.json
new file mode 100644
index 00000000000..29891f8af2d
--- /dev/null
+++ b/saga/seata-saga-rm/src/main/resources/META-INF/native-image/io.seata/seata-saga-rm/resource-config.json
@@ -0,0 +1,30 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.ResourceManager"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.model.ResourceManager\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.ResourceManager"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.model.ResourceManager\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.AbstractRMHandler"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.rm.AbstractRMHandler\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.AbstractRMHandler"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.rm.AbstractRMHandler\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/saga/seata-saga-rm/src/main/resources/META-INF/services/io.seata.core.model.ResourceManager b/saga/seata-saga-rm/src/main/resources/META-INF/services/io.seata.core.model.ResourceManager
index 69bc38af6f9..4ec5cba1d35 100644
--- a/saga/seata-saga-rm/src/main/resources/META-INF/services/io.seata.core.model.ResourceManager
+++ b/saga/seata-saga-rm/src/main/resources/META-INF/services/io.seata.core.model.ResourceManager
@@ -1 +1 @@
-io.seata.saga.rm.SagaResourceManager
+io.seata.saga.rm.SagaResourceManager
\ No newline at end of file
diff --git a/saga/seata-saga-statelang/src/main/resources/META-INF/native-image/io.seata/seata-saga-statelang/reflect-config.json b/saga/seata-saga-statelang/src/main/resources/META-INF/native-image/io.seata/seata-saga-statelang/reflect-config.json
new file mode 100644
index 00000000000..006a4cb149b
--- /dev/null
+++ b/saga/seata-saga-statelang/src/main/resources/META-INF/native-image/io.seata/seata-saga-statelang/reflect-config.json
@@ -0,0 +1,26 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.statelang.parser.JsonParser"
+ },
+ "name": "io.seata.saga.statelang.parser.impl.FastjsonParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.statelang.parser.JsonParser"
+ },
+ "name": "io.seata.saga.statelang.parser.impl.JacksonJsonParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/saga/seata-saga-statelang/src/main/resources/META-INF/native-image/io.seata/seata-saga-statelang/resource-config.json b/saga/seata-saga-statelang/src/main/resources/META-INF/native-image/io.seata/seata-saga-statelang/resource-config.json
new file mode 100644
index 00000000000..c9e42679e59
--- /dev/null
+++ b/saga/seata-saga-statelang/src/main/resources/META-INF/native-image/io.seata/seata-saga-statelang/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.statelang.parser.JsonParser"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.saga.statelang.parser.JsonParser\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.statelang.parser.JsonParser"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.saga.statelang.parser.JsonParser\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/seata-plugin/seata-jackson-parser-oracle/src/main/resources/META-INF/native-image/io.seata/seata-jackson-parser-oracle/reflect-config.json b/seata-plugin/seata-jackson-parser-oracle/src/main/resources/META-INF/native-image/io.seata/seata-jackson-parser-oracle/reflect-config.json
new file mode 100644
index 00000000000..057d1b94032
--- /dev/null
+++ b/seata-plugin/seata-jackson-parser-oracle/src/main/resources/META-INF/native-image/io.seata/seata-jackson-parser-oracle/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.parser.spi.JacksonSerializer"
+ },
+ "name": "io.seata.plugin.jackson.parser.oracle.OracleTimestampJacksonSerializer",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/seata-plugin/seata-jackson-parser-oracle/src/main/resources/META-INF/native-image/io.seata/seata-jackson-parser-oracle/resource-config.json b/seata-plugin/seata-jackson-parser-oracle/src/main/resources/META-INF/native-image/io.seata/seata-jackson-parser-oracle/resource-config.json
new file mode 100644
index 00000000000..873178723f3
--- /dev/null
+++ b/seata-plugin/seata-jackson-parser-oracle/src/main/resources/META-INF/native-image/io.seata/seata-jackson-parser-oracle/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.parser.spi.JacksonSerializer"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.rm.datasource.undo.parser.spi.JacksonSerializer\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.datasource.undo.parser.spi.JacksonSerializer"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.rm.datasource.undo.parser.spi.JacksonSerializer\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/reflect-config.json b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/reflect-config.json
new file mode 100644
index 00000000000..abadecf024e
--- /dev/null
+++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ExtConfigurationProvider"
+ },
+ "name": "io.seata.spring.boot.autoconfigure.provider.SpringBootConfigurationProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/resource-config.json b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/resource-config.json
new file mode 100644
index 00000000000..56f6ada4791
--- /dev/null
+++ b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ExtConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.config.ExtConfigurationProvider\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.ExtConfigurationProvider"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.config.ExtConfigurationProvider\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/serializer/seata-serializer-fst/src/main/resources/META-INF/native-image/io.seata/seata-serializer-fst/reflect-config.json b/serializer/seata-serializer-fst/src/main/resources/META-INF/native-image/io.seata/seata-serializer-fst/reflect-config.json
new file mode 100644
index 00000000000..de413f4bd77
--- /dev/null
+++ b/serializer/seata-serializer-fst/src/main/resources/META-INF/native-image/io.seata/seata-serializer-fst/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "name": "io.seata.serializer.fst.FstSerializer",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/serializer/seata-serializer-fst/src/main/resources/META-INF/native-image/io.seata/seata-serializer-fst/resource-config.json b/serializer/seata-serializer-fst/src/main/resources/META-INF/native-image/io.seata/seata-serializer-fst/resource-config.json
new file mode 100644
index 00000000000..be625dc24bb
--- /dev/null
+++ b/serializer/seata-serializer-fst/src/main/resources/META-INF/native-image/io.seata/seata-serializer-fst/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.serializer.Serializer\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.serializer.Serializer\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/serializer/seata-serializer-hessian/src/main/resources/META-INF/native-image/io.seata/seata-serializer-hessian/reflect-config.json b/serializer/seata-serializer-hessian/src/main/resources/META-INF/native-image/io.seata/seata-serializer-hessian/reflect-config.json
new file mode 100644
index 00000000000..4d6f3e586e7
--- /dev/null
+++ b/serializer/seata-serializer-hessian/src/main/resources/META-INF/native-image/io.seata/seata-serializer-hessian/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "name": "io.seata.serializer.hessian.HessianSerializer",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/serializer/seata-serializer-hessian/src/main/resources/META-INF/native-image/io.seata/seata-serializer-hessian/resource-config.json b/serializer/seata-serializer-hessian/src/main/resources/META-INF/native-image/io.seata/seata-serializer-hessian/resource-config.json
new file mode 100644
index 00000000000..be625dc24bb
--- /dev/null
+++ b/serializer/seata-serializer-hessian/src/main/resources/META-INF/native-image/io.seata/seata-serializer-hessian/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.serializer.Serializer\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.serializer.Serializer\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/serializer/seata-serializer-kryo/src/main/resources/META-INF/native-image/io.seata/seata-serializer-kryo/reflect-config.json b/serializer/seata-serializer-kryo/src/main/resources/META-INF/native-image/io.seata/seata-serializer-kryo/reflect-config.json
new file mode 100644
index 00000000000..41aadd953bf
--- /dev/null
+++ b/serializer/seata-serializer-kryo/src/main/resources/META-INF/native-image/io.seata/seata-serializer-kryo/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "name": "io.seata.serializer.kryo.KryoSerializer",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/serializer/seata-serializer-kryo/src/main/resources/META-INF/native-image/io.seata/seata-serializer-kryo/resource-config.json b/serializer/seata-serializer-kryo/src/main/resources/META-INF/native-image/io.seata/seata-serializer-kryo/resource-config.json
new file mode 100644
index 00000000000..be625dc24bb
--- /dev/null
+++ b/serializer/seata-serializer-kryo/src/main/resources/META-INF/native-image/io.seata/seata-serializer-kryo/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.serializer.Serializer\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.serializer.Serializer\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/serializer/seata-serializer-protobuf/src/main/resources/META-INF/native-image/io.seata/seata-serializer-protobuf/reflect-config.json b/serializer/seata-serializer-protobuf/src/main/resources/META-INF/native-image/io.seata/seata-serializer-protobuf/reflect-config.json
new file mode 100644
index 00000000000..0e85dad04ba
--- /dev/null
+++ b/serializer/seata-serializer-protobuf/src/main/resources/META-INF/native-image/io.seata/seata-serializer-protobuf/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "name": "io.seata.serializer.protobuf.ProtobufSerializer",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/serializer/seata-serializer-protobuf/src/main/resources/META-INF/native-image/io.seata/seata-serializer-protobuf/resource-config.json b/serializer/seata-serializer-protobuf/src/main/resources/META-INF/native-image/io.seata/seata-serializer-protobuf/resource-config.json
new file mode 100644
index 00000000000..be625dc24bb
--- /dev/null
+++ b/serializer/seata-serializer-protobuf/src/main/resources/META-INF/native-image/io.seata/seata-serializer-protobuf/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.serializer.Serializer\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.serializer.Serializer\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/serializer/seata-serializer-seata/src/main/resources/META-INF/native-image/io.seata/seata-serializer-seata/reflect-config.json b/serializer/seata-serializer-seata/src/main/resources/META-INF/native-image/io.seata/seata-serializer-seata/reflect-config.json
new file mode 100644
index 00000000000..140bfe99f60
--- /dev/null
+++ b/serializer/seata-serializer-seata/src/main/resources/META-INF/native-image/io.seata/seata-serializer-seata/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "name": "io.seata.serializer.seata.SeataSerializer",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/serializer/seata-serializer-seata/src/main/resources/META-INF/native-image/io.seata/seata-serializer-seata/resource-config.json b/serializer/seata-serializer-seata/src/main/resources/META-INF/native-image/io.seata/seata-serializer-seata/resource-config.json
new file mode 100644
index 00000000000..be625dc24bb
--- /dev/null
+++ b/serializer/seata-serializer-seata/src/main/resources/META-INF/native-image/io.seata/seata-serializer-seata/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.serializer.Serializer\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.serializer.Serializer"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.serializer.Serializer\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/spring-aot/seata-spring-aot-core/src/main/resources/META-INF/spring/aot.factories b/spring-aot/seata-spring-aot-core/src/main/resources/META-INF/spring/aot.factories
deleted file mode 100644
index e6519b7d2de..00000000000
--- a/spring-aot/seata-spring-aot-core/src/main/resources/META-INF/spring/aot.factories
+++ /dev/null
@@ -1,2 +0,0 @@
-org.springframework.aot.hint.RuntimeHintsRegistrar= \
-io.seata.spring.aot.SeataServicesRuntimeHints
diff --git a/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/reflect-config.json b/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/reflect-config.json
index 40ea8e2f635..9557379d24d 100644
--- a/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/reflect-config.json
+++ b/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/reflect-config.json
@@ -17,5 +17,41 @@
"typeReachable": "io.seata.spring.tcc.TccAnnotationProcessor"
},
"name": "com.alipay.sofa.runtime.api.annotation.SofaReference"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.spring.annotation.ScannerChecker"
+ },
+ "name": "io.seata.spring.annotation.scannercheckers.PackageScannerChecker",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.spring.annotation.ScannerChecker"
+ },
+ "name": "io.seata.spring.annotation.scannercheckers.ConfigBeansScannerChecker",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.spring.annotation.ScannerChecker"
+ },
+ "name": "io.seata.spring.annotation.scannercheckers.ScopeBeansScannerChecker",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/resource-config.json b/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/resource-config.json
new file mode 100644
index 00000000000..88876b4bf9e
--- /dev/null
+++ b/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.spring.annotation.ScannerChecker"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.spring.annotation.ScannerChecker\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.spring.annotation.ScannerChecker"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.spring.annotation.ScannerChecker\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/reflect-config.json b/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/reflect-config.json
index 39bf63ea631..dac2a097694 100644
--- a/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/reflect-config.json
+++ b/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/reflect-config.json
@@ -1,4 +1,28 @@
[
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.antlr.SQLOperateRecognizerHolder"
+ },
+ "name": "io.seata.sqlparser.antlr.mysql.MySQLOperateRecognizerHolder",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
+ },
+ "name": "io.seata.sqlparser.antlr.AntlrDelegatingSQLRecognizerFactory",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
{
"condition": {
"typeReachable": "io.seata.sqlparser.antlr.AntlrDelegatingSQLRecognizerFactory"
diff --git a/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/resource-config.json b/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/resource-config.json
new file mode 100644
index 00000000000..839044acee8
--- /dev/null
+++ b/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/resource-config.json
@@ -0,0 +1,30 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.antlr.SQLOperateRecognizerHolder"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.antlr.SQLOperateRecognizerHolder\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.antlr.SQLOperateRecognizerHolder"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.antlr.SQLOperateRecognizerHolder\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.SQLRecognizerFactory\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.SQLRecognizerFactory\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/services/io.seata.sqlparser.SQLRecognizerFactory b/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/services/io.seata.sqlparser.SQLRecognizerFactory
index f8b91af9ded..492fd8b21f5 100644
--- a/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/services/io.seata.sqlparser.SQLRecognizerFactory
+++ b/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/services/io.seata.sqlparser.SQLRecognizerFactory
@@ -1 +1 @@
-io.seata.sqlparser.antlr.AntlrDelegatingSQLRecognizerFactory
+io.seata.sqlparser.antlr.AntlrDelegatingSQLRecognizerFactory
\ No newline at end of file
diff --git a/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/services/io.seata.sqlparser.antlr.SQLOperateRecognizerHolder b/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/services/io.seata.sqlparser.antlr.SQLOperateRecognizerHolder
index 177e9a18ffa..f3fa7ac6320 100644
--- a/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/services/io.seata.sqlparser.antlr.SQLOperateRecognizerHolder
+++ b/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/services/io.seata.sqlparser.antlr.SQLOperateRecognizerHolder
@@ -1 +1 @@
-io.seata.sqlparser.antlr.mysql.MySQLOperateRecognizerHolder
+io.seata.sqlparser.antlr.mysql.MySQLOperateRecognizerHolder
\ No newline at end of file
diff --git a/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/reflect-config.json b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/reflect-config.json
index 0c9e1a52d37..a174a6e7942 100644
--- a/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/reflect-config.json
+++ b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/reflect-config.json
@@ -22,5 +22,65 @@
"parameterTypes": []
}
]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
+ },
+ "name": "io.seata.sqlparser.druid.mysql.MySQLOperateRecognizerHolder",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
+ },
+ "name": "io.seata.sqlparser.druid.oracle.OracleOperateRecognizerHolder",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
+ },
+ "name": "io.seata.sqlparser.druid.postgresql.PostgresqlOperateRecognizerHolder",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
+ },
+ "name": "io.seata.sqlparser.druid.DruidDelegatingSQLRecognizerFactory",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.util.DbTypeParser"
+ },
+ "name": "io.seata.sqlparser.druid.DruidDelegatingDbTypeParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/resource-config.json b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/resource-config.json
index 2b4710d907e..909c6bf9aef 100644
--- a/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/resource-config.json
+++ b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/resource-config.json
@@ -6,6 +6,42 @@
"typeReachable": "io.seata.sqlparser.druid.DefaultDruidLoader"
},
"pattern": "\\Qlib\/sqlparser\/druid.jar\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.druid.SQLOperateRecognizerHolder\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.druid.SQLOperateRecognizerHolder\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.SQLRecognizerFactory\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.SQLRecognizerFactory\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.util.DbTypeParser"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.util.DbTypeParser\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.sqlparser.util.DbTypeParser"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.util.DbTypeParser\\E"
}
]
}
diff --git a/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/services/io.seata.sqlparser.SQLRecognizerFactory b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/services/io.seata.sqlparser.SQLRecognizerFactory
index aeb0a351b7f..e360e22891c 100644
--- a/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/services/io.seata.sqlparser.SQLRecognizerFactory
+++ b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/services/io.seata.sqlparser.SQLRecognizerFactory
@@ -1 +1 @@
-io.seata.sqlparser.druid.DruidDelegatingSQLRecognizerFactory
+io.seata.sqlparser.druid.DruidDelegatingSQLRecognizerFactory
\ No newline at end of file
diff --git a/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/services/io.seata.sqlparser.util.DbTypeParser b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/services/io.seata.sqlparser.util.DbTypeParser
index a7a3494b374..a1eca58fd2a 100644
--- a/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/services/io.seata.sqlparser.util.DbTypeParser
+++ b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/services/io.seata.sqlparser.util.DbTypeParser
@@ -1 +1 @@
-io.seata.sqlparser.druid.DruidDelegatingDbTypeParser
+io.seata.sqlparser.druid.DruidDelegatingDbTypeParser
\ No newline at end of file
diff --git a/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/reflect-config.json b/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/reflect-config.json
index d73276ba5f6..8b2f82a9ebd 100644
--- a/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/reflect-config.json
+++ b/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/reflect-config.json
@@ -22,5 +22,77 @@
"typeReachable": "io.seata.rm.tcc.remoting.parser.HSFRemotingParser"
},
"name": "com.taobao.hsf.app.spring.util.HSFSpringProviderBean"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.ResourceManager"
+ },
+ "name": "io.seata.rm.tcc.TCCResourceManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.AbstractRMHandler"
+ },
+ "name": "io.seata.rm.tcc.RMHandlerTCC",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.tcc.remoting.RemotingParser"
+ },
+ "name": "io.seata.rm.tcc.remoting.parser.DubboRemotingParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.tcc.remoting.RemotingParser"
+ },
+ "name": "io.seata.rm.tcc.remoting.parser.LocalTCCRemotingParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.tcc.remoting.RemotingParser"
+ },
+ "name": "io.seata.rm.tcc.remoting.parser.SofaRpcRemotingParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.tcc.remoting.RemotingParser"
+ },
+ "name": "io.seata.rm.tcc.remoting.parser.HSFRemotingParser",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/resource-config.json b/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/resource-config.json
new file mode 100644
index 00000000000..2230d3e82af
--- /dev/null
+++ b/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/resource-config.json
@@ -0,0 +1,42 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.ResourceManager"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.model.ResourceManager\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.ResourceManager"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.model.ResourceManager\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.AbstractRMHandler"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.rm.AbstractRMHandler\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.AbstractRMHandler"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.rm.AbstractRMHandler\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.tcc.remoting.RemotingParser"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.rm.tcc.remoting.RemotingParser\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.rm.tcc.remoting.RemotingParser"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.rm.tcc.remoting.RemotingParser\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/tcc/src/main/resources/META-INF/services/io.seata.core.model.ResourceManager b/tcc/src/main/resources/META-INF/services/io.seata.core.model.ResourceManager
index b572908a4c9..c1b29118bb3 100644
--- a/tcc/src/main/resources/META-INF/services/io.seata.core.model.ResourceManager
+++ b/tcc/src/main/resources/META-INF/services/io.seata.core.model.ResourceManager
@@ -1 +1 @@
-io.seata.rm.tcc.TCCResourceManager
+io.seata.rm.tcc.TCCResourceManager
\ No newline at end of file
diff --git a/test/src/test/resources/META-INF/native-image/io.seata/seata-test/reflect-config.json b/test/src/test/resources/META-INF/native-image/io.seata/seata-test/reflect-config.json
new file mode 100644
index 00000000000..769abd68314
--- /dev/null
+++ b/test/src/test/resources/META-INF/native-image/io.seata/seata-test/reflect-config.json
@@ -0,0 +1,50 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.LoaderTestSPI"
+ },
+ "name": "io.seata.common.loader.LoaderTestImpl1",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.LoaderTestSPI"
+ },
+ "name": "io.seata.common.loader.LoaderTestImpl2",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
+ },
+ "name": "io.seata.saga.engine.mock.MockStateHandlerInterceptor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateRouterInterceptor"
+ },
+ "name": "io.seata.saga.engine.mock.MockStateRouterInterceptor",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/test/src/test/resources/META-INF/native-image/io.seata/seata-test/resource-config.json b/test/src/test/resources/META-INF/native-image/io.seata/seata-test/resource-config.json
new file mode 100644
index 00000000000..b3ea71cec94
--- /dev/null
+++ b/test/src/test/resources/META-INF/native-image/io.seata/seata-test/resource-config.json
@@ -0,0 +1,24 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.LoaderTestSPI"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.common.loader.LoaderTestSPI\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.saga.engine.pcext.StateHandlerInterceptor\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.saga.engine.pcext.StateRouterInterceptor"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.saga.engine.pcext.StateRouterInterceptor\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/tm/src/main/resources/META-INF/native-image/io.seata/seata-tm/reflect-config.json b/tm/src/main/resources/META-INF/native-image/io.seata/seata-tm/reflect-config.json
new file mode 100644
index 00000000000..b108a5bb2e3
--- /dev/null
+++ b/tm/src/main/resources/META-INF/native-image/io.seata/seata-tm/reflect-config.json
@@ -0,0 +1,14 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.TransactionManager"
+ },
+ "name": "io.seata.tm.DefaultTransactionManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/tm/src/main/resources/META-INF/native-image/io.seata/seata-tm/resource-config.json b/tm/src/main/resources/META-INF/native-image/io.seata/seata-tm/resource-config.json
new file mode 100644
index 00000000000..ad95a623713
--- /dev/null
+++ b/tm/src/main/resources/META-INF/native-image/io.seata/seata-tm/resource-config.json
@@ -0,0 +1,18 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.TransactionManager"
+ },
+ "pattern": "\\QMETA-INF\/services\/io.seata.core.model.TransactionManager\\E"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.model.TransactionManager"
+ },
+ "pattern": "\\QMETA-INF\/seata\/io.seata.core.model.TransactionManager\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
From 8dfe4486a2439b6bfe9c9ea553895509962120cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 15:45:37 +0800
Subject: [PATCH 15/32] Fix the wrong reachability-metadata.
---
.../seata-config-core/proxy-config.json | 54 ------------------
.../seata-config-core/reflect-config.json | 56 +++++++++++++++++++
2 files changed, 56 insertions(+), 54 deletions(-)
create mode 100644 config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/reflect-config.json
diff --git a/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/proxy-config.json b/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/proxy-config.json
index c28758f2502..e46ef9962f0 100644
--- a/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/proxy-config.json
+++ b/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/proxy-config.json
@@ -6,59 +6,5 @@
"interfaces": [
"io.seata.config.Configuration"
]
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.file.FileConfig"
- },
- "name": "io.seata.config.file.SimpleFileConfig",
- "methods": [
- {
- "name": "",
- "parameterTypes": [
- "java.io.File",
- "java.lang.String"
- ]
- }
- ]
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.file.FileConfig"
- },
- "name": "io.seata.config.file.YamlFileConfig",
- "methods": [
- {
- "name": "",
- "parameterTypes": [
- "java.io.File",
- "java.lang.String"
- ]
- }
- ]
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.processor.Processor"
- },
- "name": "io.seata.config.processor.ProcessorProperties",
- "methods": [
- {
- "name": "",
- "parameterTypes": []
- }
- ]
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.processor.Processor"
- },
- "name": "io.seata.config.processor.ProcessorYaml",
- "methods": [
- {
- "name": "",
- "parameterTypes": []
- }
- ]
}
]
\ No newline at end of file
diff --git a/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/reflect-config.json b/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/reflect-config.json
new file mode 100644
index 00000000000..361153750e9
--- /dev/null
+++ b/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/reflect-config.json
@@ -0,0 +1,56 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.file.FileConfig"
+ },
+ "name": "io.seata.config.file.SimpleFileConfig",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "java.io.File",
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.file.FileConfig"
+ },
+ "name": "io.seata.config.file.YamlFileConfig",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "java.io.File",
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.processor.Processor"
+ },
+ "name": "io.seata.config.processor.ProcessorProperties",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.config.processor.Processor"
+ },
+ "name": "io.seata.config.processor.ProcessorYaml",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ }
+]
\ No newline at end of file
From 4d24be8e663985cbcb64fcf280a2c48173cee343 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 18:26:22 +0800
Subject: [PATCH 16/32] Remove duplicate `resource-config.json`
---
.../seata-common/resource-config.json | 24 +++++
.../seata-common/resource-config.json | 12 ---
.../seata-compressor-7z/resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../seata-compressor-lz4/resource-config.json | 18 ----
.../seata-compressor-zip/resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../seata-config-apollo/resource-config.json | 18 ----
.../seata-config-consul/resource-config.json | 18 ----
.../seata-config-core/resource-config.json | 30 ------
.../seata-config-custom/resource-config.json | 18 ----
.../seata-config-etcd3/resource-config.json | 18 ----
.../seata-config-nacos/resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../seata-config-zk/resource-config.json | 18 ----
.../io.seata/seata-core/resource-config.json | 66 ------------
.../resource-config.json | 18 ----
.../resource-config.json | 30 ------
.../reflect-config.json | 0
.../resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../seata-discovery-sofa/resource-config.json | 18 ----
.../seata-discovery-zk/resource-config.json | 18 ----
.../seata-dubbo-alibaba/resource-config.json | 18 ----
.../io.seata/seata-hsf/resource-config.json | 18 ----
.../io.seata/seata-motan/resource-config.json | 18 ----
.../seata-sofa-rpc/resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../seata-rm-datasource/resource-config.json | 102 ------------------
.../seata-rm-datasource/resource-config.json | 54 ----------
.../resource-config.json | 18 ----
.../seata-saga-engine/resource-config.json | 30 ------
.../seata-saga-rm/resource-config.json | 30 ------
.../seata-saga-statelang/resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../seata-serializer-fst/resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../resource-config.json | 18 ----
.../seata-spring/resource-config.json | 18 ----
.../resource-config.json | 30 ------
.../resource-config.json | 36 -------
.../io.seata/seata-tcc/resource-config.json | 42 --------
.../io.seata/seata-test/resource-config.json | 24 -----
.../io.seata/seata-tm/resource-config.json | 18 ----
53 files changed, 24 insertions(+), 1188 deletions(-)
delete mode 100644 common/src/test/resources/META-INF/native-image/io.seata/seata-common/resource-config.json
delete mode 100644 compressor/seata-compressor-7z/src/main/resources/META-INF/native-image/io.seata/seata-compressor-7z/resource-config.json
delete mode 100644 compressor/seata-compressor-bzip2/src/main/resources/META-INF/native-image/io.seata/seata-compressor-bzip2/resource-config.json
delete mode 100644 compressor/seata-compressor-deflater/src/main/resources/META-INF/native-image/io.seata/seata-compressor-deflater/resource-config.json
delete mode 100644 compressor/seata-compressor-gzip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-gzip/resource-config.json
delete mode 100644 compressor/seata-compressor-lz4/src/main/resources/META-INF/native-image/io.seata/seata-compressor-lz4/resource-config.json
delete mode 100644 compressor/seata-compressor-zip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zip/resource-config.json
delete mode 100644 compressor/seata-compressor-zstd/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zstd/resource-config.json
delete mode 100644 config/seata-config-apollo/src/main/resources/META-INF/native-image/io.seata/seata-config-apollo/resource-config.json
delete mode 100644 config/seata-config-consul/src/main/resources/META-INF/native-image/io.seata/seata-config-consul/resource-config.json
delete mode 100644 config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/resource-config.json
delete mode 100644 config/seata-config-custom/src/main/resources/META-INF/native-image/io.seata/seata-config-custom/resource-config.json
delete mode 100644 config/seata-config-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-config-etcd3/resource-config.json
delete mode 100644 config/seata-config-nacos/src/main/resources/META-INF/native-image/io.seata/seata-config-nacos/resource-config.json
delete mode 100644 config/seata-config-spring-cloud/src/main/resources/META-INF/native-image/io.seata/seata-config-spring-cloud/resource-config.json
delete mode 100644 config/seata-config-zk/src/main/resources/META-INF/native-image/io.seata/seata-config-zk/resource-config.json
delete mode 100644 core/src/main/resources/META-INF/native-image/io.seata/seata-core/resource-config.json
delete mode 100644 discovery/seata-discovery-consul/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json
delete mode 100644 discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json
rename discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/{seata-discovery-consul => seata-discovery-core}/reflect-config.json (100%)
delete mode 100644 discovery/seata-discovery-custom/src/main/resources/META-INF/native-image/io.seata/seata-discovery-custom/resource-config.json
delete mode 100644 discovery/seata-discovery-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-discovery-etcd3/resource-config.json
delete mode 100644 discovery/seata-discovery-eureka/src/main/resources/META-INF/native-image/io.seata/seata-discovery-eureka/resource-config.json
delete mode 100644 discovery/seata-discovery-nacos/src/main/resources/META-INF/native-image/io.seata/seata-discovery-nacos/resource-config.json
delete mode 100644 discovery/seata-discovery-redis/src/main/resources/META-INF/native-image/io.seata/seata-discovery-redis/resource-config.json
delete mode 100644 discovery/seata-discovery-sofa/src/main/resources/META-INF/native-image/io.seata/seata-discovery-sofa/resource-config.json
delete mode 100644 discovery/seata-discovery-zk/src/main/resources/META-INF/native-image/io.seata/seata-discovery-zk/resource-config.json
delete mode 100644 integration/dubbo-alibaba/src/main/resources/META-INF/native-image/io.seata/seata-dubbo-alibaba/resource-config.json
delete mode 100644 integration/hsf/src/main/resources/META-INF/native-image/io.seata/seata-hsf/resource-config.json
delete mode 100644 integration/motan/src/main/resources/META-INF/native-image/io.seata/seata-motan/resource-config.json
delete mode 100644 integration/sofa-rpc/src/main/resources/META-INF/native-image/io.seata/seata-sofa-rpc/resource-config.json
delete mode 100644 metrics/seata-metrics-exporter-prometheus/src/main/resources/META-INF/native-image/io.seata/seata-metrics-exporter-prometheus/resource-config.json
delete mode 100644 metrics/seata-metrics-registry-compact/src/main/resources/META-INF/native-image/io.seata/seata-metrics-registry-compact/resource-config.json
delete mode 100644 rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json
delete mode 100644 rm-datasource/src/test/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json
delete mode 100644 saga/seata-saga-engine-store/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine-store/resource-config.json
delete mode 100644 saga/seata-saga-engine/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine/resource-config.json
delete mode 100644 saga/seata-saga-rm/src/main/resources/META-INF/native-image/io.seata/seata-saga-rm/resource-config.json
delete mode 100644 saga/seata-saga-statelang/src/main/resources/META-INF/native-image/io.seata/seata-saga-statelang/resource-config.json
delete mode 100644 seata-plugin/seata-jackson-parser-oracle/src/main/resources/META-INF/native-image/io.seata/seata-jackson-parser-oracle/resource-config.json
delete mode 100644 seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/resource-config.json
delete mode 100644 serializer/seata-serializer-fst/src/main/resources/META-INF/native-image/io.seata/seata-serializer-fst/resource-config.json
delete mode 100644 serializer/seata-serializer-hessian/src/main/resources/META-INF/native-image/io.seata/seata-serializer-hessian/resource-config.json
delete mode 100644 serializer/seata-serializer-kryo/src/main/resources/META-INF/native-image/io.seata/seata-serializer-kryo/resource-config.json
delete mode 100644 serializer/seata-serializer-protobuf/src/main/resources/META-INF/native-image/io.seata/seata-serializer-protobuf/resource-config.json
delete mode 100644 serializer/seata-serializer-seata/src/main/resources/META-INF/native-image/io.seata/seata-serializer-seata/resource-config.json
delete mode 100644 spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/resource-config.json
delete mode 100644 sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/resource-config.json
delete mode 100644 tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/resource-config.json
delete mode 100644 test/src/test/resources/META-INF/native-image/io.seata/seata-test/resource-config.json
delete mode 100644 tm/src/main/resources/META-INF/native-image/io.seata/seata-tm/resource-config.json
diff --git a/common/src/main/resources/META-INF/native-image/io.seata/seata-common/resource-config.json b/common/src/main/resources/META-INF/native-image/io.seata/seata-common/resource-config.json
index 57b859160c0..a8a21ce022d 100644
--- a/common/src/main/resources/META-INF/native-image/io.seata/seata-common/resource-config.json
+++ b/common/src/main/resources/META-INF/native-image/io.seata/seata-common/resource-config.json
@@ -13,24 +13,48 @@
},
"pattern": "\\QMETA-INF\/seata\/io.seata.\\E.*"
},
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
+ },
+ "pattern": "\\QMETA-INF\/services\/com.alibaba.dubbo.rpc.Filter\\E"
+ },
{
"condition": {
"typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
},
"pattern": "\\QMETA-INF\/seata\/com.alibaba.dubbo.rpc.Filter\\E"
},
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
+ },
+ "pattern": "\\QMETA-INF\/services\/com.alipay.sofa.rpc.filter.Filter\\E"
+ },
{
"condition": {
"typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
},
"pattern": "\\QMETA-INF\/seata\/com.alipay.sofa.rpc.filter.Filter\\E"
},
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
+ },
+ "pattern": "\\QMETA-INF\/services\/com.taobao.hsf.invocation.filter.RPCFilter\\E"
+ },
{
"condition": {
"typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
},
"pattern": "\\QMETA-INF\/seata\/com.taobao.hsf.invocation.filter.RPCFilter\\E"
},
+ {
+ "condition": {
+ "typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
+ },
+ "pattern": "\\QMETA-INF\/services\/com.weibo.api.motan.filter.Filter\\E"
+ },
{
"condition": {
"typeReachable": "io.seata.common.loader.EnhancedServiceLoader"
diff --git a/common/src/test/resources/META-INF/native-image/io.seata/seata-common/resource-config.json b/common/src/test/resources/META-INF/native-image/io.seata/seata-common/resource-config.json
deleted file mode 100644
index 8839d21ac7e..00000000000
--- a/common/src/test/resources/META-INF/native-image/io.seata/seata-common/resource-config.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.common.loader.Hello"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.common.loader.Hello\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/compressor/seata-compressor-7z/src/main/resources/META-INF/native-image/io.seata/seata-compressor-7z/resource-config.json b/compressor/seata-compressor-7z/src/main/resources/META-INF/native-image/io.seata/seata-compressor-7z/resource-config.json
deleted file mode 100644
index 3ccff14d418..00000000000
--- a/compressor/seata-compressor-7z/src/main/resources/META-INF/native-image/io.seata/seata-compressor-7z/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/compressor/seata-compressor-bzip2/src/main/resources/META-INF/native-image/io.seata/seata-compressor-bzip2/resource-config.json b/compressor/seata-compressor-bzip2/src/main/resources/META-INF/native-image/io.seata/seata-compressor-bzip2/resource-config.json
deleted file mode 100644
index 3ccff14d418..00000000000
--- a/compressor/seata-compressor-bzip2/src/main/resources/META-INF/native-image/io.seata/seata-compressor-bzip2/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/compressor/seata-compressor-deflater/src/main/resources/META-INF/native-image/io.seata/seata-compressor-deflater/resource-config.json b/compressor/seata-compressor-deflater/src/main/resources/META-INF/native-image/io.seata/seata-compressor-deflater/resource-config.json
deleted file mode 100644
index 3ccff14d418..00000000000
--- a/compressor/seata-compressor-deflater/src/main/resources/META-INF/native-image/io.seata/seata-compressor-deflater/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/compressor/seata-compressor-gzip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-gzip/resource-config.json b/compressor/seata-compressor-gzip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-gzip/resource-config.json
deleted file mode 100644
index 3ccff14d418..00000000000
--- a/compressor/seata-compressor-gzip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-gzip/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/compressor/seata-compressor-lz4/src/main/resources/META-INF/native-image/io.seata/seata-compressor-lz4/resource-config.json b/compressor/seata-compressor-lz4/src/main/resources/META-INF/native-image/io.seata/seata-compressor-lz4/resource-config.json
deleted file mode 100644
index 3ccff14d418..00000000000
--- a/compressor/seata-compressor-lz4/src/main/resources/META-INF/native-image/io.seata/seata-compressor-lz4/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/compressor/seata-compressor-zip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zip/resource-config.json b/compressor/seata-compressor-zip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zip/resource-config.json
deleted file mode 100644
index 3ccff14d418..00000000000
--- a/compressor/seata-compressor-zip/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zip/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/compressor/seata-compressor-zstd/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zstd/resource-config.json b/compressor/seata-compressor-zstd/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zstd/resource-config.json
deleted file mode 100644
index 3ccff14d418..00000000000
--- a/compressor/seata-compressor-zstd/src/main/resources/META-INF/native-image/io.seata/seata-compressor-zstd/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.compressor.Compressor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.compressor.Compressor"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.compressor.Compressor\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/config/seata-config-apollo/src/main/resources/META-INF/native-image/io.seata/seata-config-apollo/resource-config.json b/config/seata-config-apollo/src/main/resources/META-INF/native-image/io.seata/seata-config-apollo/resource-config.json
deleted file mode 100644
index 5ba31ee057a..00000000000
--- a/config/seata-config-apollo/src/main/resources/META-INF/native-image/io.seata/seata-config-apollo/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/config/seata-config-consul/src/main/resources/META-INF/native-image/io.seata/seata-config-consul/resource-config.json b/config/seata-config-consul/src/main/resources/META-INF/native-image/io.seata/seata-config-consul/resource-config.json
deleted file mode 100644
index 5ba31ee057a..00000000000
--- a/config/seata-config-consul/src/main/resources/META-INF/native-image/io.seata/seata-config-consul/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/resource-config.json b/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/resource-config.json
deleted file mode 100644
index 7f47fe2a43d..00000000000
--- a/config/seata-config-core/src/main/resources/META-INF/native-image/io.seata/seata-config-core/resource-config.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.config.file.FileConfig"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.config.file.FileConfig\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.file.FileConfig"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.config.file.FileConfig\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.processor.Processor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.config.processor.Processor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.processor.Processor"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.config.processor.Processor\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/config/seata-config-custom/src/main/resources/META-INF/native-image/io.seata/seata-config-custom/resource-config.json b/config/seata-config-custom/src/main/resources/META-INF/native-image/io.seata/seata-config-custom/resource-config.json
deleted file mode 100644
index 5ba31ee057a..00000000000
--- a/config/seata-config-custom/src/main/resources/META-INF/native-image/io.seata/seata-config-custom/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/config/seata-config-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-config-etcd3/resource-config.json b/config/seata-config-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-config-etcd3/resource-config.json
deleted file mode 100644
index 5ba31ee057a..00000000000
--- a/config/seata-config-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-config-etcd3/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/config/seata-config-nacos/src/main/resources/META-INF/native-image/io.seata/seata-config-nacos/resource-config.json b/config/seata-config-nacos/src/main/resources/META-INF/native-image/io.seata/seata-config-nacos/resource-config.json
deleted file mode 100644
index 5ba31ee057a..00000000000
--- a/config/seata-config-nacos/src/main/resources/META-INF/native-image/io.seata/seata-config-nacos/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/config/seata-config-spring-cloud/src/main/resources/META-INF/native-image/io.seata/seata-config-spring-cloud/resource-config.json b/config/seata-config-spring-cloud/src/main/resources/META-INF/native-image/io.seata/seata-config-spring-cloud/resource-config.json
deleted file mode 100644
index 5ba31ee057a..00000000000
--- a/config/seata-config-spring-cloud/src/main/resources/META-INF/native-image/io.seata/seata-config-spring-cloud/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/config/seata-config-zk/src/main/resources/META-INF/native-image/io.seata/seata-config-zk/resource-config.json b/config/seata-config-zk/src/main/resources/META-INF/native-image/io.seata/seata-config-zk/resource-config.json
deleted file mode 100644
index 5ba31ee057a..00000000000
--- a/config/seata-config-zk/src/main/resources/META-INF/native-image/io.seata/seata-config-zk/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.config.ConfigurationProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.ConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.config.ConfigurationProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/core/src/main/resources/META-INF/native-image/io.seata/seata-core/resource-config.json b/core/src/main/resources/META-INF/native-image/io.seata/seata-core/resource-config.json
deleted file mode 100644
index fe3f34f1cdd..00000000000
--- a/core/src/main/resources/META-INF/native-image/io.seata/seata-core/resource-config.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.auth.AuthSigner"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.auth.AuthSigner\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.auth.AuthSigner"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.auth.AuthSigner\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.context.ContextCore"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.context.ContextCore\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.context.ContextCore"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.context.ContextCore\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.rpc.hook.RpcHook"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.rpc.hook.RpcHook\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.rpc.hook.RpcHook"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.rpc.hook.RpcHook\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.store.db.sql.lock.LockStoreSql"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.store.db.sql.lock.LockStoreSql\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.store.db.sql.lock.LockStoreSql"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.store.db.sql.lock.LockStoreSql\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.store.db.sql.log.LogStoreSqls"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.store.db.sql.log.LogStoreSqls\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.store.db.sql.log.LogStoreSqls"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.store.db.sql.log.LogStoreSqls\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/discovery/seata-discovery-consul/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json b/discovery/seata-discovery-consul/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json
deleted file mode 100644
index 891a2daf375..00000000000
--- a/discovery/seata-discovery-consul/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json b/discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json
deleted file mode 100644
index 908df5ca5ad..00000000000
--- a/discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/resource-config.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.discovery.loadbalance.LoadBalance"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.discovery.loadbalance.LoadBalance\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.discovery.loadbalance.LoadBalance"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.loadbalance.LoadBalance\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/reflect-config.json b/discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-core/reflect-config.json
similarity index 100%
rename from discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-consul/reflect-config.json
rename to discovery/seata-discovery-core/src/main/resources/META-INF/native-image/io.seata/seata-discovery-core/reflect-config.json
diff --git a/discovery/seata-discovery-custom/src/main/resources/META-INF/native-image/io.seata/seata-discovery-custom/resource-config.json b/discovery/seata-discovery-custom/src/main/resources/META-INF/native-image/io.seata/seata-discovery-custom/resource-config.json
deleted file mode 100644
index 891a2daf375..00000000000
--- a/discovery/seata-discovery-custom/src/main/resources/META-INF/native-image/io.seata/seata-discovery-custom/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/discovery/seata-discovery-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-discovery-etcd3/resource-config.json b/discovery/seata-discovery-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-discovery-etcd3/resource-config.json
deleted file mode 100644
index 891a2daf375..00000000000
--- a/discovery/seata-discovery-etcd3/src/main/resources/META-INF/native-image/io.seata/seata-discovery-etcd3/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/discovery/seata-discovery-eureka/src/main/resources/META-INF/native-image/io.seata/seata-discovery-eureka/resource-config.json b/discovery/seata-discovery-eureka/src/main/resources/META-INF/native-image/io.seata/seata-discovery-eureka/resource-config.json
deleted file mode 100644
index 891a2daf375..00000000000
--- a/discovery/seata-discovery-eureka/src/main/resources/META-INF/native-image/io.seata/seata-discovery-eureka/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/discovery/seata-discovery-nacos/src/main/resources/META-INF/native-image/io.seata/seata-discovery-nacos/resource-config.json b/discovery/seata-discovery-nacos/src/main/resources/META-INF/native-image/io.seata/seata-discovery-nacos/resource-config.json
deleted file mode 100644
index 891a2daf375..00000000000
--- a/discovery/seata-discovery-nacos/src/main/resources/META-INF/native-image/io.seata/seata-discovery-nacos/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/discovery/seata-discovery-redis/src/main/resources/META-INF/native-image/io.seata/seata-discovery-redis/resource-config.json b/discovery/seata-discovery-redis/src/main/resources/META-INF/native-image/io.seata/seata-discovery-redis/resource-config.json
deleted file mode 100644
index 891a2daf375..00000000000
--- a/discovery/seata-discovery-redis/src/main/resources/META-INF/native-image/io.seata/seata-discovery-redis/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/discovery/seata-discovery-sofa/src/main/resources/META-INF/native-image/io.seata/seata-discovery-sofa/resource-config.json b/discovery/seata-discovery-sofa/src/main/resources/META-INF/native-image/io.seata/seata-discovery-sofa/resource-config.json
deleted file mode 100644
index 891a2daf375..00000000000
--- a/discovery/seata-discovery-sofa/src/main/resources/META-INF/native-image/io.seata/seata-discovery-sofa/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/discovery/seata-discovery-zk/src/main/resources/META-INF/native-image/io.seata/seata-discovery-zk/resource-config.json b/discovery/seata-discovery-zk/src/main/resources/META-INF/native-image/io.seata/seata-discovery-zk/resource-config.json
deleted file mode 100644
index 891a2daf375..00000000000
--- a/discovery/seata-discovery-zk/src/main/resources/META-INF/native-image/io.seata/seata-discovery-zk/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.discovery.registry.RegistryProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.discovery.registry.RegistryProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.discovery.registry.RegistryProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/integration/dubbo-alibaba/src/main/resources/META-INF/native-image/io.seata/seata-dubbo-alibaba/resource-config.json b/integration/dubbo-alibaba/src/main/resources/META-INF/native-image/io.seata/seata-dubbo-alibaba/resource-config.json
deleted file mode 100644
index 16c205f1c3f..00000000000
--- a/integration/dubbo-alibaba/src/main/resources/META-INF/native-image/io.seata/seata-dubbo-alibaba/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "com.alibaba.dubbo.rpc.Filter"
- },
- "pattern": "\\QMETA-INF\/services\/com.alibaba.dubbo.rpc.Filter\\E"
- },
- {
- "condition": {
- "typeReachable": "com.alibaba.dubbo.rpc.Filter"
- },
- "pattern": "\\QMETA-INF\/seata\/com.alibaba.dubbo.rpc.Filter\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/integration/hsf/src/main/resources/META-INF/native-image/io.seata/seata-hsf/resource-config.json b/integration/hsf/src/main/resources/META-INF/native-image/io.seata/seata-hsf/resource-config.json
deleted file mode 100644
index f4f3d4656d7..00000000000
--- a/integration/hsf/src/main/resources/META-INF/native-image/io.seata/seata-hsf/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "com.taobao.hsf.invocation.filter.RPCFilter"
- },
- "pattern": "\\QMETA-INF\/services\/com.taobao.hsf.invocation.filter.RPCFilter\\E"
- },
- {
- "condition": {
- "typeReachable": "com.taobao.hsf.invocation.filter.RPCFilter"
- },
- "pattern": "\\QMETA-INF\/seata\/com.taobao.hsf.invocation.filter.RPCFilter\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/integration/motan/src/main/resources/META-INF/native-image/io.seata/seata-motan/resource-config.json b/integration/motan/src/main/resources/META-INF/native-image/io.seata/seata-motan/resource-config.json
deleted file mode 100644
index f36a7e7d141..00000000000
--- a/integration/motan/src/main/resources/META-INF/native-image/io.seata/seata-motan/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "com.weibo.api.motan.filter.Filter"
- },
- "pattern": "\\QMETA-INF\/services\/com.weibo.api.motan.filter.Filter\\E"
- },
- {
- "condition": {
- "typeReachable": "com.weibo.api.motan.filter.Filter"
- },
- "pattern": "\\QMETA-INF\/seata\/com.weibo.api.motan.filter.Filter\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/integration/sofa-rpc/src/main/resources/META-INF/native-image/io.seata/seata-sofa-rpc/resource-config.json b/integration/sofa-rpc/src/main/resources/META-INF/native-image/io.seata/seata-sofa-rpc/resource-config.json
deleted file mode 100644
index 71ffed56d32..00000000000
--- a/integration/sofa-rpc/src/main/resources/META-INF/native-image/io.seata/seata-sofa-rpc/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "com.alipay.sofa.rpc.filter.Filter"
- },
- "pattern": "\\QMETA-INF\/services\/com.alipay.sofa.rpc.filter.Filter\\E"
- },
- {
- "condition": {
- "typeReachable": "com.alipay.sofa.rpc.filter.Filter"
- },
- "pattern": "\\QMETA-INF\/seata\/com.alipay.sofa.rpc.filter.Filter\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/metrics/seata-metrics-exporter-prometheus/src/main/resources/META-INF/native-image/io.seata/seata-metrics-exporter-prometheus/resource-config.json b/metrics/seata-metrics-exporter-prometheus/src/main/resources/META-INF/native-image/io.seata/seata-metrics-exporter-prometheus/resource-config.json
deleted file mode 100644
index 272559151be..00000000000
--- a/metrics/seata-metrics-exporter-prometheus/src/main/resources/META-INF/native-image/io.seata/seata-metrics-exporter-prometheus/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.metrics.exporter.Exporter"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.metrics.exporter.Exporter\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.metrics.exporter.Exporter"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.metrics.exporter.Exporter\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/metrics/seata-metrics-registry-compact/src/main/resources/META-INF/native-image/io.seata/seata-metrics-registry-compact/resource-config.json b/metrics/seata-metrics-registry-compact/src/main/resources/META-INF/native-image/io.seata/seata-metrics-registry-compact/resource-config.json
deleted file mode 100644
index c8a8a83b02a..00000000000
--- a/metrics/seata-metrics-registry-compact/src/main/resources/META-INF/native-image/io.seata/seata-metrics-registry-compact/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.metrics.registry.Registry"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.metrics.registry.Registry\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.metrics.registry.Registry"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.metrics.registry.Registry\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json
deleted file mode 100644
index 8f0c105d83f..00000000000
--- a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json
+++ /dev/null
@@ -1,102 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.model.ResourceManager"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.model.ResourceManager\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.model.ResourceManager"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.model.ResourceManager\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.AbstractRMHandler"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.rm.AbstractRMHandler\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.AbstractRMHandler"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.rm.AbstractRMHandler\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.exec.InsertExecutor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.rm.datasource.exec.InsertExecutor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.exec.InsertExecutor"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.rm.datasource.exec.InsertExecutor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.sql.struct.TableMetaCache"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.rm.datasource.sql.struct.TableMetaCache\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.sql.struct.TableMetaCache"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.rm.datasource.sql.struct.TableMetaCache\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.undo.UndoExecutorHolder"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.rm.datasource.undo.UndoExecutorHolder\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.undo.UndoExecutorHolder"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.rm.datasource.undo.UndoExecutorHolder\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.undo.UndoLogManager"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.rm.datasource.undo.UndoLogManager\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.undo.UndoLogManager"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.rm.datasource.undo.UndoLogManager\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.undo.UndoLogParser"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.rm.datasource.undo.UndoLogParser\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.undo.UndoLogParser"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.rm.datasource.undo.UndoLogParser\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.KeywordChecker"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.KeywordChecker\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.KeywordChecker"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.KeywordChecker\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/rm-datasource/src/test/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json b/rm-datasource/src/test/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json
deleted file mode 100644
index ad44cc981ed..00000000000
--- a/rm-datasource/src/test/resources/META-INF/native-image/io.seata/seata-rm-datasource/resource-config.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.druid.SQLOperateRecognizerHolder\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.druid.SQLOperateRecognizerHolder\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.KeywordChecker"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.KeywordChecker\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.KeywordChecker"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.KeywordChecker\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.SQLRecognizerFactory\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.SQLRecognizerFactory\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.util.DbTypeParser"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.util.DbTypeParser\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.util.DbTypeParser"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.util.DbTypeParser\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/saga/seata-saga-engine-store/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine-store/resource-config.json b/saga/seata-saga-engine-store/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine-store/resource-config.json
deleted file mode 100644
index 5e86e5f685d..00000000000
--- a/saga/seata-saga-engine-store/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine-store/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.saga.engine.pcext.StateHandlerInterceptor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.saga.engine.pcext.StateHandlerInterceptor\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/saga/seata-saga-engine/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine/resource-config.json b/saga/seata-saga-engine/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine/resource-config.json
deleted file mode 100644
index d2422792714..00000000000
--- a/saga/seata-saga-engine/src/main/resources/META-INF/native-image/io.seata/seata-saga-engine/resource-config.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.saga.engine.pcext.StateHandlerInterceptor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.saga.engine.pcext.StateHandlerInterceptor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.saga.engine.pcext.StateRouterInterceptor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.saga.engine.pcext.StateRouterInterceptor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.saga.engine.pcext.StateRouterInterceptor"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.saga.engine.pcext.StateRouterInterceptor\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/saga/seata-saga-rm/src/main/resources/META-INF/native-image/io.seata/seata-saga-rm/resource-config.json b/saga/seata-saga-rm/src/main/resources/META-INF/native-image/io.seata/seata-saga-rm/resource-config.json
deleted file mode 100644
index 29891f8af2d..00000000000
--- a/saga/seata-saga-rm/src/main/resources/META-INF/native-image/io.seata/seata-saga-rm/resource-config.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.model.ResourceManager"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.model.ResourceManager\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.model.ResourceManager"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.model.ResourceManager\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.AbstractRMHandler"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.rm.AbstractRMHandler\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.AbstractRMHandler"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.rm.AbstractRMHandler\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/saga/seata-saga-statelang/src/main/resources/META-INF/native-image/io.seata/seata-saga-statelang/resource-config.json b/saga/seata-saga-statelang/src/main/resources/META-INF/native-image/io.seata/seata-saga-statelang/resource-config.json
deleted file mode 100644
index c9e42679e59..00000000000
--- a/saga/seata-saga-statelang/src/main/resources/META-INF/native-image/io.seata/seata-saga-statelang/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.saga.statelang.parser.JsonParser"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.saga.statelang.parser.JsonParser\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.saga.statelang.parser.JsonParser"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.saga.statelang.parser.JsonParser\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/seata-plugin/seata-jackson-parser-oracle/src/main/resources/META-INF/native-image/io.seata/seata-jackson-parser-oracle/resource-config.json b/seata-plugin/seata-jackson-parser-oracle/src/main/resources/META-INF/native-image/io.seata/seata-jackson-parser-oracle/resource-config.json
deleted file mode 100644
index 873178723f3..00000000000
--- a/seata-plugin/seata-jackson-parser-oracle/src/main/resources/META-INF/native-image/io.seata/seata-jackson-parser-oracle/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.undo.parser.spi.JacksonSerializer"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.rm.datasource.undo.parser.spi.JacksonSerializer\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.datasource.undo.parser.spi.JacksonSerializer"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.rm.datasource.undo.parser.spi.JacksonSerializer\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/resource-config.json b/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/resource-config.json
deleted file mode 100644
index 56f6ada4791..00000000000
--- a/seata-spring-autoconfigure/seata-spring-autoconfigure-core/src/main/resources/META-INF/native-image/io.seata/seata-spring-autoconfigure-core/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.config.ExtConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.config.ExtConfigurationProvider\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.config.ExtConfigurationProvider"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.config.ExtConfigurationProvider\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/serializer/seata-serializer-fst/src/main/resources/META-INF/native-image/io.seata/seata-serializer-fst/resource-config.json b/serializer/seata-serializer-fst/src/main/resources/META-INF/native-image/io.seata/seata-serializer-fst/resource-config.json
deleted file mode 100644
index be625dc24bb..00000000000
--- a/serializer/seata-serializer-fst/src/main/resources/META-INF/native-image/io.seata/seata-serializer-fst/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.serializer.Serializer"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.serializer.Serializer\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.serializer.Serializer"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.serializer.Serializer\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/serializer/seata-serializer-hessian/src/main/resources/META-INF/native-image/io.seata/seata-serializer-hessian/resource-config.json b/serializer/seata-serializer-hessian/src/main/resources/META-INF/native-image/io.seata/seata-serializer-hessian/resource-config.json
deleted file mode 100644
index be625dc24bb..00000000000
--- a/serializer/seata-serializer-hessian/src/main/resources/META-INF/native-image/io.seata/seata-serializer-hessian/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.serializer.Serializer"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.serializer.Serializer\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.serializer.Serializer"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.serializer.Serializer\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/serializer/seata-serializer-kryo/src/main/resources/META-INF/native-image/io.seata/seata-serializer-kryo/resource-config.json b/serializer/seata-serializer-kryo/src/main/resources/META-INF/native-image/io.seata/seata-serializer-kryo/resource-config.json
deleted file mode 100644
index be625dc24bb..00000000000
--- a/serializer/seata-serializer-kryo/src/main/resources/META-INF/native-image/io.seata/seata-serializer-kryo/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.serializer.Serializer"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.serializer.Serializer\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.serializer.Serializer"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.serializer.Serializer\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/serializer/seata-serializer-protobuf/src/main/resources/META-INF/native-image/io.seata/seata-serializer-protobuf/resource-config.json b/serializer/seata-serializer-protobuf/src/main/resources/META-INF/native-image/io.seata/seata-serializer-protobuf/resource-config.json
deleted file mode 100644
index be625dc24bb..00000000000
--- a/serializer/seata-serializer-protobuf/src/main/resources/META-INF/native-image/io.seata/seata-serializer-protobuf/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.serializer.Serializer"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.serializer.Serializer\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.serializer.Serializer"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.serializer.Serializer\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/serializer/seata-serializer-seata/src/main/resources/META-INF/native-image/io.seata/seata-serializer-seata/resource-config.json b/serializer/seata-serializer-seata/src/main/resources/META-INF/native-image/io.seata/seata-serializer-seata/resource-config.json
deleted file mode 100644
index be625dc24bb..00000000000
--- a/serializer/seata-serializer-seata/src/main/resources/META-INF/native-image/io.seata/seata-serializer-seata/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.serializer.Serializer"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.serializer.Serializer\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.serializer.Serializer"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.serializer.Serializer\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/resource-config.json b/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/resource-config.json
deleted file mode 100644
index 88876b4bf9e..00000000000
--- a/spring/src/main/resources/META-INF/native-image/io.seata/seata-spring/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.spring.annotation.ScannerChecker"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.spring.annotation.ScannerChecker\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.spring.annotation.ScannerChecker"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.spring.annotation.ScannerChecker\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/resource-config.json b/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/resource-config.json
deleted file mode 100644
index 839044acee8..00000000000
--- a/sqlparser/seata-sqlparser-antlr/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-antlr/resource-config.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.antlr.SQLOperateRecognizerHolder"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.antlr.SQLOperateRecognizerHolder\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.antlr.SQLOperateRecognizerHolder"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.antlr.SQLOperateRecognizerHolder\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.SQLRecognizerFactory\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.SQLRecognizerFactory\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/resource-config.json b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/resource-config.json
index 909c6bf9aef..2b4710d907e 100644
--- a/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/resource-config.json
+++ b/sqlparser/seata-sqlparser-druid/src/main/resources/META-INF/native-image/io.seata/seata-sqlparser-druid/resource-config.json
@@ -6,42 +6,6 @@
"typeReachable": "io.seata.sqlparser.druid.DefaultDruidLoader"
},
"pattern": "\\Qlib\/sqlparser\/druid.jar\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.druid.SQLOperateRecognizerHolder\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.druid.SQLOperateRecognizerHolder"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.druid.SQLOperateRecognizerHolder\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.SQLRecognizerFactory\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.SQLRecognizerFactory"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.SQLRecognizerFactory\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.util.DbTypeParser"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.sqlparser.util.DbTypeParser\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.sqlparser.util.DbTypeParser"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.sqlparser.util.DbTypeParser\\E"
}
]
}
diff --git a/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/resource-config.json b/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/resource-config.json
deleted file mode 100644
index 2230d3e82af..00000000000
--- a/tcc/src/main/resources/META-INF/native-image/io.seata/seata-tcc/resource-config.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.model.ResourceManager"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.model.ResourceManager\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.model.ResourceManager"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.model.ResourceManager\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.AbstractRMHandler"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.rm.AbstractRMHandler\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.AbstractRMHandler"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.rm.AbstractRMHandler\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.tcc.remoting.RemotingParser"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.rm.tcc.remoting.RemotingParser\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.rm.tcc.remoting.RemotingParser"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.rm.tcc.remoting.RemotingParser\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/test/src/test/resources/META-INF/native-image/io.seata/seata-test/resource-config.json b/test/src/test/resources/META-INF/native-image/io.seata/seata-test/resource-config.json
deleted file mode 100644
index b3ea71cec94..00000000000
--- a/test/src/test/resources/META-INF/native-image/io.seata/seata-test/resource-config.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.common.loader.LoaderTestSPI"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.common.loader.LoaderTestSPI\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.saga.engine.pcext.StateHandlerInterceptor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.saga.engine.pcext.StateHandlerInterceptor\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.saga.engine.pcext.StateRouterInterceptor"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.saga.engine.pcext.StateRouterInterceptor\\E"
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/tm/src/main/resources/META-INF/native-image/io.seata/seata-tm/resource-config.json b/tm/src/main/resources/META-INF/native-image/io.seata/seata-tm/resource-config.json
deleted file mode 100644
index ad95a623713..00000000000
--- a/tm/src/main/resources/META-INF/native-image/io.seata/seata-tm/resource-config.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "resources": {
- "includes": [
- {
- "condition": {
- "typeReachable": "io.seata.core.model.TransactionManager"
- },
- "pattern": "\\QMETA-INF\/services\/io.seata.core.model.TransactionManager\\E"
- },
- {
- "condition": {
- "typeReachable": "io.seata.core.model.TransactionManager"
- },
- "pattern": "\\QMETA-INF\/seata\/io.seata.core.model.TransactionManager\\E"
- }
- ]
- }
-}
\ No newline at end of file
From 56e2cd129b7c6e97c4a81ad8dbba4fc3b70c268a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 16 Feb 2023 18:37:00 +0800
Subject: [PATCH 17/32] Optimize log
---
.../java/io/seata/common/loader/EnhancedServiceLoader.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java b/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java
index 92c52d743d0..69f7189a099 100644
--- a/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java
+++ b/common/src/main/java/io/seata/common/loader/EnhancedServiceLoader.java
@@ -556,7 +556,9 @@ private void loadFile(String dir, ClassLoader loader, List
Date: Fri, 17 Feb 2023 16:39:12 +0800
Subject: [PATCH 18/32] release: release for 1.7.0-native-rc1
---
.github/workflows/publishes.yml | 28 +++++++++----------
.github/workflows/test.yml | 2 +-
build/pom.xml | 2 +-
.../java/io/seata/core/protocol/Version.java | 2 +-
4 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/.github/workflows/publishes.yml b/.github/workflows/publishes.yml
index 3ab37947947..00f020be9f1 100644
--- a/.github/workflows/publishes.yml
+++ b/.github/workflows/publishes.yml
@@ -2,7 +2,7 @@ name: "Publishes"
on:
push:
- branches: [ snapshot, "*.*.*" ]
+ branches: [ native ]
#tags: [ "*" ]
#This schedule only takes effect in the default branch
@@ -42,16 +42,16 @@ jobs:
cat <(echo -e "${{ secrets.GPG_PRIVATE_KEY }}") | gpg --batch --import;
./mvnw -T 4C clean deploy -Prelease,release-by-github-actions -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
- # step 4 for type=image
- - name: "Package and Publish-Image-To-DockerHub"
- if: matrix.type == 'image'
- env:
- IMAGE_NAME: openjdk:8u342
- REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }}
- REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
- if [ "${{ github.ref_name }}" == "develop" ] || [ "${{ github.ref_name }}" == "snapshot" || [ "${{ github.ref_name }}" == "2.x" ]; then
- ./mvnw -T 4C clean package -Pimage -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
- else
- ./mvnw -T 4C clean package -Pimage,release-image -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
- fi
+# # step 4 for type=image
+# - name: "Package and Publish-Image-To-DockerHub"
+# if: matrix.type == 'image'
+# env:
+# IMAGE_NAME: openjdk:8u342
+# REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }}
+# REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
+# run: |
+# if [ "${{ github.ref_name }}" == "develop" ] || [ "${{ github.ref_name }}" == "snapshot" || [ "${{ github.ref_name }}" == "2.x" ]; then
+# ./mvnw -T 4C clean package -Pimage -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
+# else
+# ./mvnw -T 4C clean package -Pimage,release-image -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
+# fi
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 418102858b1..15fcb6fe12f 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -2,7 +2,7 @@ name: "test"
on:
push:
- branches: [ test*, "*.*.*" ]
+ branches: [ native ]
jobs:
# job 1
diff --git a/build/pom.xml b/build/pom.xml
index bcb752d977c..b6b17046c79 100644
--- a/build/pom.xml
+++ b/build/pom.xml
@@ -63,7 +63,7 @@
- 1.7.0-native-SNAPSHOT
+ 1.7.0-native-rc1
1.8
diff --git a/core/src/main/java/io/seata/core/protocol/Version.java b/core/src/main/java/io/seata/core/protocol/Version.java
index 2f371f8432a..0b90c4f85f3 100644
--- a/core/src/main/java/io/seata/core/protocol/Version.java
+++ b/core/src/main/java/io/seata/core/protocol/Version.java
@@ -36,7 +36,7 @@ public class Version {
/**
* The constant CURRENT.
*/
- private static final String CURRENT = "1.7.0-native-SNAPSHOT";
+ private static final String CURRENT = "1.7.0-native-rc1";
private static final String VERSION_0_7_1 = "0.7.1";
private static final String VERSION_1_5_0 = "1.5.0";
private static final int MAX_VERSION_DOT = 3;
From 4714e9d802852e2eaa9bc00b8860aa5527606b4e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Sat, 18 Feb 2023 16:48:54 +0800
Subject: [PATCH 19/32] change the version to 1.7.0-NATIVE-RC2-SNAPSHOT
---
build/pom.xml | 2 +-
core/src/main/java/io/seata/core/protocol/Version.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/build/pom.xml b/build/pom.xml
index b6b17046c79..06918e17513 100644
--- a/build/pom.xml
+++ b/build/pom.xml
@@ -63,7 +63,7 @@
- 1.7.0-native-rc1
+ 1.7.0-NATIVE-RC2-SNAPSHOT
1.8
diff --git a/core/src/main/java/io/seata/core/protocol/Version.java b/core/src/main/java/io/seata/core/protocol/Version.java
index 0b90c4f85f3..b899c33455c 100644
--- a/core/src/main/java/io/seata/core/protocol/Version.java
+++ b/core/src/main/java/io/seata/core/protocol/Version.java
@@ -36,7 +36,7 @@ public class Version {
/**
* The constant CURRENT.
*/
- private static final String CURRENT = "1.7.0-native-rc1";
+ private static final String CURRENT = "1.7.0-NATIVE-RC2-SNAPSHOT";
private static final String VERSION_0_7_1 = "0.7.1";
private static final String VERSION_1_5_0 = "1.5.0";
private static final int MAX_VERSION_DOT = 3;
From d1d345f52302a233ce2b1bc99803d601d2330ca6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Sat, 18 Feb 2023 16:54:59 +0800
Subject: [PATCH 20/32] Add reachability-metadata for `seata-server`
---
.../seata-console/resource-config.json | 9 +
server/pom.xml | 117 +++++-
.../io/seata/server/ServerApplication.java | 27 +-
.../controller/BranchSessionController.java | 3 +-
.../controller/GlobalLockController.java | 7 +-
.../controller/GlobalSessionController.java | 8 +-
.../impl/db/GlobalSessionDBServiceImpl.java | 3 +-
.../io.seata/server/reflect-config.json | 362 ++++++++++++++++++
.../io.seata/server/resource-config.json | 21 +
9 files changed, 542 insertions(+), 15 deletions(-)
create mode 100644 console/src/main/resources/META-INF/native-image/io.seata/seata-console/resource-config.json
create mode 100644 server/src/main/resources/META-INF/native-image/io.seata/server/reflect-config.json
create mode 100644 server/src/main/resources/META-INF/native-image/io.seata/server/resource-config.json
diff --git a/console/src/main/resources/META-INF/native-image/io.seata/seata-console/resource-config.json b/console/src/main/resources/META-INF/native-image/io.seata/seata-console/resource-config.json
new file mode 100644
index 00000000000..2128dbb992b
--- /dev/null
+++ b/console/src/main/resources/META-INF/native-image/io.seata/seata-console/resource-config.json
@@ -0,0 +1,9 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "pattern": "\\Qstatic\/\\E.*"
+ }
+ ]
+ }
+}
diff --git a/server/pom.xml b/server/pom.xml
index c2e3589e33c..ecd90b2984d 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -31,6 +31,7 @@
${spring-boot.version}
${spring-framework.version}
+ 0.9.20
@@ -160,7 +161,7 @@
com.h2database
h2
-
+
mysql
mysql-connector-java
@@ -367,6 +368,120 @@
+
+ native
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+
+ repackage
+
+ repackage
+
+
+
+ process-aot
+
+ process-aot
+
+
+
+
+ io.seata.server.ServerApplication
+
+ paketobuildpacks/builder:tiny
+
+ true
+
+
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+ ${native-build-tools-plugin.version}
+
+ ${project.build.outputDirectory}
+
+ true
+
+ 22.3
+
+ -H:+ReportExceptionStackTraces
+ -H:+PrintAnalysisCallTree
+
+ -H:+ExhaustiveHeapScan
+
+
+
+
+ add-reachability-metadata
+
+ add-reachability-metadata
+
+
+
+ build-native
+
+ compile-no-fork
+
+
+
+
+
+
+
+
+ nativeTest
+
+
+ org.junit.platform
+ junit-platform-launcher
+ test
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+
+ process-test-aot
+
+ process-test-aot
+
+
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+ ${native-build-tools-plugin.version}
+
+ ${project.build.outputDirectory}
+
+ true
+
+ 22.3
+
+
+
+ native-test
+
+ test
+
+
+
+
+
+
+
release-seata
diff --git a/server/src/main/java/io/seata/server/ServerApplication.java b/server/src/main/java/io/seata/server/ServerApplication.java
index e168ad65c06..f61ec5f62a1 100644
--- a/server/src/main/java/io/seata/server/ServerApplication.java
+++ b/server/src/main/java/io/seata/server/ServerApplication.java
@@ -15,8 +15,7 @@
*/
package io.seata.server;
-import java.io.IOException;
-
+import io.seata.common.aot.NativeUtils;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -25,8 +24,26 @@
*/
@SpringBootApplication(scanBasePackages = {"io.seata"})
public class ServerApplication {
- public static void main(String[] args) throws IOException {
- // run the spring-boot application
- SpringApplication.run(ServerApplication.class, args);
+
+ public static void main(String[] args) throws Throwable {
+ try {
+ // run the spring-boot application
+ SpringApplication.run(ServerApplication.class, args);
+ } catch (Throwable t) {
+ // This exception is used to end `spring-boot-maven-plugin:process-aot`, so ignore it.
+ if ("org.springframework.boot.SpringApplication$AbandonedRunException".equals(t.getClass().getName())) {
+ throw t;
+ }
+
+ // In the `native-image`, if an exception occurs prematurely during the startup process, the exception log will not be recorded,
+ // so here we sleep for 20 seconds to observe the exception information.
+ if (NativeUtils.inNativeImage()) {
+ t.printStackTrace();
+ Thread.sleep(20000);
+ }
+
+ throw t;
+ }
}
+
}
diff --git a/server/src/main/java/io/seata/server/console/controller/BranchSessionController.java b/server/src/main/java/io/seata/server/console/controller/BranchSessionController.java
index 62ffac67c06..6310688b11d 100644
--- a/server/src/main/java/io/seata/server/console/controller/BranchSessionController.java
+++ b/server/src/main/java/io/seata/server/console/controller/BranchSessionController.java
@@ -16,12 +16,14 @@
package io.seata.server.console.controller;
import javax.annotation.Resource;
+
import io.seata.server.console.service.BranchSessionService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Branch Session Controller
+ *
* @author zhongxiang.wang
*/
@RestController
@@ -31,5 +33,4 @@ public class BranchSessionController {
@Resource(type = BranchSessionService.class)
private BranchSessionService branchSessionService;
-
}
diff --git a/server/src/main/java/io/seata/server/console/controller/GlobalLockController.java b/server/src/main/java/io/seata/server/console/controller/GlobalLockController.java
index ac20ebf14ba..b9478111859 100644
--- a/server/src/main/java/io/seata/server/console/controller/GlobalLockController.java
+++ b/server/src/main/java/io/seata/server/console/controller/GlobalLockController.java
@@ -17,18 +17,18 @@
import javax.annotation.Resource;
-import io.seata.server.console.param.GlobalLockParam;
import io.seata.console.result.PageResult;
-import io.seata.server.console.vo.GlobalLockVO;
+import io.seata.server.console.param.GlobalLockParam;
import io.seata.server.console.service.GlobalLockService;
+import io.seata.server.console.vo.GlobalLockVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-
/**
* Global Lock Controller
+ *
* @author zhongxiang.wang
*/
@RestController
@@ -40,6 +40,7 @@ public class GlobalLockController {
/**
* Query locks by param
+ *
* @param param the param
* @return the list of GlobalLockVO
*/
diff --git a/server/src/main/java/io/seata/server/console/controller/GlobalSessionController.java b/server/src/main/java/io/seata/server/console/controller/GlobalSessionController.java
index 9bd79d95622..6c7ee50ba9f 100644
--- a/server/src/main/java/io/seata/server/console/controller/GlobalSessionController.java
+++ b/server/src/main/java/io/seata/server/console/controller/GlobalSessionController.java
@@ -17,10 +17,10 @@
import javax.annotation.Resource;
-import io.seata.server.console.param.GlobalSessionParam;
import io.seata.console.result.PageResult;
-import io.seata.server.console.vo.GlobalSessionVO;
+import io.seata.server.console.param.GlobalSessionParam;
import io.seata.server.console.service.GlobalSessionService;
+import io.seata.server.console.vo.GlobalSessionVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -28,6 +28,7 @@
/**
* Global Session Controller
+ *
* @author zhongxiang.wang
*/
@RestController
@@ -39,8 +40,9 @@ public class GlobalSessionController {
/**
* Query all globalSession
+ *
* @param param param for query globalSession
- * @return the list of GlobalSessionVO
+ * @return the list of GlobalSessionVO
*/
@GetMapping("query")
public PageResult query(@ModelAttribute GlobalSessionParam param) {
diff --git a/server/src/main/java/io/seata/server/console/impl/db/GlobalSessionDBServiceImpl.java b/server/src/main/java/io/seata/server/console/impl/db/GlobalSessionDBServiceImpl.java
index 7583cf3c2b1..fb414d0c8be 100644
--- a/server/src/main/java/io/seata/server/console/impl/db/GlobalSessionDBServiceImpl.java
+++ b/server/src/main/java/io/seata/server/console/impl/db/GlobalSessionDBServiceImpl.java
@@ -23,9 +23,8 @@
import java.util.Date;
import java.util.HashSet;
import java.util.List;
-
-import javax.annotation.Resource;
import javax.sql.DataSource;
+import javax.annotation.Resource;
import io.seata.common.ConfigurationKeys;
import io.seata.common.exception.StoreException;
diff --git a/server/src/main/resources/META-INF/native-image/io.seata/server/reflect-config.json b/server/src/main/resources/META-INF/native-image/io.seata/server/reflect-config.json
new file mode 100644
index 00000000000..9d762dfbaca
--- /dev/null
+++ b/server/src/main/resources/META-INF/native-image/io.seata/server/reflect-config.json
@@ -0,0 +1,362 @@
+[
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.rpc.RegisterCheckAuthHandler"
+ },
+ "name": "io.seata.server.auth.DefaultCheckAuthHandler",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.DataSourceProvider"
+ },
+ "name": "io.seata.server.store.DbcpDataSourceProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.DataSourceProvider"
+ },
+ "name": "io.seata.server.store.DruidDataSourceProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.db.DataSourceProvider"
+ },
+ "name": "io.seata.server.store.HikariDataSourceProvider",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.DistributedLocker"
+ },
+ "name": "io.seata.server.storage.redis.lock.RedisDistributedLocker",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.core.store.DistributedLocker"
+ },
+ "name": "io.seata.server.storage.db.lock.DataBaseDistributedLocker",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.server.coordinator.AbstractCore"
+ },
+ "name": "io.seata.server.transaction.at.ATCore",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "io.seata.core.rpc.RemotingServer"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.server.coordinator.AbstractCore"
+ },
+ "name": "io.seata.server.transaction.tcc.TccCore",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "io.seata.core.rpc.RemotingServer"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.server.coordinator.AbstractCore"
+ },
+ "name": "io.seata.server.transaction.saga.SagaCore",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "io.seata.core.rpc.RemotingServer"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.server.coordinator.AbstractCore"
+ },
+ "name": "io.seata.server.transaction.xa.XACore",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "io.seata.core.rpc.RemotingServer"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.server.lock.LockManager"
+ },
+ "name": "io.seata.server.storage.db.lock.DataBaseLockManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.server.lock.LockManager"
+ },
+ "name": "io.seata.server.storage.file.lock.FileLockManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.server.lock.LockManager"
+ },
+ "name": "io.seata.server.storage.redis.lock.RedisLockManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.server.session.SessionManager"
+ },
+ "name": "io.seata.server.storage.file.session.FileSessionManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": [
+ "java.lang.String",
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.server.session.SessionManager"
+ },
+ "name": "io.seata.server.storage.db.session.DataBaseSessionManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ },
+ {
+ "name": "",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.seata.server.session.SessionManager"
+ },
+ "name": "io.seata.server.storage.redis.session.RedisSessionManager",
+ "methods": [
+ {
+ "name": "",
+ "parameterTypes": []
+ },
+ {
+ "name": "",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.google.inject.internal.TypeConverterBindingProcessor"
+ },
+ "name": "java.lang.Integer",
+ "methods": [
+ {
+ "name": "parseInteger",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.google.inject.internal.TypeConverterBindingProcessor"
+ },
+ "name": "java.lang.Long",
+ "methods": [
+ {
+ "name": "parseLong",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.google.inject.internal.TypeConverterBindingProcessor"
+ },
+ "name": "java.lang.Boolean",
+ "methods": [
+ {
+ "name": "parseBoolean",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.google.inject.internal.TypeConverterBindingProcessor"
+ },
+ "name": "java.lang.Byte",
+ "methods": [
+ {
+ "name": "parseByte",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.google.inject.internal.TypeConverterBindingProcessor"
+ },
+ "name": "java.lang.Short",
+ "methods": [
+ {
+ "name": "parseShort",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.google.inject.internal.TypeConverterBindingProcessor"
+ },
+ "name": "java.lang.Float",
+ "methods": [
+ {
+ "name": "parseFloat",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "com.google.inject.internal.TypeConverterBindingProcessor"
+ },
+ "name": "java.lang.Double",
+ "methods": [
+ {
+ "name": "parseDouble",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.netty.channel.socket.nio.SelectorProviderUtil"
+ },
+ "name": "java.nio.channels.spi.SelectorProvider",
+ "methods": [
+ {
+ "name": "openServerSocketChannel",
+ "parameterTypes": [
+ "java.net.ProtocolFamily"
+ ]
+ }
+ ]
+ },
+ {
+ "condition": {
+ "typeReachable": "io.netty.channel.DefaultChannelConfig"
+ },
+ "name": "io.netty.buffer.ByteBufAllocator"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.netty.channel.DefaultChannelConfig"
+ },
+ "name": "io.netty.buffer.ByteBufUtil"
+ },
+ {
+ "condition": {
+ "typeReachable": "io.netty.util.ResourceLeakDetector"
+ },
+ "name": "io.netty.buffer.AbstractByteBufAllocator",
+ "allDeclaredMethods": true
+ },
+ {
+ "condition": {
+ "typeReachable": "io.netty.util.ResourceLeakDetector"
+ },
+ "name": "io.netty.buffer.AdvancedLeakAwareByteBuf",
+ "allDeclaredMethods": true
+ },
+ {
+ "condition": {
+ "typeReachable": "io.netty.util.ResourceLeakDetector"
+ },
+ "name": "io.netty.util.ReferenceCountUtil",
+ "allDeclaredMethods": true
+ }
+]
\ No newline at end of file
diff --git a/server/src/main/resources/META-INF/native-image/io.seata/server/resource-config.json b/server/src/main/resources/META-INF/native-image/io.seata/server/resource-config.json
new file mode 100644
index 00000000000..73b72ff3d84
--- /dev/null
+++ b/server/src/main/resources/META-INF/native-image/io.seata/server/resource-config.json
@@ -0,0 +1,21 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "pattern": "\\Qlogback\/\\E.*"
+ },
+ {
+ "pattern": "\\Qlua\/redislocker\/redislock.lua\\E"
+ },
+ {
+ "pattern": "\\Qapplication.yml\\E"
+ },
+ {
+ "pattern": "\\Qbanner.txt\\E"
+ },
+ {
+ "pattern": "\\Qlogback-spring.xml\\E"
+ }
+ ]
+ }
+}
\ No newline at end of file
From 73ad98348238d764b2a2574d4b361ca12a2122c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Sat, 18 Feb 2023 17:01:06 +0800
Subject: [PATCH 21/32] 1) Fix license; 2) Optimize `test.yml` .
---
.github/workflows/test.yml | 2 +-
.../seata-rm-datasource/native-image.properties | 15 +++++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 15fcb6fe12f..0ee8a0b7dc5 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -73,7 +73,7 @@ jobs:
# step 3
- name: "Test with Maven"
run: |
- ./mvnw -T 4C clean test -Dspring-boot.version=${{ matrix.springboot }} -Dcheckstyle.skip=false -Dlicense.skip=false -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
+ ./mvnw -T 4C clean test -Dspring-boot.version=${{ matrix.springboot }} -Dcheckstyle.skip=true -Dlicense.skip=true -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
# job 3
arm64-test:
diff --git a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties
index a974103baf7..109df519963 100644
--- a/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties
+++ b/rm-datasource/src/main/resources/META-INF/native-image/io.seata/seata-rm-datasource/native-image.properties
@@ -1 +1,16 @@
+#
+# Copyright 1999-2019 Seata.io Group.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
Args = -H:+AddAllCharsets
\ No newline at end of file
From 58dc6aa1900a7cdd08de1fcdf89fbf85146db0cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Wed, 22 Feb 2023 10:04:21 +0800
Subject: [PATCH 22/32] add VersionTest.java
---
build/pom.xml | 2 +-
.../java/io/seata/core/protocol/Version.java | 8 ++-
.../io/seata/core/protocol/VersionTest.java | 56 +++++++++++++++++++
3 files changed, 62 insertions(+), 4 deletions(-)
create mode 100644 core/src/test/java/io/seata/core/protocol/VersionTest.java
diff --git a/build/pom.xml b/build/pom.xml
index 06918e17513..aaf9827868e 100644
--- a/build/pom.xml
+++ b/build/pom.xml
@@ -63,7 +63,7 @@
- 1.7.0-NATIVE-RC2-SNAPSHOT
+ 1.7.0-native-rc2-SNAPSHOT
1.8
diff --git a/core/src/main/java/io/seata/core/protocol/Version.java b/core/src/main/java/io/seata/core/protocol/Version.java
index b899c33455c..f5b0ae94669 100644
--- a/core/src/main/java/io/seata/core/protocol/Version.java
+++ b/core/src/main/java/io/seata/core/protocol/Version.java
@@ -36,7 +36,7 @@ public class Version {
/**
* The constant CURRENT.
*/
- private static final String CURRENT = "1.7.0-NATIVE-RC2-SNAPSHOT";
+ private static final String CURRENT = "1.7.0-native-rc2-SNAPSHOT";
private static final String VERSION_0_7_1 = "0.7.1";
private static final String VERSION_1_5_0 = "1.5.0";
private static final int MAX_VERSION_DOT = 3;
@@ -114,12 +114,14 @@ public static boolean isAboveOrEqualVersion150(String version) {
public static long convertVersion(String version) throws IncompatibleVersionException {
String[] parts = StringUtils.split(version, '.');
- long result = 0L;
- int i = 1;
+
int size = parts.length;
if (size > MAX_VERSION_DOT + 1) {
throw new IncompatibleVersionException("incompatible version format:" + version);
}
+
+ long result = 0L;
+ int i = 1;
size = MAX_VERSION_DOT + 1;
for (String part : parts) {
if (StringUtils.isNumeric(part)) {
diff --git a/core/src/test/java/io/seata/core/protocol/VersionTest.java b/core/src/test/java/io/seata/core/protocol/VersionTest.java
new file mode 100644
index 00000000000..8252a9a69b1
--- /dev/null
+++ b/core/src/test/java/io/seata/core/protocol/VersionTest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 1999-2019 Seata.io Group.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.seata.core.protocol;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Test {@link Version}.
+ *
+ * @author wang.liang
+ */
+public class VersionTest {
+
+ @Test
+ public void testConvertVersion() {
+ // case: success
+ Assertions.assertDoesNotThrow(() -> {
+ long v = Version.convertVersion("1.7.0-SNAPSHOT");
+ Assertions.assertEquals(1070000, v);
+ });
+ Assertions.assertDoesNotThrow(() -> {
+ long v = Version.convertVersion("1.7.0");
+ Assertions.assertEquals(1070000, v);
+ });
+ Assertions.assertDoesNotThrow(() -> {
+ long v = Version.convertVersion("1.7.0-native-rc1-SNAPSHOT");
+ Assertions.assertEquals(1070000, v);
+ });
+ Assertions.assertDoesNotThrow(() -> {
+ long v = Version.convertVersion("1.7.0-native-rc1");
+ Assertions.assertEquals(1070000, v);
+ });
+
+ // case: fail
+ Assertions.assertThrows(IncompatibleVersionException.class, () -> {
+ Version.convertVersion("1.7.0.native.rc1-SNAPSHOT");
+ });
+ Assertions.assertThrows(IncompatibleVersionException.class, () -> {
+ Version.convertVersion("1.7.0.native.rc1");
+ });
+ }
+}
From c93a5c0241e8196c84c875eff1863b90b33faf61 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Wed, 22 Feb 2023 10:07:03 +0800
Subject: [PATCH 23/32] add VersionTest.java
---
core/src/test/java/io/seata/core/protocol/VersionTest.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/core/src/test/java/io/seata/core/protocol/VersionTest.java b/core/src/test/java/io/seata/core/protocol/VersionTest.java
index 8252a9a69b1..e43b6e5cab1 100644
--- a/core/src/test/java/io/seata/core/protocol/VersionTest.java
+++ b/core/src/test/java/io/seata/core/protocol/VersionTest.java
@@ -28,6 +28,10 @@ public class VersionTest {
@Test
public void testConvertVersion() {
// case: success
+ Assertions.assertDoesNotThrow(() -> {
+ long v = Version.convertVersion(Version.getCurrent());
+ Assertions.assertTrue(v > 0);
+ });
Assertions.assertDoesNotThrow(() -> {
long v = Version.convertVersion("1.7.0-SNAPSHOT");
Assertions.assertEquals(1070000, v);
From bade349c7050d0717889dd47561590224d61030a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Wed, 22 Feb 2023 10:21:47 +0800
Subject: [PATCH 24/32] release: release for 1.7.0-native-rc2
---
build/pom.xml | 2 +-
core/src/main/java/io/seata/core/protocol/Version.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/build/pom.xml b/build/pom.xml
index aaf9827868e..c251074092a 100644
--- a/build/pom.xml
+++ b/build/pom.xml
@@ -63,7 +63,7 @@
- 1.7.0-native-rc2-SNAPSHOT
+ 1.7.0-native-rc2
1.8
diff --git a/core/src/main/java/io/seata/core/protocol/Version.java b/core/src/main/java/io/seata/core/protocol/Version.java
index f5b0ae94669..c11f5939889 100644
--- a/core/src/main/java/io/seata/core/protocol/Version.java
+++ b/core/src/main/java/io/seata/core/protocol/Version.java
@@ -36,7 +36,7 @@ public class Version {
/**
* The constant CURRENT.
*/
- private static final String CURRENT = "1.7.0-native-rc2-SNAPSHOT";
+ private static final String CURRENT = "1.7.0-native-rc2";
private static final String VERSION_0_7_1 = "0.7.1";
private static final String VERSION_1_5_0 = "1.5.0";
private static final int MAX_VERSION_DOT = 3;
From fdf545133c3f5d268f80aea56da1209b5944e41e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Wed, 22 Feb 2023 13:46:32 +0800
Subject: [PATCH 25/32] optimize publishes.yml
---
.github/workflows/publishes.yml | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/.github/workflows/publishes.yml b/.github/workflows/publishes.yml
index 00f020be9f1..c9b76ce1549 100644
--- a/.github/workflows/publishes.yml
+++ b/.github/workflows/publishes.yml
@@ -16,7 +16,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- type: [ "OSSRH", "image" ]
+ type: [ "OSSRH" ]
steps:
# step 1
- name: "Checkout"
@@ -42,16 +42,16 @@ jobs:
cat <(echo -e "${{ secrets.GPG_PRIVATE_KEY }}") | gpg --batch --import;
./mvnw -T 4C clean deploy -Prelease,release-by-github-actions -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
-# # step 4 for type=image
-# - name: "Package and Publish-Image-To-DockerHub"
-# if: matrix.type == 'image'
-# env:
-# IMAGE_NAME: openjdk:8u342
-# REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }}
-# REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
-# run: |
-# if [ "${{ github.ref_name }}" == "develop" ] || [ "${{ github.ref_name }}" == "snapshot" || [ "${{ github.ref_name }}" == "2.x" ]; then
-# ./mvnw -T 4C clean package -Pimage -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
-# else
-# ./mvnw -T 4C clean package -Pimage,release-image -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
-# fi
+ # step 4 for type=image
+ - name: "Package and Publish-Image-To-DockerHub"
+ if: matrix.type == 'image'
+ env:
+ IMAGE_NAME: openjdk:8u342
+ REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }}
+ REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
+ run: |
+ if [ "${{ github.ref_name }}" == "develop" ] || [ "${{ github.ref_name }}" == "snapshot" || [ "${{ github.ref_name }}" == "2.x" ]; then
+ ./mvnw -T 4C clean package -Pimage -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
+ else
+ ./mvnw -T 4C clean package -Pimage,release-image -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
+ fi
From 4903f02eca11c12e8fa525751846a548b31da853 Mon Sep 17 00:00:00 2001
From: jimin
Date: Wed, 22 Feb 2023 15:02:10 +0800
Subject: [PATCH 26/32] release 1.7.0-native-rc2 (#5379)
---
.github/workflows/test.yml | 2 +-
changes/en-us/develop.md | 2 +-
changes/zh-cn/develop.md | 2 +-
dependencies/pom.xml | 6 ----
.../rm/datasource/exec/MultiExecutorTest.java | 36 +++++++++----------
5 files changed, 21 insertions(+), 27 deletions(-)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 0ee8a0b7dc5..062b21cd10d 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -1,7 +1,7 @@
name: "test"
on:
- push:
+ pull_request:
branches: [ native ]
jobs:
diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md
index b675488425a..ac9a77fce01 100644
--- a/changes/en-us/develop.md
+++ b/changes/en-us/develop.md
@@ -43,7 +43,7 @@ Add changes here for all PR submitted to the develop branch.
- [[#5172](https://github.com/seata/seata/pull/5172)] fix some security vulnerabilities
### test:
-- [[#xxx](https://github.com/seata/seata/pull/xxx)] add test for xxx
+- [[#5380](https://github.com/seata/seata/pull/5380)] fix UpdateExecutorTest failed
Thanks to these contributors for their code commits. Please report an unintended omission.
diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md
index 57b9105c910..2be63ea969c 100644
--- a/changes/zh-cn/develop.md
+++ b/changes/zh-cn/develop.md
@@ -44,7 +44,7 @@
- [[#5172](https://github.com/seata/seata/pull/5172)] 修复一些安全漏洞的版本
### test:
-- [[#xxx](https://github.com/seata/seata/pull/xxx)] 增加 xxx 测试
+- [[#5380](https://github.com/seata/seata/pull/5380)] 修复 UpdateExecutorTest 单测失败问题
非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。
diff --git a/dependencies/pom.xml b/dependencies/pom.xml
index e53f3475364..3137c5818c6 100644
--- a/dependencies/pom.xml
+++ b/dependencies/pom.xml
@@ -80,7 +80,6 @@
1.4.19
0.10.5
- 2.13.4.1
0.6.0
1.2.9
6.5
@@ -616,11 +615,6 @@
jjwt-jackson
${jwt.version}
-
- com.fasterxml.jackson.core
- jackson-databind
- ${jackson.databind.version}
-
io.prometheus
simpleclient_httpserver
diff --git a/rm-datasource/src/test/java/io/seata/rm/datasource/exec/MultiExecutorTest.java b/rm-datasource/src/test/java/io/seata/rm/datasource/exec/MultiExecutorTest.java
index b33c4b50653..332bde4985d 100644
--- a/rm-datasource/src/test/java/io/seata/rm/datasource/exec/MultiExecutorTest.java
+++ b/rm-datasource/src/test/java/io/seata/rm/datasource/exec/MultiExecutorTest.java
@@ -61,8 +61,8 @@ public static void init() throws Throwable {
new Object[]{2, "Jack"},
};
Object[][] columnMetas = new Object[][]{
- new Object[]{"", "", "table_update_executor_test", "id", Types.INTEGER, "INTEGER", 64, 0, 10, 1, "", "", 0, 0, 64, 1, "NO", "YES"},
- new Object[]{"", "", "table_update_executor_test", "name", Types.VARCHAR, "VARCHAR", 64, 0, 10, 0, "", "", 0, 0, 64, 2, "YES", "NO"},
+ new Object[]{"", "", "table_multi_executor_test", "id", Types.INTEGER, "INTEGER", 64, 0, 10, 1, "", "", 0, 0, 64, 1, "NO", "YES"},
+ new Object[]{"", "", "table_multi_executor_test", "name", Types.VARCHAR, "VARCHAR", 64, 0, 10, 0, "", "", 0, 0, 64, 2, "YES", "NO"},
};
Object[][] indexMetas = new Object[][]{
new Object[]{"PRIMARY", "id", false, "", 3, 1, "A", 34},
@@ -91,8 +91,8 @@ public static void init() throws Throwable {
@Test
public void testBeforeImageAndAfterImages() throws SQLException {
//same table and same type
- String sql = "update table_update_executor_test set name = 'WILL' where id = 1;" +
- "update table_update_executor_test set name = 'WILL2' where id = 2";
+ String sql = "update table_multi_executor_test set name = 'WILL' where id = 1;" +
+ "update table_multi_executor_test set name = 'WILL2' where id = 2";
List multi = SQLVisitorFactory.get(sql, JdbcConstants.MYSQL);
executor = new MultiExecutor(statementProxy, (statement, args) -> {
return null;
@@ -106,14 +106,14 @@ public void testBeforeImageAndAfterImages() throws SQLException {
Assertions.assertEquals(executor.getAfterImagesMap().size(), 1);
executor.prepareUndoLog(beforeImage, afterImage);
List items = connectionProxy.getContext().getUndoItems();
- Assertions.assertTrue(items.stream().allMatch(t -> Objects.equals(t.getSqlType(), SQLType.UPDATE) && Objects.equals(t.getTableName(), "table_update_executor_test")));
+ Assertions.assertTrue(items.stream().allMatch(t -> Objects.equals(t.getSqlType(), SQLType.UPDATE) && Objects.equals(t.getTableName(), "table_multi_executor_test")));
Assertions.assertEquals(items.size(), 1);
connectionProxy.getContext().reset();
//same table delete
- sql = "delete from table_update_executor_test where id = 2;" +
- "delete from table_update_executor_test where id = 3";
+ sql = "delete from table_multi_executor_test where id = 2;" +
+ "delete from table_multi_executor_test where id = 3";
multi = SQLVisitorFactory.get(sql, JdbcConstants.MYSQL);
executor = new MultiExecutor(statementProxy, (statement, args) -> {
return null;
@@ -128,13 +128,13 @@ public void testBeforeImageAndAfterImages() throws SQLException {
executor.prepareUndoLog(beforeImage, afterImage);
items = connectionProxy.getContext().getUndoItems();
Set itemSet = items.stream().map(t -> t.getTableName()).collect(Collectors.toSet());
- Assertions.assertTrue(itemSet.contains("table_update_executor_test"));
+ Assertions.assertTrue(itemSet.contains("table_multi_executor_test"));
Assertions.assertEquals(items.size(), 1);
connectionProxy.getContext().reset();
//multi table update
- sql = "update table_update_executor_test set name = 'WILL' where id = 1;update table_update_executor_test2 set name = 'WILL' where id = 1;update table_update_executor_test2 set name = 'WILL' where id = 3;";
+ sql = "update table_multi_executor_test set name = 'WILL' where id = 1;update table_multi_executor_test2 set name = 'WILL' where id = 1;update table_multi_executor_test2 set name = 'WILL' where id = 3;";
multi = SQLVisitorFactory.get(sql, JdbcConstants.MYSQL);
executor = new MultiExecutor(statementProxy, (statement, args) -> {
return null;
@@ -149,14 +149,14 @@ public void testBeforeImageAndAfterImages() throws SQLException {
executor.prepareUndoLog(beforeImage, afterImage);
items = connectionProxy.getContext().getUndoItems();
itemSet = items.stream().map(t -> t.getTableName()).collect(Collectors.toSet());
- Assertions.assertTrue(itemSet.contains("table_update_executor_test"));
- Assertions.assertTrue(itemSet.contains("table_update_executor_test2"));
+ Assertions.assertTrue(itemSet.contains("table_multi_executor_test"));
+ Assertions.assertTrue(itemSet.contains("table_multi_executor_test2"));
Assertions.assertEquals(items.size(), 2);
connectionProxy.getContext().reset();
// multi table delete
- sql = "delete from table_update_executor_test2 where id = 2;delete from table_update_executor_test where id = 3;delete from table_update_executor_test where id = 4;delete from table_update_executor_test";
+ sql = "delete from table_multi_executor_test2 where id = 2;delete from table_multi_executor_test where id = 3;delete from table_multi_executor_test where id = 4;delete from table_multi_executor_test";
multi = SQLVisitorFactory.get(sql, JdbcConstants.MYSQL);
executor = new MultiExecutor(statementProxy, (statement, args) -> {
return null;
@@ -171,12 +171,12 @@ public void testBeforeImageAndAfterImages() throws SQLException {
executor.prepareUndoLog(beforeImage, afterImage);
items = connectionProxy.getContext().getUndoItems();
itemSet = items.stream().map(t -> t.getTableName()).collect(Collectors.toSet());
- Assertions.assertTrue(itemSet.contains("table_update_executor_test"));
- Assertions.assertTrue(itemSet.contains("table_update_executor_test2"));
+ Assertions.assertTrue(itemSet.contains("table_multi_executor_test"));
+ Assertions.assertTrue(itemSet.contains("table_multi_executor_test2"));
Assertions.assertEquals(items.size(), 2);
// contains limit delete
- sql = "delete from table_update_executor_test2 where id = 2;delete from table_update_executor_test2 where id = 2 limit 1;";
+ sql = "delete from table_multi_executor_test2 where id = 2;delete from table_multi_executor_test2 where id = 2 limit 1;";
multi = SQLVisitorFactory.get(sql, JdbcConstants.MYSQL);
executor = new MultiExecutor(statementProxy, (statement, args) -> {
return null;
@@ -184,7 +184,7 @@ public void testBeforeImageAndAfterImages() throws SQLException {
Assertions.assertThrows(NotSupportYetException.class, executor::beforeImage);
// contains order by and limit delete
- sql = "delete from table_update_executor_test2 where id = 2;delete from table_update_executor_test2 where id = 2 order by id desc limit 1;";
+ sql = "delete from table_multi_executor_test2 where id = 2;delete from table_multi_executor_test2 where id = 2 order by id desc limit 1;";
multi = SQLVisitorFactory.get(sql, JdbcConstants.MYSQL);
executor = new MultiExecutor(statementProxy, (statement, args) -> {
return null;
@@ -193,7 +193,7 @@ public void testBeforeImageAndAfterImages() throws SQLException {
//contains order by update
- sql = "update table_update_executor_test set name = 'WILL' where id = 1;update table_update_executor_test set name = 'WILL' where id = 1 order by id desc;";
+ sql = "update table_multi_executor_test set name = 'WILL' where id = 1;update table_multi_executor_test set name = 'WILL' where id = 1 order by id desc;";
multi = SQLVisitorFactory.get(sql, JdbcConstants.MYSQL);
executor = new MultiExecutor(statementProxy, (statement, args) -> {
return null;
@@ -201,7 +201,7 @@ public void testBeforeImageAndAfterImages() throws SQLException {
Assertions.assertThrows(NotSupportYetException.class, executor::beforeImage);
//contains order by and limit update
- sql = "update table_update_executor_test set name = 'WILL' where id = 1;update table_update_executor_test set name = 'WILL' where id = 1 order by id desc limit 1;";
+ sql = "update table_multi_executor_test set name = 'WILL' where id = 1;update table_multi_executor_test set name = 'WILL' where id = 1 order by id desc limit 1;";
multi = SQLVisitorFactory.get(sql, JdbcConstants.MYSQL);
executor = new MultiExecutor(statementProxy, (statement, args) -> {
return null;
From c7a392e5c8787a079075aed8cddffc165d606cd3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 23 Feb 2023 11:02:32 +0800
Subject: [PATCH 27/32] change the version to 1.7.0-native-rc3-SNAPSHOT
---
build/pom.xml | 2 +-
core/src/main/java/io/seata/core/protocol/Version.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/build/pom.xml b/build/pom.xml
index c251074092a..2cf57b79a86 100644
--- a/build/pom.xml
+++ b/build/pom.xml
@@ -63,7 +63,7 @@
- 1.7.0-native-rc2
+ 1.7.0-native-rc3-SNAPSHOT
1.8
diff --git a/core/src/main/java/io/seata/core/protocol/Version.java b/core/src/main/java/io/seata/core/protocol/Version.java
index c11f5939889..90fad98edd6 100644
--- a/core/src/main/java/io/seata/core/protocol/Version.java
+++ b/core/src/main/java/io/seata/core/protocol/Version.java
@@ -36,7 +36,7 @@ public class Version {
/**
* The constant CURRENT.
*/
- private static final String CURRENT = "1.7.0-native-rc2";
+ private static final String CURRENT = "1.7.0-native-rc3-SNAPSHOT";
private static final String VERSION_0_7_1 = "0.7.1";
private static final String VERSION_1_5_0 = "1.5.0";
private static final int MAX_VERSION_DOT = 3;
From c8b225f86f3129d59ae74cac832a8a2114adc110 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Wed, 8 Mar 2023 15:19:46 +0800
Subject: [PATCH 28/32] optimize actions
---
.github/workflows/build.yml | 6 +++---
.github/workflows/test.yml | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6839bbba2d8..ae7ca470e57 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -61,6 +61,6 @@ jobs:
docker run --rm -v ${{ github.workspace }}:/ws:rw --workdir=/ws \
arm64v8/ubuntu:20.04 \
bash -exc 'apt-get update -y && \
- apt-get install maven -y && \
- mvn -version && \
- mvn -Prelease-seata -DskipTests clean install -U'
+ apt-get install maven -y && \
+ mvn -version && \
+ mvn -Prelease-seata -DskipTests clean install -U'
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index abace4f1540..b2c126832c1 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -117,7 +117,7 @@ jobs:
docker run --rm -v ${{ github.workspace }}:/ws:rw --workdir=/ws \
arm64v8/ubuntu:20.04 \
bash -exc 'apt-get update -y && \
- apt-get install maven -y'
+ apt-get install maven -y'
# step 4
- name: "Print maven version"
run: ./mvnw -version
From f94dffa38adee14cc96e27513686676355e214ad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 30 Mar 2023 15:07:55 +0800
Subject: [PATCH 29/32] optimize style
---
.../main/java/io/seata/rm/datasource/util/SeataXAResource.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/rm-datasource/src/main/java/io/seata/rm/datasource/util/SeataXAResource.java b/rm-datasource/src/main/java/io/seata/rm/datasource/util/SeataXAResource.java
index 924fec80795..e185fb5477e 100644
--- a/rm-datasource/src/main/java/io/seata/rm/datasource/util/SeataXAResource.java
+++ b/rm-datasource/src/main/java/io/seata/rm/datasource/util/SeataXAResource.java
@@ -22,7 +22,8 @@
* @since 2023/3/16
*/
public interface SeataXAResource extends XAResource {
+
// OracleXAResource Loosely Coupled Branches
- public static final int ORATRANSLOOSE = 65536;
+ int ORATRANSLOOSE = 65536;
}
From 9a14df3a6e9afe9259869282da5aefb45a312276 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Thu, 30 Mar 2023 15:38:53 +0800
Subject: [PATCH 30/32] optimize style
---
.github/workflows/publishes.yml | 46 ++++++++++++++++++-
.github/workflows/test.yml | 4 +-
build/pom.xml | 2 +-
.../services/io.seata.common.loader.Hello | 2 +-
.../impl/db/GlobalSessionDBServiceImpl.java | 3 +-
5 files changed, 51 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/publishes.yml b/.github/workflows/publishes.yml
index abf3ce21ea4..9e179e7f9b4 100644
--- a/.github/workflows/publishes.yml
+++ b/.github/workflows/publishes.yml
@@ -2,7 +2,7 @@ name: "Publishes"
on:
push:
- branches: [ native ]
+ branches: [ snapshot, "*.*.*" ]
#tags: [ "*" ]
#This schedule only takes effect in the default branch
@@ -42,3 +42,47 @@ jobs:
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
run: |
./mvnw -T 4C clean deploy -Prelease,release-by-github-actions -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
+
+ # job 2
+ publish-images-to-dockerhub:
+ name: "Publish images to DockerHub"
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ java: [ 8, 17 ]
+ steps:
+ # step 1
+ - name: "Checkout"
+ uses: actions/checkout@v2.4.0
+ # step 2
+ - name: "Setup Java JDK"
+ uses: actions/setup-java@v3.9.0
+ with:
+ distribution: 'zulu'
+ java-version: ${{ matrix.java }}
+ # step 3
+ - name: "Print maven version"
+ run: ./mvnw -version
+ # step 4 based on java8
+ - name: "Publish images to DockerHub based on java8"
+ if: matrix.java == 8
+ env:
+ REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }}
+ REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
+ run: |
+ if [ "${{ github.ref_name }}" == "develop" ] || [ "${{ github.ref_name }}" == "snapshot" || [ "${{ github.ref_name }}" == "2.x" ]; then
+ ./mvnw -T 4C clean package -Dimage.name=openjdk:8u342 -Pimage -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
+ else
+ ./mvnw -T 4C clean package -Dimage.name=openjdk:8u342 -Pimage,release-image-based-on-java8 -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
+ ./mvnw -T 4C clean package -Dimage.name=openjdk:8u342-slim -Pimage,release-image-based-on-java8-slim -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
+ fi
+ # step 4 based on java17
+ - name: "Publish images to DockerHub based on java17"
+ if: ${{ matrix.java == 17 && github.ref_name != 'develop' && github.ref_name != 'snapshot' && github.ref_name != '2.x' }}
+ env:
+ REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }}
+ REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
+ run: |
+ ./mvnw -T 4C clean package -Dimage.name=openjdk:17.0.2 -Pimage,release-image-based-on-java17 -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
+ ./mvnw -T 4C clean package -Dimage.name=openjdk:17.0.2-slim -Pimage,release-image-based-on-java17-slim -DskipTests -e -B -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn;
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index b2c126832c1..3fed98f62ef 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -1,8 +1,8 @@
name: "test"
on:
- pull_request:
- branches: [ native ]
+ push:
+ branches: [ test*, "*.*.*" ]
jobs:
# job 1
diff --git a/build/pom.xml b/build/pom.xml
index 4920b41fc63..753413a0a6d 100644
--- a/build/pom.xml
+++ b/build/pom.xml
@@ -63,7 +63,7 @@
- 1.7.0-native-rc3-SNAPSHOT
+ 1.7.0-SNAPSHOT
1.8
diff --git a/common/src/test/resources/META-INF/services/io.seata.common.loader.Hello b/common/src/test/resources/META-INF/services/io.seata.common.loader.Hello
index afeb748dab9..1b772803d97 100644
--- a/common/src/test/resources/META-INF/services/io.seata.common.loader.Hello
+++ b/common/src/test/resources/META-INF/services/io.seata.common.loader.Hello
@@ -1 +1 @@
-io.seata.common.loader.ChineseHello
+io.seata.common.loader.ChineseHello
\ No newline at end of file
diff --git a/server/src/main/java/io/seata/server/console/impl/db/GlobalSessionDBServiceImpl.java b/server/src/main/java/io/seata/server/console/impl/db/GlobalSessionDBServiceImpl.java
index fb414d0c8be..7583cf3c2b1 100644
--- a/server/src/main/java/io/seata/server/console/impl/db/GlobalSessionDBServiceImpl.java
+++ b/server/src/main/java/io/seata/server/console/impl/db/GlobalSessionDBServiceImpl.java
@@ -23,8 +23,9 @@
import java.util.Date;
import java.util.HashSet;
import java.util.List;
-import javax.sql.DataSource;
+
import javax.annotation.Resource;
+import javax.sql.DataSource;
import io.seata.common.ConfigurationKeys;
import io.seata.common.exception.StoreException;
From 803267ca23d0c600ea5ddb17f1541c7afcb78cb3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Fri, 31 Mar 2023 17:08:18 +0800
Subject: [PATCH 31/32] =?UTF-8?q?=E6=81=A2=E5=A4=8Dspring=20fake=E6=A8=A1?=
=?UTF-8?q?=E5=9D=97=E4=B8=8B=E7=9A=84=E6=89=80=E6=9C=89=E7=B1=BB=E7=9A=84?=
=?UTF-8?q?=E8=AE=B8=E5=8F=AF=E5=86=85=E5=AE=B9=E5=8F=8A=E4=BD=9C=E8=80=85?=
=?UTF-8?q?=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../aot/generate/GenerationContext.java | 25 +++++-----
.../aot/hint/ExecutableMode.java | 30 +++++++-----
.../aot/hint/MemberCategory.java | 26 +++++-----
.../springframework/aot/hint/ProxyHints.java | 24 +++++-----
.../aot/hint/ReflectionHints.java | 47 ++++++++++---------
.../aot/hint/ResourceHints.java | 30 ++++++------
.../aot/hint/RuntimeHints.java | 25 +++++-----
.../aot/hint/RuntimeHintsRegistrar.java | 25 +++++-----
.../aot/hint/SerializationHints.java | 25 +++++-----
.../aot/hint/TypeReference.java | 28 ++++++-----
.../aot/BeanRegistrationAotContribution.java | 26 +++++-----
.../aot/BeanRegistrationAotProcessor.java | 25 +++++-----
.../factory/aot/BeanRegistrationCode.java | 24 +++++-----
.../beans/factory/support/RegisteredBean.java | 30 ++++++------
style/seata_suppressions.xml | 2 +
15 files changed, 218 insertions(+), 174 deletions(-)
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/generate/GenerationContext.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/generate/GenerationContext.java
index eb97d861a72..e226ca4b6b9 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/generate/GenerationContext.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/generate/GenerationContext.java
@@ -1,18 +1,19 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.springframework.aot.generate;
import org.springframework.aot.hint.RuntimeHints;
@@ -20,7 +21,9 @@
/**
* GenerationContext's fake
*
- * @author wang.liang
+ * @author Phillip Webb
+ * @author Stephane Nicoll
+ * @since 6.0
*/
public interface GenerationContext {
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ExecutableMode.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ExecutableMode.java
index 5ef52463e8f..6ee04575cf2 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ExecutableMode.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ExecutableMode.java
@@ -1,24 +1,28 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.springframework.aot.hint;
+import org.springframework.lang.Nullable;
+
/**
* ExecutableMode's fake
*
- * @author wang.liang
+ * @author Stephane Nicoll
+ * @since 6.0
*/
public enum ExecutableMode {
@@ -26,4 +30,8 @@ public enum ExecutableMode {
INVOKE;
+ boolean includes(@Nullable ExecutableMode other) {
+ return true;
+ }
+
}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/MemberCategory.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/MemberCategory.java
index da204fbd589..d1c47657421 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/MemberCategory.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/MemberCategory.java
@@ -1,24 +1,28 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.springframework.aot.hint;
/**
* MemberCategory's fake
*
- * @author wang.liang
+ * @author Andy Clement
+ * @author Sebastien Deleuze
+ * @author Stephane Nicoll
+ * @since 6.0
*/
public enum MemberCategory {
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ProxyHints.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ProxyHints.java
index 235f68f9200..509953be3a3 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ProxyHints.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ProxyHints.java
@@ -1,24 +1,26 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.springframework.aot.hint;
/**
* ProxyHints's fake
*
- * @author wang.liang
+ * @author Stephane Nicoll
+ * @since 6.0
*/
public class ProxyHints {
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ReflectionHints.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ReflectionHints.java
index 4fb53fefcc3..d84b1b742e9 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ReflectionHints.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ReflectionHints.java
@@ -1,35 +1,38 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-package org.springframework.aot.hint;
-import org.springframework.lang.Nullable;
+package org.springframework.aot.hint;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import org.springframework.lang.Nullable;
/**
* ReflectionHints's fake
*
- * @author wang.liang
+ * @author Stephane Nicoll
+ * @author Phillip Webb
+ * @author Andy Wilkinson
+ * @since 6.0
*/
public class ReflectionHints {
// public Stream typeHints() {
-// return this.types.values().stream().map(Builder::build);
+// return null;
// }
//
// @Nullable
@@ -55,15 +58,17 @@ public ReflectionHints registerType(TypeReference type, MemberCategory... member
// }
public ReflectionHints registerType(Class> type, MemberCategory... memberCategories) {
- return null;
+ return this;
}
-// public ReflectionHints registerTypeIfPresent(@Nullable ClassLoader classLoader, String typeName, Consumer typeHint) {
+// public ReflectionHints registerTypeIfPresent(@Nullable ClassLoader classLoader,
+// String typeName, Consumer typeHint) {
// return this;
// }
- public ReflectionHints registerTypeIfPresent(@Nullable ClassLoader classLoader, String typeName, MemberCategory... memberCategories) {
- return null;
+ public ReflectionHints registerTypeIfPresent(@Nullable ClassLoader classLoader,
+ String typeName, MemberCategory... memberCategories) {
+ return this;
}
// public ReflectionHints registerTypes(Iterable types, Consumer typeHint) {
@@ -71,15 +76,15 @@ public ReflectionHints registerTypeIfPresent(@Nullable ClassLoader classLoader,
// }
public ReflectionHints registerField(Field field) {
- return null;
+ return this;
}
public ReflectionHints registerConstructor(Constructor> constructor, ExecutableMode mode) {
- return null;
+ return this;
}
public ReflectionHints registerMethod(Method method, ExecutableMode mode) {
- return null;
+ return this;
}
}
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ResourceHints.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ResourceHints.java
index 8ac66667611..1f679d84dcb 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ResourceHints.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/ResourceHints.java
@@ -1,18 +1,19 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.springframework.aot.hint;
import org.springframework.core.io.Resource;
@@ -20,7 +21,9 @@
/**
* ResourceHints's fake
*
- * @author wang.liang
+ * @author Stephane Nicoll
+ * @author Sam Brannen
+ * @since 6.0
*/
public class ResourceHints {
@@ -38,11 +41,6 @@ public class ResourceHints {
// }
//
// public ResourceHints registerPattern(@Nullable Consumer resourceHint) {
-// ResourcePatternHints.Builder builder = new ResourcePatternHints.Builder();
-// if (resourceHint != null) {
-// resourceHint.accept(builder);
-// }
-// this.resourcePatternHints.add(builder.build());
// return this;
// }
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHints.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHints.java
index 195d2721f75..4bb99528d1d 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHints.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHints.java
@@ -1,24 +1,27 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.springframework.aot.hint;
/**
* RuntimeHints's fake
*
- * @author wang.liang
+ * @author Stephane Nicoll
+ * @author Janne Valkealahti
+ * @since 6.0
*/
public class RuntimeHints {
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHintsRegistrar.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHintsRegistrar.java
index 54e2bc7e036..caf9898d155 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHintsRegistrar.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/RuntimeHintsRegistrar.java
@@ -1,18 +1,19 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.springframework.aot.hint;
import org.springframework.lang.Nullable;
@@ -20,7 +21,9 @@
/**
* RuntimeHintsRegistrar's fake
*
- * @author wang.liang
+ * @author Brian Clozel
+ * @author Stephane Nicoll
+ * @since 6.0
*/
@FunctionalInterface
public interface RuntimeHintsRegistrar {
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/SerializationHints.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/SerializationHints.java
index 5d38a4dda62..9a0a7bf5ce3 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/SerializationHints.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/SerializationHints.java
@@ -1,18 +1,19 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.springframework.aot.hint;
import java.io.Serializable;
@@ -20,7 +21,9 @@
/**
* SerializationHints's fake
*
- * @author wang.liang
+ * @author Stephane Nicoll
+ * @since 6.0
+ * @see Serializable
*/
public class SerializationHints {
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/TypeReference.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/TypeReference.java
index 767303a8465..69463bbba32 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/TypeReference.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/aot/hint/TypeReference.java
@@ -1,28 +1,30 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-package org.springframework.aot.hint;
-import org.springframework.lang.Nullable;
+package org.springframework.aot.hint;
import java.util.List;
+import org.springframework.lang.Nullable;
+
/**
* TypeReference's fake
*
- * @author wang.liang
+ * @author Stephane Nicoll
+ * @since 6.0
*/
public interface TypeReference {
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java
index 9279acbaff0..c1d8ffcc346 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotContribution.java
@@ -1,18 +1,19 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.springframework.beans.factory.aot;
import org.springframework.aot.generate.GenerationContext;
@@ -20,7 +21,10 @@
/**
* BeanRegistrationAotContribution's fake
*
- * @author wang.liang
+ * @author Phillip Webb
+ * @author Stephane Nicoll
+ * @since 6.0
+ * @see BeanRegistrationAotProcessor
*/
@FunctionalInterface
public interface BeanRegistrationAotContribution {
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotProcessor.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotProcessor.java
index 91b3645a0ae..d83519f2cfe 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotProcessor.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationAotProcessor.java
@@ -1,18 +1,19 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.springframework.beans.factory.aot;
import org.springframework.beans.factory.support.RegisteredBean;
@@ -21,7 +22,9 @@
/**
* BeanRegistrationAotProcessor's fake
*
- * @author wang.liang
+ * @author Phillip Webb
+ * @author Stephane Nicoll
+ * @since 6.0
*/
@FunctionalInterface
public interface BeanRegistrationAotProcessor {
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCode.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCode.java
index 530607cd9a1..4fe0eb4aab1 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCode.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCode.java
@@ -1,24 +1,26 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.springframework.beans.factory.aot;
/**
* BeanRegistrationCode's fake
*
- * @author wang.liang
+ * @author Phillip Webb
+ * @since 6.0
*/
public interface BeanRegistrationCode {
diff --git a/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/support/RegisteredBean.java b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/support/RegisteredBean.java
index b2282348b18..e698f6554e9 100644
--- a/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/support/RegisteredBean.java
+++ b/spring-framework-fake-for-java8/src/main/java/org/springframework/beans/factory/support/RegisteredBean.java
@@ -1,33 +1,35 @@
/*
- * Copyright 1999-2019 Seata.io Group.
+ * Copyright 2002-2022 the original author or authors.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * https://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
+
package org.springframework.beans.factory.support;
+import java.lang.reflect.Executable;
+import java.util.function.Supplier;
+
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanDefinitionHolder;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.core.ResolvableType;
import org.springframework.lang.Nullable;
-import java.lang.reflect.Executable;
-import java.util.function.Supplier;
-
/**
* RegisteredBean's fake
*
- * @author wang.liang
+ * @author Phillip Webb
+ * @since 6.0
*/
public final class RegisteredBean {
diff --git a/style/seata_suppressions.xml b/style/seata_suppressions.xml
index eb7923380da..a933135d00b 100644
--- a/style/seata_suppressions.xml
+++ b/style/seata_suppressions.xml
@@ -31,4 +31,6 @@
files="[\\/]antlr[\\/]mysql[\\/]antlr[\\/]"/>
+
\ No newline at end of file
From dfffb5b7db83224df5a46bc8778b67880f83de96 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com>
Date: Fri, 31 Mar 2023 17:13:50 +0800
Subject: [PATCH 32/32] style
---
.licenserc.yaml | 1 +
changes/en-us/develop.md | 2 +-
changes/zh-cn/develop.md | 2 +-
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.licenserc.yaml b/.licenserc.yaml
index 699f39beee0..d295560cf1f 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -75,6 +75,7 @@ header:
- 'ext/apm-seata-skywalking-plugin/config/agent.config'
- 'server/src/main/resources/lua/redislocker/redislock.lua'
- 'server/src/main/resources/banner.txt'
+ - '**/org/springframework/**'
comment: on-failure
diff --git a/changes/en-us/develop.md b/changes/en-us/develop.md
index 97b136f8c99..515d1d033ef 100644
--- a/changes/en-us/develop.md
+++ b/changes/en-us/develop.md
@@ -3,7 +3,7 @@ Add changes here for all PR submitted to the develop branch.
### feature:
-- [[#xxx](https://github.com/seata/seata/pull/xxx)] support xxx
+- [[#5476](https://github.com/seata/seata/pull/5476)] First support `native-image` for `seata-client`
### bugfix:
- [[#5194](https://github.com/seata/seata/pull/5194)] fix wrong keyword order for oracle when creating a table
diff --git a/changes/zh-cn/develop.md b/changes/zh-cn/develop.md
index 96b0746fd20..6b116a4ebb5 100644
--- a/changes/zh-cn/develop.md
+++ b/changes/zh-cn/develop.md
@@ -3,7 +3,7 @@
### feature:
-- [[#xxx](https://github.com/seata/seata/pull/xxx)] 支持 xxx
+- [[#5476](https://github.com/seata/seata/pull/5476)] seata客户端,首次支持 `native-image`
### bugfix:
- [[#5194](https://github.com/seata/seata/pull/5194)] 修复使用Oracle作为服务端DB存储时的建表失败问题