Browse Source

fix for POST_ATTRIBUTES_REQUEST

pull/2436/head
Bohdan Smetaniuk 6 years ago
parent
commit
6ede96ef48
  1. 8
      application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityDataMsgConstructor.java
  2. 14
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/edge/TbMsgPushToEdgeNode.java
  3. 1
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/telemetry/TbMsgAttributesNode.java

8
application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityDataMsgConstructor.java

@ -44,12 +44,8 @@ public class EntityDataMsgConstructor {
case ATTRIBUTES_UPDATED:
try {
JsonObject data = entityData.getAsJsonObject();
if (data.has("scope") && data.has("kv")) {
builder.setPostAttributesMsg(JsonConverter.convertToAttributesProto(data.getAsJsonObject("kv")));
builder.setPostAttributeScope(data.getAsJsonPrimitive("scope").getAsString());
} else {
builder.setPostAttributesMsg(JsonConverter.convertToAttributesProto(data));
}
builder.setPostAttributesMsg(JsonConverter.convertToAttributesProto(data.getAsJsonObject("kv")));
builder.setPostAttributeScope(data.getAsJsonPrimitive("scope").getAsString());
} catch (Exception e) {
log.warn("Can't convert to attributes proto, entityData [{}]", entityData, e);
}

14
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/edge/TbMsgPushToEdgeNode.java

@ -46,7 +46,9 @@ import org.thingsboard.server.common.msg.TbMsg;
import org.thingsboard.server.common.msg.session.SessionMsgType;
import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS;
@ -137,7 +139,17 @@ public class TbMsgPushToEdgeNode implements TbNode {
if (edgeEventTypeByEntityType == null) {
return null;
}
return buildEdgeEvent(ctx.getTenantId(), getActionTypeByMsgType(msg.getType()), msg.getOriginator().getId(), edgeEventTypeByEntityType, json.readTree(msg.getData()));
JsonNode entityBody = null;
JsonNode data = json.readTree(msg.getData());
if (SessionMsgType.POST_ATTRIBUTES_REQUEST.name().equals(msg.getType())) {
Map<String, Object> entityData = new HashMap<>();
entityData.put("kv", data);
entityData.put("scope", msg.getMetaData().getData().get("scope"));
entityBody = json.valueToTree(entityData);
} else {
entityBody = data;
}
return buildEdgeEvent(ctx.getTenantId(), getActionTypeByMsgType(msg.getType()), msg.getOriginator().getId(), edgeEventTypeByEntityType, entityBody);
}
}

1
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/telemetry/TbMsgAttributesNode.java

@ -64,6 +64,7 @@ public class TbMsgAttributesNode implements TbNode {
}
String src = msg.getData();
Set<AttributeKvEntry> attributes = JsonConverter.convertToAttributes(new JsonParser().parse(src));
msg.getMetaData().putValue("scope", config.getScope());
ctx.getTelemetryService().saveAndNotify(ctx.getTenantId(), msg.getOriginator(), config.getScope(), new ArrayList<>(attributes), new TelemetryNodeCallback(ctx, msg));
}

Loading…
Cancel
Save