Commit 6ede96ef48531ffec5fca2c3fd26b5ae47cf8ff2

Authored by Bohdan Smetaniuk
1 parent d81804ac

fix for POST_ATTRIBUTES_REQUEST

... ... @@ -44,12 +44,8 @@ public class EntityDataMsgConstructor {
44 44 case ATTRIBUTES_UPDATED:
45 45 try {
46 46 JsonObject data = entityData.getAsJsonObject();
47   - if (data.has("scope") && data.has("kv")) {
48   - builder.setPostAttributesMsg(JsonConverter.convertToAttributesProto(data.getAsJsonObject("kv")));
49   - builder.setPostAttributeScope(data.getAsJsonPrimitive("scope").getAsString());
50   - } else {
51   - builder.setPostAttributesMsg(JsonConverter.convertToAttributesProto(data));
52   - }
  47 + builder.setPostAttributesMsg(JsonConverter.convertToAttributesProto(data.getAsJsonObject("kv")));
  48 + builder.setPostAttributeScope(data.getAsJsonPrimitive("scope").getAsString());
53 49 } catch (Exception e) {
54 50 log.warn("Can't convert to attributes proto, entityData [{}]", entityData, e);
55 51 }
... ...
... ... @@ -46,7 +46,9 @@ import org.thingsboard.server.common.msg.TbMsg;
46 46 import org.thingsboard.server.common.msg.session.SessionMsgType;
47 47
48 48 import javax.annotation.Nullable;
  49 +import java.util.HashMap;
49 50 import java.util.List;
  51 +import java.util.Map;
50 52 import java.util.UUID;
51 53
52 54 import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS;
... ... @@ -137,7 +139,17 @@ public class TbMsgPushToEdgeNode implements TbNode {
137 139 if (edgeEventTypeByEntityType == null) {
138 140 return null;
139 141 }
140   - return buildEdgeEvent(ctx.getTenantId(), getActionTypeByMsgType(msg.getType()), msg.getOriginator().getId(), edgeEventTypeByEntityType, json.readTree(msg.getData()));
  142 + JsonNode entityBody = null;
  143 + JsonNode data = json.readTree(msg.getData());
  144 + if (SessionMsgType.POST_ATTRIBUTES_REQUEST.name().equals(msg.getType())) {
  145 + Map<String, Object> entityData = new HashMap<>();
  146 + entityData.put("kv", data);
  147 + entityData.put("scope", msg.getMetaData().getData().get("scope"));
  148 + entityBody = json.valueToTree(entityData);
  149 + } else {
  150 + entityBody = data;
  151 + }
  152 + return buildEdgeEvent(ctx.getTenantId(), getActionTypeByMsgType(msg.getType()), msg.getOriginator().getId(), edgeEventTypeByEntityType, entityBody);
141 153 }
142 154 }
143 155
... ...
... ... @@ -64,6 +64,7 @@ public class TbMsgAttributesNode implements TbNode {
64 64 }
65 65 String src = msg.getData();
66 66 Set<AttributeKvEntry> attributes = JsonConverter.convertToAttributes(new JsonParser().parse(src));
  67 + msg.getMetaData().putValue("scope", config.getScope());
67 68 ctx.getTelemetryService().saveAndNotify(ctx.getTenantId(), msg.getOriginator(), config.getScope(), new ArrayList<>(attributes), new TelemetryNodeCallback(ctx, msg));
68 69 }
69 70
... ...