From 603f71bbe2de5edc9982dac7055a6b96f5baca68 Mon Sep 17 00:00:00 2001 From: Yuriy Lytvynchuk Date: Tue, 13 Dec 2022 16:09:36 +0200 Subject: [PATCH] fix empty array & nodeDetails --- .../rule/engine/transform/TbSplitArrayMsgNode.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbSplitArrayMsgNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbSplitArrayMsgNode.java index 2dc27b6f92..d018b86922 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbSplitArrayMsgNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbSplitArrayMsgNode.java @@ -40,7 +40,7 @@ import java.util.concurrent.ExecutionException; name = "split array msg", configClazz = EmptyNodeConfiguration.class, nodeDescription = "Split array message into several msgs", - nodeDetails = "Split the array fetched from the msg body. If the msg data is not a JSON object returns the " + nodeDetails = "Split the array fetched from the msg body. If the msg data is not a JSON array returns the " + "incoming message as outbound message with Failure chain, otherwise returns " + "inner objects of the extracted array as separate messages via Success chain.", uiResources = {"static/rulenode/rulenode-core-config.js"}, @@ -61,7 +61,9 @@ public class TbSplitArrayMsgNode implements TbNode { JsonNode jsonNode = JacksonUtil.toJsonNode(msg.getData()); if (jsonNode.isArray()) { ArrayNode data = (ArrayNode) jsonNode; - if (data.size() == 1) { + if (data.isEmpty()) { + ctx.ack(msg); + } else if (data.size() == 1) { ctx.tellSuccess(TbMsg.transformMsg(msg, msg.getType(), msg.getOriginator(), msg.getMetaData(), JacksonUtil.toString(data.get(0)))); } else { TbMsgCallbackWrapper wrapper = new MultipleTbMsgsCallbackWrapper(data.size(), new TbMsgCallback() {