From 09ea0bef3a4bc5d432994ef0b42e93a617547411 Mon Sep 17 00:00:00 2001 From: xzc Date: Fri, 8 May 2026 12:03:51 +0800 Subject: [PATCH] fix: upgrade jsonschema-generator to 5.0.0 for Spring AI 2.0.0-M4 compatibility Resolves the dependency conflict between AgentScope and Spring AI 2.0.0-M4 caused by incompatible versions of com.github.victools:jsonschema-generator. Spring AI 2.0.0-M4 requires jsonschema-generator 5.0.0 which uses Jackson 3.x (tools.jackson.core). When both libraries coexist on the classpath, Maven resolves to v5.0.0, causing NoSuchMethodError in AgentScope's schema generation code that was compiled against v4.38.0 (Jackson 2.x). Changes: - Upgrade jsonschema-generator from 4.38.0 to 5.0.0 - Add tools.jackson.core:jackson-databind dependency (Jackson 3.x) - Adapt JsonSchemaUtils to bridge between Jackson 3.x (used by schema generator) and Jackson 2.x (used by the rest of AgentScope) via JSON string serialization - Update ToolSchemaModuleTest to use tools.jackson.databind.JsonNode Closes #1271 --- agentscope-core/pom.xml | 6 ++++++ .../io/agentscope/core/util/JsonSchemaUtils.java | 8 ++++---- .../core/tool/ToolSchemaModuleTest.java | 2 +- agentscope-dependencies-bom/pom.xml | 16 +++++++++------- agentscope-distribution/agentscope-all/pom.xml | 6 ++++++ 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/agentscope-core/pom.xml b/agentscope-core/pom.xml index 54bf500a7..b4bb5e580 100644 --- a/agentscope-core/pom.xml +++ b/agentscope-core/pom.xml @@ -78,6 +78,12 @@ jsonschema-module-jackson + + + tools.jackson.core + jackson-databind + + com.fasterxml.jackson.datatype diff --git a/agentscope-core/src/main/java/io/agentscope/core/util/JsonSchemaUtils.java b/agentscope-core/src/main/java/io/agentscope/core/util/JsonSchemaUtils.java index f15efe598..8166f2f7e 100644 --- a/agentscope-core/src/main/java/io/agentscope/core/util/JsonSchemaUtils.java +++ b/agentscope-core/src/main/java/io/agentscope/core/util/JsonSchemaUtils.java @@ -95,9 +95,9 @@ public class JsonSchemaUtils { */ public static Map generateSchemaFromClass(Class clazz) { try { - JsonNode schemaNode = schemaGenerator.generateSchema(clazz); + String schemaJson = schemaGenerator.generateSchema(clazz).toString(); return JsonUtils.getJsonCodec() - .convertValue(schemaNode, new TypeReference>() {}); + .fromJson(schemaJson, new TypeReference>() {}); } catch (Exception e) { throw new RuntimeException("Failed to generate JSON schema for " + clazz.getName(), e); } @@ -130,9 +130,9 @@ public static Map generateSchemaFromJsonNode(JsonNode schema) { */ public static Map generateSchemaFromType(Type type) { try { - JsonNode schemaNode = schemaGenerator.generateSchema(type); + String schemaJson = schemaGenerator.generateSchema(type).toString(); return JsonUtils.getJsonCodec() - .convertValue(schemaNode, new TypeReference>() {}); + .fromJson(schemaJson, new TypeReference>() {}); } catch (Exception e) { throw new RuntimeException( "Failed to generate JSON schema for " + type.getTypeName(), e); diff --git a/agentscope-core/src/test/java/io/agentscope/core/tool/ToolSchemaModuleTest.java b/agentscope-core/src/test/java/io/agentscope/core/tool/ToolSchemaModuleTest.java index 4cefb082d..deb20ea45 100644 --- a/agentscope-core/src/test/java/io/agentscope/core/tool/ToolSchemaModuleTest.java +++ b/agentscope-core/src/test/java/io/agentscope/core/tool/ToolSchemaModuleTest.java @@ -20,7 +20,6 @@ import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import com.fasterxml.jackson.databind.JsonNode; import com.github.victools.jsonschema.generator.OptionPreset; import com.github.victools.jsonschema.generator.SchemaGenerator; import com.github.victools.jsonschema.generator.SchemaGeneratorConfigBuilder; @@ -28,6 +27,7 @@ import java.util.List; import java.util.stream.StreamSupport; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; /** * Tests for {@link ToolSchemaModule}. diff --git a/agentscope-dependencies-bom/pom.xml b/agentscope-dependencies-bom/pom.xml index 9e7244174..ccf1f2751 100644 --- a/agentscope-dependencies-bom/pom.xml +++ b/agentscope-dependencies-bom/pom.xml @@ -105,7 +105,8 @@ 4.0.3 3.2.0-BETA 3.0.0 - 4.38.0 + 5.0.0 + 3.0.4 2.6 3.20.0 1.9.24 @@ -432,12 +433,6 @@ com.github.victools jsonschema-generator ${jsonschema-generator.version} - - - com.fasterxml.jackson.core - jackson-core - - @@ -447,6 +442,13 @@ ${jsonschema-generator.version} + + + tools.jackson.core + jackson-databind + ${jackson3.version} + + org.apache.commons diff --git a/agentscope-distribution/agentscope-all/pom.xml b/agentscope-distribution/agentscope-all/pom.xml index f2a519789..9dac02fd5 100644 --- a/agentscope-distribution/agentscope-all/pom.xml +++ b/agentscope-distribution/agentscope-all/pom.xml @@ -251,6 +251,12 @@ jsonschema-module-jackson + + + tools.jackson.core + jackson-databind + + com.networknt