From 63c0325d3b26aef5fb9a5cdf590163ec3f222adf Mon Sep 17 00:00:00 2001 From: Yuriy Lytvynchuk Date: Mon, 15 Aug 2022 12:05:07 +0300 Subject: [PATCH] code review --- .../engine/transform/TbRenameKeysNode.java | 51 ++++++++----------- ...odeTest.java => TbRenameKeysNodeTest.java} | 9 ++-- 2 files changed, 26 insertions(+), 34 deletions(-) rename rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/{TbRenameMsgKeysNodeTest.java => TbRenameKeysNodeTest.java} (96%) diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbRenameKeysNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbRenameKeysNode.java index 8704874594..7bb7d295f2 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbRenameKeysNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbRenameKeysNode.java @@ -18,7 +18,6 @@ package org.thingsboard.rule.engine.transform; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.CollectionUtils; import org.thingsboard.common.util.JacksonUtil; import org.thingsboard.rule.engine.api.RuleNode; import org.thingsboard.rule.engine.api.TbContext; @@ -58,42 +57,34 @@ public class TbRenameKeysNode implements TbNode { @Override public void onMsg(TbContext ctx, TbMsg msg) throws ExecutionException, InterruptedException, TbNodeException { Map renameKeysMapping = config.getRenameKeysMapping(); - if (CollectionUtils.isEmpty(renameKeysMapping)) { - ctx.tellSuccess(msg); + TbMsgMetaData metaData = msg.getMetaData(); + String data = msg.getData(); + if (config.isFromMetadata()) { + Map metaDataMap = metaData.getData(); + renameKeysMapping.forEach((nameKey, newNameKey) -> { + if (metaDataMap.containsKey(nameKey)) { + metaDataMap.put(newNameKey, metaDataMap.get(nameKey)); + metaDataMap.remove(nameKey); + } + }); + metaData = new TbMsgMetaData(metaDataMap); } else { - TbMsgMetaData metaData = msg.getMetaData(); - String data = msg.getData(); - if (config.isFromMetadata()) { - Map metaDataMap = metaData.getData(); + JsonNode dataNode = JacksonUtil.toJsonNode(msg.getData()); + if (dataNode.isObject()) { + ObjectNode msgData = (ObjectNode) dataNode; renameKeysMapping.forEach((nameKey, newNameKey) -> { - if (!newNameKey.equals(nameKey)) { - if (metaDataMap.containsKey(nameKey)) { - metaDataMap.put(newNameKey, metaDataMap.get(nameKey)); - metaDataMap.remove(nameKey); - } + if (msgData.has(nameKey)) { + msgData.set(newNameKey, msgData.get(nameKey)); + msgData.remove(nameKey); } }); - metaData = new TbMsgMetaData(metaDataMap); + data = JacksonUtil.toString(msgData); } else { - JsonNode dataNode = JacksonUtil.toJsonNode(msg.getData()); - if (dataNode.isObject()) { - ObjectNode msgData = (ObjectNode) dataNode; - renameKeysMapping.forEach((nameKey, newNameKey) -> { - if (!newNameKey.equals(nameKey)) { - if (msgData.has(nameKey)) { - msgData.set(newNameKey, msgData.get(nameKey)); - msgData.remove(nameKey); - } - } - }); - data = JacksonUtil.toString(msgData); - } else { - ctx.tellFailure(msg, new RuntimeException("Msg data is not a JSON Object!")); - return; - } + ctx.tellFailure(msg, new RuntimeException("Msg data is not a JSON Object!")); + return; } - ctx.tellSuccess(TbMsg.transformMsg(msg, msg.getType(), msg.getOriginator(), metaData, data)); } + ctx.tellSuccess(TbMsg.transformMsg(msg, msg.getType(), msg.getOriginator(), metaData, data)); } @Override diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameMsgKeysNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameKeysNodeTest.java similarity index 96% rename from rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameMsgKeysNodeTest.java rename to rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameKeysNodeTest.java index e42128157d..b5b17efe4c 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameMsgKeysNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameKeysNodeTest.java @@ -42,7 +42,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -public class TbRenameMsgKeysNodeTest { +public class TbRenameKeysNodeTest { DeviceId deviceId; TbRenameKeysNode node; TbRenameKeysNodeConfiguration config; @@ -124,8 +124,9 @@ public class TbRenameMsgKeysNodeTest { nodeConfiguration = new TbNodeConfiguration(JacksonUtil.valueToTree(defaultConfig)); node.init(ctx, nodeConfiguration); - String data = "{}"; - node.onMsg(ctx, getTbMsg(deviceId, data)); + String data = "{\"Temperature_1\":22.5,\"TestKey_2\":10.3}"; + TbMsg msg = getTbMsg(deviceId, data); + node.onMsg(ctx, msg); ArgumentCaptor newMsgCaptor = ArgumentCaptor.forClass(TbMsg.class); verify(ctx, times(1)).tellSuccess(newMsgCaptor.capture()); @@ -134,7 +135,7 @@ public class TbRenameMsgKeysNodeTest { TbMsg newMsg = newMsgCaptor.getValue(); assertThat(newMsg).isNotNull(); - assertThat(newMsg.getData()).isEqualTo(data); + assertThat(newMsg.getMetaData()).isEqualTo(msg.getMetaData()); } @Test