Skip to content

Commit 4e1639a

Browse files
author
SolonCode
committed
将FileService和GitService迁移至service子包;控制器参数使用@Body注解并结合Reactive方式改进MCP错误处理
1 parent b30ff24 commit 4e1639a

4 files changed

Lines changed: 27 additions & 10 deletions

File tree

soloncode-cli/src/main/java/org/noear/solon/codecli/portal/web/WebController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import org.noear.solon.annotation.*;
2727
import org.noear.solon.codecli.config.AgentFlags;
2828
import org.noear.solon.codecli.command.builtin.*;
29+
import org.noear.solon.codecli.portal.web.service.FileService;
30+
import org.noear.solon.codecli.portal.web.service.GitService;
2931
import org.noear.solon.core.handle.Context;
3032
import org.noear.solon.core.handle.Result;
3133
import org.noear.solon.core.handle.UploadedFile;

soloncode-cli/src/main/java/org/noear/solon/codecli/portal/web/WebSettingsController.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
import java.time.Duration;
7676
import java.util.*;
7777
import java.util.List;
78+
import java.util.concurrent.atomic.AtomicReference;
7879

7980
/**
8081
* Web 设置控制器 —— SolonCode Web UI 的设置管理 HTTP 入口。
@@ -782,9 +783,9 @@ public Result mcpServersToggle(@Param("name") String name, @Param("enabled") boo
782783
*/
783784
@Post
784785
@Mapping("/web/settings/mcp/servers/check")
785-
public Result mcpServersCheck(Context ctx) {
786+
public Result mcpServersCheck(String json) {
786787
try {
787-
ONode root = ONode.ofJson(ctx.body());
788+
ONode root = ONode.ofJson(json);
788789
String type = root.get("type").getString();
789790
if (type == null || type.isEmpty()) type = "stdio";
790791

@@ -842,10 +843,22 @@ public Result mcpServersCheck(Context ctx) {
842843
}
843844

844845
McpClientProvider client = builder.build();
846+
AtomicReference<Throwable> errorRef = new AtomicReference<>();
845847
try {
846848
// 通过 getTools() 触发 MCP 初始化握手,验证连接有效性
847-
client.getTools();
849+
client.getClient().listTools()
850+
.doOnError(err -> {
851+
errorRef.set(err);
852+
})
853+
.block();
854+
848855
return Result.succeed("连接成功:MCP 初始化握手完成(" + type + ")");
856+
} catch (Exception e) {
857+
if (errorRef.get() != null) {
858+
throw errorRef.get();
859+
} else {
860+
throw e;
861+
}
849862
} finally {
850863
client.close();
851864
}
@@ -858,7 +871,7 @@ public Result mcpServersCheck(Context ctx) {
858871
return Result.failure("连接超时,请检查地址是否可达");
859872
} catch (java.io.IOException e) {
860873
return Result.failure("连接失败: " + e.getMessage());
861-
} catch (Exception e) {
874+
} catch (Throwable e) {
862875
return Result.failure("检测失败: " + e.getMessage());
863876
}
864877
}
@@ -1170,8 +1183,8 @@ public Result<List<Map>> openapiServers() throws Exception {
11701183
*/
11711184
@Post
11721185
@Mapping("/web/settings/openapi/servers/add")
1173-
public Result openapiServersAdd(Context ctx) throws Exception {
1174-
ONode root = ONode.ofJson(ctx.body());
1186+
public Result openapiServersAdd(@Body String json) throws Exception {
1187+
ONode root = ONode.ofJson(json);
11751188
String name = root.get("name").getString();
11761189
String apiBaseUrl = root.get("apiBaseUrl").getString();
11771190

@@ -1226,8 +1239,8 @@ public Result openapiServersAdd(Context ctx) throws Exception {
12261239
*/
12271240
@Post
12281241
@Mapping("/web/settings/openapi/servers/update")
1229-
public Result openapiServersUpdate(Context ctx) throws Exception {
1230-
ONode root = ONode.ofJson(ctx.body());
1242+
public Result openapiServersUpdate(@Body String json) throws Exception {
1243+
ONode root = ONode.ofJson(json);
12311244
String name = root.get("name").getString();
12321245
String originalName = root.get("originalName").getString();
12331246

soloncode-cli/src/main/java/org/noear/solon/codecli/portal/web/FileService.java renamed to soloncode-cli/src/main/java/org/noear/solon/codecli/portal/web/service/FileService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.noear.solon.codecli.portal.web;
16+
package org.noear.solon.codecli.portal.web.service;
1717

18+
import org.noear.solon.codecli.portal.web.WebController;
1819
import org.noear.solon.core.handle.Result;
1920

2021
import java.io.BufferedReader;

soloncode-cli/src/main/java/org/noear/solon/codecli/portal/web/GitService.java renamed to soloncode-cli/src/main/java/org/noear/solon/codecli/portal/web/service/GitService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.noear.solon.codecli.portal.web;
16+
package org.noear.solon.codecli.portal.web.service;
1717

1818
import org.noear.solon.ai.agent.AgentSession;
1919
import org.noear.solon.ai.chat.ChatModel;
2020
import org.noear.solon.ai.harness.HarnessEngine;
2121
import org.noear.solon.ai.agent.react.ReActAgent;
22+
import org.noear.solon.codecli.portal.web.WebController;
2223
import org.noear.solon.core.handle.Result;
2324
import org.slf4j.Logger;
2425
import org.slf4j.LoggerFactory;

0 commit comments

Comments
 (0)