Commit 1a83dbc8e35c2db8a738a309d24be2668d30439c

Authored by Volodymyr Babak
1 parent c677b1bd

Use IDs instead of names

@@ -224,6 +224,7 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor<RuleCh @@ -224,6 +224,7 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor<RuleCh
224 if (targetCtx != null) { 224 if (targetCtx != null) {
225 log.trace("[{}][{}] Pushing message to target rule node", entityId, targetId); 225 log.trace("[{}][{}] Pushing message to target rule node", entityId, targetId);
226 pushMsgToNode(targetCtx, msg, ""); 226 pushMsgToNode(targetCtx, msg, "");
  227 + pushUpdatesToEdges(msg);
227 } else { 228 } else {
228 log.trace("[{}][{}] Rule node does not exist. Probably old message", entityId, targetId); 229 log.trace("[{}][{}] Rule node does not exist. Probably old message", entityId, targetId);
229 msg.getCallback().onSuccess(); 230 msg.getCallback().onSuccess();
@@ -346,7 +347,6 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor<RuleCh @@ -346,7 +347,6 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor<RuleCh
346 347
347 private void pushMsgToNode(RuleNodeCtx nodeCtx, TbMsg msg, String fromRelationType) { 348 private void pushMsgToNode(RuleNodeCtx nodeCtx, TbMsg msg, String fromRelationType) {
348 if (nodeCtx != null) { 349 if (nodeCtx != null) {
349 - pushUpdatesToEdges(msg);  
350 nodeCtx.getSelfActor().tell(new RuleChainToRuleNodeMsg(new DefaultTbContext(systemContext, nodeCtx), msg, fromRelationType), self); 350 nodeCtx.getSelfActor().tell(new RuleChainToRuleNodeMsg(new DefaultTbContext(systemContext, nodeCtx), msg, fromRelationType), self);
351 } else { 351 } else {
352 log.error("[{}][{}] RuleNodeCtx is empty", entityId, ruleChainName); 352 log.error("[{}][{}] RuleNodeCtx is empty", entityId, ruleChainName);
@@ -274,7 +274,7 @@ public final class EdgeGrpcSession implements Closeable { @@ -274,7 +274,7 @@ public final class EdgeGrpcSession implements Closeable {
274 , objectMapper.writeValueAsString(entityNode)); 274 , objectMapper.writeValueAsString(entityNode));
275 log.debug("Sending donwlink entity data msg, entityName [{}], tbMsg [{}]", finalEntityName, tbMsg); 275 log.debug("Sending donwlink entity data msg, entityName [{}], tbMsg [{}]", finalEntityName, tbMsg);
276 outputStream.onNext(ResponseMsg.newBuilder() 276 outputStream.onNext(ResponseMsg.newBuilder()
277 - .setDownlinkMsg(constructDownlinkEntityDataMsg(finalEntityName, tbMsg)) 277 + .setDownlinkMsg(constructDownlinkEntityDataMsg(finalEntityName, finalEntityId, tbMsg))
278 .build()); 278 .build());
279 } catch (Exception e) { 279 } catch (Exception e) {
280 log.error("[{}] Failed to send attribute updates to the edge", edge.getName(), e); 280 log.error("[{}] Failed to send attribute updates to the edge", edge.getName(), e);
@@ -291,25 +291,29 @@ public final class EdgeGrpcSession implements Closeable { @@ -291,25 +291,29 @@ public final class EdgeGrpcSession implements Closeable {
291 log.trace("Executing processCustomDownlinkMessage, entry [{}]", entry); 291 log.trace("Executing processCustomDownlinkMessage, entry [{}]", entry);
292 TbMsg tbMsg = TbMsg.fromBytes(Base64.decodeBase64(entry.getData()), TbMsgCallback.EMPTY); 292 TbMsg tbMsg = TbMsg.fromBytes(Base64.decodeBase64(entry.getData()), TbMsgCallback.EMPTY);
293 String entityName = null; 293 String entityName = null;
  294 + EntityId entityId = null;
294 switch (entry.getEntityType()) { 295 switch (entry.getEntityType()) {
295 case DEVICE: 296 case DEVICE:
296 Device device = ctx.getDeviceService().findDeviceById(edge.getTenantId(), new DeviceId(tbMsg.getOriginator().getId())); 297 Device device = ctx.getDeviceService().findDeviceById(edge.getTenantId(), new DeviceId(tbMsg.getOriginator().getId()));
297 entityName = device.getName(); 298 entityName = device.getName();
  299 + entityId = device.getId();
298 break; 300 break;
299 case ASSET: 301 case ASSET:
300 Asset asset = ctx.getAssetService().findAssetById(edge.getTenantId(), new AssetId(tbMsg.getOriginator().getId())); 302 Asset asset = ctx.getAssetService().findAssetById(edge.getTenantId(), new AssetId(tbMsg.getOriginator().getId()));
301 entityName = asset.getName(); 303 entityName = asset.getName();
  304 + entityId = asset.getId();
302 break; 305 break;
303 case ENTITY_VIEW: 306 case ENTITY_VIEW:
304 EntityView entityView = ctx.getEntityViewService().findEntityViewById(edge.getTenantId(), new EntityViewId(tbMsg.getOriginator().getId())); 307 EntityView entityView = ctx.getEntityViewService().findEntityViewById(edge.getTenantId(), new EntityViewId(tbMsg.getOriginator().getId()));
305 entityName = entityView.getName(); 308 entityName = entityView.getName();
  309 + entityId = entityView.getId();
306 break; 310 break;
307 311
308 } 312 }
309 - if (entityName != null) {  
310 - log.debug("Sending donwlink entity data msg, entityName [{}], tbMsg [{}]", entityName, tbMsg); 313 + if (entityName != null && entityId != null) {
  314 + log.debug("Sending downlink entity data msg, entityName [{}], tbMsg [{}]", entityName, tbMsg);
311 outputStream.onNext(ResponseMsg.newBuilder() 315 outputStream.onNext(ResponseMsg.newBuilder()
312 - .setDownlinkMsg(constructDownlinkEntityDataMsg(entityName, tbMsg)) 316 + .setDownlinkMsg(constructDownlinkEntityDataMsg(entityName, entityId, tbMsg))
313 .build()); 317 .build());
314 } 318 }
315 } 319 }
@@ -482,10 +486,13 @@ public final class EdgeGrpcSession implements Closeable { @@ -482,10 +486,13 @@ public final class EdgeGrpcSession implements Closeable {
482 } 486 }
483 } 487 }
484 488
485 - private DownlinkMsg constructDownlinkEntityDataMsg(String entityName, TbMsg tbMsg) { 489 + private DownlinkMsg constructDownlinkEntityDataMsg(String entityName, EntityId entityId, TbMsg tbMsg) {
486 EntityDataProto entityData = EntityDataProto.newBuilder() 490 EntityDataProto entityData = EntityDataProto.newBuilder()
487 .setEntityName(entityName) 491 .setEntityName(entityName)
488 - .setTbMsg(ByteString.copyFrom(TbMsg.toByteArray(tbMsg))).build(); 492 + .setTbMsg(ByteString.copyFrom(TbMsg.toByteArray(tbMsg)))
  493 + .setEntityIdMSB(entityId.getId().getMostSignificantBits())
  494 + .setEntityIdLSB(entityId.getId().getLeastSignificantBits())
  495 + .build();
489 496
490 DownlinkMsg.Builder builder = DownlinkMsg.newBuilder() 497 DownlinkMsg.Builder builder = DownlinkMsg.newBuilder()
491 .addAllEntityData(Collections.singletonList(entityData)); 498 .addAllEntityData(Collections.singletonList(entityData));
@@ -28,6 +28,8 @@ public class AssetUpdateMsgConstructor { @@ -28,6 +28,8 @@ public class AssetUpdateMsgConstructor {
28 public AssetUpdateMsg constructAssetUpdatedMsg(UpdateMsgType msgType, Asset asset) { 28 public AssetUpdateMsg constructAssetUpdatedMsg(UpdateMsgType msgType, Asset asset) {
29 AssetUpdateMsg.Builder builder = AssetUpdateMsg.newBuilder() 29 AssetUpdateMsg.Builder builder = AssetUpdateMsg.newBuilder()
30 .setMsgType(msgType) 30 .setMsgType(msgType)
  31 + .setIdMSB(asset.getId().getId().getMostSignificantBits())
  32 + .setIdLSB(asset.getId().getId().getLeastSignificantBits())
31 .setName(asset.getName()) 33 .setName(asset.getName())
32 .setType(asset.getType()); 34 .setType(asset.getType());
33 if (asset.getLabel() != null) { 35 if (asset.getLabel() != null) {
@@ -34,6 +34,8 @@ public class DeviceUpdateMsgConstructor { @@ -34,6 +34,8 @@ public class DeviceUpdateMsgConstructor {
34 public DeviceUpdateMsg constructDeviceUpdatedMsg(UpdateMsgType msgType, Device device) { 34 public DeviceUpdateMsg constructDeviceUpdatedMsg(UpdateMsgType msgType, Device device) {
35 DeviceUpdateMsg.Builder builder = DeviceUpdateMsg.newBuilder() 35 DeviceUpdateMsg.Builder builder = DeviceUpdateMsg.newBuilder()
36 .setMsgType(msgType) 36 .setMsgType(msgType)
  37 + .setIdMSB(device.getId().getId().getMostSignificantBits())
  38 + .setIdLSB(device.getId().getId().getLeastSignificantBits())
37 .setName(device.getName()) 39 .setName(device.getName())
38 .setType(device.getType()); 40 .setType(device.getType());
39 if (device.getLabel() != null) { 41 if (device.getLabel() != null) {
@@ -16,16 +16,8 @@ @@ -16,16 +16,8 @@
16 package org.thingsboard.server.service.edge.rpc.constructor; 16 package org.thingsboard.server.service.edge.rpc.constructor;
17 17
18 import lombok.extern.slf4j.Slf4j; 18 import lombok.extern.slf4j.Slf4j;
19 -import org.springframework.beans.factory.annotation.Autowired;  
20 import org.springframework.stereotype.Component; 19 import org.springframework.stereotype.Component;
21 -import org.thingsboard.server.common.data.Device;  
22 -import org.thingsboard.server.common.data.EntityType;  
23 import org.thingsboard.server.common.data.EntityView; 20 import org.thingsboard.server.common.data.EntityView;
24 -import org.thingsboard.server.common.data.asset.Asset;  
25 -import org.thingsboard.server.common.data.id.AssetId;  
26 -import org.thingsboard.server.common.data.id.DeviceId;  
27 -import org.thingsboard.server.dao.asset.AssetService;  
28 -import org.thingsboard.server.dao.device.DeviceService;  
29 import org.thingsboard.server.gen.edge.EdgeEntityType; 21 import org.thingsboard.server.gen.edge.EdgeEntityType;
30 import org.thingsboard.server.gen.edge.EntityViewUpdateMsg; 22 import org.thingsboard.server.gen.edge.EntityViewUpdateMsg;
31 import org.thingsboard.server.gen.edge.UpdateMsgType; 23 import org.thingsboard.server.gen.edge.UpdateMsgType;
@@ -34,34 +26,27 @@ import org.thingsboard.server.gen.edge.UpdateMsgType; @@ -34,34 +26,27 @@ import org.thingsboard.server.gen.edge.UpdateMsgType;
34 @Slf4j 26 @Slf4j
35 public class EntityViewUpdateMsgConstructor { 27 public class EntityViewUpdateMsgConstructor {
36 28
37 - @Autowired  
38 - private DeviceService deviceService;  
39 -  
40 - @Autowired  
41 - private AssetService assetService;  
42 -  
43 public EntityViewUpdateMsg constructEntityViewUpdatedMsg(UpdateMsgType msgType, EntityView entityView) { 29 public EntityViewUpdateMsg constructEntityViewUpdatedMsg(UpdateMsgType msgType, EntityView entityView) {
44 - String relatedName;  
45 - String relatedType;  
46 - EdgeEntityType relatedEntityType;  
47 - if (entityView.getEntityId().getEntityType().equals(EntityType.DEVICE)) {  
48 - Device device = deviceService.findDeviceById(entityView.getTenantId(), new DeviceId(entityView.getEntityId().getId()));  
49 - relatedName = device.getName();  
50 - relatedType = device.getType();  
51 - relatedEntityType = EdgeEntityType.DEVICE;  
52 - } else {  
53 - Asset asset = assetService.findAssetById(entityView.getTenantId(), new AssetId(entityView.getEntityId().getId()));  
54 - relatedName = asset.getName();  
55 - relatedType = asset.getType();  
56 - relatedEntityType = EdgeEntityType.ASSET; 30 + EdgeEntityType entityType;
  31 + switch (entityView.getEntityId().getEntityType()) {
  32 + case DEVICE:
  33 + entityType = EdgeEntityType.DEVICE;
  34 + break;
  35 + case ASSET:
  36 + entityType = EdgeEntityType.ASSET;
  37 + break;
  38 + default:
  39 + throw new RuntimeException("Unsupported entity type [" + entityView.getEntityId().getEntityType() + "]");
57 } 40 }
58 EntityViewUpdateMsg.Builder builder = EntityViewUpdateMsg.newBuilder() 41 EntityViewUpdateMsg.Builder builder = EntityViewUpdateMsg.newBuilder()
59 .setMsgType(msgType) 42 .setMsgType(msgType)
  43 + .setIdMSB(entityView.getId().getId().getMostSignificantBits())
  44 + .setIdLSB(entityView.getId().getId().getLeastSignificantBits())
60 .setName(entityView.getName()) 45 .setName(entityView.getName())
61 .setType(entityView.getType()) 46 .setType(entityView.getType())
62 - .setRelatedName(relatedName)  
63 - .setRelatedType(relatedType)  
64 - .setRelatedEntityType(relatedEntityType); 47 + .setIdMSB(entityView.getEntityId().getId().getMostSignificantBits())
  48 + .setIdLSB(entityView.getEntityId().getId().getLeastSignificantBits())
  49 + .setEntityType(entityType);
65 return builder.build(); 50 return builder.build();
66 } 51 }
67 52
@@ -35,6 +35,8 @@ public class UserUpdateMsgConstructor { @@ -35,6 +35,8 @@ public class UserUpdateMsgConstructor {
35 public UserUpdateMsg constructUserUpdatedMsg(UpdateMsgType msgType, User user) { 35 public UserUpdateMsg constructUserUpdatedMsg(UpdateMsgType msgType, User user) {
36 UserUpdateMsg.Builder builder = UserUpdateMsg.newBuilder() 36 UserUpdateMsg.Builder builder = UserUpdateMsg.newBuilder()
37 .setMsgType(msgType) 37 .setMsgType(msgType)
  38 + .setIdMSB(user.getId().getId().getMostSignificantBits())
  39 + .setIdLSB(user.getId().getId().getLeastSignificantBits())
38 .setEmail(user.getEmail()) 40 .setEmail(user.getEmail())
39 .setAuthority(user.getAuthority().name()) 41 .setAuthority(user.getAuthority().name())
40 .setEnabled(false); 42 .setEnabled(false);
@@ -141,7 +141,7 @@ public class EdgeGrpcClient implements EdgeRpcClient { @@ -141,7 +141,7 @@ public class EdgeGrpcClient implements EdgeRpcClient {
141 log.debug("[{}] Entity update message received {}", edgeKey, responseMsg.getEntityUpdateMsg()); 141 log.debug("[{}] Entity update message received {}", edgeKey, responseMsg.getEntityUpdateMsg());
142 onEntityUpdate.accept(responseMsg.getEntityUpdateMsg()); 142 onEntityUpdate.accept(responseMsg.getEntityUpdateMsg());
143 } else if (responseMsg.hasDownlinkMsg()) { 143 } else if (responseMsg.hasDownlinkMsg()) {
144 - log.debug("[{}] Downlink message received for rule chain {}", edgeKey, responseMsg.getDownlinkMsg()); 144 + log.debug("[{}] Downlink message received {}", edgeKey, responseMsg.getDownlinkMsg());
145 onDownlink.accept(responseMsg.getDownlinkMsg()); 145 onDownlink.accept(responseMsg.getDownlinkMsg());
146 } 146 }
147 } 147 }
@@ -99,7 +99,9 @@ enum UpdateMsgType { @@ -99,7 +99,9 @@ enum UpdateMsgType {
99 message EntityDataProto { 99 message EntityDataProto {
100 string entityName = 1; 100 string entityName = 1;
101 string entityType = 2; 101 string entityType = 2;
102 - bytes tbMsg = 3; 102 + int64 entityIdMSB = 3;
  103 + int64 entityIdLSB = 4;
  104 + bytes tbMsg = 5;
103 } 105 }
104 106
105 message RuleChainUpdateMsg { 107 message RuleChainUpdateMsg {
@@ -159,31 +161,37 @@ message DashboardUpdateMsg { @@ -159,31 +161,37 @@ message DashboardUpdateMsg {
159 161
160 message DeviceUpdateMsg { 162 message DeviceUpdateMsg {
161 UpdateMsgType msgType = 1; 163 UpdateMsgType msgType = 1;
162 - string name = 2;  
163 - string type = 3;  
164 - string label = 4;  
165 - string credentialsType = 5;  
166 - string credentialsId = 6;  
167 - string credentialsValue = 7;  
168 - string groupName = 8; 164 + int64 idMSB = 2;
  165 + int64 idLSB = 3;
  166 + string name = 4;
  167 + string type = 5;
  168 + string label = 6;
  169 + string credentialsType = 7;
  170 + string credentialsId = 8;
  171 + string credentialsValue = 9;
  172 + string groupName = 10;
169 } 173 }
170 174
171 message AssetUpdateMsg { 175 message AssetUpdateMsg {
172 UpdateMsgType msgType = 1; 176 UpdateMsgType msgType = 1;
173 - string name = 2;  
174 - string type = 3;  
175 - string label = 4;  
176 - string groupName = 5; 177 + int64 idMSB = 2;
  178 + int64 idLSB = 3;
  179 + string name = 4;
  180 + string type = 5;
  181 + string label = 6;
  182 + string groupName = 7;
177 } 183 }
178 184
179 message EntityViewUpdateMsg { 185 message EntityViewUpdateMsg {
180 UpdateMsgType msgType = 1; 186 UpdateMsgType msgType = 1;
181 - string name = 2;  
182 - string type = 3;  
183 - string relatedName = 4;  
184 - string relatedType = 5;  
185 - EdgeEntityType relatedEntityType = 6;  
186 - string groupName = 7; 187 + int64 idMSB = 2;
  188 + int64 idLSB = 3;
  189 + string name = 4;
  190 + string type = 5;
  191 + int64 entityIdMSB = 6;
  192 + int64 entityIdLSB = 7;
  193 + EdgeEntityType entityType = 8;
  194 + string groupName = 9;
187 } 195 }
188 196
189 message AlarmUpdateMsg { 197 message AlarmUpdateMsg {
@@ -220,14 +228,16 @@ message CustomerUpdateMsg { @@ -220,14 +228,16 @@ message CustomerUpdateMsg {
220 228
221 message UserUpdateMsg { 229 message UserUpdateMsg {
222 UpdateMsgType msgType = 1; 230 UpdateMsgType msgType = 1;
223 - string email = 2;  
224 - string authority = 3;  
225 - string firstName = 4;  
226 - string lastName = 5;  
227 - string additionalInfo = 6;  
228 - bool enabled = 7;  
229 - string password = 8;  
230 - string groupName = 9; 231 + int64 idMSB = 2;
  232 + int64 idLSB = 3;
  233 + string email = 4;
  234 + string authority = 5;
  235 + string firstName = 6;
  236 + string lastName = 7;
  237 + string additionalInfo = 8;
  238 + bool enabled = 9;
  239 + string password = 10;
  240 + string groupName = 11;
231 } 241 }
232 242
233 message RuleChainMetadataRequestMsg { 243 message RuleChainMetadataRequestMsg {