Use IDs instead of names

This commit is contained in:
Volodymyr Babak 2020-06-10 15:34:10 +03:00
parent c677b1bdc3
commit 1a83dbc8e3
8 changed files with 72 additions and 64 deletions

View File

@ -224,6 +224,7 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor<RuleCh
if (targetCtx != null) {
log.trace("[{}][{}] Pushing message to target rule node", entityId, targetId);
pushMsgToNode(targetCtx, msg, "");
pushUpdatesToEdges(msg);
} else {
log.trace("[{}][{}] Rule node does not exist. Probably old message", entityId, targetId);
msg.getCallback().onSuccess();
@ -346,7 +347,6 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor<RuleCh
private void pushMsgToNode(RuleNodeCtx nodeCtx, TbMsg msg, String fromRelationType) {
if (nodeCtx != null) {
pushUpdatesToEdges(msg);
nodeCtx.getSelfActor().tell(new RuleChainToRuleNodeMsg(new DefaultTbContext(systemContext, nodeCtx), msg, fromRelationType), self);
} else {
log.error("[{}][{}] RuleNodeCtx is empty", entityId, ruleChainName);

View File

@ -274,7 +274,7 @@ public final class EdgeGrpcSession implements Closeable {
, objectMapper.writeValueAsString(entityNode));
log.debug("Sending donwlink entity data msg, entityName [{}], tbMsg [{}]", finalEntityName, tbMsg);
outputStream.onNext(ResponseMsg.newBuilder()
.setDownlinkMsg(constructDownlinkEntityDataMsg(finalEntityName, tbMsg))
.setDownlinkMsg(constructDownlinkEntityDataMsg(finalEntityName, finalEntityId, tbMsg))
.build());
} catch (Exception e) {
log.error("[{}] Failed to send attribute updates to the edge", edge.getName(), e);
@ -291,25 +291,29 @@ public final class EdgeGrpcSession implements Closeable {
log.trace("Executing processCustomDownlinkMessage, entry [{}]", entry);
TbMsg tbMsg = TbMsg.fromBytes(Base64.decodeBase64(entry.getData()), TbMsgCallback.EMPTY);
String entityName = null;
EntityId entityId = null;
switch (entry.getEntityType()) {
case DEVICE:
Device device = ctx.getDeviceService().findDeviceById(edge.getTenantId(), new DeviceId(tbMsg.getOriginator().getId()));
entityName = device.getName();
entityId = device.getId();
break;
case ASSET:
Asset asset = ctx.getAssetService().findAssetById(edge.getTenantId(), new AssetId(tbMsg.getOriginator().getId()));
entityName = asset.getName();
entityId = asset.getId();
break;
case ENTITY_VIEW:
EntityView entityView = ctx.getEntityViewService().findEntityViewById(edge.getTenantId(), new EntityViewId(tbMsg.getOriginator().getId()));
entityName = entityView.getName();
entityId = entityView.getId();
break;
}
if (entityName != null) {
log.debug("Sending donwlink entity data msg, entityName [{}], tbMsg [{}]", entityName, tbMsg);
if (entityName != null && entityId != null) {
log.debug("Sending downlink entity data msg, entityName [{}], tbMsg [{}]", entityName, tbMsg);
outputStream.onNext(ResponseMsg.newBuilder()
.setDownlinkMsg(constructDownlinkEntityDataMsg(entityName, tbMsg))
.setDownlinkMsg(constructDownlinkEntityDataMsg(entityName, entityId, tbMsg))
.build());
}
}
@ -482,10 +486,13 @@ public final class EdgeGrpcSession implements Closeable {
}
}
private DownlinkMsg constructDownlinkEntityDataMsg(String entityName, TbMsg tbMsg) {
private DownlinkMsg constructDownlinkEntityDataMsg(String entityName, EntityId entityId, TbMsg tbMsg) {
EntityDataProto entityData = EntityDataProto.newBuilder()
.setEntityName(entityName)
.setTbMsg(ByteString.copyFrom(TbMsg.toByteArray(tbMsg))).build();
.setTbMsg(ByteString.copyFrom(TbMsg.toByteArray(tbMsg)))
.setEntityIdMSB(entityId.getId().getMostSignificantBits())
.setEntityIdLSB(entityId.getId().getLeastSignificantBits())
.build();
DownlinkMsg.Builder builder = DownlinkMsg.newBuilder()
.addAllEntityData(Collections.singletonList(entityData));

View File

@ -28,6 +28,8 @@ public class AssetUpdateMsgConstructor {
public AssetUpdateMsg constructAssetUpdatedMsg(UpdateMsgType msgType, Asset asset) {
AssetUpdateMsg.Builder builder = AssetUpdateMsg.newBuilder()
.setMsgType(msgType)
.setIdMSB(asset.getId().getId().getMostSignificantBits())
.setIdLSB(asset.getId().getId().getLeastSignificantBits())
.setName(asset.getName())
.setType(asset.getType());
if (asset.getLabel() != null) {

View File

@ -34,6 +34,8 @@ public class DeviceUpdateMsgConstructor {
public DeviceUpdateMsg constructDeviceUpdatedMsg(UpdateMsgType msgType, Device device) {
DeviceUpdateMsg.Builder builder = DeviceUpdateMsg.newBuilder()
.setMsgType(msgType)
.setIdMSB(device.getId().getId().getMostSignificantBits())
.setIdLSB(device.getId().getId().getLeastSignificantBits())
.setName(device.getName())
.setType(device.getType());
if (device.getLabel() != null) {

View File

@ -16,16 +16,8 @@
package org.thingsboard.server.service.edge.rpc.constructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.EntityView;
import org.thingsboard.server.common.data.asset.Asset;
import org.thingsboard.server.common.data.id.AssetId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.dao.asset.AssetService;
import org.thingsboard.server.dao.device.DeviceService;
import org.thingsboard.server.gen.edge.EdgeEntityType;
import org.thingsboard.server.gen.edge.EntityViewUpdateMsg;
import org.thingsboard.server.gen.edge.UpdateMsgType;
@ -34,34 +26,27 @@ import org.thingsboard.server.gen.edge.UpdateMsgType;
@Slf4j
public class EntityViewUpdateMsgConstructor {
@Autowired
private DeviceService deviceService;
@Autowired
private AssetService assetService;
public EntityViewUpdateMsg constructEntityViewUpdatedMsg(UpdateMsgType msgType, EntityView entityView) {
String relatedName;
String relatedType;
EdgeEntityType relatedEntityType;
if (entityView.getEntityId().getEntityType().equals(EntityType.DEVICE)) {
Device device = deviceService.findDeviceById(entityView.getTenantId(), new DeviceId(entityView.getEntityId().getId()));
relatedName = device.getName();
relatedType = device.getType();
relatedEntityType = EdgeEntityType.DEVICE;
} else {
Asset asset = assetService.findAssetById(entityView.getTenantId(), new AssetId(entityView.getEntityId().getId()));
relatedName = asset.getName();
relatedType = asset.getType();
relatedEntityType = EdgeEntityType.ASSET;
EdgeEntityType entityType;
switch (entityView.getEntityId().getEntityType()) {
case DEVICE:
entityType = EdgeEntityType.DEVICE;
break;
case ASSET:
entityType = EdgeEntityType.ASSET;
break;
default:
throw new RuntimeException("Unsupported entity type [" + entityView.getEntityId().getEntityType() + "]");
}
EntityViewUpdateMsg.Builder builder = EntityViewUpdateMsg.newBuilder()
.setMsgType(msgType)
.setIdMSB(entityView.getId().getId().getMostSignificantBits())
.setIdLSB(entityView.getId().getId().getLeastSignificantBits())
.setName(entityView.getName())
.setType(entityView.getType())
.setRelatedName(relatedName)
.setRelatedType(relatedType)
.setRelatedEntityType(relatedEntityType);
.setIdMSB(entityView.getEntityId().getId().getMostSignificantBits())
.setIdLSB(entityView.getEntityId().getId().getLeastSignificantBits())
.setEntityType(entityType);
return builder.build();
}

View File

@ -35,6 +35,8 @@ public class UserUpdateMsgConstructor {
public UserUpdateMsg constructUserUpdatedMsg(UpdateMsgType msgType, User user) {
UserUpdateMsg.Builder builder = UserUpdateMsg.newBuilder()
.setMsgType(msgType)
.setIdMSB(user.getId().getId().getMostSignificantBits())
.setIdLSB(user.getId().getId().getLeastSignificantBits())
.setEmail(user.getEmail())
.setAuthority(user.getAuthority().name())
.setEnabled(false);

View File

@ -141,7 +141,7 @@ public class EdgeGrpcClient implements EdgeRpcClient {
log.debug("[{}] Entity update message received {}", edgeKey, responseMsg.getEntityUpdateMsg());
onEntityUpdate.accept(responseMsg.getEntityUpdateMsg());
} else if (responseMsg.hasDownlinkMsg()) {
log.debug("[{}] Downlink message received for rule chain {}", edgeKey, responseMsg.getDownlinkMsg());
log.debug("[{}] Downlink message received {}", edgeKey, responseMsg.getDownlinkMsg());
onDownlink.accept(responseMsg.getDownlinkMsg());
}
}

View File

@ -99,7 +99,9 @@ enum UpdateMsgType {
message EntityDataProto {
string entityName = 1;
string entityType = 2;
bytes tbMsg = 3;
int64 entityIdMSB = 3;
int64 entityIdLSB = 4;
bytes tbMsg = 5;
}
message RuleChainUpdateMsg {
@ -159,31 +161,37 @@ message DashboardUpdateMsg {
message DeviceUpdateMsg {
UpdateMsgType msgType = 1;
string name = 2;
string type = 3;
string label = 4;
string credentialsType = 5;
string credentialsId = 6;
string credentialsValue = 7;
string groupName = 8;
int64 idMSB = 2;
int64 idLSB = 3;
string name = 4;
string type = 5;
string label = 6;
string credentialsType = 7;
string credentialsId = 8;
string credentialsValue = 9;
string groupName = 10;
}
message AssetUpdateMsg {
UpdateMsgType msgType = 1;
string name = 2;
string type = 3;
string label = 4;
string groupName = 5;
int64 idMSB = 2;
int64 idLSB = 3;
string name = 4;
string type = 5;
string label = 6;
string groupName = 7;
}
message EntityViewUpdateMsg {
UpdateMsgType msgType = 1;
string name = 2;
string type = 3;
string relatedName = 4;
string relatedType = 5;
EdgeEntityType relatedEntityType = 6;
string groupName = 7;
int64 idMSB = 2;
int64 idLSB = 3;
string name = 4;
string type = 5;
int64 entityIdMSB = 6;
int64 entityIdLSB = 7;
EdgeEntityType entityType = 8;
string groupName = 9;
}
message AlarmUpdateMsg {
@ -220,14 +228,16 @@ message CustomerUpdateMsg {
message UserUpdateMsg {
UpdateMsgType msgType = 1;
string email = 2;
string authority = 3;
string firstName = 4;
string lastName = 5;
string additionalInfo = 6;
bool enabled = 7;
string password = 8;
string groupName = 9;
int64 idMSB = 2;
int64 idLSB = 3;
string email = 4;
string authority = 5;
string firstName = 6;
string lastName = 7;
string additionalInfo = 8;
bool enabled = 9;
string password = 10;
string groupName = 11;
}
message RuleChainMetadataRequestMsg {