Mino refactoring: add json support for resources, fix test and edgeVersion for test

This commit is contained in:
Andrii Landiak 2023-11-13 13:28:54 +02:00
parent ed285338d2
commit 6fa3a125c2
8 changed files with 28 additions and 24 deletions

View File

@ -647,7 +647,7 @@ public final class EdgeGrpcSession implements Closeable {
case OTA_PACKAGE: case OTA_PACKAGE:
return ctx.getOtaPackageEdgeProcessor().convertOtaPackageEventToDownlink(edgeEvent, this.edgeVersion); return ctx.getOtaPackageEdgeProcessor().convertOtaPackageEventToDownlink(edgeEvent, this.edgeVersion);
case TB_RESOURCE: case TB_RESOURCE:
return ctx.getResourceEdgeProcessor().convertResourceEventToDownlink(edgeEvent); return ctx.getResourceEdgeProcessor().convertResourceEventToDownlink(edgeEvent, this.edgeVersion);
case QUEUE: case QUEUE:
return ctx.getQueueEdgeProcessor().convertQueueEventToDownlink(edgeEvent, this.edgeVersion); return ctx.getQueueEdgeProcessor().convertQueueEventToDownlink(edgeEvent, this.edgeVersion);
case TENANT: case TENANT:

View File

@ -16,18 +16,30 @@
package org.thingsboard.server.service.edge.rpc.constructor; package org.thingsboard.server.service.edge.rpc.constructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.TbResource; import org.thingsboard.server.common.data.TbResource;
import org.thingsboard.server.common.data.id.TbResourceId; import org.thingsboard.server.common.data.id.TbResourceId;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.gen.edge.v1.EdgeVersion;
import org.thingsboard.server.gen.edge.v1.ResourceUpdateMsg; import org.thingsboard.server.gen.edge.v1.ResourceUpdateMsg;
import org.thingsboard.server.gen.edge.v1.UpdateMsgType; import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
import org.thingsboard.server.queue.util.TbCoreComponent; import org.thingsboard.server.queue.util.TbCoreComponent;
import org.thingsboard.server.service.edge.rpc.utils.EdgeVersionUtils;
@Component @Component
@TbCoreComponent @TbCoreComponent
public class ResourceMsgConstructor { public class ResourceMsgConstructor {
public ResourceUpdateMsg constructResourceUpdatedMsg(UpdateMsgType msgType, TbResource tbResource) { public ResourceUpdateMsg constructResourceUpdatedMsg(UpdateMsgType msgType, TbResource tbResource, EdgeVersion edgeVersion) {
if (EdgeVersionUtils.isEdgeVersionOlderThan_3_6_2(edgeVersion)) {
return constructDeprecatedResourceUpdateMsg(msgType, tbResource);
}
return ResourceUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(tbResource))
.setIdMSB(tbResource.getId().getId().getMostSignificantBits())
.setIdLSB(tbResource.getId().getId().getLeastSignificantBits()).build();
}
private ResourceUpdateMsg constructDeprecatedResourceUpdateMsg(UpdateMsgType msgType, TbResource tbResource) {
ResourceUpdateMsg.Builder builder = ResourceUpdateMsg.newBuilder() ResourceUpdateMsg.Builder builder = ResourceUpdateMsg.newBuilder()
.setMsgType(msgType) .setMsgType(msgType)
.setIdMSB(tbResource.getId().getId().getMostSignificantBits()) .setIdMSB(tbResource.getId().getId().getMostSignificantBits())

View File

@ -70,16 +70,6 @@ public abstract class BaseAlarmProcessor extends BaseEdgeProcessor {
case ENTITY_UPDATED_RPC_MESSAGE: case ENTITY_UPDATED_RPC_MESSAGE:
alarm.setId(alarmId); alarm.setId(alarmId);
alarm.setOriginator(originatorId); alarm.setOriginator(originatorId);
alarm.setSeverity(AlarmSeverity.valueOf(alarmUpdateMsg.getSeverity()));
alarm.setStartTs(alarmUpdateMsg.getStartTs());
var alarmStatus = AlarmStatus.valueOf(alarmUpdateMsg.getStatus());
alarm.setClearTs(alarmUpdateMsg.getClearTs());
alarm.setPropagate(alarmUpdateMsg.getPropagate());
alarm.setCleared(alarmStatus.isCleared());
alarm.setAcknowledged(alarmStatus.isAck());
alarm.setAckTs(alarmUpdateMsg.getAckTs());
alarm.setEndTs(alarmUpdateMsg.getEndTs());
alarm.setDetails(JacksonUtil.toJsonNode(alarmUpdateMsg.getDetails()));
if (UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE.equals(alarmUpdateMsg.getMsgType())) { if (UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE.equals(alarmUpdateMsg.getMsgType())) {
alarmService.createAlarm(AlarmCreateOrUpdateActiveRequest.fromAlarm(alarm, null, alarmId)); alarmService.createAlarm(AlarmCreateOrUpdateActiveRequest.fromAlarm(alarm, null, alarmId));
} else { } else {

View File

@ -29,6 +29,7 @@ import org.thingsboard.server.common.data.id.TbResourceId;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.exception.DataValidationException; import org.thingsboard.server.dao.exception.DataValidationException;
import org.thingsboard.server.gen.edge.v1.DownlinkMsg; import org.thingsboard.server.gen.edge.v1.DownlinkMsg;
import org.thingsboard.server.gen.edge.v1.EdgeVersion;
import org.thingsboard.server.gen.edge.v1.ResourceUpdateMsg; import org.thingsboard.server.gen.edge.v1.ResourceUpdateMsg;
import org.thingsboard.server.gen.edge.v1.UpdateMsgType; import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
import org.thingsboard.server.queue.util.TbCoreComponent; import org.thingsboard.server.queue.util.TbCoreComponent;
@ -70,7 +71,7 @@ public class ResourceEdgeProcessor extends BaseResourceProcessor {
return Futures.immediateFuture(null); return Futures.immediateFuture(null);
} }
public DownlinkMsg convertResourceEventToDownlink(EdgeEvent edgeEvent) { public DownlinkMsg convertResourceEventToDownlink(EdgeEvent edgeEvent, EdgeVersion edgeVersion) {
TbResourceId tbResourceId = new TbResourceId(edgeEvent.getEntityId()); TbResourceId tbResourceId = new TbResourceId(edgeEvent.getEntityId());
DownlinkMsg downlinkMsg = null; DownlinkMsg downlinkMsg = null;
switch (edgeEvent.getAction()) { switch (edgeEvent.getAction()) {
@ -80,7 +81,7 @@ public class ResourceEdgeProcessor extends BaseResourceProcessor {
if (tbResource != null) { if (tbResource != null) {
UpdateMsgType msgType = getUpdateMsgType(edgeEvent.getAction()); UpdateMsgType msgType = getUpdateMsgType(edgeEvent.getAction());
ResourceUpdateMsg resourceUpdateMsg = ResourceUpdateMsg resourceUpdateMsg =
resourceMsgConstructor.constructResourceUpdatedMsg(msgType, tbResource); resourceMsgConstructor.constructResourceUpdatedMsg(msgType, tbResource, edgeVersion);
downlinkMsg = DownlinkMsg.newBuilder() downlinkMsg = DownlinkMsg.newBuilder()
.setDownlinkMsgId(EdgeUtils.nextPositiveInt()) .setDownlinkMsgId(EdgeUtils.nextPositiveInt())
.addResourceUpdateMsg(resourceUpdateMsg) .addResourceUpdateMsg(resourceUpdateMsg)

View File

@ -314,7 +314,7 @@ public abstract class BaseTelemetryProcessor extends BaseEdgeProcessor {
EntityType entityType, EntityType entityType,
UUID entityUUID, UUID entityUUID,
EdgeEventActionType actionType, EdgeEventActionType actionType,
JsonNode body) throws JsonProcessingException { JsonNode body) {
EntityId entityId; EntityId entityId;
switch (entityType) { switch (entityType) {
case DEVICE: case DEVICE:

View File

@ -111,7 +111,7 @@ public class EdgeGrpcClient implements EdgeRpcClient {
.setConnectRequestMsg(ConnectRequestMsg.newBuilder() .setConnectRequestMsg(ConnectRequestMsg.newBuilder()
.setEdgeRoutingKey(edgeKey) .setEdgeRoutingKey(edgeKey)
.setEdgeSecret(edgeSecret) .setEdgeSecret(edgeSecret)
.setEdgeVersion(EdgeVersion.V_3_6_1) .setEdgeVersion(EdgeVersion.V_3_6_2)
.setMaxInboundMessageSize(maxInboundMessageSize) .setMaxInboundMessageSize(maxInboundMessageSize)
.build()) .build())
.build()); .build());

View File

@ -452,13 +452,14 @@ message ResourceUpdateMsg {
UpdateMsgType msgType = 1; UpdateMsgType msgType = 1;
int64 idMSB = 2; int64 idMSB = 2;
int64 idLSB = 3; int64 idLSB = 3;
string title = 4; string title = 4 [deprecated = true];
string resourceType = 5; string resourceType = 5 [deprecated = true];
string resourceKey = 6; string resourceKey = 6 [deprecated = true];
string fileName = 7; string fileName = 7 [deprecated = true];
optional string data = 8; optional string data = 8 [deprecated = true];
optional string etag = 9; optional string etag = 9 [deprecated = true];
bool isSystem = 10; bool isSystem = 10 [deprecated = true];
string entity = 11;
} }
message RuleChainMetadataRequestMsg { message RuleChainMetadataRequestMsg {

View File

@ -55,4 +55,4 @@ public class JacksonUtilTest {
Assert.assertEquals(asset.getName(), result.getName()); Assert.assertEquals(asset.getName(), result.getName());
Assert.assertEquals(asset.getType(), result.getType()); Assert.assertEquals(asset.getType(), result.getType());
} }
} }