diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/annotation/LFAliasFor.java b/liteflow-core/src/main/java/com/yomahub/liteflow/annotation/LFAliasFor.java deleted file mode 100644 index e1f0b45e5..000000000 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/annotation/LFAliasFor.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.yomahub.liteflow.annotation; - -import java.lang.annotation.*; - -/** - * @author Bryan.Zhang - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -@Documented -public @interface LFAliasFor { - - String value() default ""; - -} diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/annotation/LiteflowRetry.java b/liteflow-core/src/main/java/com/yomahub/liteflow/annotation/LiteflowRetry.java index f436c6554..4cef53356 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/annotation/LiteflowRetry.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/annotation/LiteflowRetry.java @@ -1,5 +1,7 @@ package com.yomahub.liteflow.annotation; +import cn.hutool.core.annotation.MirrorFor; + import java.lang.annotation.*; /** @@ -20,10 +22,10 @@ import java.lang.annotation.*; */ public @interface LiteflowRetry { - @LFAliasFor("retry") + @MirrorFor(attribute = "retry") int value() default 0; - @LFAliasFor("value") + @MirrorFor(attribute = "value") int retry() default 0; Class[] forExceptions() default { Exception.class }; diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/annotation/util/AnnoUtil.java b/liteflow-core/src/main/java/com/yomahub/liteflow/annotation/util/AnnoUtil.java deleted file mode 100644 index 3074c4bb2..000000000 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/annotation/util/AnnoUtil.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.yomahub.liteflow.annotation.util; - -import cn.hutool.core.annotation.AnnotationUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.ReflectUtil; -import cn.hutool.core.util.StrUtil; -import com.yomahub.liteflow.annotation.LFAliasFor; - -import java.lang.annotation.Annotation; -import java.lang.reflect.AnnotatedElement; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 注解工具类 - * 此工具类带缓存 - * - * @author Bryan.Zhang - */ -public class AnnoUtil { - - private static Map annoCacheMap = new ConcurrentHashMap<>(); - - public static A getAnnotation(AnnotatedElement annotatedElement, Class annotationType) { - String cacheKey = StrUtil.format("{}-{}", annotatedElement, annotationType.getSimpleName()); - - if (annoCacheMap.containsKey(cacheKey)){ - return (A)annoCacheMap.get(cacheKey); - } - - A annotation = AnnotationUtil.getAnnotation(annotatedElement, annotationType); - if (ObjectUtil.isNull(annotation)) { - return null; - } - - Map aliasMap = new HashMap<>(); - Map defaultValueMap = new HashMap<>(); - Arrays.stream(ReflectUtil.getMethods(annotationType)).forEach(method -> { - LFAliasFor aliasFor = AnnotationUtil.getAnnotation(method, LFAliasFor.class); - if (ObjectUtil.isNotNull(aliasFor)) { - aliasMap.put(method.getName(), aliasFor.value()); - defaultValueMap.put(method.getName(), getDefaultValue(annotationType, method.getName())); - } - }); - - aliasMap.forEach((key, value1) -> { - Object value = ReflectUtil.invoke(annotation, key); - Object defaultValue = defaultValueMap.get(key); - if (ObjectUtil.notEqual(value, defaultValue)) { - AnnotationUtil.setValue(annotation, value1, value); - } - }); - - annoCacheMap.put(cacheKey, annotation); - - return annotation; - } - - private static Object getDefaultValue(Class annotationType, String property) { - try { - return annotationType.getMethod(property).getDefaultValue(); - } - catch (Exception e) { - return null; - } - } -} diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/context/ContextBean.java b/liteflow-core/src/main/java/com/yomahub/liteflow/context/ContextBean.java index 99e6ab07c..b01533b00 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/context/ContextBean.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/context/ContextBean.java @@ -1,6 +1,6 @@ package com.yomahub.liteflow.context; -import com.yomahub.liteflow.annotation.LFAliasFor; +import cn.hutool.core.annotation.MirrorFor; import java.lang.annotation.*; @@ -15,10 +15,10 @@ import java.lang.annotation.*; @Documented public @interface ContextBean { - @LFAliasFor("name") + @MirrorFor(attribute = "name") String value() default ""; - @LFAliasFor("value") + @MirrorFor(attribute = "value") String name() default ""; } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/core/ComponentInitializer.java b/liteflow-core/src/main/java/com/yomahub/liteflow/core/ComponentInitializer.java index 3dd961066..d57ab6d20 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/core/ComponentInitializer.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/core/ComponentInitializer.java @@ -1,9 +1,9 @@ package com.yomahub.liteflow.core; +import cn.hutool.core.annotation.AnnotationUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.annotation.LiteflowRetry; -import com.yomahub.liteflow.annotation.util.AnnoUtil; import com.yomahub.liteflow.common.ChainConstant; import com.yomahub.liteflow.enums.NodeTypeEnum; import com.yomahub.liteflow.flow.executor.NodeExecutor; @@ -53,7 +53,7 @@ public class ComponentInitializer { // 先从组件上取@RetryCount标注,如果没有,则看全局配置,全局配置如果不配置的话,默认是0 // 默认retryForExceptions为Exception.class - LiteflowRetry liteFlowRetryAnnotation = AnnoUtil.getAnnotation(nodeComponent.getClass(), LiteflowRetry.class); + LiteflowRetry liteFlowRetryAnnotation = AnnotationUtil.getAnnotationAlias(nodeComponent.getClass(), LiteflowRetry.class); LiteflowConfig liteflowConfig = LiteflowConfigGetter.get(); if (liteFlowRetryAnnotation != null) { nodeComponent.setRetryCount(liteFlowRetryAnnotation.retry()); diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/FlowBus.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/FlowBus.java index 3c2ff9761..940e90893 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/FlowBus.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/FlowBus.java @@ -8,12 +8,12 @@ */ package com.yomahub.liteflow.flow; +import cn.hutool.core.annotation.AnnotationUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.annotation.FallbackCmp; -import com.yomahub.liteflow.annotation.util.AnnoUtil; import com.yomahub.liteflow.builder.el.LiteFlowChainELBuilder; import com.yomahub.liteflow.core.ComponentInitializer; import com.yomahub.liteflow.core.NodeComponent; @@ -397,7 +397,7 @@ public class FlowBus { // 判断是否是降级组件,如果是则添加到 fallbackNodeMap private static void addFallbackNode(Node node) { NodeComponent nodeComponent = node.getInstance(); - FallbackCmp fallbackCmp = AnnoUtil.getAnnotation(nodeComponent.getClass(), FallbackCmp.class); + FallbackCmp fallbackCmp = AnnotationUtil.getAnnotation(nodeComponent.getClass(), FallbackCmp.class); if (fallbackCmp == null) { return; } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/script/annotation/ScriptBean.java b/liteflow-core/src/main/java/com/yomahub/liteflow/script/annotation/ScriptBean.java index 472d69cb7..66fdea7fc 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/script/annotation/ScriptBean.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/script/annotation/ScriptBean.java @@ -1,6 +1,6 @@ package com.yomahub.liteflow.script.annotation; -import com.yomahub.liteflow.annotation.LFAliasFor; +import cn.hutool.core.annotation.MirrorFor; import java.lang.annotation.*; @@ -16,10 +16,10 @@ import java.lang.annotation.*; @Inherited public @interface ScriptBean { - @LFAliasFor("name") + @MirrorFor(attribute = "name") String value() default ""; - @LFAliasFor("value") + @MirrorFor(attribute = "value") String name() default ""; String[] includeMethodName() default {}; diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/script/annotation/ScriptMethod.java b/liteflow-core/src/main/java/com/yomahub/liteflow/script/annotation/ScriptMethod.java index a631b4fce..7d26da767 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/script/annotation/ScriptMethod.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/script/annotation/ScriptMethod.java @@ -1,7 +1,5 @@ package com.yomahub.liteflow.script.annotation; -import com.yomahub.liteflow.annotation.LFAliasFor; - import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; @@ -20,7 +18,6 @@ import java.lang.annotation.Target; @Inherited public @interface ScriptMethod { - @LFAliasFor("name") String value() default ""; } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/slot/DataBus.java b/liteflow-core/src/main/java/com/yomahub/liteflow/slot/DataBus.java index 7fcc6373c..e68f998a4 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/slot/DataBus.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/slot/DataBus.java @@ -7,13 +7,12 @@ */ package com.yomahub.liteflow.slot; +import cn.hutool.core.annotation.AnnotationUtil; import cn.hutool.core.lang.Tuple; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; -import com.yomahub.liteflow.annotation.util.AnnoUtil; import com.yomahub.liteflow.context.ContextBean; import com.yomahub.liteflow.log.LFLog; import com.yomahub.liteflow.log.LFLoggerManager; @@ -84,7 +83,7 @@ public class DataBus { public static int offerSlotByBean(List contextList) { List contextBeanList = contextList.stream().filter(Objects::nonNull).map(object -> { - ContextBean contextBean = AnnoUtil.getAnnotation(object.getClass(), ContextBean.class); + ContextBean contextBean = AnnotationUtil.getAnnotationAlias(object.getClass(), ContextBean.class); String contextKey; if (contextBean != null && StrUtil.isNotBlank(contextBean.value())){ contextKey = contextBean.value(); diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/annotation/LiteflowComponent.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/annotation/LiteflowComponent.java index 2371fd9c0..5dc43f068 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/annotation/LiteflowComponent.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/annotation/LiteflowComponent.java @@ -1,5 +1,7 @@ package com.yomahub.liteflow.annotation; +import cn.hutool.core.annotation.MirrorFor; + import java.lang.annotation.*; /** @@ -14,10 +16,10 @@ import java.lang.annotation.*; @Inherited public @interface LiteflowComponent { - @LFAliasFor("id") + @MirrorFor(attribute = "id") String value() default ""; - @LFAliasFor("value") + @MirrorFor(attribute = "value") String id() default ""; String name() default ""; diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonDeclComponentParser.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonDeclComponentParser.java index 86f0cb3ed..dcc613e02 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonDeclComponentParser.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonDeclComponentParser.java @@ -3,17 +3,14 @@ package com.yomahub.liteflow.spi.solon; import cn.hutool.core.annotation.AnnotationUtil; import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.annotation.*; -import com.yomahub.liteflow.annotation.util.AnnoUtil; import com.yomahub.liteflow.core.proxy.DeclWarpBean; import com.yomahub.liteflow.core.proxy.MethodWrapBean; import com.yomahub.liteflow.core.proxy.ParameterWrapBean; import com.yomahub.liteflow.enums.NodeTypeEnum; import com.yomahub.liteflow.exception.CmpDefinitionException; -import com.yomahub.liteflow.exception.NotSupportDeclException; import com.yomahub.liteflow.spi.DeclComponentParser; import org.noear.solon.Solon; import org.noear.solon.annotation.Component; -import org.noear.solon.core.BeanWrap; import java.lang.reflect.Parameter; import java.util.Arrays; @@ -39,14 +36,14 @@ public class SolonDeclComponentParser implements DeclComponentParser { method -> AnnotationUtil.getAnnotation(method, LiteflowMethod.class) != null ).map(method -> { LiteflowMethod liteflowMethod = AnnotationUtil.getAnnotation(method, LiteflowMethod.class); - LiteflowRetry liteflowRetry = AnnotationUtil.getAnnotation(method, LiteflowRetry.class); + LiteflowRetry liteflowRetry = AnnotationUtil.getAnnotationAlias(method, LiteflowRetry.class); String currNodeId = null; String currNodeName = null; if (nodeId == null){ if (StrUtil.isBlank(liteflowMethod.nodeId())){ - LiteflowComponent liteflowComponent = AnnoUtil.getAnnotation(clazz, LiteflowComponent.class); - Component component = AnnoUtil.getAnnotation(clazz, Component.class); + LiteflowComponent liteflowComponent = AnnotationUtil.getAnnotationAlias(clazz, LiteflowComponent.class); + Component component = AnnotationUtil.getAnnotation(clazz, Component.class); if(liteflowComponent != null){ currNodeId = liteflowComponent.value(); diff --git a/liteflow-spring/src/main/java/com/yomahub/liteflow/annotation/LiteflowComponent.java b/liteflow-spring/src/main/java/com/yomahub/liteflow/annotation/LiteflowComponent.java index 0e9261fc6..a43890794 100644 --- a/liteflow-spring/src/main/java/com/yomahub/liteflow/annotation/LiteflowComponent.java +++ b/liteflow-spring/src/main/java/com/yomahub/liteflow/annotation/LiteflowComponent.java @@ -1,5 +1,6 @@ package com.yomahub.liteflow.annotation; +import cn.hutool.core.annotation.MirrorFor; import org.springframework.stereotype.Component; import org.springframework.core.annotation.AliasFor; import java.lang.annotation.*; @@ -18,12 +19,10 @@ import java.lang.annotation.*; public @interface LiteflowComponent { @AliasFor(annotation = Component.class, attribute = "value") - @LFAliasFor("id") - String value() default ""; + String value() default ""; @AliasFor(annotation = Component.class, attribute = "value") - @LFAliasFor("value") - String id() default ""; + String id() default ""; String name() default ""; diff --git a/liteflow-spring/src/main/java/com/yomahub/liteflow/process/impl/ScriptBeanProcess.java b/liteflow-spring/src/main/java/com/yomahub/liteflow/process/impl/ScriptBeanProcess.java index f23c70733..67fd966d1 100644 --- a/liteflow-spring/src/main/java/com/yomahub/liteflow/process/impl/ScriptBeanProcess.java +++ b/liteflow-spring/src/main/java/com/yomahub/liteflow/process/impl/ScriptBeanProcess.java @@ -1,7 +1,7 @@ package com.yomahub.liteflow.process.impl; +import cn.hutool.core.annotation.AnnotationUtil; import cn.hutool.core.util.ObjectUtil; -import com.yomahub.liteflow.annotation.util.AnnoUtil; import com.yomahub.liteflow.process.LiteflowScannerProcessStep; import com.yomahub.liteflow.process.context.LiteflowScannerProcessStepContext; import com.yomahub.liteflow.process.enums.LiteflowScannerProcessStepEnum; @@ -24,7 +24,7 @@ public class ScriptBeanProcess implements LiteflowScannerProcessStep { public boolean filter(LiteflowScannerProcessStepContext ctx) { Class clazz = ctx.getClazz(); - ScriptBean outPut = AnnoUtil.getAnnotation(clazz, ScriptBean.class); + ScriptBean outPut = AnnotationUtil.getAnnotationAlias(clazz, ScriptBean.class); ctx.setOutPut(outPut); return ObjectUtil.isNotNull(outPut); diff --git a/liteflow-spring/src/main/java/com/yomahub/liteflow/process/impl/ScriptMethodBeanProcess.java b/liteflow-spring/src/main/java/com/yomahub/liteflow/process/impl/ScriptMethodBeanProcess.java index 4dafad573..cc403b3c5 100644 --- a/liteflow-spring/src/main/java/com/yomahub/liteflow/process/impl/ScriptMethodBeanProcess.java +++ b/liteflow-spring/src/main/java/com/yomahub/liteflow/process/impl/ScriptMethodBeanProcess.java @@ -1,10 +1,10 @@ package com.yomahub.liteflow.process.impl; +import cn.hutool.core.annotation.AnnotationUtil; import cn.hutool.core.collection.CollStreamUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.yomahub.liteflow.annotation.util.AnnoUtil; import com.yomahub.liteflow.process.LiteflowScannerProcessStep; import com.yomahub.liteflow.process.context.LiteflowScannerProcessStepContext; import com.yomahub.liteflow.process.enums.LiteflowScannerProcessStepEnum; @@ -34,7 +34,7 @@ public class ScriptMethodBeanProcess implements LiteflowScannerProcessStep { Class clazz = ctx.getClazz(); List outPut = Arrays.stream(clazz.getMethods()).filter(method -> { - ScriptMethod scriptMethod = AnnoUtil.getAnnotation(method, ScriptMethod.class); + ScriptMethod scriptMethod = AnnotationUtil.getAnnotation(method, ScriptMethod.class); return ObjectUtil.isNotNull(scriptMethod) && StrUtil.isNotEmpty(scriptMethod.value()); }).collect(Collectors.toList()); @@ -53,7 +53,7 @@ public class ScriptMethodBeanProcess implements LiteflowScannerProcessStep { LOG.info("script method[{}] has been found", beanName); Map> scriptMethodsGroupByValue = CollStreamUtil.groupBy(scriptMethods, method -> { - ScriptMethod scriptMethod = AnnoUtil.getAnnotation(method, ScriptMethod.class); + ScriptMethod scriptMethod = AnnotationUtil.getAnnotation(method, ScriptMethod.class); return scriptMethod.value(); }, Collectors.toList()); diff --git a/liteflow-spring/src/main/java/com/yomahub/liteflow/spi/spring/SpringDeclComponentParser.java b/liteflow-spring/src/main/java/com/yomahub/liteflow/spi/spring/SpringDeclComponentParser.java index 333c6a871..fae560df0 100644 --- a/liteflow-spring/src/main/java/com/yomahub/liteflow/spi/spring/SpringDeclComponentParser.java +++ b/liteflow-spring/src/main/java/com/yomahub/liteflow/spi/spring/SpringDeclComponentParser.java @@ -1,10 +1,8 @@ package com.yomahub.liteflow.spi.spring; import cn.hutool.core.annotation.AnnotationUtil; -import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.annotation.*; -import com.yomahub.liteflow.annotation.util.AnnoUtil; import com.yomahub.liteflow.core.proxy.DeclWarpBean; import com.yomahub.liteflow.core.proxy.MethodWrapBean; import com.yomahub.liteflow.core.proxy.ParameterWrapBean; @@ -13,13 +11,13 @@ import com.yomahub.liteflow.exception.CmpDefinitionException; import com.yomahub.liteflow.spi.DeclComponentParser; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.beans.factory.support.RootBeanDefinition; +import org.springframework.core.annotation.AnnotationUtils; import org.springframework.stereotype.Component; import java.lang.reflect.Parameter; import java.util.Arrays; import java.util.List; import java.util.Map; -import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -40,14 +38,14 @@ public class SpringDeclComponentParser implements DeclComponentParser { method -> AnnotationUtil.getAnnotation(method, LiteflowMethod.class) != null ).map(method -> { LiteflowMethod liteflowMethod = AnnotationUtil.getAnnotation(method, LiteflowMethod.class); - LiteflowRetry liteflowRetry = AnnotationUtil.getAnnotation(method, LiteflowRetry.class); + LiteflowRetry liteflowRetry = AnnotationUtil.getAnnotationAlias(method, LiteflowRetry.class); String currNodeId = null; String currNodeName = null; if (nodeId == null){ if (StrUtil.isBlank(liteflowMethod.nodeId())){ - LiteflowComponent liteflowComponent = AnnoUtil.getAnnotation(clazz, LiteflowComponent.class); - Component component = AnnoUtil.getAnnotation(clazz, Component.class); + LiteflowComponent liteflowComponent = AnnotationUtils.getAnnotation(clazz, LiteflowComponent.class); + Component component = AnnotationUtil.getAnnotation(clazz, Component.class); if(liteflowComponent != null){ currNodeId = liteflowComponent.value(); diff --git a/pom.xml b/pom.xml index 968c82d90..092fa7fd1 100644 --- a/pom.xml +++ b/pom.xml @@ -52,7 +52,7 @@ 2.1.4 5.3.0 5.8.2 - 5.8.26 + 5.8.39 2.14.5 5.1.0 0.10