From e684db9ee825a66002b8317140cf4587fc2588dd Mon Sep 17 00:00:00 2001 From: houxinyu Date: Sat, 1 Jul 2023 11:19:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0XML=20Parser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parser/redis/RedisXmlELParser.java | 62 ++++++++++++++++++- .../redis/exception/RedisException.java | 14 ++++- .../parser/redis/util/RedisParserHelper.java | 5 ++ .../parser/redis/vo/RedisParserVO.java | 18 +++--- 4 files changed, 88 insertions(+), 11 deletions(-) diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/RedisXmlELParser.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/RedisXmlELParser.java index 17d338117..8deb542cf 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/RedisXmlELParser.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/RedisXmlELParser.java @@ -1,4 +1,64 @@ package com.yomahub.liteflow.parser.redis; -public class RedisXmlELParser { +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.text.StrFormatter; +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.parser.el.ClassXmlFlowELParser; +import com.yomahub.liteflow.parser.redis.exception.RedisException; +import com.yomahub.liteflow.parser.redis.vo.RedisParserVO; +import com.yomahub.liteflow.property.LiteflowConfig; +import com.yomahub.liteflow.property.LiteflowConfigGetter; +import com.yomahub.liteflow.util.JsonUtil; + +import java.util.Objects; + +public class RedisXmlELParser extends ClassXmlFlowELParser { + + private static final String ERROR_COMMON_MSG = "ruleSourceExtData or map is empty"; + + private static final String ERROR_MSG_PATTERN = "uleSourceExtData {} is blank"; + + public RedisXmlELParser() { + LiteflowConfig liteflowConfig = LiteflowConfigGetter.get(); + + try{ + RedisParserVO redisParserVO = null; + if (MapUtil.isNotEmpty((liteflowConfig.getRuleSourceExtDataMap()))) { + redisParserVO = BeanUtil.toBean(liteflowConfig.getRuleSourceExtDataMap(), + RedisParserVO.class, CopyOptions.create()); + } + else if (StrUtil.isNotBlank(liteflowConfig.getRuleSourceExtData())) { + redisParserVO = JsonUtil.parseObject(liteflowConfig.getRuleSourceExtData(), RedisParserVO.class); + } + if (Objects.isNull(redisParserVO)) { + throw new RedisException(ERROR_COMMON_MSG); + } + + //检查配置文件 + checkParserVO(redisParserVO); + } + catch (RedisException redisException){ + throw redisException; + } + catch (Exception e){ + throw new RedisException(e.getMessage()); + } + } + + @Override + public String parseCustom() { + //todo + return null; + } + + private void checkParserVO(RedisParserVO redisParserVO) { + if (StrUtil.isEmpty(redisParserVO.getHost())){ + throw new RedisException(StrFormatter.format(ERROR_MSG_PATTERN, "host")); + } + if (StrUtil.isEmpty(redisParserVO.getPort())){ + throw new RedisException(StrFormatter.format(ERROR_MSG_PATTERN, "port")); + } + } } diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/exception/RedisException.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/exception/RedisException.java index 6778b54cb..021dce8e6 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/exception/RedisException.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/exception/RedisException.java @@ -1,4 +1,16 @@ package com.yomahub.liteflow.parser.redis.exception; -public class RedisException { +public class RedisException extends RuntimeException{ + + private String message; + + public RedisException(String message) { + super(); + this.message = message; + } + + @Override + public String getMessage() { + return message; + } } diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/util/RedisParserHelper.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/util/RedisParserHelper.java index 62d229a2d..d361cb742 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/util/RedisParserHelper.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/util/RedisParserHelper.java @@ -1,4 +1,9 @@ package com.yomahub.liteflow.parser.redis.util; +import com.yomahub.liteflow.parser.redis.vo.RedisParserVO; + public class RedisParserHelper { + + private RedisParserVO redisParserVO; + } diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/vo/RedisParserVO.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/vo/RedisParserVO.java index 23b092ff5..a96e8bf83 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/vo/RedisParserVO.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/vo/RedisParserVO.java @@ -3,7 +3,7 @@ package com.yomahub.liteflow.parser.redis.vo; public class RedisParserVO { /*连接地址*/ - private String url; + private String host; /*端口号*/ private String port; @@ -15,9 +15,9 @@ public class RedisParserVO { private String password; /*是否采用轮询机制 默认为轮询 否则选择pub/sub机制*/ - private boolean isPolling = true; + private String isPolling = "true"; - /*轮询时间间隔(ms) 默认1分组 若选择pub/sub机制可不配置*/ + /*轮询时间间隔(ms) 默认1分钟 若选择pub/sub机制可不配置*/ private String pollingInterval = "60000"; /*chain表配置的数据库号*/ @@ -32,12 +32,12 @@ public class RedisParserVO { /*脚本配置的键名*/ private String scriptKey; - public String getUrl() { - return url; + public String getHost() { + return host; } - public void setUrl(String url) { - this.url = url; + public void setHost(String url) { + this.host = host; } public String getPort() { @@ -64,11 +64,11 @@ public class RedisParserVO { this.password = password; } - public boolean isPolling() { + public String isPolling() { return isPolling; } - public void setPolling(boolean polling) { + public void setPolling(String polling) { isPolling = polling; }