From ad58c0cc7cfa2eb33be967578c543587d1118352 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Tue, 16 Dec 2025 21:02:29 +0800 Subject: [PATCH] refactor(LocalRunnerClient): allow injecting action watch path Context: The hardcoded action watch path made LocalRunnerClient difficult to test and tightened it to a specific runtime layout. Injecting the watch path improves testability and allows the runner to work in different runtime environments. --- .../java/work/slhaf/partner/common/Constant.java | 2 +- .../core/action/runner/LocalRunnerClient.java | 14 ++++++++++---- .../src/test/java/experimental/SystemTest.java | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Partner-Main/src/main/java/work/slhaf/partner/common/Constant.java b/Partner-Main/src/main/java/work/slhaf/partner/common/Constant.java index 4ca7bb11..36d0ab3a 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/common/Constant.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/common/Constant.java @@ -3,7 +3,7 @@ package work.slhaf.partner.common; public final class Constant { public static final class Path { - public static final String DATA = "./data"; + public static final String DATA = "data"; public static final String MEMORY_DATA = DATA + "/memory"; public static final String ACTION_PROGRAM = DATA + "/action"; public static final String TMP_ACTION_DIR_LOCAL = ACTION_PROGRAM + "/tmp"; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java index fd2185ed..212cc7ad 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java @@ -5,7 +5,7 @@ import com.alibaba.fastjson2.JSONObject; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; - +import org.jetbrains.annotations.Nullable; import work.slhaf.partner.core.action.entity.McpData; import work.slhaf.partner.core.action.entity.MetaAction; import work.slhaf.partner.core.action.entity.MetaActionInfo; @@ -24,6 +24,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; +import java.util.concurrent.atomic.AtomicInteger; import static work.slhaf.partner.common.Constant.Path.ACTION_PROGRAM; import static work.slhaf.partner.common.Constant.Path.TMP_ACTION_DIR_LOCAL; @@ -31,9 +32,9 @@ import static work.slhaf.partner.common.Constant.Path.TMP_ACTION_DIR_LOCAL; @Slf4j public class LocalRunnerClient extends RunnerClient { - public LocalRunnerClient(Map existedMetaActions, ExecutorService executor) { + public LocalRunnerClient(Map existedMetaActions, ExecutorService executor, @Nullable String actionWatchPath) { super(existedMetaActions, executor); - ActionWatchService watchService = new ActionWatchService(); + ActionWatchService watchService = new ActionWatchService(actionWatchPath); watchService.launch(); } @@ -149,9 +150,14 @@ public class LocalRunnerClient extends RunnerClient { private class ActionWatchService { private final HashMap registeredPaths = new HashMap<>(); + private final String actionWatchPath; + + private ActionWatchService(String actionWatchPath) { + this.actionWatchPath = actionWatchPath; + } private void launch() { - Path path = Path.of(ACTION_PROGRAM); + Path path = Path.of(actionWatchPath != null ? actionWatchPath : ACTION_PROGRAM); scanActions(path.toFile()); launchActionDirectoryWatcher(path); } diff --git a/Partner-Main/src/test/java/experimental/SystemTest.java b/Partner-Main/src/test/java/experimental/SystemTest.java index fe2200b3..86982bd2 100644 --- a/Partner-Main/src/test/java/experimental/SystemTest.java +++ b/Partner-Main/src/test/java/experimental/SystemTest.java @@ -41,7 +41,7 @@ public class SystemTest { void localRunnerClientTest() { Map existedMetaActions = new HashMap<>(); ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor(); - RunnerClient client = new LocalRunnerClient(existedMetaActions, executor); + RunnerClient client = new LocalRunnerClient(existedMetaActions, executor, null); JSONObject res = client.listSysDependencies(); System.out.println(res.toString()); }