mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 16:53:04 +08:00
推进框架中的模块注册机制; 完善启动逻辑流程。
- 调整 InteractionFlowContext 为抽象类,实现者的模块上下文应当继承自该类。 - 完善 Agent 启动类具体逻辑 - 取消 Agent 类中 launchRunners 中关闭虚拟线程池的行为,交由JVM等待线程关闭,而非直接停止整个进程。 - 调整原hook注解分别为 BeforeExecute 、 AfterExecute,该注解用于模块抽象类的子类时可抽取重复逻辑 - 新增 Init 注解,用于执行初始化逻辑,可通过 order 属性指定顺序,默认为 0 - ModuleRegisterFactory 中新增‘加载 Init 注解标注的方法’的相关逻辑 - ModuleCheckFactory 添加对于 Init 注解的校验 - 完善了 ModuleProxyFactory 中设置代理实例的内容,可同时添加pre、post hook逻辑
This commit is contained in:
7
Partner-Api/src/test/java/TestApplication.java
Normal file
7
Partner-Api/src/test/java/TestApplication.java
Normal file
@@ -0,0 +1,7 @@
|
||||
import work.slhaf.partner.api.Agent;
|
||||
|
||||
public class TestApplication {
|
||||
public static void main(String[] args) {
|
||||
Agent.newAgent(TestApplication.class,null).run();
|
||||
}
|
||||
}
|
||||
24
Partner-Api/src/test/java/module/ModuleProxyTest.java
Normal file
24
Partner-Api/src/test/java/module/ModuleProxyTest.java
Normal file
@@ -0,0 +1,24 @@
|
||||
package module;
|
||||
|
||||
import net.bytebuddy.ByteBuddy;
|
||||
import net.bytebuddy.implementation.MethodDelegation;
|
||||
import net.bytebuddy.matcher.ElementMatchers;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import work.slhaf.partner.api.flow.abstracts.AgentInteractionModule;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
public class ModuleProxyTest {
|
||||
@Test
|
||||
public void test() throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
|
||||
Class<? extends AgentInteractionModule> clazz = new ByteBuddy().subclass(MyAgentInteractionModule.class)
|
||||
.method(ElementMatchers.isOverriddenFrom(AgentInteractionModule.class))
|
||||
.intercept(MethodDelegation.to(
|
||||
new MyModuleProxyInterceptor()
|
||||
))
|
||||
.make()
|
||||
.load(ModuleProxyTest.class.getClassLoader())
|
||||
.getLoaded();
|
||||
clazz.getConstructor().newInstance().execute(null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package module;
|
||||
|
||||
import work.slhaf.partner.api.flow.abstracts.AgentInteractionModule;
|
||||
import work.slhaf.partner.api.flow.entity.InteractionFlowContext;
|
||||
|
||||
public class MyAgentInteractionModule extends AgentInteractionModule {
|
||||
@Override
|
||||
public void execute(InteractionFlowContext context) {
|
||||
System.out.println("MyAgentInteractionModule");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package module;
|
||||
|
||||
import net.bytebuddy.implementation.bind.annotation.*;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
public class MyModuleProxyInterceptor {
|
||||
public MyModuleProxyInterceptor() {}
|
||||
|
||||
@RuntimeType
|
||||
public Object intercept(@Origin Method method, @AllArguments Object[] allArguments, @SuperCall Callable<?> zuper, @This Object proxy) throws Exception {
|
||||
System.out.println("22222");
|
||||
Object res = zuper.call();
|
||||
System.out.println("11111");
|
||||
return res;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user