thingsboard-aplcache

update TbCheckMessageNode

1/31/2019 7:27:45 AM

Details

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() {