From 6281470eeb5a982f3bc73c5ca51c73c45ee0b8a7 Mon Sep 17 00:00:00 2001 From: lizhimins <707364882@qq.com> Date: Tue, 31 Mar 2026 11:27:47 +0800 Subject: [PATCH] [ISSUE #10234] Completely remove fastjson dependency --- WORKSPACE | 1 - common/pom.xml | 4 -- pom.xml | 6 --- remoting/BUILD.bazel | 1 - .../RemotingSerializableCompatTest.java | 43 +------------------ 5 files changed, 2 insertions(+), 53 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index 328c43995c0..d7b1ef83a32 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -40,7 +40,6 @@ load("@rules_jvm_external//:defs.bzl", "maven_install") maven_install( artifacts = [ "junit:junit:4.13.2", - "com.alibaba:fastjson:1.2.76", "com.alibaba.fastjson2:fastjson2:2.0.59", "org.hamcrest:hamcrest-library:1.3", "io.netty:netty-all:4.1.65.Final", diff --git a/common/pom.xml b/common/pom.xml index eec71184143..768320b8c44 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -32,10 +32,6 @@ - - com.alibaba - fastjson - com.alibaba.fastjson2 fastjson2 diff --git a/pom.xml b/pom.xml index f28beaf9e1a..2f15a103035 100644 --- a/pom.xml +++ b/pom.xml @@ -104,7 +104,6 @@ 4.1.130.Final 2.0.53.Final 1.83 - 1.2.83 2.0.59 3.20.0-GA 4.2.2 @@ -689,11 +688,6 @@ jar ${bcpkix-jdk18on.version} - - com.alibaba - fastjson - ${fastjson.version} - com.alibaba.fastjson2 fastjson2 diff --git a/remoting/BUILD.bazel b/remoting/BUILD.bazel index 62273e5e9d0..2d91b53c9e3 100644 --- a/remoting/BUILD.bazel +++ b/remoting/BUILD.bazel @@ -52,7 +52,6 @@ java_library( "//common", "//:test_deps", "@maven//:org_objenesis_objenesis", - "@maven//:com_alibaba_fastjson", "@maven//:com_alibaba_fastjson2_fastjson2", "@maven//:com_google_code_gson_gson", "@maven//:com_google_guava_guava", diff --git a/remoting/src/test/java/org/apache/rocketmq/remoting/protocol/RemotingSerializableCompatTest.java b/remoting/src/test/java/org/apache/rocketmq/remoting/protocol/RemotingSerializableCompatTest.java index 35c1c7b8912..e39a9fc321b 100644 --- a/remoting/src/test/java/org/apache/rocketmq/remoting/protocol/RemotingSerializableCompatTest.java +++ b/remoting/src/test/java/org/apache/rocketmq/remoting/protocol/RemotingSerializableCompatTest.java @@ -17,12 +17,11 @@ package org.apache.rocketmq.remoting.protocol; -import com.alibaba.fastjson.annotation.JSONField; +import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.JSON; import org.apache.rocketmq.remoting.protocol.body.BatchAck; import org.junit.Test; import org.objenesis.ObjenesisStd; -import org.reflections.Reflections; import java.lang.reflect.Array; import java.lang.reflect.Field; @@ -41,34 +40,8 @@ import java.util.concurrent.atomic.AtomicLong; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; public class RemotingSerializableCompatTest { - - @Test - public void testCompatibilityCheck() { - Reflections reflections = new Reflections("org.apache.rocketmq.remoting.protocol"); - Set> subTypes = reflections.getSubTypesOf(RemotingSerializable.class); - - for (Class clazz : subTypes) { - if (clazz.isInterface() || Modifier.isAbstract(clazz.getModifiers()) || clazz.getSimpleName().endsWith("Test") - || clazz.isAnonymousClass() || clazz.getName().contains("$")) { - continue; - } - try { - RemotingSerializable instance; - try { - instance = clazz.getDeclaredConstructor().newInstance(); - } catch (NoSuchMethodException e) { - instance = allocateInstance(clazz); - } - fillDefaultFields(instance, clazz); - assertTrue(checkCompatible(instance, clazz)); - } catch (Exception e) { - System.err.printf("Class %s: incompatible, error: %s\n", clazz.getName(), e.getMessage()); - } - } - } @Test public void testCompatibilityCheckWithBitSet() { @@ -406,19 +379,7 @@ private boolean isPrimitiveOrWrapper(final Class clazz) { clazz == Float.class || clazz == Double.class; } - - private boolean checkCompatible(final Object original, final Class clazz) { - String json = com.alibaba.fastjson.JSON.toJSONString(original); - Object deserialized; - try { - deserialized = com.alibaba.fastjson2.JSON.parseObject(json, clazz); - } catch (Exception e) { - System.err.printf("Deserialization failed for %s: %s\n", clazz.getName(), e.getMessage()); - return false; - } - return checkCompatible(original, deserialized, clazz.getSimpleName(), new HashMap<>()); - } - + private T allocateInstance(final Class clazz) { return new ObjenesisStd().newInstance(clazz); }