diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckMessageNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckMessageNode.java index f62d236bf2..1913acaded 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckMessageNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbCheckMessageNode.java @@ -33,7 +33,7 @@ import java.util.Map; @Slf4j @RuleNode( type = ComponentType.FILTER, - name = "has Hobotok", + name = "check existence fields", relationTypes = {"True", "False"}, configClazz = TbCheckMessageNodeConfiguration.class, nodeDescription = "Checks the existence of the selected keys from message data and metadata.", @@ -71,9 +71,8 @@ public class TbCheckMessageNode implements TbNode { private boolean allDataKeysExist(TbMsg msg) { if (!messageNamesList.isEmpty()) { - JsonObject data = parser.parse(msg.getData()).getAsJsonObject(); for (String field : messageNamesList) { - if (!data.has(field)) { + if (!toJson(msg).has(field)) { return false; } } @@ -84,9 +83,8 @@ public class TbCheckMessageNode implements TbNode { private boolean atLeastOneDataKeyExist(TbMsg msg) { if (!messageNamesList.isEmpty()) { - JsonObject data = parser.parse(msg.getData()).getAsJsonObject(); for (String field : messageNamesList) { - if (data.has(field)) { + if (toJson(msg).has(field)) { return true; } } @@ -97,9 +95,8 @@ public class TbCheckMessageNode implements TbNode { private boolean allMetadataKeysExist(TbMsg msg) { if (!metadataNamesList.isEmpty()) { - Map metadata = msg.getMetaData().getData(); for (String field : metadataNamesList) { - if (!metadata.containsKey(field)) { + if (!toMap(msg).containsKey(field)) { return false; } } @@ -110,9 +107,8 @@ public class TbCheckMessageNode implements TbNode { private boolean atLeastOneMetadataKeyExist(TbMsg msg) { if (!metadataNamesList.isEmpty()) { - Map metadata = msg.getMetaData().getData(); for (String field : metadataNamesList) { - if (metadata.containsKey(field)) { + if (toMap(msg).containsKey(field)) { return true; } } @@ -121,6 +117,14 @@ public class TbCheckMessageNode implements TbNode { return false; } + private Map toMap(TbMsg msg) { + return msg.getMetaData().getData(); + } + + private JsonObject toJson(TbMsg msg) { + return parser.parse(msg.getData()).getAsJsonObject(); + } + @Override public void destroy() {