Skip to content

Commit e08cb48

Browse files
CodeCasterXclaude
andcommitted
fix: 修复 HttpToolTest 中 JSON 字符串处理方式并完善 API 文档
修改 HttpToolTest 测试类,将 Tool.execute() 的字符串参数改为使用 ObjectSerializer 反序列化后的 Map 对象,避免依赖 fastjson 的自动 JSON 解析行为。 同时在 ValueFetcher 和 ValueSetter 的 JavaDoc 中明确说明:当参数为 String 时, 默认按普通字符串处理,不会自动解析 JSON 文本。如需从 JSON 字符串中取值或设置属性, 调用方应先使用 ObjectSerializer 将其反序列化为对象。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 2d80f21 commit e08cb48

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

framework/fel/java/services/tool-service/src/test/java/modelengine/fel/tool/support/HttpToolTest.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import modelengine.fitframework.util.IoUtils;
2626
import modelengine.fitframework.util.MapBuilder;
2727
import modelengine.fitframework.util.StringUtils;
28+
import modelengine.fitframework.util.TypeUtils;
2829
import modelengine.fitframework.value.ValueFetcher;
2930

3031
import org.junit.jupiter.api.AfterAll;
@@ -34,6 +35,7 @@
3435

3536
import java.io.IOException;
3637
import java.io.InputStream;
38+
import java.lang.reflect.Type;
3739
import java.net.ServerSocket;
3840
import java.net.URL;
3941
import java.util.HashMap;
@@ -124,6 +126,12 @@ private static Tool createTool(Tool.Info info) {
124126
return factory.create(info, toolMetadata);
125127
}
126128

129+
private static Map<String, Object> deserializeJsonObject(String json) {
130+
ObjectSerializer jsonSerializer = new JacksonObjectSerializer(null, null, null, true);
131+
Type objectType = TypeUtils.parameterized(Map.class, new Type[] {String.class, Object.class});
132+
return jsonSerializer.deserialize(json, objectType);
133+
}
134+
127135
@Test
128136
@DisplayName("测试返回值为 Map 成功")
129137
void shouldReturnMap() {
@@ -186,7 +194,8 @@ void BasicShouldReturnOk() {
186194
Tool.Info info = readToolInfo("basic-auth.json");
187195
Tool tool = createTool(info);
188196

189-
boolean result = cast(tool.execute("{\"name\":\"testuser\", \"pwd\":\"testpass\"}"));
197+
Map<String, Object> args = deserializeJsonObject("{\"name\":\"testuser\", \"pwd\":\"testpass\"}");
198+
boolean result = cast(tool.execute(args));
190199
assertThat(result).isEqualTo(true);
191200
}
192201

@@ -196,7 +205,8 @@ void ApiKeyShouldReturnOk() {
196205
Tool.Info info = readToolInfo("api-key-auth.json");
197206
Tool tool = createTool(info);
198207

199-
boolean result = cast(tool.execute("{\"name\":\"ApiKey\", \"pwd\":\"ApiKeyValue\"}"));
208+
Map<String, Object> args = deserializeJsonObject("{\"name\":\"ApiKey\", \"pwd\":\"ApiKeyValue\"}");
209+
boolean result = cast(tool.execute(args));
200210
assertThat(result).isEqualTo(true);
201211
}
202212

@@ -206,7 +216,8 @@ void ApiKeyQueryShouldReturnOk() {
206216
Tool.Info info = readToolInfo("api-key-query-auth.json");
207217
Tool tool = createTool(info);
208218

209-
boolean result = cast(tool.execute("{\"name\":\"ApiKey\", \"pwd\":\"ApiKeyValue\"}"));
219+
Map<String, Object> args = deserializeJsonObject("{\"name\":\"ApiKey\", \"pwd\":\"ApiKeyValue\"}");
220+
boolean result = cast(tool.execute(args));
210221
assertThat(result).isEqualTo(true);
211222
}
212223

@@ -216,7 +227,8 @@ void BearerShouldReturnOk() {
216227
Tool.Info info = readToolInfo("bearer-auth.json");
217228
Tool tool = createTool(info);
218229

219-
boolean result = cast(tool.execute("{\"name\":\"test666666666\", \"pwd\":\"invalid\"}"));
230+
Map<String, Object> args = deserializeJsonObject("{\"name\":\"test666666666\", \"pwd\":\"invalid\"}");
231+
boolean result = cast(tool.execute(args));
220232
assertThat(result).isEqualTo(true);
221233
}
222-
}
234+
}

framework/fit/java/fit-api/src/main/java/modelengine/fitframework/value/ValueFetcher.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ public interface ValueFetcher {
4040
* +---------------------+--------------+---------------------+
4141
* </pre>
4242
* 任意输入对象都可以转换为键值对的形式。
43+
* <p><strong>注意:</strong>当 {@code object} 为 {@link String} 时,默认按普通字符串处理,不会自动解析 JSON 文本。
44+
* 如果需要从 JSON 字符串中取值,请调用方先使用 {@link modelengine.fitframework.serialization.ObjectSerializer}
45+
* 将其反序列化为对象,再调用本方法。</p>
4346
*
4447
* @param object 表示指定对象的 {@link Object}。
4548
* @param propertyPath 表示待获取属性的路径的 {@link String}。

framework/fit/java/fit-api/src/main/java/modelengine/fitframework/value/ValueSetter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ public interface ValueSetter {
4141
* +---------------------+--------------+-------+----------------------+
4242
* </pre>
4343
* 任意输入对象都可以转换为键值对的形式。
44+
* <p><strong>注意:</strong>当 {@code object} 为 {@link String} 时,默认按普通字符串处理,不会自动解析 JSON 文本。
45+
* 如果需要在 JSON 字符串上设置属性,请调用方先使用 {@link modelengine.fitframework.serialization.ObjectSerializer}
46+
* 将其反序列化为对象,再调用本方法。</p>
4447
*
4548
* @param object 表示指定对象的 {@link Object}。
4649
* @param propertyPath 表示待替换属性的路径的 {@link String}。

0 commit comments

Comments
 (0)