Browse Source

Merge pull request #7246 from YuriyLytvynchuk/bug/node_originator_fields_check_null

[3.4.2] Bugfix: originator fields node: check value for "null"
pull/7326/head
Andrew Shvayka 4 years ago
committed by GitHub
parent
commit
27948261ce
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      common/data/src/main/java/org/thingsboard/server/common/data/EntityFieldsData.java
  2. 2
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetOriginatorFieldsConfiguration.java
  3. 4
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetOriginatorFieldsNode.java

7
common/data/src/main/java/org/thingsboard/server/common/data/EntityFieldsData.java

@ -50,6 +50,10 @@ public class EntityFieldsData {
}
public String getFieldValue(String field) {
return getFieldValue(field, false);
}
public String getFieldValue(String field, boolean ignoreNullStrings) {
String[] fieldsTree = field.split("\\.");
JsonNode current = fieldsData;
for (String key : fieldsTree) {
@ -61,6 +65,9 @@ public class EntityFieldsData {
}
}
if (current != null) {
if(current.isNull() && ignoreNullStrings){
return null;
}
if (current.isValueNode()) {
return current.asText();
} else {

2
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetOriginatorFieldsConfiguration.java

@ -25,6 +25,7 @@ import java.util.Map;
public class TbGetOriginatorFieldsConfiguration implements NodeConfiguration<TbGetOriginatorFieldsConfiguration> {
private Map<String, String> fieldsMapping;
private boolean ignoreNullStrings;
@Override
public TbGetOriginatorFieldsConfiguration defaultConfiguration() {
@ -33,6 +34,7 @@ public class TbGetOriginatorFieldsConfiguration implements NodeConfiguration<TbG
fieldsMapping.put("name", "originatorName");
fieldsMapping.put("type", "originatorType");
configuration.setFieldsMapping(fieldsMapping);
configuration.setIgnoreNullStrings(false);
return configuration;
}
}

4
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetOriginatorFieldsNode.java

@ -46,10 +46,12 @@ import static org.thingsboard.common.util.DonAsynchron.withCallback;
public class TbGetOriginatorFieldsNode implements TbNode {
private TbGetOriginatorFieldsConfiguration config;
private boolean ignoreNullStrings;
@Override
public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException {
config = TbNodeUtils.convert(configuration, TbGetOriginatorFieldsConfiguration.class);
ignoreNullStrings = config.isIgnoreNullStrings();
}
@Override
@ -69,7 +71,7 @@ public class TbGetOriginatorFieldsNode implements TbNode {
return Futures.transform(EntitiesFieldsAsyncLoader.findAsync(ctx, entityId),
data -> {
config.getFieldsMapping().forEach((field, metaKey) -> {
String val = data.getFieldValue(field);
String val = data.getFieldValue(field, ignoreNullStrings);
if (val != null) {
msg.getMetaData().putValue(metaKey, val);
}

Loading…
Cancel
Save