diff --git a/framework/dependency/pom.xml b/framework/dependency/pom.xml index f44511604..a76f5a504 100644 --- a/framework/dependency/pom.xml +++ b/framework/dependency/pom.xml @@ -55,6 +55,7 @@ 1.18.2 1.2.25 1.2.83 + 2.0.60 32.0.1-jre portable-1.8.4 1.18.36 @@ -465,6 +466,11 @@ fastjson ${fastjson.version} + + com.alibaba.fastjson2 + fastjson2 + ${fastjson2.version} + com.fasterxml.jackson.core jackson-annotations diff --git a/framework/fel/java/services/tool-service/src/test/java/modelengine/fel/tool/support/HttpToolTest.java b/framework/fel/java/services/tool-service/src/test/java/modelengine/fel/tool/support/HttpToolTest.java index 09bd77022..d0607be26 100644 --- a/framework/fel/java/services/tool-service/src/test/java/modelengine/fel/tool/support/HttpToolTest.java +++ b/framework/fel/java/services/tool-service/src/test/java/modelengine/fel/tool/support/HttpToolTest.java @@ -25,6 +25,7 @@ import modelengine.fitframework.util.IoUtils; import modelengine.fitframework.util.MapBuilder; import modelengine.fitframework.util.StringUtils; +import modelengine.fitframework.util.TypeUtils; import modelengine.fitframework.value.ValueFetcher; import org.junit.jupiter.api.AfterAll; @@ -34,6 +35,7 @@ import java.io.IOException; import java.io.InputStream; +import java.lang.reflect.Type; import java.net.ServerSocket; import java.net.URL; import java.util.HashMap; @@ -124,6 +126,12 @@ private static Tool createTool(Tool.Info info) { return factory.create(info, toolMetadata); } + private static Map deserializeJsonObject(String json) { + ObjectSerializer jsonSerializer = new JacksonObjectSerializer(null, null, null, true); + Type objectType = TypeUtils.parameterized(Map.class, new Type[] {String.class, Object.class}); + return jsonSerializer.deserialize(json, objectType); + } + @Test @DisplayName("测试返回值为 Map 成功") void shouldReturnMap() { @@ -186,7 +194,8 @@ void BasicShouldReturnOk() { Tool.Info info = readToolInfo("basic-auth.json"); Tool tool = createTool(info); - boolean result = cast(tool.execute("{\"name\":\"testuser\", \"pwd\":\"testpass\"}")); + Map args = deserializeJsonObject("{\"name\":\"testuser\", \"pwd\":\"testpass\"}"); + boolean result = cast(tool.execute(args)); assertThat(result).isEqualTo(true); } @@ -196,7 +205,8 @@ void ApiKeyShouldReturnOk() { Tool.Info info = readToolInfo("api-key-auth.json"); Tool tool = createTool(info); - boolean result = cast(tool.execute("{\"name\":\"ApiKey\", \"pwd\":\"ApiKeyValue\"}")); + Map args = deserializeJsonObject("{\"name\":\"ApiKey\", \"pwd\":\"ApiKeyValue\"}"); + boolean result = cast(tool.execute(args)); assertThat(result).isEqualTo(true); } @@ -206,7 +216,8 @@ void ApiKeyQueryShouldReturnOk() { Tool.Info info = readToolInfo("api-key-query-auth.json"); Tool tool = createTool(info); - boolean result = cast(tool.execute("{\"name\":\"ApiKey\", \"pwd\":\"ApiKeyValue\"}")); + Map args = deserializeJsonObject("{\"name\":\"ApiKey\", \"pwd\":\"ApiKeyValue\"}"); + boolean result = cast(tool.execute(args)); assertThat(result).isEqualTo(true); } @@ -216,7 +227,8 @@ void BearerShouldReturnOk() { Tool.Info info = readToolInfo("bearer-auth.json"); Tool tool = createTool(info); - boolean result = cast(tool.execute("{\"name\":\"test666666666\", \"pwd\":\"invalid\"}")); + Map args = deserializeJsonObject("{\"name\":\"test666666666\", \"pwd\":\"invalid\"}"); + boolean result = cast(tool.execute(args)); assertThat(result).isEqualTo(true); } -} \ No newline at end of file +} diff --git a/framework/fit/java/fit-api/src/main/java/modelengine/fitframework/value/ValueFetcher.java b/framework/fit/java/fit-api/src/main/java/modelengine/fitframework/value/ValueFetcher.java index 4e9f21d30..f087b00ff 100644 --- a/framework/fit/java/fit-api/src/main/java/modelengine/fitframework/value/ValueFetcher.java +++ b/framework/fit/java/fit-api/src/main/java/modelengine/fitframework/value/ValueFetcher.java @@ -40,6 +40,9 @@ public interface ValueFetcher { * +---------------------+--------------+---------------------+ * * 任意输入对象都可以转换为键值对的形式。 + *

注意:当 {@code object} 为 {@link String} 时,默认按普通字符串处理,不会自动解析 JSON 文本。 + * 如果需要从 JSON 字符串中取值,请调用方先使用 {@link modelengine.fitframework.serialization.ObjectSerializer} + * 将其反序列化为对象,再调用本方法。

* * @param object 表示指定对象的 {@link Object}。 * @param propertyPath 表示待获取属性的路径的 {@link String}。 diff --git a/framework/fit/java/fit-api/src/main/java/modelengine/fitframework/value/ValueSetter.java b/framework/fit/java/fit-api/src/main/java/modelengine/fitframework/value/ValueSetter.java index ba55b6e86..ebd31dc87 100644 --- a/framework/fit/java/fit-api/src/main/java/modelengine/fitframework/value/ValueSetter.java +++ b/framework/fit/java/fit-api/src/main/java/modelengine/fitframework/value/ValueSetter.java @@ -41,6 +41,9 @@ public interface ValueSetter { * +---------------------+--------------+-------+----------------------+ * * 任意输入对象都可以转换为键值对的形式。 + *

注意:当 {@code object} 为 {@link String} 时,默认按普通字符串处理,不会自动解析 JSON 文本。 + * 如果需要在 JSON 字符串上设置属性,请调用方先使用 {@link modelengine.fitframework.serialization.ObjectSerializer} + * 将其反序列化为对象,再调用本方法。

* * @param object 表示指定对象的 {@link Object}。 * @param propertyPath 表示待替换属性的路径的 {@link String}。 diff --git a/framework/fit/java/fit-builtin/plugins/fit-value-fastjson/pom.xml b/framework/fit/java/fit-builtin/plugins/fit-value-fastjson/pom.xml index 8b21e0b64..7890d3aca 100644 --- a/framework/fit/java/fit-builtin/plugins/fit-value-fastjson/pom.xml +++ b/framework/fit/java/fit-builtin/plugins/fit-value-fastjson/pom.xml @@ -17,11 +17,6 @@ https://github.com/ModelEngine-Group/fit-framework - - - 1.2.83 - - @@ -35,9 +30,8 @@ - com.alibaba - fastjson - ${fastjson.version} + com.alibaba.fastjson2 + fastjson2 diff --git a/framework/fit/java/fit-builtin/plugins/fit-value-fastjson/src/main/java/modelengine/fit/value/fastjson/FastJsonValueHandler.java b/framework/fit/java/fit-builtin/plugins/fit-value-fastjson/src/main/java/modelengine/fit/value/fastjson/FastJsonValueHandler.java index c54bb2cb9..3073a83f3 100644 --- a/framework/fit/java/fit-builtin/plugins/fit-value-fastjson/src/main/java/modelengine/fit/value/fastjson/FastJsonValueHandler.java +++ b/framework/fit/java/fit-builtin/plugins/fit-value-fastjson/src/main/java/modelengine/fit/value/fastjson/FastJsonValueHandler.java @@ -6,7 +6,7 @@ package modelengine.fit.value.fastjson; -import com.alibaba.fastjson.JSONPath; +import com.alibaba.fastjson2.JSONPath; import modelengine.fitframework.annotation.Component; import modelengine.fitframework.util.StringUtils;