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 f62d236..1913aca 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<String, String> 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<String, String> 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<String, String> toMap(TbMsg msg) {
+ return msg.getMetaData().getData();
+ }
+
+ private JsonObject toJson(TbMsg msg) {
+ return parser.parse(msg.getData()).getAsJsonObject();
+ }
+
@Override
public void destroy() {