diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 893e79de..e47da802 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -3,12 +3,12 @@ - - + + diff --git a/.idea/misc.xml b/.idea/misc.xml index 42ae0cec..98b28166 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,8 +1,9 @@ - + + diff --git a/Partner-Api/src/main/java/work/slhaf/partner/api/Agent.java b/Partner-Api/src/main/java/work/slhaf/partner/api/Agent.java new file mode 100644 index 00000000..f67d6aee --- /dev/null +++ b/Partner-Api/src/main/java/work/slhaf/partner/api/Agent.java @@ -0,0 +1,7 @@ +package work.slhaf.partner.api; + +public class Agent { + public static void run(Class clazz) { + + } +} diff --git a/Partner-Api/src/main/java/work/slhaf/partner/api/AgentRegisterFactory.java b/Partner-Api/src/main/java/work/slhaf/partner/api/AgentRegisterFactory.java new file mode 100644 index 00000000..b07afa9d --- /dev/null +++ b/Partner-Api/src/main/java/work/slhaf/partner/api/AgentRegisterFactory.java @@ -0,0 +1,16 @@ +package work.slhaf.partner.api; + +import work.slhaf.partner.api.common.entity.AgentRegisterContext; + +public class AgentRegisterFactory { + + private AgentRegisterContext context = new AgentRegisterContext(); + + private AgentRegisterFactory(){} + + public static void launch(){ + //TODO 通过调用module与capability的注册逻辑,完成完整的注册过程,需要考虑hook机制 + AgentRegisterFactory factory = new AgentRegisterFactory(); + } + +} diff --git a/Partner-Api/src/main/java/work/slhaf/partner/api/capability/BaseCoordinateManager.java b/Partner-Api/src/main/java/work/slhaf/partner/api/capability/BaseCoordinateManager.java deleted file mode 100644 index 5878c704..00000000 --- a/Partner-Api/src/main/java/work/slhaf/partner/api/capability/BaseCoordinateManager.java +++ /dev/null @@ -1,5 +0,0 @@ -package work.slhaf.partner.api.capability; - - -public class BaseCoordinateManager { -} diff --git a/Partner-Api/src/main/java/work/slhaf/partner/api/capability/CapabilityRegisterFactory.java b/Partner-Api/src/main/java/work/slhaf/partner/api/capability/CapabilityRegisterFactory.java index 22fc6217..a8f9cf56 100644 --- a/Partner-Api/src/main/java/work/slhaf/partner/api/capability/CapabilityRegisterFactory.java +++ b/Partner-Api/src/main/java/work/slhaf/partner/api/capability/CapabilityRegisterFactory.java @@ -6,8 +6,7 @@ import org.reflections.util.ClasspathHelper; import org.reflections.util.ConfigurationBuilder; import work.slhaf.partner.api.capability.annotation.*; import work.slhaf.partner.api.capability.exception.*; -import work.slhaf.partner.api.capability.module.CapabilityHolder; -import work.slhaf.partner.api.capability.util.CapabilityUtil; +import work.slhaf.partner.api.common.util.AgentUtil; import java.lang.reflect.*; import java.net.URL; @@ -15,13 +14,11 @@ import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; -import static work.slhaf.partner.api.capability.util.CapabilityUtil.methodSignature; +import static work.slhaf.partner.api.common.util.AgentUtil.methodSignature; public final class CapabilityRegisterFactory { - public static volatile CapabilityRegisterFactory capabilityRegisterFactory; - private Reflections reflections; private final HashMap> methodsRouterTable = new HashMap<>(); private final HashMap> coordinatedMethodsRouterTable = new HashMap<>(); @@ -33,26 +30,20 @@ public final class CapabilityRegisterFactory { private CapabilityRegisterFactory() { } - public static CapabilityRegisterFactory getInstance() { - if (capabilityRegisterFactory == null) { - synchronized (CapabilityRegisterFactory.class) { - if (capabilityRegisterFactory == null) { - capabilityRegisterFactory = new CapabilityRegisterFactory(); - } - } - } - return capabilityRegisterFactory; - } - - + //TODO 需决定是否分离检查与路由表生成、注入逻辑,如果分离,可进一步添加hook点,但目前似乎并非必要 public void registerCapabilities(String scannerPath) { setBasicVariable(scannerPath); //检查可注册能力是否正常 statusCheck(); + //扫描现有Capability, value为键,返回函数路由表, 函数路由表内部通过反射调用对应core的方法 + generateRouterTable(); + //通过动态代理注入能力 + injectCapability(); + } + + private void generateRouterTable() { generateMethodsRouterTable(); generateCoordinatedMethodsRouterTable(); - //扫描现有Capability, value为键,返回函数路由表, 函数路由表内部通过反射调用对应core的方法 - injectCapability(); } private void generateCoordinatedMethodsRouterTable() { @@ -82,9 +73,9 @@ public final class CapabilityRegisterFactory { private HashMap getCognationManagerInstances() throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException { HashMap map = new HashMap<>(); - for (Class c : reflections.getSubTypesOf(BaseCoordinateManager.class)) { - Constructor constructor = c.getDeclaredConstructor(); - BaseCoordinateManager instance = constructor.newInstance(); + for (Class c : reflections.getTypesAnnotatedWith(CoordinateManager.class)) { + Constructor constructor = c.getDeclaredConstructor(); + Object instance = constructor.newInstance(); Arrays.stream(c.getMethods()) .filter(method -> method.isAnnotationPresent(Coordinated.class)) @@ -186,8 +177,8 @@ public final class CapabilityRegisterFactory { private void checkInjectCapability() { reflections.getFieldsAnnotatedWith(InjectCapability.class).forEach(field -> { - if (!CapabilityHolder.class.isAssignableFrom(field.getDeclaringClass())) { - throw new UnMatchedCapabilityException("InjectCapability 注解只能用于CapabilityHolder的子类"); + if (!field.getDeclaringClass().isAssignableFrom(CapabilityHolder.class)) { + throw new UnMatchedCapabilityException("InjectCapability 注解只能用于 CapabilityHolder 注解所在类"); } }); } @@ -223,7 +214,7 @@ public final class CapabilityRegisterFactory { }) .collect(Collectors.toSet()); if (!methodsToCoordinated.isEmpty()) { - Set> subTypesOfAbsCM = reflections.getSubTypesOf(BaseCoordinateManager.class); + Set> subTypesOfAbsCM = reflections.getTypesAnnotatedWith(CoordinateManager.class); Set methodsCoordinated = getMethodsCoordinated(subTypesOfAbsCM); if (!methodsCoordinated.equals(methodsToCoordinated)) { // 找出缺少的协调方法 @@ -245,9 +236,9 @@ public final class CapabilityRegisterFactory { } } - private Set getMethodsCoordinated(Set> subTypesOfAbsCM) { + private Set getMethodsCoordinated(Set> classes) { Set methodsCoordinated = new HashSet<>(); - for (Class cm : subTypesOfAbsCM) { + for (Class cm : classes) { Method[] methods = cm.getMethods(); for (Method method : methods) { if (method.isAnnotationPresent(Coordinated.class)) { @@ -280,11 +271,11 @@ public final class CapabilityRegisterFactory { private LackRecord checkMethodsMatched(List methodsWithAnnotation, List capabilityMethods) { Set collectedMethodsWithAnnotation = methodsWithAnnotation.stream() .filter(method -> !method.isAnnotationPresent(ToCoordinated.class)) - .map(CapabilityUtil::methodSignature) + .map(AgentUtil::methodSignature) .collect(Collectors.toSet()); Set collectedCapabilityMethods = capabilityMethods.stream() .filter(method -> !method.isAnnotationPresent(ToCoordinated.class)) - .map(CapabilityUtil::methodSignature) + .map(AgentUtil::methodSignature) .collect(Collectors.toSet()); return checkMethodsMatched(collectedMethodsWithAnnotation, collectedCapabilityMethods); } diff --git a/Partner-Api/src/main/java/work/slhaf/partner/api/capability/annotation/CapabilityHolder.java b/Partner-Api/src/main/java/work/slhaf/partner/api/capability/annotation/CapabilityHolder.java new file mode 100644 index 00000000..f08210de --- /dev/null +++ b/Partner-Api/src/main/java/work/slhaf/partner/api/capability/annotation/CapabilityHolder.java @@ -0,0 +1,9 @@ +package work.slhaf.partner.api.capability.annotation; + +import java.lang.annotation.*; + +@Inherited +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface CapabilityHolder { +} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/CapabilityMethod.java b/Partner-Api/src/main/java/work/slhaf/partner/api/capability/annotation/CoordinateManager.java similarity index 63% rename from Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/CapabilityMethod.java rename to Partner-Api/src/main/java/work/slhaf/partner/api/capability/annotation/CoordinateManager.java index 2365986f..de50b271 100644 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/CapabilityMethod.java +++ b/Partner-Api/src/main/java/work/slhaf/partner/api/capability/annotation/CoordinateManager.java @@ -1,11 +1,11 @@ -package work.slhaf.demo.capability.annotation; +package work.slhaf.partner.api.capability.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -public @interface CapabilityMethod { +public @interface CoordinateManager { } diff --git a/Partner-Api/src/main/java/work/slhaf/partner/api/capability/module/CapabilityHolder.java b/Partner-Api/src/main/java/work/slhaf/partner/api/capability/module/CapabilityHolder.java deleted file mode 100644 index 3068cb8c..00000000 --- a/Partner-Api/src/main/java/work/slhaf/partner/api/capability/module/CapabilityHolder.java +++ /dev/null @@ -1,9 +0,0 @@ -package work.slhaf.partner.api.capability.module; - -import work.slhaf.partner.api.capability.CapabilityRegisterFactory; - -public abstract class CapabilityHolder { - protected CapabilityHolder() { - CapabilityRegisterFactory.getInstance().registerModule(this); - } -} diff --git a/Partner-Api/src/main/java/work/slhaf/partner/api/capability/util/CapabilityUtil.java b/Partner-Api/src/main/java/work/slhaf/partner/api/capability/util/CapabilityUtil.java deleted file mode 100644 index f1f85727..00000000 --- a/Partner-Api/src/main/java/work/slhaf/partner/api/capability/util/CapabilityUtil.java +++ /dev/null @@ -1,19 +0,0 @@ -package work.slhaf.partner.api.capability.util; - -import java.lang.reflect.Method; - -public final class CapabilityUtil { - public static String methodSignature(Method method) { - StringBuilder sb = new StringBuilder(); - sb.append("("); - sb.append(method.getReturnType().getName()).append(" "); - sb.append(method.getName()).append("("); - Class[] paramTypes = method.getParameterTypes(); - for (int i = 0; i < paramTypes.length; i++) { - sb.append(paramTypes[i].getName()); - if (i < paramTypes.length - 1) sb.append(","); - } - sb.append(")").append(")"); - return sb.toString(); - } -} diff --git a/Partner-Api/src/main/java/work/slhaf/partner/api/common/entity/AgentRegisterContext.java b/Partner-Api/src/main/java/work/slhaf/partner/api/common/entity/AgentRegisterContext.java new file mode 100644 index 00000000..b5569b1d --- /dev/null +++ b/Partner-Api/src/main/java/work/slhaf/partner/api/common/entity/AgentRegisterContext.java @@ -0,0 +1,10 @@ +package work.slhaf.partner.api.common.entity; + +import lombok.Data; +import org.reflections.Reflections; + +@Data +public class AgentRegisterContext { + //TODO 抽取出必要的注册工厂共用的上下文 + private Reflections reflections; +} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/util/CapabilityUtil.java b/Partner-Api/src/main/java/work/slhaf/partner/api/common/util/AgentUtil.java similarity index 88% rename from Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/util/CapabilityUtil.java rename to Partner-Api/src/main/java/work/slhaf/partner/api/common/util/AgentUtil.java index dc13868a..b703831f 100644 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/util/CapabilityUtil.java +++ b/Partner-Api/src/main/java/work/slhaf/partner/api/common/util/AgentUtil.java @@ -1,8 +1,8 @@ -package work.slhaf.demo.capability.util; +package work.slhaf.partner.api.common.util; import java.lang.reflect.Method; -public final class CapabilityUtil { +public final class AgentUtil { public static String methodSignature(Method method) { StringBuilder sb = new StringBuilder(); sb.append("("); diff --git a/Partner-Api/src/main/java/work/slhaf/partner/api/module/ModuleRegisterFactory.java b/Partner-Api/src/main/java/work/slhaf/partner/api/module/ModuleRegisterFactory.java new file mode 100644 index 00000000..54f8d1b5 --- /dev/null +++ b/Partner-Api/src/main/java/work/slhaf/partner/api/module/ModuleRegisterFactory.java @@ -0,0 +1,4 @@ +package work.slhaf.partner.api.module; + +public class ModuleRegisterFactory { +} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/Main.java b/Partner-Capability-Demo/src/main/java/work/slhaf/Main.java deleted file mode 100644 index 293e4faf..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/Main.java +++ /dev/null @@ -1,12 +0,0 @@ -package work.slhaf; - -import work.slhaf.demo.TestModule; -import work.slhaf.demo.capability.CapabilityRegisterFactory; - -public class Main { - public static void main(String[] args) throws ClassNotFoundException { - TestModule testModule = new TestModule(); - CapabilityRegisterFactory.getInstance().registerCapabilities(Main.class.getPackage().getName()); - testModule.execute(); - } -} \ No newline at end of file diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/BaseCognationManager.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/BaseCognationManager.java deleted file mode 100644 index 0a1e3db0..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/BaseCognationManager.java +++ /dev/null @@ -1,4 +0,0 @@ -package work.slhaf.demo.capability; - -public class BaseCognationManager { -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/CapabilityRegisterFactory.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/CapabilityRegisterFactory.java deleted file mode 100644 index c8926510..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/CapabilityRegisterFactory.java +++ /dev/null @@ -1,373 +0,0 @@ -package work.slhaf.demo.capability; - -import org.reflections.Reflections; -import org.reflections.scanners.Scanners; -import org.reflections.util.ClasspathHelper; -import org.reflections.util.ConfigurationBuilder; -import work.slhaf.demo.capability.annotation.*; -import work.slhaf.demo.capability.exception.*; -import work.slhaf.demo.capability.module.CapabilityHolder; -import work.slhaf.demo.capability.util.CapabilityUtil; - -import java.lang.reflect.*; -import java.net.URL; -import java.util.*; -import java.util.function.Function; -import java.util.stream.Collectors; - -import static work.slhaf.demo.capability.util.CapabilityUtil.methodSignature; - -public final class CapabilityRegisterFactory { - - public static volatile CapabilityRegisterFactory capabilityRegisterFactory; - - private Reflections reflections; - private final HashMap> methodsRouterTable = new HashMap<>(); - private final HashMap> coordinatedMethodsRouterTable = new HashMap<>(); - private final HashMap, Object> capabilityCoreInstances = new HashMap<>(); - private final HashMap, Object> capabilityHolderInstances = new HashMap<>(); - private Set> cores; - private Set> capabilities; - - private CapabilityRegisterFactory() { - } - - public static CapabilityRegisterFactory getInstance() { - if (capabilityRegisterFactory == null) { - synchronized (CapabilityRegisterFactory.class) { - if (capabilityRegisterFactory == null) { - capabilityRegisterFactory = new CapabilityRegisterFactory(); - } - } - } - return capabilityRegisterFactory; - } - - - public void registerCapabilities(String scannerPath) { - setBasicVariable(scannerPath); - //检查可注册能力是否正常 - statusCheck(); - generateMethodsRouterTable(); - generateCoordinatedMethodsRouterTable(); - //扫描现有Capability, value为键,返回函数路由表, 函数路由表内部通过反射调用对应core的方法 - injectCapability(); - } - - private void generateCoordinatedMethodsRouterTable() { - Set methodsAnnotatedWith = reflections.getMethodsAnnotatedWith(Coordinated.class); - if (methodsAnnotatedWith.isEmpty()) { - return; - } - try { - //获取所有CM实例 - HashMap cognationManagerInstances = getCognationManagerInstances(); - methodsAnnotatedWith.forEach(method -> { - String key = method.getAnnotation(Coordinated.class).capability() + "." + methodSignature(method); - Function function = args -> { - try { - return method.invoke(cognationManagerInstances.get(key), args); - } catch (IllegalAccessException | InvocationTargetException e) { - throw new RuntimeException(e); - } - }; - coordinatedMethodsRouterTable.put(key, function); - }); - } catch (Exception e) { - throw new FactoryExecuteFailedException("创建协调方法路由表出错", e); - } - - } - - private HashMap getCognationManagerInstances() throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException { - HashMap map = new HashMap<>(); - for (Class c : reflections.getSubTypesOf(BaseCognationManager.class)) { - Constructor constructor = c.getDeclaredConstructor(); - BaseCognationManager instance = constructor.newInstance(); - - Arrays.stream(c.getMethods()) - .filter(method -> method.isAnnotationPresent(Coordinated.class)) - .forEach(method -> { - String key = method.getAnnotation(Coordinated.class).capability() + "." + methodSignature(method); - map.put(key, instance); - }); - } - return map; - } - - private void setBasicVariable(String scannerPath) { - setReflections(scannerPath); - setAnnotatedClasses(); - } - - private void setAnnotatedClasses() { - cores = reflections.getTypesAnnotatedWith(CapabilityCore.class); - capabilities = reflections.getTypesAnnotatedWith(Capability.class); - } - - private void setReflections(String scannerPath) { - //后续可替换为根据传入的启动类获取路径 - Collection urls = ClasspathHelper.forPackage(scannerPath); - reflections = new Reflections( - new ConfigurationBuilder() - .setUrls(urls) - .setScanners( - Scanners.TypesAnnotated, - Scanners.MethodsAnnotated, - Scanners.SubTypes, - Scanners.FieldsAnnotated - ) - ); - } - - private void generateMethodsRouterTable() { - //扫描`@Capability`与`@CapabilityMethod`注解的类与方法 - //将`capabilityValue.methodSignature`作为key,函数对象为通过反射拿到的core实例对应的方法 - cores.forEach(core -> Arrays.stream(core.getMethods()) - .filter(method -> method.isAnnotationPresent(CapabilityMethod.class)) - .forEach(method -> { - Function function = args -> { - try { - return method.invoke(capabilityCoreInstances.get(core), args); - } catch (IllegalAccessException | InvocationTargetException e) { - throw new RuntimeException(e); - } - }; - String key = core.getAnnotation(CapabilityCore.class).value() + "." + methodSignature(method); - if (methodsRouterTable.containsKey(key)) { - throw new DuplicateMethodException("重复注册能力方法: " + core.getPackage().getName() + "." + core.getSimpleName() + "#" + method.getName()); - } - methodsRouterTable.put(key, function); - })); - } - - - private void injectCapability() { - //获取现有的`@InjectCapability`注解所在字段,并获取对应的类,通过动态代理注入对象 - Set fields = reflections.getFieldsAnnotatedWith(InjectCapability.class); - //在动态代理内部,通过函数路由表调用对应的方法 - createProxy(fields); - } - - private void createProxy(Set fields) { - try { - for (Field field : fields) { - field.setAccessible(true); - Class fieldType = field.getType(); - Object instance = Proxy.newProxyInstance( - fieldType.getClassLoader(), - new Class[]{fieldType}, - (proxy, method, objects) -> { - if (method.isAnnotationPresent(ToCoordinated.class)) { - String key = method.getDeclaringClass().getAnnotation(Capability.class).value() + "." + methodSignature(method); - return coordinatedMethodsRouterTable.get(key).apply(objects); - } - String key = fieldType.getAnnotation(Capability.class).value() + "." + methodSignature(method); - return methodsRouterTable.get(key).apply(objects); - } - ); - field.set(capabilityHolderInstances.get(field.getDeclaringClass()), instance); - } - } catch (Exception e) { - throw new ProxySetFailedException("代理设置失败", e); - } - } - - private void statusCheck() { - capabilityHolderCheck(); - checkCountAndCapabilities(); - checkCapabilityMethods(); - checkCoordinatedMethods(); - checkInjectCapability(); - //检查完毕,设置core的实例类 - setCapabilityCoreInstances(); - } - - private void checkInjectCapability() { - reflections.getFieldsAnnotatedWith(InjectCapability.class).forEach(field -> { - if (!CapabilityHolder.class.isAssignableFrom(field.getDeclaringClass())) { - throw new UnMatchedCapabilityException("InjectCapability 注解只能用于CapabilityHolder的子类"); - } - }); - } - - private void capabilityHolderCheck() { - if (capabilityHolderInstances.isEmpty()) { - throw new EmptyCapabilityHolderException("Capability 持有者实例为空"); - } - } - - private void setCapabilityCoreInstances() { - try { - for (Class core : cores) { - Constructor constructor = core.getDeclaredConstructor(); - constructor.setAccessible(true); - capabilityCoreInstances.put(core, constructor.newInstance()); - } - } catch (InvocationTargetException | NoSuchMethodException | InstantiationException | - IllegalAccessException e) { - throw new CoreInstancesCreateFailedException("core实例创建失败"); - } - } - - private void checkCoordinatedMethods() { - //检查各个capability中是否含有ToCoordinated注解 - //如果含有,则需要查找AbstractCognationManager的子类,看这里是否有对应的Coordinated注解所在方法 - Set methodsToCoordinated = capabilities.stream() - .flatMap(capability -> Arrays.stream(capability.getDeclaredMethods())) - .filter(method -> method.isAnnotationPresent(ToCoordinated.class)) - .map(method -> { - String capabilityValue = method.getDeclaringClass().getAnnotation(Capability.class).value(); - return capabilityValue + "." + methodSignature(method); - }) - .collect(Collectors.toSet()); - if (!methodsToCoordinated.isEmpty()) { - Set> subTypesOfAbsCM = reflections.getSubTypesOf(BaseCognationManager.class); - Set methodsCoordinated = getMethodsCoordinated(subTypesOfAbsCM); - if (!methodsCoordinated.equals(methodsToCoordinated)) { - // 找出缺少的协调方法 - Set missingMethods = new HashSet<>(methodsToCoordinated); - missingMethods.removeAll(methodsCoordinated); - - // 找出多余的协调方法 - Set extraMethods = new HashSet<>(methodsCoordinated); - extraMethods.removeAll(methodsToCoordinated); - - // 抛出异常或记录错误 - if (!missingMethods.isEmpty()) { - throw new UnMatchedCoordinatedMethodException("缺少协调方法: " + String.join(", ", missingMethods)); - } - if (!extraMethods.isEmpty()) { - throw new UnMatchedCoordinatedMethodException("发现多余的协调方法: " + String.join(", ", extraMethods)); - } - } - } - } - - private Set getMethodsCoordinated(Set> subTypesOfAbsCM) { - Set methodsCoordinated = new HashSet<>(); - for (Class cm : subTypesOfAbsCM) { - Method[] methods = cm.getMethods(); - for (Method method : methods) { - if (method.isAnnotationPresent(Coordinated.class)) { - methodsCoordinated.add(method.getAnnotation(Coordinated.class).capability() + "." + methodSignature(method)); - } - } - } - return methodsCoordinated; - } - - - private void checkCapabilityMethods() { - HashMap> capabilitiesMethods = getCapabilityMethods(capabilities); - StringBuilder sb = new StringBuilder(); - for (Class core : cores) { - List methodsWithAnnotation = Arrays.stream(core.getMethods()) - .filter(method -> method.isAnnotationPresent(CapabilityMethod.class)) - .toList(); - List capabilityMethods = capabilitiesMethods.get(core.getAnnotation(CapabilityCore.class).value()); - LackRecord lackRecord = checkMethodsMatched(methodsWithAnnotation, capabilityMethods); - if (lackRecord.hasNotEmptyRecord()) { - sb.append(lackRecord.toLackErrorMsg(core.getAnnotation(CapabilityCore.class).value())); - } - } - if (!sb.isEmpty()) { - throw new UnMatchedCapabilityMethodException(sb.toString()); - } - } - - private LackRecord checkMethodsMatched(List methodsWithAnnotation, List capabilityMethods) { - Set collectedMethodsWithAnnotation = methodsWithAnnotation.stream() - .filter(method -> !method.isAnnotationPresent(ToCoordinated.class)) - .map(CapabilityUtil::methodSignature) - .collect(Collectors.toSet()); - Set collectedCapabilityMethods = capabilityMethods.stream() - .filter(method -> !method.isAnnotationPresent(ToCoordinated.class)) - .map(CapabilityUtil::methodSignature) - .collect(Collectors.toSet()); - return checkMethodsMatched(collectedMethodsWithAnnotation, collectedCapabilityMethods); - } - - private LackRecord checkMethodsMatched(Set collectedMethodsWithAnnotation, Set collectedCapabilityMethods) { - List coreLack = new ArrayList<>(); - List capLack = new ArrayList<>(); - // 找出 core 中多余的方法 - for (String coreSig : collectedMethodsWithAnnotation) { - if (!collectedCapabilityMethods.contains(coreSig)) { - capLack.add(coreSig); - } - } - // 找出 capability 中多余的方法 - for (String capSig : collectedCapabilityMethods) { - if (!collectedMethodsWithAnnotation.contains(capSig)) { - coreLack.add(capSig); - } - } - return new LackRecord(coreLack, capLack); - - } - - - private HashMap> getCapabilityMethods(Set> capabilities) { - HashMap> capabilityMethods = new HashMap<>(); - capabilities.forEach(capability -> { - capabilityMethods.put(capability.getAnnotation(Capability.class).value(), Arrays.stream(capability.getMethods()).toList()); - }); - return capabilityMethods; - } - - private void checkCountAndCapabilities() { - if (cores.size() != capabilities.size()) { - throw new UnMatchedCapabilityException("Capability 注册异常: 已存在的CapabilityCore与Capability数量不匹配!"); - } - if (!checkValuesMatched(cores, capabilities)) { - throw new UnMatchedCapabilityException("Capability 注册异常: 已存在的CapabilityCore与Capability不匹配!"); - } - } - - - private boolean checkValuesMatched(Set> cores, Set> capabilities) { - Set coresValues = new HashSet<>(); - Set capabilitiesValues = new HashSet<>(); - for (Class core : cores) { - CapabilityCore annotation = core.getAnnotation(CapabilityCore.class); - if (annotation != null) { - if (coresValues.contains(annotation.value())) { - throw new DuplicateCapabilityException(String.format("Capability 注册异常: 重复的Capability核心: %s", annotation.value())); - } - coresValues.add(annotation.value()); - } - } - for (Class capability : capabilities) { - Capability annotation = capability.getAnnotation(Capability.class); - if (annotation != null) { - if (capabilitiesValues.contains(annotation.value())) { - throw new DuplicateCapabilityException(String.format("Capability 注册异常: 重复的Capability接口: %s", annotation.value())); - } - capabilitiesValues.add(annotation.value()); - } - } - return coresValues.equals(capabilitiesValues); - } - - public void registerModule(CapabilityHolder capabilityHolder) { - capabilityHolderInstances.put(capabilityHolder.getClass(), capabilityHolder); - } - - record LackRecord(List coreLack, List capLack) { - public boolean hasNotEmptyRecord() { - return !coreLack.isEmpty() || !capLack.isEmpty(); - } - - public String toLackErrorMsg(String capabilityName) { - StringBuilder sb = new StringBuilder("\n").append(capabilityName).append("\n"); - if (!coreLack.isEmpty()) { - sb.append("缺少Core方法:").append("\n").append(coreLack).append("\n"); - } - if (!capLack.isEmpty()) { - sb.append("缺少Capability方法:").append("\n").append(capLack).append("\n"); - } - return sb.toString(); - } - } -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/Capability.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/Capability.java deleted file mode 100644 index 6193e7d8..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/Capability.java +++ /dev/null @@ -1,15 +0,0 @@ -package work.slhaf.demo.capability.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 用于注解能力接口,需要与`@CapabilityCore`对应的`value`一致 - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -public @interface Capability { - String value(); -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/CapabilityCore.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/CapabilityCore.java deleted file mode 100644 index 027d808a..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/CapabilityCore.java +++ /dev/null @@ -1,15 +0,0 @@ -package work.slhaf.demo.capability.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 用于注解Core服务,需标识一个value致用于核心服务发现 - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -public @interface CapabilityCore { - String value(); -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/Coordinated.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/Coordinated.java deleted file mode 100644 index 8e8f3e50..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/Coordinated.java +++ /dev/null @@ -1,15 +0,0 @@ -package work.slhaf.demo.capability.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 用于标注协调方法,`value`值需与对应的`@ToCoordinated`保持一致 - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -public @interface Coordinated { - String capability(); -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/InjectCapability.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/InjectCapability.java deleted file mode 100644 index c71c74a6..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/InjectCapability.java +++ /dev/null @@ -1,14 +0,0 @@ -package work.slhaf.demo.capability.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 用于注入`Capability` - */ -@Target(ElementType.FIELD) -@Retention(RetentionPolicy.RUNTIME) -public @interface InjectCapability { -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/ToCoordinated.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/ToCoordinated.java deleted file mode 100644 index 08add8c3..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/annotation/ToCoordinated.java +++ /dev/null @@ -1,15 +0,0 @@ -package work.slhaf.demo.capability.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 当`@Capability`所注接口中,如果存在方法需要协调多个Core服务的调用,可以通过该注解进行排除 - * value值为方法对应标识,需与协调实现处的方法标识保持一致 - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -public @interface ToCoordinated { -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/CapabilityCheckFailedException.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/CapabilityCheckFailedException.java deleted file mode 100644 index b0f43655..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/CapabilityCheckFailedException.java +++ /dev/null @@ -1,11 +0,0 @@ -package work.slhaf.demo.capability.exception; - -public class CapabilityCheckFailedException extends RuntimeException { - public CapabilityCheckFailedException(String message) { - super("Capability注册失败: " + message); - } - - public CapabilityCheckFailedException(String message, Throwable cause) { - super("Capability注册失败: " + message, cause); - } -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/CoreInstancesCreateFailedException.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/CoreInstancesCreateFailedException.java deleted file mode 100644 index 71aed8aa..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/CoreInstancesCreateFailedException.java +++ /dev/null @@ -1,11 +0,0 @@ -package work.slhaf.demo.capability.exception; - -public class CoreInstancesCreateFailedException extends FactoryExecuteFailedException{ - public CoreInstancesCreateFailedException(String message) { - super(message); - } - - public CoreInstancesCreateFailedException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/DuplicateCapabilityException.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/DuplicateCapabilityException.java deleted file mode 100644 index 6d92d16b..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/DuplicateCapabilityException.java +++ /dev/null @@ -1,11 +0,0 @@ -package work.slhaf.demo.capability.exception; - -public class DuplicateCapabilityException extends CapabilityCheckFailedException{ - public DuplicateCapabilityException(String message) { - super(message); - } - - public DuplicateCapabilityException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/DuplicateMethodException.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/DuplicateMethodException.java deleted file mode 100644 index 0866ff40..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/DuplicateMethodException.java +++ /dev/null @@ -1,11 +0,0 @@ -package work.slhaf.demo.capability.exception; - -public class DuplicateMethodException extends CapabilityCheckFailedException{ - public DuplicateMethodException(String message) { - super(message); - } - - public DuplicateMethodException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/EmptyCapabilityHolderException.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/EmptyCapabilityHolderException.java deleted file mode 100644 index f6de1273..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/EmptyCapabilityHolderException.java +++ /dev/null @@ -1,11 +0,0 @@ -package work.slhaf.demo.capability.exception; - -public class EmptyCapabilityHolderException extends CapabilityCheckFailedException{ - public EmptyCapabilityHolderException(String message) { - super(message); - } - - public EmptyCapabilityHolderException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/FactoryExecuteFailedException.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/FactoryExecuteFailedException.java deleted file mode 100644 index 93507eb2..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/FactoryExecuteFailedException.java +++ /dev/null @@ -1,11 +0,0 @@ -package work.slhaf.demo.capability.exception; - -public class FactoryExecuteFailedException extends RuntimeException { - public FactoryExecuteFailedException(String message) { - super("CapabilityRegisterFactory 执行失败: " + message); - } - - public FactoryExecuteFailedException(String message, Throwable cause) { - super("CapabilityRegisterFactory 执行失败: " + message, cause); - } -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/ProxySetFailedException.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/ProxySetFailedException.java deleted file mode 100644 index ca4e33f6..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/ProxySetFailedException.java +++ /dev/null @@ -1,11 +0,0 @@ -package work.slhaf.demo.capability.exception; - -public class ProxySetFailedException extends FactoryExecuteFailedException{ - public ProxySetFailedException(String message) { - super(message); - } - - public ProxySetFailedException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/UnMatchedCapabilityException.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/UnMatchedCapabilityException.java deleted file mode 100644 index f0467df7..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/UnMatchedCapabilityException.java +++ /dev/null @@ -1,11 +0,0 @@ -package work.slhaf.demo.capability.exception; - -public class UnMatchedCapabilityException extends CapabilityCheckFailedException{ - public UnMatchedCapabilityException(String message) { - super(message); - } - - public UnMatchedCapabilityException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/UnMatchedCapabilityMethodException.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/UnMatchedCapabilityMethodException.java deleted file mode 100644 index a90c6568..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/UnMatchedCapabilityMethodException.java +++ /dev/null @@ -1,11 +0,0 @@ -package work.slhaf.demo.capability.exception; - -public class UnMatchedCapabilityMethodException extends CapabilityCheckFailedException{ - public UnMatchedCapabilityMethodException(String message) { - super(message); - } - - public UnMatchedCapabilityMethodException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/UnMatchedCoordinatedMethodException.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/UnMatchedCoordinatedMethodException.java deleted file mode 100644 index 148a324f..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/exception/UnMatchedCoordinatedMethodException.java +++ /dev/null @@ -1,11 +0,0 @@ -package work.slhaf.demo.capability.exception; - -public class UnMatchedCoordinatedMethodException extends CapabilityCheckFailedException{ - public UnMatchedCoordinatedMethodException(String message) { - super(message); - } - - public UnMatchedCoordinatedMethodException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/module/CapabilityHolder.java b/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/module/CapabilityHolder.java deleted file mode 100644 index 5bd702ab..00000000 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/capability/module/CapabilityHolder.java +++ /dev/null @@ -1,9 +0,0 @@ -package work.slhaf.demo.capability.module; - -import work.slhaf.demo.capability.CapabilityRegisterFactory; - -public abstract class CapabilityHolder { - protected CapabilityHolder(){ - CapabilityRegisterFactory.getInstance().registerModule(this); - } -} diff --git a/Partner-Main/src/main/java/work/slhaf/partner/common/exception_handler/pojo/GlobalException.java b/Partner-Main/src/main/java/work/slhaf/partner/common/exception_handler/pojo/GlobalException.java index 3ed5074d..52a4e691 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/common/exception_handler/pojo/GlobalException.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/common/exception_handler/pojo/GlobalException.java @@ -3,7 +3,7 @@ package work.slhaf.partner.common.exception_handler.pojo; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; -import work.slhaf.partner.core.cognation.CognationManager; +import work.slhaf.partner.core.cognation.cognation.CognationCore; import work.slhaf.partner.core.interaction.data.context.InteractionContext; import work.slhaf.partner.core.session.SessionManager; @@ -20,7 +20,7 @@ public class GlobalException extends RuntimeException { this.data = new GlobalExceptionData(); this.data.setExceptionTime(System.currentTimeMillis()); this.data.setSessionManager(SessionManager.getInstance()); - this.data.setCognationManager(CognationManager.getInstance()); + this.data.setCognationCore(CognationCore.getInstance()); this.data.setContext(InteractionContext.getInstance()); } catch (Exception e) { log.error("[GlobalException] 捕获异常, 获取数据失败"); diff --git a/Partner-Main/src/main/java/work/slhaf/partner/common/exception_handler/pojo/GlobalExceptionData.java b/Partner-Main/src/main/java/work/slhaf/partner/common/exception_handler/pojo/GlobalExceptionData.java index 59059076..fd88a748 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/common/exception_handler/pojo/GlobalExceptionData.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/common/exception_handler/pojo/GlobalExceptionData.java @@ -3,7 +3,7 @@ package work.slhaf.partner.common.exception_handler.pojo; import lombok.Data; import lombok.EqualsAndHashCode; import work.slhaf.partner.common.serialize.PersistableObject; -import work.slhaf.partner.core.cognation.CognationManager; +import work.slhaf.partner.core.cognation.cognation.CognationCore; import work.slhaf.partner.core.interaction.data.context.InteractionContext; import work.slhaf.partner.core.session.SessionManager; @@ -21,6 +21,6 @@ public class GlobalExceptionData extends PersistableObject { protected HashMap context; protected SessionManager sessionManager; - protected CognationManager cognationManager; + protected CognationCore cognationCore; protected Long exceptionTime; } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/InteractionHub.java b/Partner-Main/src/main/java/work/slhaf/partner/core/InteractionHub.java index 26b8769a..03b65505 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/InteractionHub.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/InteractionHub.java @@ -3,7 +3,6 @@ package work.slhaf.partner.core; import lombok.Data; import lombok.ToString; import lombok.extern.slf4j.Slf4j; -import work.slhaf.partner.api.capability.CapabilityRegisterFactory; import work.slhaf.partner.common.exception_handler.GlobalExceptionHandler; import work.slhaf.partner.common.exception_handler.pojo.GlobalException; import work.slhaf.partner.core.interaction.agent_interface.TaskCallback; @@ -33,7 +32,6 @@ public class InteractionHub { interactionHub = new InteractionHub(); //加载模块 interactionHub.setInteractionModules(InteractionModulesLoader.getInstance().registerInteractionModules()); - CapabilityRegisterFactory.getInstance().registerCapabilities("work.slhaf.partner"); log.info("InteractionHub注册完毕..."); } } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/CognationManager.java b/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/CoordinatedManager.java similarity index 81% rename from Partner-Main/src/main/java/work/slhaf/partner/core/cognation/CognationManager.java rename to Partner-Main/src/main/java/work/slhaf/partner/core/cognation/CoordinatedManager.java index 6adbde57..9718de2a 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/CognationManager.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/CoordinatedManager.java @@ -1,9 +1,8 @@ package work.slhaf.partner.core.cognation; import lombok.Data; -import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; -import work.slhaf.partner.api.capability.BaseCoordinateManager; +import work.slhaf.partner.api.capability.annotation.CoordinateManager; import work.slhaf.partner.api.capability.annotation.Coordinated; import work.slhaf.partner.common.chat.constant.ChatConstant; import work.slhaf.partner.common.exception_handler.GlobalExceptionHandler; @@ -28,15 +27,15 @@ import java.util.concurrent.locks.ReentrantLock; import static work.slhaf.partner.common.util.ExtractUtil.extractUserId; -@EqualsAndHashCode(callSuper = true) @Data @Slf4j -public class CognationManager extends BaseCoordinateManager implements Serializable { +@CoordinateManager +public class CoordinatedManager implements Serializable { @Serial private static final long serialVersionUID = 1L; - private static volatile CognationManager cognationManager; + private static volatile CoordinatedManager coordinatedManager; private final Lock sliceInsertLock = new ReentrantLock(); private CognationCore cognationCore; @@ -45,22 +44,22 @@ public class CognationManager extends BaseCoordinateManager implements Serializa private PerceiveCore perceiveCore; private DispatchCore dispatchCore; - private CognationManager() { + private CoordinatedManager() { } - public static CognationManager getInstance() throws IOException, ClassNotFoundException { - if (cognationManager == null) { - synchronized (CognationManager.class) { - if (cognationManager == null) { - cognationManager = new CognationManager(); - cognationManager.setCognationCore(CognationCore.getInstance()); - cognationManager.setCores(); - log.info("[CognationManager] MemoryManager注册完毕..."); + public static CoordinatedManager getInstance() throws IOException, ClassNotFoundException { + if (coordinatedManager == null) { + synchronized (CoordinatedManager.class) { + if (coordinatedManager == null) { + coordinatedManager = new CoordinatedManager(); + coordinatedManager.setCognationCore(CognationCore.getInstance()); + coordinatedManager.setCores(); + log.info("[CoordinatedManager] MemoryManager注册完毕..."); } } } - return cognationManager; + return coordinatedManager; } private void setCores() { @@ -88,9 +87,9 @@ public class CognationManager extends BaseCoordinateManager implements Serializa //尝试更新缓存 cacheCore.updateCache(topicPath, memoryResult); } catch (Exception e) { - log.error("[CognationManager] selectMemory error: ", e); - log.error("[CognationManager] 路径: {}", topicPathStr); - log.error("[CognationManager] 主题树: {}", memoryCore.getTopicTree()); + log.error("[CoordinatedManager] selectMemory error: ", e); + log.error("[CoordinatedManager] 路径: {}", topicPathStr); + log.error("[CoordinatedManager] 主题树: {}", memoryCore.getTopicTree()); memoryResult = new MemoryResult(); memoryResult.setRelatedMemorySliceResult(new ArrayList<>()); memoryResult.setMemorySliceResult(new CopyOnWriteArrayList<>()); @@ -131,10 +130,10 @@ public class CognationManager extends BaseCoordinateManager implements Serializa cacheCore.updateUserDialogMap(memorySlice); } } catch (Exception e) { - log.error("[CognationManager] 插入记忆时出错: ", e); + log.error("[CoordinatedManager] 插入记忆时出错: ", e); GlobalExceptionHandler.writeExceptionState(new GlobalException("插入记忆时出错: " + e.getLocalizedMessage())); } - log.debug("[CognationManager] 插入切片: {}, 路径: {}", memorySlice, topicPath); + log.debug("[CoordinatedManager] 插入切片: {}, 路径: {}", memorySlice, topicPath); sliceInsertLock.unlock(); } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/cognation/CognationCore.java b/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/cognation/CognationCore.java index a6f1e2ac..b7897028 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/cognation/CognationCore.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/cognation/CognationCore.java @@ -62,6 +62,8 @@ public class CognationCore extends PersistableObject { private void connectCores(CognationCore temp) { temp.setCacheCore(CacheCore.getInstance()); + temp.setMemoryCore(MemoryCore.getInstance()); + temp.setPerceiveCore(PerceiveCore.getInstance()); } private void setupHook(CognationCore temp) { @@ -138,7 +140,7 @@ public class CognationCore extends PersistableObject { public void updateActivatedSlices(String userId, List memorySlices) { activeData.updateActivatedSlices(userId, memorySlices); - log.debug("[CognationManager] 已更新激活切片, userId: {}", userId); + log.debug("[CoordinatedManager] 已更新激活切片, userId: {}", userId); } public String getActivatedSlicesStr(String userId) { diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/submodule/cache/CacheCapability.java b/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/submodule/cache/CacheCapability.java index ae7a4dbf..03e8a009 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/submodule/cache/CacheCapability.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/submodule/cache/CacheCapability.java @@ -1,7 +1,6 @@ package work.slhaf.partner.core.cognation.submodule.cache; import work.slhaf.partner.api.capability.annotation.Capability; -import work.slhaf.partner.api.capability.annotation.CapabilityMethod; import java.time.LocalDateTime; import java.util.HashMap; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/submodule/memory/MemoryCapability.java b/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/submodule/memory/MemoryCapability.java index a3cf639a..678f8ceb 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/submodule/memory/MemoryCapability.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/submodule/memory/MemoryCapability.java @@ -1,7 +1,6 @@ package work.slhaf.partner.core.cognation.submodule.memory; import work.slhaf.partner.api.capability.annotation.Capability; -import work.slhaf.partner.api.capability.annotation.CapabilityMethod; import work.slhaf.partner.api.capability.annotation.ToCoordinated; import work.slhaf.partner.core.cognation.common.pojo.MemoryResult; import work.slhaf.partner.core.cognation.submodule.memory.pojo.MemorySlice; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/submodule/perceive/PerceiveCapability.java b/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/submodule/perceive/PerceiveCapability.java index 8b79fcdc..2c96e8f7 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/submodule/perceive/PerceiveCapability.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/cognation/submodule/perceive/PerceiveCapability.java @@ -1,7 +1,6 @@ package work.slhaf.partner.core.cognation.submodule.perceive; import work.slhaf.partner.api.capability.annotation.Capability; -import work.slhaf.partner.api.capability.annotation.CapabilityMethod; import work.slhaf.partner.core.cognation.submodule.perceive.pojo.User; @Capability(value = "perceive") diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/common/model/ActivateModel.java b/Partner-Main/src/main/java/work/slhaf/partner/module/common/model/ActivateModel.java index 05d82039..e3df4ef6 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/common/model/ActivateModel.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/common/model/ActivateModel.java @@ -14,7 +14,7 @@ import java.util.List; public interface ActivateModel { default void modelSettings() { - Model model = getModel(); + Model model = new Model(); ModelConfig modelConfig = ModelConfig.load(modelKey()); model.setBaseMessages(withAwareness() ? ResourcesUtil.Prompt.loadPromptWithSelfAwareness(modelKey(), promptModule()) : ResourcesUtil.Prompt.loadPrompt(modelKey(), promptModule())); model.setChatClient(new ChatClient(modelConfig.getBaseUrl(), modelConfig.getApikey(), modelConfig.getModel())); diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/common/model/Model.java b/Partner-Main/src/main/java/work/slhaf/partner/module/common/model/Model.java index 652f656f..82e8efe6 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/common/model/Model.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/common/model/Model.java @@ -2,17 +2,12 @@ package work.slhaf.partner.module.common.model; import lombok.Data; import work.slhaf.partner.common.chat.ChatClient; -import work.slhaf.partner.common.chat.constant.ChatConstant; -import work.slhaf.partner.common.chat.pojo.ChatResponse; import work.slhaf.partner.common.chat.pojo.Message; -import work.slhaf.partner.common.config.ModelConfig; -import work.slhaf.partner.common.util.ResourcesUtil; -import java.util.ArrayList; import java.util.List; @Data -public abstract class Model { +public class Model { protected ChatClient chatClient; protected List chatMessages; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/common/module/CoreModule.java b/Partner-Main/src/main/java/work/slhaf/partner/module/common/module/CoreModule.java index c1428f93..b877e7b0 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/common/module/CoreModule.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/common/module/CoreModule.java @@ -1,7 +1,5 @@ package work.slhaf.partner.module.common.module; -import work.slhaf.partner.core.interaction.module.InteractionFlow; - public abstract class CoreModule extends InteractionModule { } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/common/module/Module.java b/Partner-Main/src/main/java/work/slhaf/partner/module/common/module/Module.java index 6790e902..5f2284ff 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/common/module/Module.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/common/module/Module.java @@ -2,10 +2,11 @@ package work.slhaf.partner.module.common.module; import lombok.Getter; import lombok.Setter; -import work.slhaf.partner.api.capability.module.CapabilityHolder; +import work.slhaf.partner.api.capability.annotation.CapabilityHolder; import work.slhaf.partner.module.common.model.Model; -public abstract class Module extends CapabilityHolder { +@CapabilityHolder +public abstract class Module { @Getter @Setter diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/common/module/PreModule.java b/Partner-Main/src/main/java/work/slhaf/partner/module/common/module/PreModule.java index 134f83ba..98f5417a 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/common/module/PreModule.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/common/module/PreModule.java @@ -1,7 +1,6 @@ package work.slhaf.partner.module.common.module; import work.slhaf.partner.core.interaction.data.context.InteractionContext; -import work.slhaf.partner.core.interaction.module.InteractionFlow; import work.slhaf.partner.module.common.entity.AppendPromptData; import java.util.HashMap; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/selector/MemorySelector.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/selector/MemorySelector.java index 6ee867ea..9e9c0028 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/selector/MemorySelector.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/selector/MemorySelector.java @@ -5,7 +5,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import work.slhaf.partner.api.capability.annotation.InjectCapability; -import work.slhaf.partner.core.cognation.CognationManager; import work.slhaf.partner.core.cognation.cognation.CognationCapability; import work.slhaf.partner.core.cognation.common.pojo.MemoryResult; import work.slhaf.partner.core.cognation.submodule.cache.CacheCapability; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/selector/extractor/MemorySelectExtractor.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/selector/extractor/MemorySelectExtractor.java index 5fc368da..ea245275 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/selector/extractor/MemorySelectExtractor.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/selector/extractor/MemorySelectExtractor.java @@ -10,14 +10,12 @@ import work.slhaf.partner.common.chat.pojo.Message; import work.slhaf.partner.common.chat.pojo.MetaMessage; import work.slhaf.partner.common.exception_handler.GlobalExceptionHandler; import work.slhaf.partner.common.exception_handler.pojo.GlobalException; -import work.slhaf.partner.core.cognation.CognationManager; import work.slhaf.partner.core.cognation.cognation.CognationCapability; import work.slhaf.partner.core.cognation.submodule.memory.MemoryCapability; import work.slhaf.partner.core.cognation.submodule.memory.pojo.EvaluatedSlice; import work.slhaf.partner.core.interaction.data.context.InteractionContext; import work.slhaf.partner.core.session.SessionManager; import work.slhaf.partner.module.common.model.ActivateModel; -import work.slhaf.partner.module.common.model.Model; import work.slhaf.partner.module.common.model.ModelConstant; import work.slhaf.partner.module.common.module.SubModule; import work.slhaf.partner.module.modules.memory.selector.extractor.data.ExtractorInput; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/MemoryUpdater.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/MemoryUpdater.java index 792963cb..f21d99db 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/MemoryUpdater.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/MemoryUpdater.java @@ -8,14 +8,12 @@ import work.slhaf.partner.api.capability.annotation.InjectCapability; import work.slhaf.partner.common.chat.constant.ChatConstant; import work.slhaf.partner.common.chat.pojo.Message; import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor; -import work.slhaf.partner.core.cognation.CognationManager; import work.slhaf.partner.core.cognation.cognation.CognationCapability; import work.slhaf.partner.core.cognation.submodule.cache.CacheCapability; import work.slhaf.partner.core.cognation.submodule.memory.MemoryCapability; import work.slhaf.partner.core.cognation.submodule.memory.pojo.MemorySlice; import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability; import work.slhaf.partner.core.interaction.data.context.InteractionContext; -import work.slhaf.partner.core.interaction.module.InteractionFlow; import work.slhaf.partner.core.session.SessionManager; import work.slhaf.partner.module.common.module.PostModule; import work.slhaf.partner.module.modules.memory.selector.extractor.MemorySelectExtractor; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/MultiSummarizer.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/MultiSummarizer.java index ec3fbda1..ce727450 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/MultiSummarizer.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/MultiSummarizer.java @@ -7,7 +7,6 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import work.slhaf.partner.common.chat.pojo.ChatResponse; import work.slhaf.partner.module.common.model.ActivateModel; -import work.slhaf.partner.module.common.model.Model; import work.slhaf.partner.module.common.model.ModelConstant; import work.slhaf.partner.module.common.module.SubModule; import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeInput; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/SingleSummarizer.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/SingleSummarizer.java index 06987bc9..df590879 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/SingleSummarizer.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/SingleSummarizer.java @@ -9,7 +9,6 @@ import work.slhaf.partner.common.chat.pojo.ChatResponse; import work.slhaf.partner.common.chat.pojo.Message; import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor; import work.slhaf.partner.module.common.model.ActivateModel; -import work.slhaf.partner.module.common.model.Model; import work.slhaf.partner.module.common.model.ModelConstant; import work.slhaf.partner.module.common.module.SubModule; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/TotalSummarizer.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/TotalSummarizer.java index e6b43252..9219d210 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/TotalSummarizer.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/memory/updater/summarizer/TotalSummarizer.java @@ -7,7 +7,6 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import work.slhaf.partner.common.chat.pojo.ChatResponse; import work.slhaf.partner.module.common.model.ActivateModel; -import work.slhaf.partner.module.common.model.Model; import work.slhaf.partner.module.common.model.ModelConstant; import work.slhaf.partner.module.common.module.SubModule; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/selector/PerceiveSelector.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/selector/PerceiveSelector.java index 3c8eb7e7..2693c7ff 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/selector/PerceiveSelector.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/selector/PerceiveSelector.java @@ -3,7 +3,6 @@ package work.slhaf.partner.module.modules.perceive.selector; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import work.slhaf.partner.api.capability.annotation.InjectCapability; -import work.slhaf.partner.core.cognation.CognationManager; import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability; import work.slhaf.partner.core.cognation.submodule.perceive.pojo.User; import work.slhaf.partner.core.interaction.data.context.InteractionContext; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/PerceiveUpdater.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/PerceiveUpdater.java index ce6f8b4b..0c32cda4 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/PerceiveUpdater.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/PerceiveUpdater.java @@ -5,14 +5,10 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import work.slhaf.partner.api.capability.annotation.InjectCapability; import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor; -import work.slhaf.partner.core.cognation.CognationManager; import work.slhaf.partner.core.cognation.cognation.CognationCapability; import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability; import work.slhaf.partner.core.cognation.submodule.perceive.pojo.User; import work.slhaf.partner.core.interaction.data.context.InteractionContext; -import work.slhaf.partner.core.interaction.module.InteractionFlow; -import work.slhaf.partner.module.common.model.Model; -import work.slhaf.partner.module.common.model.ModelConstant; import work.slhaf.partner.module.common.module.PostModule; import work.slhaf.partner.module.modules.perceive.updater.relation_extractor.RelationExtractor; import work.slhaf.partner.module.modules.perceive.updater.relation_extractor.pojo.RelationExtractResult; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/relation_extractor/RelationExtractor.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/relation_extractor/RelationExtractor.java index 365a6189..bf17caeb 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/relation_extractor/RelationExtractor.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/relation_extractor/RelationExtractor.java @@ -5,13 +5,11 @@ import lombok.Data; import lombok.EqualsAndHashCode; import work.slhaf.partner.common.chat.pojo.ChatResponse; import work.slhaf.partner.common.chat.pojo.Message; -import work.slhaf.partner.core.cognation.CognationManager; import work.slhaf.partner.core.cognation.cognation.CognationCapability; import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability; import work.slhaf.partner.core.cognation.submodule.perceive.pojo.User; import work.slhaf.partner.core.interaction.data.context.InteractionContext; import work.slhaf.partner.module.common.model.ActivateModel; -import work.slhaf.partner.module.common.model.Model; import work.slhaf.partner.module.common.model.ModelConstant; import work.slhaf.partner.module.common.module.SubModule; import work.slhaf.partner.module.modules.perceive.updater.relation_extractor.pojo.RelationExtractInput; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/static_extractor/StaticMemoryExtractor.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/static_extractor/StaticMemoryExtractor.java index 2ceadca5..ae2906a3 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/static_extractor/StaticMemoryExtractor.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/static_extractor/StaticMemoryExtractor.java @@ -6,12 +6,10 @@ import lombok.Data; import lombok.EqualsAndHashCode; import work.slhaf.partner.api.capability.annotation.InjectCapability; import work.slhaf.partner.common.chat.pojo.ChatResponse; -import work.slhaf.partner.core.cognation.CognationManager; import work.slhaf.partner.core.cognation.cognation.CognationCapability; import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability; import work.slhaf.partner.core.interaction.data.context.InteractionContext; import work.slhaf.partner.module.common.model.ActivateModel; -import work.slhaf.partner.module.common.model.Model; import work.slhaf.partner.module.common.model.ModelConstant; import work.slhaf.partner.module.common.module.SubModule; import work.slhaf.partner.module.modules.perceive.updater.static_extractor.data.StaticMemoryExtractInput; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/process/PostprocessExecutor.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/process/PostprocessExecutor.java index 141838f8..dc9a359a 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/process/PostprocessExecutor.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/process/PostprocessExecutor.java @@ -4,10 +4,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import work.slhaf.partner.api.capability.annotation.InjectCapability; -import work.slhaf.partner.core.cognation.CognationManager; import work.slhaf.partner.core.cognation.cognation.CognationCapability; import work.slhaf.partner.core.interaction.data.context.InteractionContext; -import work.slhaf.partner.core.interaction.module.InteractionFlow; import work.slhaf.partner.module.common.module.PostModule; import java.io.IOException; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/process/PreprocessExecutor.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/process/PreprocessExecutor.java index 4112daef..8ad61760 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/process/PreprocessExecutor.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/process/PreprocessExecutor.java @@ -1,10 +1,9 @@ package work.slhaf.partner.module.modules.process; import lombok.Data; -import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; +import work.slhaf.partner.api.capability.annotation.CapabilityHolder; import work.slhaf.partner.api.capability.annotation.InjectCapability; -import work.slhaf.partner.api.capability.module.CapabilityHolder; import work.slhaf.partner.core.cognation.cognation.CognationCapability; import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability; import work.slhaf.partner.core.cognation.submodule.perceive.pojo.User; @@ -18,10 +17,10 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; -@EqualsAndHashCode(callSuper = true) @Data @Slf4j -public class PreprocessExecutor extends CapabilityHolder { +@CapabilityHolder +public class PreprocessExecutor { private static volatile PreprocessExecutor preprocessExecutor; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/task/TaskEvaluator.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/task/TaskEvaluator.java index 191b9350..cf7d4521 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/task/TaskEvaluator.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/task/TaskEvaluator.java @@ -1,9 +1,6 @@ package work.slhaf.partner.module.modules.task; import lombok.Data; -import lombok.EqualsAndHashCode; -import work.slhaf.partner.module.common.model.Model; -import work.slhaf.partner.module.common.model.ModelConstant; @Data public class TaskEvaluator { diff --git a/Partner-Capability-Demo/pom.xml b/Partner-Test-Demo/pom.xml similarity index 80% rename from Partner-Capability-Demo/pom.xml rename to Partner-Test-Demo/pom.xml index 6ab1cc4f..b06b8ca7 100644 --- a/Partner-Capability-Demo/pom.xml +++ b/Partner-Test-Demo/pom.xml @@ -9,7 +9,7 @@ 0.5.0 - Partner-Capability-Demo + Partner-Test-Demo @@ -17,6 +17,11 @@ reflections 0.10.2 + + work.slhaf + Partner-Api + 0.5.0 + diff --git a/Partner-Test-Demo/src/main/java/work/slhaf/Main.java b/Partner-Test-Demo/src/main/java/work/slhaf/Main.java new file mode 100644 index 00000000..d1303a05 --- /dev/null +++ b/Partner-Test-Demo/src/main/java/work/slhaf/Main.java @@ -0,0 +1,10 @@ +package work.slhaf; + +import work.slhaf.demo.TestModule; + +public class Main { + public static void main(String[] args) { + TestModule testModule = new TestModule(); + testModule.execute(); + } +} \ No newline at end of file diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/MyCognationManager.java b/Partner-Test-Demo/src/main/java/work/slhaf/demo/MyCognationManager.java similarity index 50% rename from Partner-Capability-Demo/src/main/java/work/slhaf/demo/MyCognationManager.java rename to Partner-Test-Demo/src/main/java/work/slhaf/demo/MyCognationManager.java index 28ac9d6e..27afa1c2 100644 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/MyCognationManager.java +++ b/Partner-Test-Demo/src/main/java/work/slhaf/demo/MyCognationManager.java @@ -1,11 +1,13 @@ package work.slhaf.demo; -import work.slhaf.demo.capability.BaseCognationManager; -import work.slhaf.demo.capability.annotation.Coordinated; + +import work.slhaf.partner.api.capability.annotation.CoordinateManager; +import work.slhaf.partner.api.capability.annotation.Coordinated; import java.util.List; -public class MyCognationManager extends BaseCognationManager { +@CoordinateManager +public class MyCognationManager { @Coordinated(capability = "memory") public List selectMemory(String path) { diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/TestModule.java b/Partner-Test-Demo/src/main/java/work/slhaf/demo/TestModule.java similarity index 59% rename from Partner-Capability-Demo/src/main/java/work/slhaf/demo/TestModule.java rename to Partner-Test-Demo/src/main/java/work/slhaf/demo/TestModule.java index 79a503e1..9167f529 100644 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/TestModule.java +++ b/Partner-Test-Demo/src/main/java/work/slhaf/demo/TestModule.java @@ -1,10 +1,11 @@ package work.slhaf.demo; import work.slhaf.demo.ability.MemoryCapability; -import work.slhaf.demo.capability.annotation.InjectCapability; -import work.slhaf.demo.capability.module.CapabilityHolder; +import work.slhaf.partner.api.capability.annotation.CapabilityHolder; +import work.slhaf.partner.api.capability.annotation.InjectCapability; -public class TestModule extends CapabilityHolder { +@CapabilityHolder +public class TestModule { @InjectCapability private MemoryCapability capability; diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/ability/CacheCapability.java b/Partner-Test-Demo/src/main/java/work/slhaf/demo/ability/CacheCapability.java similarity index 88% rename from Partner-Capability-Demo/src/main/java/work/slhaf/demo/ability/CacheCapability.java rename to Partner-Test-Demo/src/main/java/work/slhaf/demo/ability/CacheCapability.java index 60156b72..bd2c439a 100644 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/ability/CacheCapability.java +++ b/Partner-Test-Demo/src/main/java/work/slhaf/demo/ability/CacheCapability.java @@ -1,7 +1,8 @@ package work.slhaf.demo.ability; -import work.slhaf.demo.capability.annotation.Capability; + +import work.slhaf.partner.api.capability.annotation.Capability; import java.time.LocalDateTime; import java.util.HashMap; diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/ability/MemoryCapability.java b/Partner-Test-Demo/src/main/java/work/slhaf/demo/ability/MemoryCapability.java similarity index 69% rename from Partner-Capability-Demo/src/main/java/work/slhaf/demo/ability/MemoryCapability.java rename to Partner-Test-Demo/src/main/java/work/slhaf/demo/ability/MemoryCapability.java index de940908..a3152058 100644 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/ability/MemoryCapability.java +++ b/Partner-Test-Demo/src/main/java/work/slhaf/demo/ability/MemoryCapability.java @@ -1,7 +1,8 @@ package work.slhaf.demo.ability; -import work.slhaf.demo.capability.annotation.Capability; -import work.slhaf.demo.capability.annotation.ToCoordinated; + +import work.slhaf.partner.api.capability.annotation.Capability; +import work.slhaf.partner.api.capability.annotation.ToCoordinated; import java.util.List; diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/ability/PerceiveCapability.java b/Partner-Test-Demo/src/main/java/work/slhaf/demo/ability/PerceiveCapability.java similarity index 79% rename from Partner-Capability-Demo/src/main/java/work/slhaf/demo/ability/PerceiveCapability.java rename to Partner-Test-Demo/src/main/java/work/slhaf/demo/ability/PerceiveCapability.java index 33dba3d7..bf7a33c4 100644 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/ability/PerceiveCapability.java +++ b/Partner-Test-Demo/src/main/java/work/slhaf/demo/ability/PerceiveCapability.java @@ -1,6 +1,7 @@ package work.slhaf.demo.ability; -import work.slhaf.demo.capability.annotation.Capability; + +import work.slhaf.partner.api.capability.annotation.Capability; @Capability(value = "perceive") public interface PerceiveCapability { diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/core/CacheCore.java b/Partner-Test-Demo/src/main/java/work/slhaf/demo/core/CacheCore.java similarity index 89% rename from Partner-Capability-Demo/src/main/java/work/slhaf/demo/core/CacheCore.java rename to Partner-Test-Demo/src/main/java/work/slhaf/demo/core/CacheCore.java index 49aef79f..36ede4fd 100644 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/core/CacheCore.java +++ b/Partner-Test-Demo/src/main/java/work/slhaf/demo/core/CacheCore.java @@ -1,8 +1,8 @@ package work.slhaf.demo.core; import lombok.extern.slf4j.Slf4j; -import work.slhaf.demo.capability.annotation.CapabilityCore; -import work.slhaf.demo.capability.annotation.CapabilityMethod; +import work.slhaf.partner.api.capability.annotation.CapabilityCore; +import work.slhaf.partner.api.capability.annotation.CapabilityMethod; import java.time.LocalDateTime; import java.util.HashMap; diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/core/MemoryCore.java b/Partner-Test-Demo/src/main/java/work/slhaf/demo/core/MemoryCore.java similarity index 85% rename from Partner-Capability-Demo/src/main/java/work/slhaf/demo/core/MemoryCore.java rename to Partner-Test-Demo/src/main/java/work/slhaf/demo/core/MemoryCore.java index dd557d33..5eb6cca4 100644 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/core/MemoryCore.java +++ b/Partner-Test-Demo/src/main/java/work/slhaf/demo/core/MemoryCore.java @@ -1,8 +1,8 @@ package work.slhaf.demo.core; import lombok.extern.slf4j.Slf4j; -import work.slhaf.demo.capability.annotation.CapabilityCore; -import work.slhaf.demo.capability.annotation.CapabilityMethod; +import work.slhaf.partner.api.capability.annotation.CapabilityCore; +import work.slhaf.partner.api.capability.annotation.CapabilityMethod; import java.util.ArrayList; import java.util.List; diff --git a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/core/PerceiveCore.java b/Partner-Test-Demo/src/main/java/work/slhaf/demo/core/PerceiveCore.java similarity index 84% rename from Partner-Capability-Demo/src/main/java/work/slhaf/demo/core/PerceiveCore.java rename to Partner-Test-Demo/src/main/java/work/slhaf/demo/core/PerceiveCore.java index dd082ff3..91f176fb 100644 --- a/Partner-Capability-Demo/src/main/java/work/slhaf/demo/core/PerceiveCore.java +++ b/Partner-Test-Demo/src/main/java/work/slhaf/demo/core/PerceiveCore.java @@ -1,8 +1,8 @@ package work.slhaf.demo.core; import lombok.extern.slf4j.Slf4j; -import work.slhaf.demo.capability.annotation.CapabilityCore; -import work.slhaf.demo.capability.annotation.CapabilityMethod; +import work.slhaf.partner.api.capability.annotation.CapabilityCore; +import work.slhaf.partner.api.capability.annotation.CapabilityMethod; @CapabilityCore(value = "perceive") @Slf4j diff --git a/Partner-Capability-Demo/src/test/java/FunctionRouterTest.java b/Partner-Test-Demo/src/test/java/FunctionRouterTest.java similarity index 100% rename from Partner-Capability-Demo/src/test/java/FunctionRouterTest.java rename to Partner-Test-Demo/src/test/java/FunctionRouterTest.java diff --git a/Partner-Capability-Demo/src/test/java/InterfaceTest.java b/Partner-Test-Demo/src/test/java/InterfaceTest.java similarity index 100% rename from Partner-Capability-Demo/src/test/java/InterfaceTest.java rename to Partner-Test-Demo/src/test/java/InterfaceTest.java diff --git a/Partner-Capability-Demo/src/test/java/TestImpl.java b/Partner-Test-Demo/src/test/java/TestImpl.java similarity index 100% rename from Partner-Capability-Demo/src/test/java/TestImpl.java rename to Partner-Test-Demo/src/test/java/TestImpl.java diff --git a/pom.xml b/pom.xml index 7c864770..a371ef48 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ 0.5.0 pom - Partner-Capability-Demo + Partner-Test-Demo Partner-Main Partner-Api