From f0d92de9c3f7dda7403e8fd8a91a899e2ead4b78 Mon Sep 17 00:00:00 2001 From: gaibu <1016771049@qq.com> Date: Sun, 16 Jul 2023 22:12:30 +0800 Subject: [PATCH] =?UTF-8?q?enhancement=20#I7LGZR=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9C=AA=E5=A1=AB=E5=86=99=20chainId=20=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../liteflow/parser/helper/ParserHelper.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/parser/helper/ParserHelper.java b/liteflow-core/src/main/java/com/yomahub/liteflow/parser/helper/ParserHelper.java index 983521d3e..eb239f76f 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/parser/helper/ParserHelper.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/parser/helper/ParserHelper.java @@ -140,6 +140,8 @@ public class ParserHelper { // 校验加载的 chainName 是否有重复的 // TODO 这里是否有个问题,当混合格式加载的时候,2个同名的Chain在不同的文件里,就不行了 String chainName = Optional.ofNullable(e.attributeValue(ID)).orElse(e.attributeValue(NAME)); + // 检查 chainName + checkChainId(chainName, e.getText()); if (!chainNameSet.add(chainName)) { throw new ChainDuplicateException(String.format("[chain name duplicate] chainName=%s", chainName)); } @@ -202,9 +204,11 @@ public class ParserHelper { JsonNode innerJsonObject = iterator.next(); // 校验加载的 chainName 是否有重复的 // TODO 这里是否有个问题,当混合格式加载的时候,2个同名的Chain在不同的文件里,就不行了 - String chainName = Optional.ofNullable(innerJsonObject.get(ID)) - .orElse(innerJsonObject.get(NAME)) - .textValue(); + JsonNode chainNameJsonNode = Optional.ofNullable(innerJsonObject.get(ID)) + .orElse(innerJsonObject.get(NAME)); + String chainName = Optional.ofNullable(chainNameJsonNode).map(JsonNode::textValue).orElse(null); + // 检查 chainName + checkChainId(chainName, innerJsonObject.toPrettyString()); if (!chainNameSet.add(chainName)) { throw new ChainDuplicateException(String.format("[chain name duplicate] chainName=%s", chainName)); } @@ -250,6 +254,17 @@ public class ParserHelper { chainELBuilder.setEL(el).build(); } + /** + * 检查 chainId + * @param chainId chainId + * @param elData elData + */ + private static void checkChainId(String chainId, String elData) { + if (StrUtil.isBlank(chainId)) { + throw new ParseException("missing chain id in expression \r\n" + elData); + } + } + private static class RegexUtil { // java 注释的正则表达式