From e9b8daff62e0d6909ba7cd9c1b5ca57b272373f7 Mon Sep 17 00:00:00 2001 From: Xu Qiaolun Date: Wed, 4 Sep 2024 16:31:11 +0800 Subject: [PATCH] =?UTF-8?q?enhancemnet=20#IANY4U=20=E5=9C=A8NodeComponent?= =?UTF-8?q?=E4=B8=AD=E6=B7=BB=E5=8A=A0getCmpList=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yomahub/liteflow/core/NodeComponent.java | 9 +++++++++ .../com/yomahub/liteflow/util/JsonUtil.java | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/core/NodeComponent.java b/liteflow-core/src/main/java/com/yomahub/liteflow/core/NodeComponent.java index 23d0b5df4..0fff946a7 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/core/NodeComponent.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/core/NodeComponent.java @@ -29,6 +29,7 @@ import com.yomahub.liteflow.util.JsonUtil; import java.lang.reflect.Method; import java.util.Date; +import java.util.List; import java.util.Stack; /** @@ -414,6 +415,14 @@ public abstract class NodeComponent{ return JsonUtil.parseObject(cmpData, clazz); } + public List getCmpList(Class clazz) { + String cmpData = getRefNode().getCmpData(); + if (StrUtil.isBlank(cmpData)) { + return null; + } + return JsonUtil.parseList(cmpData, clazz); + } + public Integer getLoopIndex() { return this.getRefNode().getLoopIndex(); } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/util/JsonUtil.java b/liteflow-core/src/main/java/com/yomahub/liteflow/util/JsonUtil.java index c3944948d..cb31cd848 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/util/JsonUtil.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/util/JsonUtil.java @@ -3,13 +3,17 @@ package com.yomahub.liteflow.util; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.type.CollectionType; import com.yomahub.liteflow.exception.JsonProcessException; import com.yomahub.liteflow.log.LFLog; import com.yomahub.liteflow.log.LFLoggerManager; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.TimeZone; /** @@ -73,4 +77,18 @@ public class JsonUtil { throw new JsonProcessException(errMsg); } } + + public static List parseList(String json, Class clazz) { + if (StrUtil.isEmpty(json)) { + return null; + } + try { + CollectionType listType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, clazz); + return objectMapper.readValue(json, listType); + } catch (IOException e) { + String errMsg = StrUtil.format("Error while parsing text [{}],reason: {}", json, e.getMessage()); + LOG.error(e.getMessage(), e); + throw new JsonProcessException(errMsg); + } + } }