From e0b08a714fb0a59b51b84cf2ff3e58a2c2c67220 Mon Sep 17 00:00:00 2001 From: gaibu <1016771049@qq.com> Date: Fri, 3 Feb 2023 10:54:33 +0800 Subject: [PATCH] =?UTF-8?q?feat=20#I6BDLN=20=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=A7=A3=E6=9E=90=E5=99=A8=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yomahub/liteflow/core/FlowExecutor.java | 20 ++++++++++++++++++- .../parser/el/LocalJsonFlowELParser.java | 6 ------ .../parser/el/LocalXmlFlowELParser.java | 6 ------ .../parser/el/LocalYmlFlowELParser.java | 6 ------ .../spi/solon/SolonPathContentParser.java | 8 +++----- .../spi/spring/SpringPathContentParser.java | 18 +++++++++++------ 6 files changed, 34 insertions(+), 30 deletions(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java b/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java index 90ab44c7..655f1abe 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java @@ -28,6 +28,7 @@ import com.yomahub.liteflow.slot.DataBus; import com.yomahub.liteflow.slot.DefaultContext; import com.yomahub.liteflow.slot.Slot; import com.yomahub.liteflow.spi.holder.ContextCmpInitHolder; +import com.yomahub.liteflow.spi.holder.PathContentParserHolder; import com.yomahub.liteflow.thread.ExecutorHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -125,6 +126,9 @@ public class FlowExecutor { //支持多类型的配置文件,分别解析 if (BooleanUtil.isTrue(liteflowConfig.isSupportMultipleType())) { + // 添加监听文件路径 + addMonitorFilePaths(ListUtil.toList(path)); + // 解析文件 parser.parseMain(ListUtil.toList(path)); } } catch (CyclicDependencyException e) { @@ -149,6 +153,9 @@ public class FlowExecutor { //进行多个配置文件的一起解析 try { if (parser != null) { + // 添加监听文件路径 + addMonitorFilePaths(rulePathList); + // 解析文件 parser.parseMain(rulePathList); } else { throw new ConfigErrorException("parse error, please check liteflow config property"); @@ -181,7 +188,7 @@ public class FlowExecutor { } // 文件监听 - if (liteflowConfig.getEnableMonitorFile()){ + if (liteflowConfig.getEnableMonitorFile()) { MonitorFile.getInstance().create(); } } @@ -397,4 +404,15 @@ public class FlowExecutor { //把liteFlowConfig设到LiteFlowGetter中去 LiteflowConfigGetter.setLiteflowConfig(liteflowConfig); } + + /** + * 添加监听文件路径 + * + * @param pathList 文件路径 + */ + private void addMonitorFilePaths(List pathList) throws Exception { + // 添加规则文件监听 + List fileAbsolutePath = PathContentParserHolder.loadContextAware().getFileAbsolutePath(pathList); + MonitorFile.getInstance().addMonitorFilePaths(fileAbsolutePath); + } } \ No newline at end of file diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/parser/el/LocalJsonFlowELParser.java b/liteflow-core/src/main/java/com/yomahub/liteflow/parser/el/LocalJsonFlowELParser.java index 3386c45d..6c6aa1a9 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/parser/el/LocalJsonFlowELParser.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/parser/el/LocalJsonFlowELParser.java @@ -1,6 +1,5 @@ package com.yomahub.liteflow.parser.el; -import com.yomahub.liteflow.monitor.MonitorFile; import com.yomahub.liteflow.spi.holder.PathContentParserHolder; import java.util.List; @@ -16,11 +15,6 @@ public class LocalJsonFlowELParser extends JsonFlowELParser { @Override public void parseMain(List pathList) throws Exception { List contentList = PathContentParserHolder.loadContextAware().parseContent(pathList); - - // 添加规则文件监听 - List fileAbsolutePath = PathContentParserHolder.loadContextAware().getFileAbsolutePath(pathList); - MonitorFile.getInstance().addMonitorFilePaths(fileAbsolutePath); - parse(contentList); } } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/parser/el/LocalXmlFlowELParser.java b/liteflow-core/src/main/java/com/yomahub/liteflow/parser/el/LocalXmlFlowELParser.java index 01e3e61e..d0769f16 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/parser/el/LocalXmlFlowELParser.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/parser/el/LocalXmlFlowELParser.java @@ -1,6 +1,5 @@ package com.yomahub.liteflow.parser.el; -import com.yomahub.liteflow.monitor.MonitorFile; import com.yomahub.liteflow.spi.holder.PathContentParserHolder; import java.util.List; @@ -14,11 +13,6 @@ public class LocalXmlFlowELParser extends XmlFlowELParser{ @Override public void parseMain(List pathList) throws Exception { List contentList = PathContentParserHolder.loadContextAware().parseContent(pathList); - - // 添加规则文件监听 - List fileAbsolutePath = PathContentParserHolder.loadContextAware().getFileAbsolutePath(pathList); - MonitorFile.getInstance().addMonitorFilePaths(fileAbsolutePath); - parse(contentList); } } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/parser/el/LocalYmlFlowELParser.java b/liteflow-core/src/main/java/com/yomahub/liteflow/parser/el/LocalYmlFlowELParser.java index 5cc92ef9..8c85abef 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/parser/el/LocalYmlFlowELParser.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/parser/el/LocalYmlFlowELParser.java @@ -1,6 +1,5 @@ package com.yomahub.liteflow.parser.el; -import com.yomahub.liteflow.monitor.MonitorFile; import com.yomahub.liteflow.spi.holder.PathContentParserHolder; import java.util.List; @@ -15,11 +14,6 @@ public class LocalYmlFlowELParser extends YmlFlowELParser { @Override public void parseMain(List pathList) throws Exception { List contentList = PathContentParserHolder.loadContextAware().parseContent(pathList); - - // 添加规则文件监听 - List fileAbsolutePath = PathContentParserHolder.loadContextAware().getFileAbsolutePath(pathList); - MonitorFile.getInstance().addMonitorFilePaths(fileAbsolutePath); - parse(contentList); } diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonPathContentParser.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonPathContentParser.java index aa21f1b6..fa14632a 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonPathContentParser.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonPathContentParser.java @@ -3,6 +3,7 @@ package com.yomahub.liteflow.spi.solon; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; +import cn.hutool.core.stream.StreamUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.exception.ConfigErrorException; @@ -16,6 +17,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; public class SolonPathContentParser implements PathContentParser { @Override @@ -37,11 +39,7 @@ public class SolonPathContentParser implements PathContentParser { @Override public List getFileAbsolutePath(List pathList) throws Exception { List allResource = getUrls(pathList); - List result = new ArrayList<>(); - for (URL url : allResource) { - result.add(url.getPath()); - } - return result; + return StreamUtil.of(allResource).map(URL::getPath).collect(Collectors.toList()); } private static List getUrls(List pathList) throws MalformedURLException { diff --git a/liteflow-spring/src/main/java/com/yomahub/liteflow/spi/spring/SpringPathContentParser.java b/liteflow-spring/src/main/java/com/yomahub/liteflow/spi/spring/SpringPathContentParser.java index f0f4f515..a0f433ce 100644 --- a/liteflow-spring/src/main/java/com/yomahub/liteflow/spi/spring/SpringPathContentParser.java +++ b/liteflow-spring/src/main/java/com/yomahub/liteflow/spi/spring/SpringPathContentParser.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; +import cn.hutool.core.stream.StreamUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; @@ -19,6 +20,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; public class SpringPathContentParser implements PathContentParser { @Override @@ -41,12 +43,16 @@ public class SpringPathContentParser implements PathContentParser { public List getFileAbsolutePath(List pathList) throws Exception { List allResource = getResources(pathList); - //转换成内容List - List result = new ArrayList<>(); - for (Resource resource : allResource) { - result.add(resource.getFile().getAbsolutePath()); - } - return result; + return StreamUtil.of(allResource) + // 过滤非 file 类型 Resource + .filter(Resource::isFile) + .map(r -> { + try { + return r.getFile().getAbsolutePath(); + } catch (IOException e) { + throw new RuntimeException(e); + } + }).collect(Collectors.toList()); } private List getResources(List pathList) throws IOException {