From 055a91fca1164f301652750a172a48a23b1c5547 Mon Sep 17 00:00:00 2001 From: Volodymyr Babak Date: Tue, 20 Oct 2020 11:36:28 +0300 Subject: [PATCH] EdgeEventActionType introduced --- .../RuleChainActorMessageProcessor.java | 6 +-- .../server/actors/tenant/TenantActor.java | 2 +- .../server/controller/AlarmController.java | 9 ++-- .../server/controller/AssetController.java | 15 +++---- .../server/controller/AuthController.java | 5 ++- .../server/controller/BaseController.java | 13 +++--- .../server/controller/CustomerController.java | 5 ++- .../controller/DashboardController.java | 21 ++++----- .../server/controller/DeviceController.java | 15 ++++--- .../server/controller/EdgeController.java | 5 ++- .../controller/EntityRelationController.java | 5 ++- .../controller/EntityViewController.java | 14 +++--- .../controller/RuleChainController.java | 11 ++--- .../server/controller/UserController.java | 6 +-- .../controller/WidgetTypeController.java | 5 ++- .../controller/WidgetsBundleController.java | 5 ++- .../edge/DefaultEdgeNotificationService.java | 29 ++++++------ .../service/edge/rpc/EdgeGrpcSession.java | 44 +++++++++---------- .../AdminSettingsMsgConstructor.java | 4 +- .../rpc/constructor/AlarmMsgConstructor.java | 6 +-- .../rpc/constructor/AssetMsgConstructor.java | 4 +- .../constructor/CustomerMsgConstructor.java | 4 +- .../constructor/DashboardMsgConstructor.java | 5 +-- .../rpc/constructor/DeviceMsgConstructor.java | 4 +- .../constructor/EntityDataMsgConstructor.java | 11 +++-- .../constructor/EntityViewMsgConstructor.java | 4 +- .../constructor/RelationMsgConstructor.java | 4 +- .../constructor/RuleChainMsgConstructor.java | 2 + .../rpc/constructor/UserMsgConstructor.java | 7 +-- .../constructor/WidgetTypeMsgConstructor.java | 4 +- .../WidgetsBundleMsgConstructor.java | 4 +- .../edge/rpc/init/DefaultSyncEdgeService.java | 42 +++++++++--------- .../edge/rpc/processor/AlarmProcessor.java | 1 + .../edge/rpc/processor/BaseProcessor.java | 7 ++- .../edge/rpc/processor/DeviceProcessor.java | 22 ++++------ .../edge/rpc/processor/RelationProcessor.java | 2 +- .../rpc/processor/TelemetryProcessor.java | 1 + .../rpc/DefaultTbRuleEngineRpcService.java | 3 +- .../rpc/TbRuleEngineDeviceRpcService.java | 10 ----- .../service/security/permission/Resource.java | 4 +- .../ttl/edge/EdgeEventsCleanUpService.java | 2 +- .../thingsboard/server/edge/BaseEdgeTest.java | 16 ++++--- .../server/common/data/audit/ActionType.java | 5 +-- .../server/common/data/edge/EdgeEvent.java | 2 +- .../common/data/edge/EdgeEventActionType.java | 37 ++++++++++++++++ .../server/dao/edge/BaseEdgeEventService.java | 2 +- .../dao/edge/CassandraEdgeEventDao.java | 4 +- .../dao/model/nosql/EdgeEventEntity.java | 6 ++- .../server/dao/model/sql/EdgeEventEntity.java | 4 +- .../model/type/EdgeEventActionTypeCodec.java | 27 ++++++++++++ .../dao/sql/edge/JpaBaseEdgeEventDao.java | 3 +- .../dao/service/BaseEdgeEventServiceTest.java | 11 +++-- .../rule/engine/edge/TbMsgPushToEdgeNode.java | 20 ++++----- .../rule/engine/rpc/TbSendRPCRequestNode.java | 4 +- 54 files changed, 285 insertions(+), 228 deletions(-) create mode 100644 common/data/src/main/java/org/thingsboard/server/common/data/edge/EdgeEventActionType.java create mode 100644 dao/src/main/java/org/thingsboard/server/dao/model/type/EdgeEventActionTypeCodec.java diff --git a/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleChainActorMessageProcessor.java b/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleChainActorMessageProcessor.java index fd16d4158a..c5e4ca2da0 100644 --- a/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleChainActorMessageProcessor.java +++ b/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleChainActorMessageProcessor.java @@ -97,7 +97,7 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor ruleNodeList = service.getRuleChainNodes(tenantId, entityId); log.trace("[{}][{}] Starting rule chain with {} nodes", tenantId, entityId, ruleNodeList.size()); // Creating and starting the actors; @@ -119,7 +119,7 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor ruleNodeList = service.getRuleChainNodes(tenantId, entityId); log.trace("[{}][{}] Updating rule chain with {} nodes", tenantId, entityId, ruleNodeList.size()); @@ -145,8 +145,6 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor edgeFuture; switch (actionType) { @@ -195,12 +194,12 @@ public class DefaultEdgeNotificationService implements EdgeNotificationService { @Override public void onSuccess(@Nullable Edge edge) { if (edge != null && !customerId.isNullUid()) { - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.CUSTOMER, ActionType.ADDED, customerId, null); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.CUSTOMER, EdgeEventActionType.ADDED, customerId, null); TextPageData pageData = userService.findCustomerUsers(tenantId, customerId, new TextPageLink(Integer.MAX_VALUE)); if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { log.trace("[{}] [{}] user(s) are going to be added to edge.", edge.getId(), pageData.getData().size()); for (User user : pageData.getData()) { - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.USER, ActionType.ADDED, user.getId(), null); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.USER, EdgeEventActionType.ADDED, user.getId(), null); } } } @@ -219,7 +218,7 @@ public class DefaultEdgeNotificationService implements EdgeNotificationService { @Override public void onSuccess(@Nullable Edge edge) { if (edge != null && !customerIdToDelete.isNullUid()) { - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.CUSTOMER, ActionType.DELETED, customerIdToDelete, null); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.CUSTOMER, EdgeEventActionType.DELETED, customerIdToDelete, null); } } @@ -236,7 +235,7 @@ public class DefaultEdgeNotificationService implements EdgeNotificationService { } private void processWidgetBundleOrWidgetType(TenantId tenantId, TransportProtos.EdgeNotificationMsgProto edgeNotificationMsg) { - ActionType actionType = ActionType.valueOf(edgeNotificationMsg.getAction()); + EdgeEventActionType actionType = EdgeEventActionType.valueOf(edgeNotificationMsg.getAction()); EdgeEventType type = EdgeEventType.valueOf(edgeNotificationMsg.getType()); EntityId entityId = EntityIdFactory.getByEdgeEventTypeAndUuid(type, new UUID(edgeNotificationMsg.getEntityIdMSB(), edgeNotificationMsg.getEntityIdLSB())); switch (actionType) { @@ -254,7 +253,7 @@ public class DefaultEdgeNotificationService implements EdgeNotificationService { } private void processCustomer(TenantId tenantId, TransportProtos.EdgeNotificationMsgProto edgeNotificationMsg) { - ActionType actionType = ActionType.valueOf(edgeNotificationMsg.getAction()); + EdgeEventActionType actionType = EdgeEventActionType.valueOf(edgeNotificationMsg.getAction()); EdgeEventType type = EdgeEventType.valueOf(edgeNotificationMsg.getType()); EntityId entityId = EntityIdFactory.getByEdgeEventTypeAndUuid(type, new UUID(edgeNotificationMsg.getEntityIdMSB(), edgeNotificationMsg.getEntityIdLSB())); TextPageData edgesByTenantId = edgeService.findEdgesByTenantId(tenantId, new TextPageLink(Integer.MAX_VALUE)); @@ -275,7 +274,7 @@ public class DefaultEdgeNotificationService implements EdgeNotificationService { } private void processEntity(TenantId tenantId, TransportProtos.EdgeNotificationMsgProto edgeNotificationMsg) { - ActionType actionType = ActionType.valueOf(edgeNotificationMsg.getAction()); + EdgeEventActionType actionType = EdgeEventActionType.valueOf(edgeNotificationMsg.getAction()); EdgeEventType type = EdgeEventType.valueOf(edgeNotificationMsg.getType()); EntityId entityId = EntityIdFactory.getByEdgeEventTypeAndUuid(type, new UUID(edgeNotificationMsg.getEntityIdMSB(), edgeNotificationMsg.getEntityIdLSB())); @@ -372,7 +371,7 @@ public class DefaultEdgeNotificationService implements EdgeNotificationService { saveEdgeEvent(tenantId, edgeId, EdgeEventType.RULE_CHAIN_METADATA, - ActionType.UPDATED, + EdgeEventActionType.UPDATED, ruleChain.getId(), null); } @@ -404,7 +403,7 @@ public class DefaultEdgeNotificationService implements EdgeNotificationService { saveEdgeEvent(tenantId, edgeId, EdgeEventType.ALARM, - ActionType.valueOf(edgeNotificationMsg.getAction()), + EdgeEventActionType.valueOf(edgeNotificationMsg.getAction()), alarmId, null); } @@ -439,7 +438,7 @@ public class DefaultEdgeNotificationService implements EdgeNotificationService { saveEdgeEvent(tenantId, edgeId, EdgeEventType.RELATION, - ActionType.valueOf(edgeNotificationMsg.getAction()), + EdgeEventActionType.valueOf(edgeNotificationMsg.getAction()), null, mapper.valueToTree(relation)); } diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java index de68eb6e55..97caa671af 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java @@ -37,9 +37,9 @@ import org.thingsboard.server.common.data.HasCustomerId; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.alarm.Alarm; import org.thingsboard.server.common.data.asset.Asset; -import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.edge.Edge; import org.thingsboard.server.common.data.edge.EdgeEvent; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.edge.EdgeEventType; import org.thingsboard.server.common.data.id.AlarmId; import org.thingsboard.server.common.data.id.AssetId; @@ -313,8 +313,7 @@ public final class EdgeGrpcSession implements Closeable { log.trace("Processing edge event [{}]", edgeEvent); try { DownlinkMsg downlinkMsg = null; - ActionType action = ActionType.valueOf(edgeEvent.getAction()); - switch (action) { + switch (edgeEvent.getAction()) { case UPDATED: case ADDED: case DELETED: @@ -327,7 +326,7 @@ public final class EdgeGrpcSession implements Closeable { case RELATION_DELETED: case ASSIGNED_TO_CUSTOMER: case UNASSIGNED_FROM_CUSTOMER: - downlinkMsg = processEntityMessage(edgeEvent, action); + downlinkMsg = processEntityMessage(edgeEvent, edgeEvent.getAction()); break; case ATTRIBUTES_UPDATED: case ATTRIBUTES_DELETED: @@ -439,8 +438,7 @@ public final class EdgeGrpcSession implements Closeable { if (entityId != null) { log.debug("Sending telemetry data msg, entityId [{}], body [{}]", edgeEvent.getEntityId(), edgeEvent.getBody()); try { - ActionType actionType = ActionType.valueOf(edgeEvent.getAction()); - downlinkMsg = constructEntityDataProtoMsg(entityId, actionType, JsonUtils.parse(mapper.writeValueAsString(edgeEvent.getBody()))); + downlinkMsg = constructEntityDataProtoMsg(entityId, edgeEvent.getAction(), JsonUtils.parse(mapper.writeValueAsString(edgeEvent.getBody()))); } catch (Exception e) { log.warn("Can't send telemetry data msg, entityId [{}], body [{}]", edgeEvent.getEntityId(), edgeEvent.getBody(), e); } @@ -448,8 +446,8 @@ public final class EdgeGrpcSession implements Closeable { return downlinkMsg; } - private DownlinkMsg processEntityMessage(EdgeEvent edgeEvent, ActionType action) { - UpdateMsgType msgType = getResponseMsgType(ActionType.valueOf(edgeEvent.getAction())); + private DownlinkMsg processEntityMessage(EdgeEvent edgeEvent, EdgeEventActionType action) { + UpdateMsgType msgType = getResponseMsgType(edgeEvent.getAction()); log.trace("Executing processEntityMessage, edgeEvent [{}], action [{}], msgType [{}]", edgeEvent, action, msgType); switch (edgeEvent.getType()) { case EDGE: @@ -487,10 +485,10 @@ public final class EdgeGrpcSession implements Closeable { } } - private DownlinkMsg processDevice(EdgeEvent edgeEvent, UpdateMsgType msgType, ActionType edgeActionType) { + private DownlinkMsg processDevice(EdgeEvent edgeEvent, UpdateMsgType msgType, EdgeEventActionType edgeEdgeEventActionType) { DeviceId deviceId = new DeviceId(edgeEvent.getEntityId()); DownlinkMsg downlinkMsg = null; - switch (edgeActionType) { + switch (edgeEdgeEventActionType) { case ADDED: case UPDATED: case ASSIGNED_TO_EDGE: @@ -528,7 +526,7 @@ public final class EdgeGrpcSession implements Closeable { return downlinkMsg; } - private DownlinkMsg processAsset(EdgeEvent edgeEvent, UpdateMsgType msgType, ActionType action) { + private DownlinkMsg processAsset(EdgeEvent edgeEvent, UpdateMsgType msgType, EdgeEventActionType action) { AssetId assetId = new AssetId(edgeEvent.getEntityId()); DownlinkMsg downlinkMsg = null; switch (action) { @@ -559,7 +557,7 @@ public final class EdgeGrpcSession implements Closeable { return downlinkMsg; } - private DownlinkMsg processEntityView(EdgeEvent edgeEvent, UpdateMsgType msgType, ActionType action) { + private DownlinkMsg processEntityView(EdgeEvent edgeEvent, UpdateMsgType msgType, EdgeEventActionType action) { EntityViewId entityViewId = new EntityViewId(edgeEvent.getEntityId()); DownlinkMsg downlinkMsg = null; switch (action) { @@ -590,7 +588,7 @@ public final class EdgeGrpcSession implements Closeable { return downlinkMsg; } - private DownlinkMsg processDashboard(EdgeEvent edgeEvent, UpdateMsgType msgType, ActionType action) { + private DownlinkMsg processDashboard(EdgeEvent edgeEvent, UpdateMsgType msgType, EdgeEventActionType action) { DashboardId dashboardId = new DashboardId(edgeEvent.getEntityId()); DownlinkMsg downlinkMsg = null; switch (action) { @@ -624,7 +622,7 @@ public final class EdgeGrpcSession implements Closeable { return downlinkMsg; } - private DownlinkMsg processCustomer(EdgeEvent edgeEvent, UpdateMsgType msgType, ActionType action) { + private DownlinkMsg processCustomer(EdgeEvent edgeEvent, UpdateMsgType msgType, EdgeEventActionType action) { CustomerId customerId = new CustomerId(edgeEvent.getEntityId()); DownlinkMsg downlinkMsg = null; switch (action) { @@ -650,7 +648,7 @@ public final class EdgeGrpcSession implements Closeable { return downlinkMsg; } - private DownlinkMsg processRuleChain(EdgeEvent edgeEvent, UpdateMsgType msgType, ActionType action) { + private DownlinkMsg processRuleChain(EdgeEvent edgeEvent, UpdateMsgType msgType, EdgeEventActionType action) { RuleChainId ruleChainId = new RuleChainId(edgeEvent.getEntityId()); DownlinkMsg downlinkMsg = null; switch (action) { @@ -693,10 +691,10 @@ public final class EdgeGrpcSession implements Closeable { return downlinkMsg; } - private DownlinkMsg processUser(EdgeEvent edgeEvent, UpdateMsgType msgType, ActionType edgeActionType) { + private DownlinkMsg processUser(EdgeEvent edgeEvent, UpdateMsgType msgType, EdgeEventActionType edgeEdgeEventActionType) { UserId userId = new UserId(edgeEvent.getEntityId()); DownlinkMsg downlinkMsg = null; - switch (edgeActionType) { + switch (edgeEdgeEventActionType) { case ADDED: case UPDATED: User user = ctx.getUserService().findUserById(edgeEvent.getTenantId(), userId); @@ -757,10 +755,10 @@ public final class EdgeGrpcSession implements Closeable { return downlinkMsg; } - private DownlinkMsg processWidgetsBundle(EdgeEvent edgeEvent, UpdateMsgType msgType, ActionType edgeActionType) { + private DownlinkMsg processWidgetsBundle(EdgeEvent edgeEvent, UpdateMsgType msgType, EdgeEventActionType edgeEdgeEventActionType) { WidgetsBundleId widgetsBundleId = new WidgetsBundleId(edgeEvent.getEntityId()); DownlinkMsg downlinkMsg = null; - switch (edgeActionType) { + switch (edgeEdgeEventActionType) { case ADDED: case UPDATED: WidgetsBundle widgetsBundle = ctx.getWidgetsBundleService().findWidgetsBundleById(edgeEvent.getTenantId(), widgetsBundleId); @@ -783,10 +781,10 @@ public final class EdgeGrpcSession implements Closeable { return downlinkMsg; } - private DownlinkMsg processWidgetType(EdgeEvent edgeEvent, UpdateMsgType msgType, ActionType edgeActionType) { + private DownlinkMsg processWidgetType(EdgeEvent edgeEvent, UpdateMsgType msgType, EdgeEventActionType edgeEdgeEventActionType) { WidgetTypeId widgetTypeId = new WidgetTypeId(edgeEvent.getEntityId()); DownlinkMsg downlinkMsg = null; - switch (edgeActionType) { + switch (edgeEdgeEventActionType) { case ADDED: case UPDATED: WidgetType widgetType = ctx.getWidgetTypeService().findWidgetTypeById(edgeEvent.getTenantId(), widgetTypeId); @@ -817,7 +815,7 @@ public final class EdgeGrpcSession implements Closeable { .build(); } - private UpdateMsgType getResponseMsgType(ActionType actionType) { + private UpdateMsgType getResponseMsgType(EdgeEventActionType actionType) { switch (actionType) { case UPDATED: case CREDENTIALS_UPDATED: @@ -841,7 +839,7 @@ public final class EdgeGrpcSession implements Closeable { } } - private DownlinkMsg constructEntityDataProtoMsg(EntityId entityId, ActionType actionType, JsonElement entityData) { + private DownlinkMsg constructEntityDataProtoMsg(EntityId entityId, EdgeEventActionType actionType, JsonElement entityData) { EntityDataProto entityDataProto = ctx.getEntityDataMsgConstructor().constructEntityDataMsg(entityId, actionType, entityData); DownlinkMsg.Builder builder = DownlinkMsg.newBuilder() .addAllEntityData(Collections.singletonList(entityDataProto)); diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AdminSettingsMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AdminSettingsMsgConstructor.java index 6a6b67e2e6..17aa50907f 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AdminSettingsMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AdminSettingsMsgConstructor.java @@ -15,14 +15,14 @@ */ package org.thingsboard.server.service.edge.rpc.constructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.AdminSettings; import org.thingsboard.server.dao.util.mapping.JacksonUtil; import org.thingsboard.server.gen.edge.AdminSettingsUpdateMsg; +import org.thingsboard.server.queue.util.TbCoreComponent; -@Slf4j @Component +@TbCoreComponent public class AdminSettingsMsgConstructor { public AdminSettingsUpdateMsg constructAdminSettingsUpdateMsg(AdminSettings adminSettings) { diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AlarmMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AlarmMsgConstructor.java index 3414727575..aa03aa4b87 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AlarmMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AlarmMsgConstructor.java @@ -15,12 +15,9 @@ */ package org.thingsboard.server.service.edge.rpc.constructor; -import lombok.extern.slf4j.Slf4j; -import org.bouncycastle.jcajce.provider.symmetric.DES; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.alarm.Alarm; -import org.thingsboard.server.common.data.entityview.EntityViewSearchQuery; import org.thingsboard.server.common.data.id.AssetId; import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.EntityViewId; @@ -31,9 +28,10 @@ import org.thingsboard.server.dao.entityview.EntityViewService; import org.thingsboard.server.dao.util.mapping.JacksonUtil; import org.thingsboard.server.gen.edge.AlarmUpdateMsg; import org.thingsboard.server.gen.edge.UpdateMsgType; +import org.thingsboard.server.queue.util.TbCoreComponent; @Component -@Slf4j +@TbCoreComponent public class AlarmMsgConstructor { @Autowired diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AssetMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AssetMsgConstructor.java index c6eb3d32f4..52cd201bf0 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AssetMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AssetMsgConstructor.java @@ -15,7 +15,6 @@ */ package org.thingsboard.server.service.edge.rpc.constructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.asset.Asset; import org.thingsboard.server.common.data.id.AssetId; @@ -23,9 +22,10 @@ import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.dao.util.mapping.JacksonUtil; import org.thingsboard.server.gen.edge.AssetUpdateMsg; import org.thingsboard.server.gen.edge.UpdateMsgType; +import org.thingsboard.server.queue.util.TbCoreComponent; @Component -@Slf4j +@TbCoreComponent public class AssetMsgConstructor { public AssetUpdateMsg constructAssetUpdatedMsg(UpdateMsgType msgType, Asset asset, CustomerId customerId) { diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/CustomerMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/CustomerMsgConstructor.java index 94687b88d4..f1f0247e66 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/CustomerMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/CustomerMsgConstructor.java @@ -15,16 +15,16 @@ */ package org.thingsboard.server.service.edge.rpc.constructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.Customer; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.dao.util.mapping.JacksonUtil; import org.thingsboard.server.gen.edge.CustomerUpdateMsg; import org.thingsboard.server.gen.edge.UpdateMsgType; +import org.thingsboard.server.queue.util.TbCoreComponent; @Component -@Slf4j +@TbCoreComponent public class CustomerMsgConstructor { public CustomerUpdateMsg constructCustomerUpdatedMsg(UpdateMsgType msgType, Customer customer) { diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DashboardMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DashboardMsgConstructor.java index a41b987c1c..02ef71bb46 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DashboardMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DashboardMsgConstructor.java @@ -15,18 +15,17 @@ */ package org.thingsboard.server.service.edge.rpc.constructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.Dashboard; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DashboardId; -import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.dao.util.mapping.JacksonUtil; import org.thingsboard.server.gen.edge.DashboardUpdateMsg; import org.thingsboard.server.gen.edge.UpdateMsgType; +import org.thingsboard.server.queue.util.TbCoreComponent; @Component -@Slf4j +@TbCoreComponent public class DashboardMsgConstructor { public DashboardUpdateMsg constructDashboardUpdatedMsg(UpdateMsgType msgType, Dashboard dashboard, CustomerId customerId) { diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DeviceMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DeviceMsgConstructor.java index ffc635075d..fb005d7c3a 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DeviceMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DeviceMsgConstructor.java @@ -17,7 +17,6 @@ package org.thingsboard.server.service.edge.rpc.constructor; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.thingsboard.rule.engine.api.RuleEngineDeviceRpcRequest; import org.thingsboard.server.common.data.Device; @@ -30,9 +29,10 @@ import org.thingsboard.server.gen.edge.DeviceRpcCallMsg; import org.thingsboard.server.gen.edge.DeviceUpdateMsg; import org.thingsboard.server.gen.edge.RpcRequestMsg; import org.thingsboard.server.gen.edge.UpdateMsgType; +import org.thingsboard.server.queue.util.TbCoreComponent; @Component -@Slf4j +@TbCoreComponent public class DeviceMsgConstructor { protected static final ObjectMapper mapper = new ObjectMapper(); diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityDataMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityDataMsgConstructor.java index ffa2ada070..19fa3f9036 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityDataMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityDataMsgConstructor.java @@ -22,19 +22,22 @@ import com.google.gson.JsonObject; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.audit.ActionType; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.transport.adaptor.JsonConverter; import org.thingsboard.server.gen.edge.AttributeDeleteMsg; import org.thingsboard.server.gen.edge.EntityDataProto; import org.thingsboard.server.gen.transport.TransportProtos; +import org.thingsboard.server.queue.util.TbCoreComponent; import java.util.List; @Component @Slf4j +@TbCoreComponent public class EntityDataMsgConstructor { - public EntityDataProto constructEntityDataMsg(EntityId entityId, ActionType actionType, JsonElement entityData) { + public EntityDataProto constructEntityDataMsg(EntityId entityId, EdgeEventActionType actionType, JsonElement entityData) { EntityDataProto.Builder builder = EntityDataProto.newBuilder() .setEntityIdMSB(entityId.getId().getMostSignificantBits()) .setEntityIdLSB(entityId.getId().getLeastSignificantBits()) @@ -51,7 +54,7 @@ public class EntityDataMsgConstructor { } builder.setPostTelemetryMsg(JsonConverter.convertToTelemetryProto(data.getAsJsonObject("data"), ts)); } catch (Exception e) { - log.warn("Can't convert to telemetry proto, entityData [{}]", entityData, e); + log.warn("[{}] Can't convert to telemetry proto, entityData [{}]", entityId, entityData, e); } break; case ATTRIBUTES_UPDATED: @@ -65,7 +68,7 @@ public class EntityDataMsgConstructor { } builder.setPostAttributeScope(data.getAsJsonPrimitive("scope").getAsString()); } catch (Exception e) { - log.warn("Can't convert to attributes proto, entityData [{}]", entityData, e); + log.warn("[{}] Can't convert to attributes proto, entityData [{}]", entityId, entityData, e); } break; case ATTRIBUTES_DELETED: @@ -78,7 +81,7 @@ public class EntityDataMsgConstructor { attributeDeleteMsg.build(); builder.setAttributeDeleteMsg(attributeDeleteMsg); } catch (Exception e) { - log.warn("Can't convert to AttributeDeleteMsg proto, entityData [{}]", entityData, e); + log.warn("[{}] Can't convert to AttributeDeleteMsg proto, entityData [{}]", entityId, entityData, e); } break; } diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityViewMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityViewMsgConstructor.java index abe32dec77..7d29fa8734 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityViewMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityViewMsgConstructor.java @@ -15,7 +15,6 @@ */ package org.thingsboard.server.service.edge.rpc.constructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.EntityView; import org.thingsboard.server.common.data.id.CustomerId; @@ -24,9 +23,10 @@ import org.thingsboard.server.dao.util.mapping.JacksonUtil; import org.thingsboard.server.gen.edge.EdgeEntityType; import org.thingsboard.server.gen.edge.EntityViewUpdateMsg; import org.thingsboard.server.gen.edge.UpdateMsgType; +import org.thingsboard.server.queue.util.TbCoreComponent; @Component -@Slf4j +@TbCoreComponent public class EntityViewMsgConstructor { public EntityViewUpdateMsg constructEntityViewUpdatedMsg(UpdateMsgType msgType, EntityView entityView, CustomerId customerId) { diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/RelationMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/RelationMsgConstructor.java index 5a1f7ce39d..f50b2376ab 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/RelationMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/RelationMsgConstructor.java @@ -15,15 +15,15 @@ */ package org.thingsboard.server.service.edge.rpc.constructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.dao.util.mapping.JacksonUtil; import org.thingsboard.server.gen.edge.RelationUpdateMsg; import org.thingsboard.server.gen.edge.UpdateMsgType; +import org.thingsboard.server.queue.util.TbCoreComponent; @Component -@Slf4j +@TbCoreComponent public class RelationMsgConstructor { public RelationUpdateMsg constructRelationUpdatedMsg(UpdateMsgType msgType, EntityRelation entityRelation) { diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/RuleChainMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/RuleChainMsgConstructor.java index 22017c56c2..e6cabd2755 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/RuleChainMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/RuleChainMsgConstructor.java @@ -32,12 +32,14 @@ import org.thingsboard.server.gen.edge.RuleChainMetadataUpdateMsg; import org.thingsboard.server.gen.edge.RuleChainUpdateMsg; import org.thingsboard.server.gen.edge.RuleNodeProto; import org.thingsboard.server.gen.edge.UpdateMsgType; +import org.thingsboard.server.queue.util.TbCoreComponent; import java.util.ArrayList; import java.util.List; @Component @Slf4j +@TbCoreComponent public class RuleChainMsgConstructor { private static final ObjectMapper objectMapper = new ObjectMapper(); diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/UserMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/UserMsgConstructor.java index b5b6b080f7..ea0b60c970 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/UserMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/UserMsgConstructor.java @@ -15,22 +15,19 @@ */ package org.thingsboard.server.service.edge.rpc.constructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.id.CustomerId; -import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.UserId; import org.thingsboard.server.common.data.security.UserCredentials; import org.thingsboard.server.dao.util.mapping.JacksonUtil; import org.thingsboard.server.gen.edge.UpdateMsgType; import org.thingsboard.server.gen.edge.UserCredentialsUpdateMsg; import org.thingsboard.server.gen.edge.UserUpdateMsg; - -import java.util.UUID; +import org.thingsboard.server.queue.util.TbCoreComponent; @Component -@Slf4j +@TbCoreComponent public class UserMsgConstructor { public UserUpdateMsg constructUserUpdatedMsg(UpdateMsgType msgType, User user, CustomerId customerId) { diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/WidgetTypeMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/WidgetTypeMsgConstructor.java index e01b2afa66..3ee8e4ec3b 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/WidgetTypeMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/WidgetTypeMsgConstructor.java @@ -15,7 +15,6 @@ */ package org.thingsboard.server.service.edge.rpc.constructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.WidgetTypeId; @@ -23,9 +22,10 @@ import org.thingsboard.server.common.data.widget.WidgetType; import org.thingsboard.server.dao.util.mapping.JacksonUtil; import org.thingsboard.server.gen.edge.UpdateMsgType; import org.thingsboard.server.gen.edge.WidgetTypeUpdateMsg; +import org.thingsboard.server.queue.util.TbCoreComponent; @Component -@Slf4j +@TbCoreComponent public class WidgetTypeMsgConstructor { public WidgetTypeUpdateMsg constructWidgetTypeUpdateMsg(UpdateMsgType msgType, WidgetType widgetType) { diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/WidgetsBundleMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/WidgetsBundleMsgConstructor.java index 13dd78980c..d8bb24dc4f 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/WidgetsBundleMsgConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/WidgetsBundleMsgConstructor.java @@ -16,16 +16,16 @@ package org.thingsboard.server.service.edge.rpc.constructor; import com.google.protobuf.ByteString; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.WidgetsBundleId; import org.thingsboard.server.common.data.widget.WidgetsBundle; import org.thingsboard.server.gen.edge.UpdateMsgType; import org.thingsboard.server.gen.edge.WidgetsBundleUpdateMsg; +import org.thingsboard.server.queue.util.TbCoreComponent; @Component -@Slf4j +@TbCoreComponent public class WidgetsBundleMsgConstructor { public WidgetsBundleUpdateMsg constructWidgetsBundleUpdateMsg(UpdateMsgType msgType, WidgetsBundle widgetsBundle) { diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/init/DefaultSyncEdgeService.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/init/DefaultSyncEdgeService.java index 0c9b29a386..89d130c386 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/init/DefaultSyncEdgeService.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/init/DefaultSyncEdgeService.java @@ -39,9 +39,9 @@ import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.EntityView; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.asset.Asset; -import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.edge.Edge; import org.thingsboard.server.common.data.edge.EdgeEvent; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.edge.EdgeEventType; import org.thingsboard.server.common.data.id.AdminSettingsId; import org.thingsboard.server.common.data.id.DeviceId; @@ -164,7 +164,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { log.trace("[{}] [{}] rule chains(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); for (RuleChain ruleChain : pageData.getData()) { - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.RULE_CHAIN, ActionType.ADDED, ruleChain.getId(), null); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.RULE_CHAIN, EdgeEventActionType.ADDED, ruleChain.getId(), null); } } } @@ -189,7 +189,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { log.trace("[{}] [{}] device(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); for (Device device : pageData.getData()) { - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.DEVICE, ActionType.ADDED, device.getId(), null); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.DEVICE, EdgeEventActionType.ADDED, device.getId(), null); } } } @@ -213,7 +213,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { log.trace("[{}] [{}] asset(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); for (Asset asset : pageData.getData()) { - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ASSET, ActionType.ADDED, asset.getId(), null); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ASSET, EdgeEventActionType.ADDED, asset.getId(), null); } } } @@ -237,7 +237,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { log.trace("[{}] [{}] entity view(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); for (EntityView entityView : pageData.getData()) { - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ENTITY_VIEW, ActionType.ADDED, entityView.getId(), null); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ENTITY_VIEW, EdgeEventActionType.ADDED, entityView.getId(), null); } } } @@ -261,7 +261,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { log.trace("[{}] [{}] dashboard(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); for (DashboardInfo dashboardInfo : pageData.getData()) { - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.DASHBOARD, ActionType.ADDED, dashboardInfo.getId(), null); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.DASHBOARD, EdgeEventActionType.ADDED, dashboardInfo.getId(), null); } } } @@ -281,7 +281,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { TextPageData pageData = userService.findTenantAdmins(edge.getTenantId(), new TextPageLink(Integer.MAX_VALUE)); pushUsersToEdge(pageData, edge); if (edge.getCustomerId() != null && !EntityId.NULL_UUID.equals(edge.getCustomerId().getId())) { - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.CUSTOMER, ActionType.ADDED, edge.getCustomerId(), null); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.CUSTOMER, EdgeEventActionType.ADDED, edge.getCustomerId(), null); pageData = userService.findCustomerUsers(edge.getTenantId(), edge.getCustomerId(), new TextPageLink(Integer.MAX_VALUE)); pushUsersToEdge(pageData, edge); } @@ -297,11 +297,11 @@ public class DefaultSyncEdgeService implements SyncEdgeService { widgetsBundlesToPush.addAll(widgetsBundleService.findSystemWidgetsBundles(edge.getTenantId())); try { for (WidgetsBundle widgetsBundle: widgetsBundlesToPush) { - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.WIDGETS_BUNDLE, ActionType.ADDED, widgetsBundle.getId(), null); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.WIDGETS_BUNDLE, EdgeEventActionType.ADDED, widgetsBundle.getId(), null); widgetTypesToPush.addAll(widgetTypeService.findWidgetTypesByTenantIdAndBundleAlias(widgetsBundle.getTenantId(), widgetsBundle.getAlias())); } for (WidgetType widgetType: widgetTypesToPush) { - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.WIDGET_TYPE, ActionType.ADDED, widgetType.getId(), null); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.WIDGET_TYPE, EdgeEventActionType.ADDED, widgetType.getId(), null); } } catch (Exception e) { log.error("Exception during loading widgets bundle(s) and widget type(s) on sync!", e); @@ -311,13 +311,13 @@ public class DefaultSyncEdgeService implements SyncEdgeService { private void syncAdminSettings(Edge edge) { try { AdminSettings systemMailSettings = adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, "mail"); - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, ActionType.UPDATED, null, mapper.valueToTree(systemMailSettings)); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, EdgeEventActionType.UPDATED, null, mapper.valueToTree(systemMailSettings)); AdminSettings tenantMailSettings = convertToTenantAdminSettings(systemMailSettings.getKey(), (ObjectNode) systemMailSettings.getJsonValue()); - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, ActionType.UPDATED, null, mapper.valueToTree(tenantMailSettings)); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, EdgeEventActionType.UPDATED, null, mapper.valueToTree(tenantMailSettings)); AdminSettings systemMailTemplates = loadMailTemplates(); - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, ActionType.UPDATED, null, mapper.valueToTree(systemMailTemplates)); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, EdgeEventActionType.UPDATED, null, mapper.valueToTree(systemMailTemplates)); AdminSettings tenantMailTemplates = convertToTenantAdminSettings(systemMailTemplates.getKey(), (ObjectNode) systemMailTemplates.getJsonValue()); - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, ActionType.UPDATED, null, mapper.valueToTree(tenantMailTemplates)); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, EdgeEventActionType.UPDATED, null, mapper.valueToTree(tenantMailTemplates)); } catch (Exception e) { log.error("Can't load admin settings", e); } @@ -379,7 +379,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { log.trace("[{}] [{}] user(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); for (User user : pageData.getData()) { - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.USER, ActionType.ADDED, user.getId(), null); + saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.USER, EdgeEventActionType.ADDED, user.getId(), null); } } } @@ -390,7 +390,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { if (ruleChainMetadataRequestMsg.getRuleChainIdMSB() != 0 && ruleChainMetadataRequestMsg.getRuleChainIdLSB() != 0) { RuleChainId ruleChainId = new RuleChainId(new UUID(ruleChainMetadataRequestMsg.getRuleChainIdMSB(), ruleChainMetadataRequestMsg.getRuleChainIdLSB())); - ListenableFuture future = saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.RULE_CHAIN_METADATA, ActionType.ADDED, ruleChainId, null); + ListenableFuture future = saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.RULE_CHAIN_METADATA, EdgeEventActionType.ADDED, ruleChainId, null); Futures.addCallback(future, new FutureCallback() { @Override public void onSuccess(@Nullable EdgeEvent result) { @@ -441,7 +441,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { saveEdgeEvent(edge.getTenantId(), edge.getId(), type, - ActionType.ATTRIBUTES_UPDATED, + EdgeEventActionType.ATTRIBUTES_UPDATED, entityId, body); } catch (Exception e) { @@ -502,7 +502,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.RELATION, - ActionType.ADDED, + EdgeEventActionType.ADDED, null, mapper.valueToTree(relation)); } @@ -531,7 +531,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { SettableFuture futureToSet = SettableFuture.create(); if (deviceCredentialsRequestMsg.getDeviceIdMSB() != 0 && deviceCredentialsRequestMsg.getDeviceIdLSB() != 0) { DeviceId deviceId = new DeviceId(new UUID(deviceCredentialsRequestMsg.getDeviceIdMSB(), deviceCredentialsRequestMsg.getDeviceIdLSB())); - ListenableFuture future = saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.DEVICE, ActionType.CREDENTIALS_UPDATED, deviceId, null); + ListenableFuture future = saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.DEVICE, EdgeEventActionType.CREDENTIALS_UPDATED, deviceId, null); Futures.addCallback(future, new FutureCallback() { @Override public void onSuccess(@Nullable EdgeEvent result) { @@ -553,7 +553,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { SettableFuture futureToSet = SettableFuture.create(); if (userCredentialsRequestMsg.getUserIdMSB() != 0 && userCredentialsRequestMsg.getUserIdLSB() != 0) { UserId userId = new UserId(new UUID(userCredentialsRequestMsg.getUserIdMSB(), userCredentialsRequestMsg.getUserIdLSB())); - ListenableFuture future = saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.USER, ActionType.CREDENTIALS_UPDATED, userId, null); + ListenableFuture future = saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.USER, EdgeEventActionType.CREDENTIALS_UPDATED, userId, null); Futures.addCallback(future, new FutureCallback() { @Override public void onSuccess(@Nullable EdgeEvent result) { @@ -573,7 +573,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { private ListenableFuture saveEdgeEvent(TenantId tenantId, EdgeId edgeId, EdgeEventType type, - ActionType action, + EdgeEventActionType action, EntityId entityId, JsonNode body) { log.debug("Pushing edge event to edge queue. tenantId [{}], edgeId [{}], type [{}], action[{}], entityId [{}], body [{}]", @@ -583,7 +583,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { edgeEvent.setTenantId(tenantId); edgeEvent.setEdgeId(edgeId); edgeEvent.setType(type); - edgeEvent.setAction(action.name()); + edgeEvent.setAction(action); if (entityId != null) { edgeEvent.setEntityId(entityId.getId()); } diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/AlarmProcessor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/AlarmProcessor.java index c24b127e73..ac562a4dc5 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/AlarmProcessor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/AlarmProcessor.java @@ -34,6 +34,7 @@ import org.thingsboard.server.queue.util.TbCoreComponent; public class AlarmProcessor extends BaseProcessor { public ListenableFuture onAlarmUpdate(TenantId tenantId, AlarmUpdateMsg alarmUpdateMsg) { + log.trace("[{}] onAlarmUpdate [{}]", tenantId, alarmUpdateMsg); EntityId originatorId = getAlarmOriginator(tenantId, alarmUpdateMsg.getOriginatorName(), EntityType.valueOf(alarmUpdateMsg.getOriginatorType())); if (originatorId == null) { diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/BaseProcessor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/BaseProcessor.java index 576c8ba667..8c43223c5c 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/BaseProcessor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/BaseProcessor.java @@ -20,8 +20,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.util.concurrent.ListenableFuture; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.edge.EdgeEvent; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.edge.EdgeEventType; import org.thingsboard.server.common.data.id.EdgeId; import org.thingsboard.server.common.data.id.EntityId; @@ -39,7 +39,6 @@ import org.thingsboard.server.dao.relation.RelationService; import org.thingsboard.server.dao.user.UserService; import org.thingsboard.server.service.executors.DbCallbackExecutorService; import org.thingsboard.server.service.queue.TbClusterService; -import org.thingsboard.server.service.rpc.TbRuleEngineDeviceRpcService; import org.thingsboard.server.service.state.DeviceStateService; @Slf4j @@ -92,7 +91,7 @@ public abstract class BaseProcessor { protected ListenableFuture saveEdgeEvent(TenantId tenantId, EdgeId edgeId, EdgeEventType type, - ActionType action, + EdgeEventActionType action, EntityId entityId, JsonNode body) { log.debug("Pushing event to edge queue. tenantId [{}], edgeId [{}], type[{}], " + @@ -103,7 +102,7 @@ public abstract class BaseProcessor { edgeEvent.setTenantId(tenantId); edgeEvent.setEdgeId(edgeId); edgeEvent.setType(type); - edgeEvent.setAction(action.name()); + edgeEvent.setAction(action); if (entityId != null) { edgeEvent.setEntityId(entityId.getId()); } diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/DeviceProcessor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/DeviceProcessor.java index 0e5b88aa2a..dcedf92a81 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/DeviceProcessor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/DeviceProcessor.java @@ -27,8 +27,8 @@ import org.springframework.stereotype.Component; import org.thingsboard.rule.engine.api.RpcError; import org.thingsboard.server.common.data.DataConstants; import org.thingsboard.server.common.data.Device; -import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.edge.Edge; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.edge.EdgeEventType; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DeviceId; @@ -62,22 +62,23 @@ public class DeviceProcessor extends BaseProcessor { private static final ReentrantLock deviceCreationLock = new ReentrantLock(); public ListenableFuture onDeviceUpdate(TenantId tenantId, Edge edge, DeviceUpdateMsg deviceUpdateMsg) { + log.trace("[{}] onDeviceUpdate [{}] from edge [{}]", tenantId, deviceUpdateMsg, edge.getName()); DeviceId edgeDeviceId = new DeviceId(new UUID(deviceUpdateMsg.getIdMSB(), deviceUpdateMsg.getIdLSB())); switch (deviceUpdateMsg.getMsgType()) { case ENTITY_CREATED_RPC_MESSAGE: String deviceName = deviceUpdateMsg.getName(); Device device = deviceService.findDeviceByTenantIdAndName(tenantId, deviceName); if (device != null) { - // device with this name already exists on the cloud - update ID on the edge + log.info("[{}] Device with name '{}' already exists on the cloud. Updating id of device entity on the edge", tenantId, deviceName); if (!device.getId().equals(edgeDeviceId)) { - saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE, ActionType.ENTITY_EXISTS_REQUEST, device.getId(), null); + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE, EdgeEventActionType.ENTITY_EXISTS_REQUEST, device.getId(), null); } } else { Device deviceById = deviceService.findDeviceById(edge.getTenantId(), edgeDeviceId); if (deviceById != null) { - // this ID already used by other device - create new device and update ID on the edge + log.info("[{}] Device ID [{}] already used by other device on the cloud. Creating new device and replacing device entity on the edge", tenantId, edgeDeviceId.getId()); device = createDevice(tenantId, edge, deviceUpdateMsg); - saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE, ActionType.ENTITY_EXISTS_REQUEST, device.getId(), null); + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE, EdgeEventActionType.ENTITY_EXISTS_REQUEST, device.getId(), null); } else { device = createDevice(tenantId, edge, deviceUpdateMsg); } @@ -135,13 +136,14 @@ public class DeviceProcessor extends BaseProcessor { device.setAdditionalInfo(JacksonUtil.toJsonNode(deviceUpdateMsg.getAdditionalInfo())); deviceService.saveDevice(device); - saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE, ActionType.CREDENTIALS_REQUEST, deviceId, null); + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE, EdgeEventActionType.CREDENTIALS_REQUEST, deviceId, null); } private Device createDevice(TenantId tenantId, Edge edge, DeviceUpdateMsg deviceUpdateMsg) { Device device; try { deviceCreationLock.lock(); + log.debug("[{}] Creating device entity [{}] from edge [{}]", tenantId, deviceUpdateMsg, edge.getName()); DeviceId deviceId = new DeviceId(new UUID(deviceUpdateMsg.getIdMSB(), deviceUpdateMsg.getIdLSB())); device = new Device(); device.setTenantId(edge.getTenantId()); @@ -157,7 +159,7 @@ public class DeviceProcessor extends BaseProcessor { deviceStateService.onDeviceAdded(device); pushDeviceCreatedEventToRuleEngine(tenantId, edge, device); - saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE, ActionType.CREDENTIALS_REQUEST, deviceId, null); + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE, EdgeEventActionType.CREDENTIALS_REQUEST, deviceId, null); } finally { deviceCreationLock.unlock(); } @@ -190,24 +192,19 @@ public class DeviceProcessor extends BaseProcessor { tbClusterService.pushMsgToRuleEngine(tenantId, deviceId, tbMsg, new TbQueueCallback() { @Override public void onSuccess(TbQueueMsgMetadata metadata) { - // TODO: voba - handle success log.debug("Successfully send ENTITY_CREATED EVENT to rule engine [{}]", device); } @Override public void onFailure(Throwable t) { - // TODO: voba - handle failure log.debug("Failed to send ENTITY_CREATED EVENT to rule engine [{}]", device, t); } - - ; }); } catch (JsonProcessingException | IllegalArgumentException e) { log.warn("[{}] Failed to push device action to rule engine: {}", device.getId(), DataConstants.ENTITY_CREATED, e); } } - private TbMsgMetaData getActionTbMsgMetaData(Edge edge, CustomerId customerId) { TbMsgMetaData metaData = getTbMsgMetaData(edge); if (customerId != null && !customerId.isNullUid()) { @@ -216,7 +213,6 @@ public class DeviceProcessor extends BaseProcessor { return metaData; } - private TbMsgMetaData getTbMsgMetaData(Edge edge) { TbMsgMetaData metaData = new TbMsgMetaData(); metaData.putValue("edgeId", edge.getId().toString()); diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/RelationProcessor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/RelationProcessor.java index 21849e74cd..7ad316e70a 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/RelationProcessor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/RelationProcessor.java @@ -44,7 +44,7 @@ import java.util.UUID; public class RelationProcessor extends BaseProcessor { public ListenableFuture onRelationUpdate(TenantId tenantId, RelationUpdateMsg relationUpdateMsg) { - log.info("onRelationUpdate {}", relationUpdateMsg); + log.trace("[{}] onRelationUpdate [{}]", tenantId, relationUpdateMsg); try { EntityRelation entityRelation = new EntityRelation(); diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/TelemetryProcessor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/TelemetryProcessor.java index 2fdd5614aa..7fa76d7d67 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/TelemetryProcessor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/TelemetryProcessor.java @@ -66,6 +66,7 @@ public class TelemetryProcessor extends BaseProcessor { private final Gson gson = new Gson(); public List> onTelemetryUpdate(TenantId tenantId, EntityDataProto entityData) { + log.trace("[{}] onTelemetryUpdate [{}]", tenantId, entityData); List> result = new ArrayList<>(); EntityId entityId = constructEntityId(entityData); if ((entityData.hasPostAttributesMsg() || entityData.hasPostTelemetryMsg() || entityData.hasAttributesUpdatedMsg()) && entityId != null) { diff --git a/application/src/main/java/org/thingsboard/server/service/rpc/DefaultTbRuleEngineRpcService.java b/application/src/main/java/org/thingsboard/server/service/rpc/DefaultTbRuleEngineRpcService.java index 9ebbed0e44..80d47a84e8 100644 --- a/application/src/main/java/org/thingsboard/server/service/rpc/DefaultTbRuleEngineRpcService.java +++ b/application/src/main/java/org/thingsboard/server/service/rpc/DefaultTbRuleEngineRpcService.java @@ -151,8 +151,7 @@ public class DefaultTbRuleEngineRpcService implements TbRuleEngineDeviceRpcServi } } - @Override - public void sendRpcResponseToTbCore(String originServiceId, FromDeviceRpcResponse response) { + private void sendRpcResponseToTbCore(String originServiceId, FromDeviceRpcResponse response) { if (serviceId.equals(originServiceId)) { if (tbCoreRpcService.isPresent()) { tbCoreRpcService.get().processRpcResponseFromRuleEngine(response); diff --git a/application/src/main/java/org/thingsboard/server/service/rpc/TbRuleEngineDeviceRpcService.java b/application/src/main/java/org/thingsboard/server/service/rpc/TbRuleEngineDeviceRpcService.java index 4739338c6c..f12ac6a9ae 100644 --- a/application/src/main/java/org/thingsboard/server/service/rpc/TbRuleEngineDeviceRpcService.java +++ b/application/src/main/java/org/thingsboard/server/service/rpc/TbRuleEngineDeviceRpcService.java @@ -28,14 +28,4 @@ public interface TbRuleEngineDeviceRpcService extends RuleEngineRpcService { * @param response the RPC response */ void processRpcResponseFromDevice(FromDeviceRpcResponse response); - - - /** - * Sends Rpc response from the Device to TB Core. - * - * @param originServiceId Service ID of the origin component - * @param response the RPC response - */ - void sendRpcResponseToTbCore(String originServiceId, FromDeviceRpcResponse response); - } diff --git a/application/src/main/java/org/thingsboard/server/service/security/permission/Resource.java b/application/src/main/java/org/thingsboard/server/service/security/permission/Resource.java index 0db9a7cf6f..c2676c9929 100644 --- a/application/src/main/java/org/thingsboard/server/service/security/permission/Resource.java +++ b/application/src/main/java/org/thingsboard/server/service/security/permission/Resource.java @@ -27,12 +27,12 @@ public enum Resource { CUSTOMER(EntityType.CUSTOMER), DASHBOARD(EntityType.DASHBOARD), ENTITY_VIEW(EntityType.ENTITY_VIEW), - EDGE(EntityType.EDGE), TENANT(EntityType.TENANT), RULE_CHAIN(EntityType.RULE_CHAIN), USER(EntityType.USER), WIDGETS_BUNDLE(EntityType.WIDGETS_BUNDLE), - WIDGET_TYPE(EntityType.WIDGET_TYPE); + WIDGET_TYPE(EntityType.WIDGET_TYPE), + EDGE(EntityType.EDGE); private final EntityType entityType; diff --git a/application/src/main/java/org/thingsboard/server/service/ttl/edge/EdgeEventsCleanUpService.java b/application/src/main/java/org/thingsboard/server/service/ttl/edge/EdgeEventsCleanUpService.java index 3a84701a36..53fea1e01f 100644 --- a/application/src/main/java/org/thingsboard/server/service/ttl/edge/EdgeEventsCleanUpService.java +++ b/application/src/main/java/org/thingsboard/server/service/ttl/edge/EdgeEventsCleanUpService.java @@ -53,4 +53,4 @@ public class EdgeEventsCleanUpService extends AbstractCleanUpService { long totalEdgeEventsRemoved = executeQuery(connection, "call cleanup_edge_events_by_ttl(" + ttl + ", 0);"); log.info("Total edge events removed by TTL: [{}]", totalEdgeEventsRemoved); } -} \ No newline at end of file +} diff --git a/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java b/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java index 29ce5c81cf..ee5161869a 100644 --- a/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java +++ b/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java @@ -40,9 +40,9 @@ import org.thingsboard.server.common.data.alarm.AlarmInfo; import org.thingsboard.server.common.data.alarm.AlarmSeverity; import org.thingsboard.server.common.data.alarm.AlarmStatus; import org.thingsboard.server.common.data.asset.Asset; -import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.edge.Edge; import org.thingsboard.server.common.data.edge.EdgeEvent; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.edge.EdgeEventType; import org.thingsboard.server.common.data.id.EdgeId; import org.thingsboard.server.common.data.id.RuleChainId; @@ -60,7 +60,7 @@ import org.thingsboard.server.common.data.widget.WidgetType; import org.thingsboard.server.common.data.widget.WidgetsBundle; import org.thingsboard.server.common.transport.adaptor.JsonConverter; import org.thingsboard.server.controller.AbstractControllerTest; -import org.thingsboard.server.dao.edge.EdgeEventService;; +import org.thingsboard.server.dao.edge.EdgeEventService; import org.thingsboard.server.dao.util.mapping.JacksonUtil; import org.thingsboard.server.edge.imitator.EdgeImitator; import org.thingsboard.server.gen.edge.AlarmUpdateMsg; @@ -92,6 +92,8 @@ import java.util.UUID; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +; + @Slf4j abstract public class BaseEdgeTest extends AbstractControllerTest { @@ -712,7 +714,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { String timeseriesData = "{\"data\":{\"temperature\":25},\"ts\":" + System.currentTimeMillis() + "}"; JsonNode timeseriesEntityData = mapper.readTree(timeseriesData); - EdgeEvent edgeEvent1 = constructEdgeEvent(tenantId, edge.getId(), ActionType.TIMESERIES_UPDATED, device.getId().getId(), EdgeEventType.DEVICE, timeseriesEntityData); + EdgeEvent edgeEvent1 = constructEdgeEvent(tenantId, edge.getId(), EdgeEventActionType.TIMESERIES_UPDATED, device.getId().getId(), EdgeEventType.DEVICE, timeseriesEntityData); edgeImitator.expectMessageAmount(1); edgeEventService.saveAsync(edgeEvent1); edgeImitator.waitForMessages(); @@ -746,7 +748,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { String attributesData = "{\"scope\":\"SERVER_SCOPE\",\"kv\":{\"key\":\"value\"}}"; JsonNode attributesEntityData = mapper.readTree(attributesData); - EdgeEvent edgeEvent1 = constructEdgeEvent(tenantId, edge.getId(), ActionType.ATTRIBUTES_UPDATED, device.getId().getId(), EdgeEventType.DEVICE, attributesEntityData); + EdgeEvent edgeEvent1 = constructEdgeEvent(tenantId, edge.getId(), EdgeEventActionType.ATTRIBUTES_UPDATED, device.getId().getId(), EdgeEventType.DEVICE, attributesEntityData); edgeImitator.expectMessageAmount(1); edgeEventService.saveAsync(edgeEvent1); edgeImitator.waitForMessages(); @@ -767,7 +769,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { Assert.assertEquals("value", keyValueProto.getStringV()); ((ObjectNode) attributesEntityData).put("isPostAttributes", true); - EdgeEvent edgeEvent2 = constructEdgeEvent(tenantId, edge.getId(), ActionType.ATTRIBUTES_UPDATED, device.getId().getId(), EdgeEventType.DEVICE, attributesEntityData); + EdgeEvent edgeEvent2 = constructEdgeEvent(tenantId, edge.getId(), EdgeEventActionType.ATTRIBUTES_UPDATED, device.getId().getId(), EdgeEventType.DEVICE, attributesEntityData); edgeImitator.expectMessageAmount(1); edgeEventService.saveAsync(edgeEvent2); edgeImitator.waitForMessages(); @@ -1075,11 +1077,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { .andExpect(status().isOk()); } - private EdgeEvent constructEdgeEvent(TenantId tenantId, EdgeId edgeId, ActionType edgeEventAction, UUID entityId, EdgeEventType edgeEventType, JsonNode entityBody) { + private EdgeEvent constructEdgeEvent(TenantId tenantId, EdgeId edgeId, EdgeEventActionType edgeEventAction, UUID entityId, EdgeEventType edgeEventType, JsonNode entityBody) { EdgeEvent edgeEvent = new EdgeEvent(); edgeEvent.setEdgeId(edgeId); edgeEvent.setTenantId(tenantId); - edgeEvent.setAction(edgeEventAction.name()); + edgeEvent.setAction(edgeEventAction); edgeEvent.setEntityId(entityId); edgeEvent.setType(edgeEventType); edgeEvent.setBody(entityBody); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/audit/ActionType.java b/common/data/src/main/java/org/thingsboard/server/common/data/audit/ActionType.java index 6b6706bc84..a36ad9fcd4 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/audit/ActionType.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/audit/ActionType.java @@ -24,7 +24,6 @@ public enum ActionType { UPDATED(false), // log entity ATTRIBUTES_UPDATED(false), // log attributes/values ATTRIBUTES_DELETED(false), // log attributes - TIMESERIES_UPDATED(false), // log timeseries TIMESERIES_DELETED(false), // log timeseries RPC_CALL(false), // log method and params CREDENTIALS_UPDATED(false), // log new credentials @@ -45,9 +44,7 @@ public enum ActionType { ASSIGNED_FROM_TENANT(false), ASSIGNED_TO_TENANT(false), ASSIGNED_TO_EDGE(false), // log edge name - UNASSIGNED_FROM_EDGE(false), // log edge name - CREDENTIALS_REQUEST(false), // request credentials from edge - ENTITY_EXISTS_REQUEST(false); // request to recreate entity on edge + UNASSIGNED_FROM_EDGE(false); private final boolean isRead; diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/edge/EdgeEvent.java b/common/data/src/main/java/org/thingsboard/server/common/data/edge/EdgeEvent.java index c76a03fa43..dae4738faf 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/edge/EdgeEvent.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/edge/EdgeEvent.java @@ -29,7 +29,7 @@ public class EdgeEvent extends BaseData { private TenantId tenantId; private EdgeId edgeId; - private String action; + private EdgeEventActionType action; private UUID entityId; private String uid; private EdgeEventType type; diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/edge/EdgeEventActionType.java b/common/data/src/main/java/org/thingsboard/server/common/data/edge/EdgeEventActionType.java new file mode 100644 index 0000000000..2422aec651 --- /dev/null +++ b/common/data/src/main/java/org/thingsboard/server/common/data/edge/EdgeEventActionType.java @@ -0,0 +1,37 @@ +/** + * Copyright © 2016-2020 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.server.common.data.edge; + +public enum EdgeEventActionType { + ADDED, + DELETED, + UPDATED, + ATTRIBUTES_UPDATED, + ATTRIBUTES_DELETED, + TIMESERIES_UPDATED, + CREDENTIALS_UPDATED, + ASSIGNED_TO_CUSTOMER, + UNASSIGNED_FROM_CUSTOMER, + RELATION_ADD_OR_UPDATE, + RELATION_DELETED, + RPC_CALL, + ALARM_ACK, + ALARM_CLEAR, + ASSIGNED_TO_EDGE, + UNASSIGNED_FROM_EDGE, + CREDENTIALS_REQUEST, + ENTITY_EXISTS_REQUEST +} \ No newline at end of file diff --git a/dao/src/main/java/org/thingsboard/server/dao/edge/BaseEdgeEventService.java b/dao/src/main/java/org/thingsboard/server/dao/edge/BaseEdgeEventService.java index 8e9ec44238..6e983939ab 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/edge/BaseEdgeEventService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/edge/BaseEdgeEventService.java @@ -56,7 +56,7 @@ public class BaseEdgeEventService implements EdgeEventService { if (edgeEvent.getEdgeId() == null) { throw new DataValidationException("Edge id should be specified!"); } - if (StringUtils.isEmpty(edgeEvent.getAction())) { + if (edgeEvent.getAction() == null) { throw new DataValidationException("Edge Event action should be specified!"); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/edge/CassandraEdgeEventDao.java b/dao/src/main/java/org/thingsboard/server/dao/edge/CassandraEdgeEventDao.java index defe51036c..58d09f6919 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/edge/CassandraEdgeEventDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/edge/CassandraEdgeEventDao.java @@ -26,8 +26,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.edge.EdgeEvent; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.id.EdgeEventId; import org.thingsboard.server.common.data.id.EdgeId; import org.thingsboard.server.common.data.id.TenantId; @@ -118,7 +118,7 @@ public class CassandraEdgeEventDao extends CassandraAbstractSearchTimeDao edgeEvents = DaoUtil.convertDataList(entities); if (!withTsUpdate) { return edgeEvents.stream() - .filter(edgeEvent -> !edgeEvent.getAction().equals(ActionType.TIMESERIES_UPDATED.name())) + .filter(edgeEvent -> !edgeEvent.getAction().equals(EdgeEventActionType.TIMESERIES_UPDATED.name())) .collect(Collectors.toList()); } else { return edgeEvents; diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/nosql/EdgeEventEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/nosql/EdgeEventEntity.java index 780d463cac..19ce227f2c 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/model/nosql/EdgeEventEntity.java +++ b/dao/src/main/java/org/thingsboard/server/dao/model/nosql/EdgeEventEntity.java @@ -24,11 +24,13 @@ import com.fasterxml.jackson.databind.JsonNode; import lombok.Data; import lombok.NoArgsConstructor; import org.thingsboard.server.common.data.edge.EdgeEvent; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.edge.EdgeEventType; import org.thingsboard.server.common.data.id.EdgeEventId; import org.thingsboard.server.common.data.id.EdgeId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.dao.model.BaseEntity; +import org.thingsboard.server.dao.model.type.EdgeEventActionTypeCodec; import org.thingsboard.server.dao.model.type.EdgeEventTypeCodec; import org.thingsboard.server.dao.model.type.JsonCodec; @@ -65,8 +67,8 @@ public class EdgeEventEntity implements BaseEntity { private EdgeEventType edgeEventType; @ClusteringColumn(value = 1) - @Column(name = EDGE_EVENT_ACTION_PROPERTY) - private String edgeEventAction; + @Column(name = EDGE_EVENT_ACTION_PROPERTY, codec = EdgeEventActionTypeCodec.class) + private EdgeEventActionType edgeEventAction; @ClusteringColumn(value = 2) @Column(name = EDGE_EVENT_UID_PROPERTY) diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/EdgeEventEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/EdgeEventEntity.java index 7ad71e4a85..c3365a2402 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/EdgeEventEntity.java +++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/EdgeEventEntity.java @@ -23,6 +23,7 @@ import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import org.hibernate.annotations.TypeDef; import org.thingsboard.server.common.data.edge.EdgeEvent; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.edge.EdgeEventType; import org.thingsboard.server.common.data.id.EdgeEventId; import org.thingsboard.server.common.data.id.EdgeId; @@ -71,8 +72,9 @@ public class EdgeEventEntity extends BaseSqlEntity implements BaseEnt @Column(name = EDGE_EVENT_TYPE_PROPERTY) private EdgeEventType edgeEventType; + @Enumerated(EnumType.STRING) @Column(name = EDGE_EVENT_ACTION_PROPERTY) - private String edgeEventAction; + private EdgeEventActionType edgeEventAction; @Type(type = "json") @Column(name = EDGE_EVENT_BODY_PROPERTY) diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/type/EdgeEventActionTypeCodec.java b/dao/src/main/java/org/thingsboard/server/dao/model/type/EdgeEventActionTypeCodec.java new file mode 100644 index 0000000000..c175ccaefd --- /dev/null +++ b/dao/src/main/java/org/thingsboard/server/dao/model/type/EdgeEventActionTypeCodec.java @@ -0,0 +1,27 @@ +/** + * Copyright © 2016-2020 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.server.dao.model.type; + +import com.datastax.driver.extras.codecs.enums.EnumNameCodec; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; + +public class EdgeEventActionTypeCodec extends EnumNameCodec { + + public EdgeEventActionTypeCodec() { + super(EdgeEventActionType.class); + } + +} diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java index 4408b8ebae..8c01732a9e 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java @@ -28,6 +28,7 @@ import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.UUIDConverter; import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.edge.EdgeEvent; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.id.EdgeEventId; import org.thingsboard.server.common.data.id.EdgeId; import org.thingsboard.server.common.data.page.TimePageLink; @@ -108,7 +109,7 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTimeDao allEdgeEvents = edgeEventService.findEdgeEvents(tenantId, edgeId, pageLink, true); @@ -122,7 +121,7 @@ public abstract class BaseEdgeEventServiceTest extends AbstractServiceTest { } private EdgeEvent saveEdgeEventWithProvidedTime(long time, EdgeId edgeId, EntityId entityId, TenantId tenantId) throws Exception { - EdgeEvent edgeEvent = generateEdgeEvent(tenantId, edgeId, entityId, DataConstants.ENTITY_CREATED); + EdgeEvent edgeEvent = generateEdgeEvent(tenantId, edgeId, entityId, EdgeEventActionType.ADDED); edgeEvent.setId(new EdgeEventId(UUIDs.startOf(time))); return edgeEventService.saveAsync(edgeEvent).get(); } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/edge/TbMsgPushToEdgeNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/edge/TbMsgPushToEdgeNode.java index b510af10b0..5bd33a056a 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/edge/TbMsgPushToEdgeNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/edge/TbMsgPushToEdgeNode.java @@ -32,8 +32,8 @@ import org.thingsboard.rule.engine.api.util.TbNodeUtils; import org.thingsboard.server.common.data.DataConstants; import org.thingsboard.server.common.data.EdgeUtils; import org.thingsboard.server.common.data.EntityType; -import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.edge.EdgeEvent; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.edge.EdgeEventType; import org.thingsboard.server.common.data.id.EdgeId; import org.thingsboard.server.common.data.id.TenantId; @@ -140,13 +140,13 @@ public class TbMsgPushToEdgeNode implements TbNode { private EdgeEvent buildEdgeEvent(TbMsg msg, TbContext ctx) throws JsonProcessingException { String msgType = msg.getType(); if (DataConstants.ALARM.equals(msgType)) { - return buildEdgeEvent(ctx.getTenantId(), ActionType.ADDED, getUUIDFromMsgData(msg), EdgeEventType.ALARM, null); + return buildEdgeEvent(ctx.getTenantId(), EdgeEventActionType.ADDED, getUUIDFromMsgData(msg), EdgeEventType.ALARM, null); } else { EdgeEventType edgeEventTypeByEntityType = EdgeUtils.getEdgeEventTypeByEntityType(msg.getOriginator().getEntityType()); if (edgeEventTypeByEntityType == null) { return null; } - ActionType actionType = getActionTypeByMsgType(msgType); + EdgeEventActionType actionType = getEdgeEventActionTypeByMsgType(msgType); Map entityBody = new HashMap<>(); Map metadata = msg.getMetaData().getData(); JsonNode dataJson = json.readTree(msg.getData()); @@ -172,10 +172,10 @@ public class TbMsgPushToEdgeNode implements TbNode { } } - private EdgeEvent buildEdgeEvent(TenantId tenantId, ActionType edgeEventAction, UUID entityId, EdgeEventType edgeEventType, JsonNode entityBody) { + private EdgeEvent buildEdgeEvent(TenantId tenantId, EdgeEventActionType edgeEventAction, UUID entityId, EdgeEventType edgeEventType, JsonNode entityBody) { EdgeEvent edgeEvent = new EdgeEvent(); edgeEvent.setTenantId(tenantId); - edgeEvent.setAction(edgeEventAction.name()); + edgeEvent.setAction(edgeEventAction); edgeEvent.setEntityId(entityId); edgeEvent.setType(edgeEventType); edgeEvent.setBody(entityBody); @@ -188,15 +188,15 @@ public class TbMsgPushToEdgeNode implements TbNode { return UUID.fromString(id); } - private ActionType getActionTypeByMsgType(String msgType) { - ActionType actionType; + private EdgeEventActionType getEdgeEventActionTypeByMsgType(String msgType) { + EdgeEventActionType actionType; if (SessionMsgType.POST_TELEMETRY_REQUEST.name().equals(msgType)) { - actionType = ActionType.TIMESERIES_UPDATED; + actionType = EdgeEventActionType.TIMESERIES_UPDATED; } else if (SessionMsgType.POST_ATTRIBUTES_REQUEST.name().equals(msgType) || DataConstants.ATTRIBUTES_UPDATED.equals(msgType)) { - actionType = ActionType.ATTRIBUTES_UPDATED; + actionType = EdgeEventActionType.ATTRIBUTES_UPDATED; } else { - actionType = ActionType.ATTRIBUTES_DELETED; + actionType = EdgeEventActionType.ATTRIBUTES_DELETED; } return actionType; } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rpc/TbSendRPCRequestNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rpc/TbSendRPCRequestNode.java index ad1154005b..716474aa37 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rpc/TbSendRPCRequestNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rpc/TbSendRPCRequestNode.java @@ -36,8 +36,8 @@ import org.thingsboard.rule.engine.api.TbRelationTypes; import org.thingsboard.rule.engine.api.util.TbNodeUtils; import org.thingsboard.server.common.data.DataConstants; import org.thingsboard.server.common.data.EntityType; -import org.thingsboard.server.common.data.audit.ActionType; import org.thingsboard.server.common.data.edge.EdgeEvent; +import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.edge.EdgeEventType; import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.EdgeId; @@ -156,7 +156,7 @@ public class TbSendRPCRequestNode implements TbNode { private void sendRpcRequestToEdgeDevice(TbContext ctx, TbMsg msg, EdgeId edgeId, RuleEngineDeviceRpcRequest request) { EdgeEvent edgeEvent = new EdgeEvent(); edgeEvent.setTenantId(ctx.getTenantId()); - edgeEvent.setAction(ActionType.RPC_CALL.name()); + edgeEvent.setAction(EdgeEventActionType.RPC_CALL); edgeEvent.setEntityId(request.getDeviceId().getId()); edgeEvent.setType(EdgeEventType.DEVICE); edgeEvent.setBody(json.valueToTree(request));