Browse Source

Refactoring EdgeUtils to use enum map to match entity type with edge event type

pull/9062/head
Andrii Landiak 3 years ago
parent
commit
c164c68e12
  1. 2
      application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/alarm/AlarmEdgeProcessor.java
  2. 2
      application/src/main/java/org/thingsboard/server/service/edge/rpc/sync/DefaultEdgeRequestsService.java
  3. 3
      application/src/main/java/org/thingsboard/server/service/queue/DefaultTbClusterService.java
  4. 16
      common/data/src/main/java/org/thingsboard/server/common/data/EdgeUtils.java
  5. 9
      common/data/src/main/java/org/thingsboard/server/common/data/edge/EdgeEventType.java
  6. 3
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/edge/TbMsgPushToEdgeNode.java

2
application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/alarm/AlarmEdgeProcessor.java

@ -73,7 +73,7 @@ public class AlarmEdgeProcessor extends BaseAlarmProcessor {
if (alarm == null) { if (alarm == null) {
return Futures.immediateFuture(null); return Futures.immediateFuture(null);
} }
EdgeEventType type = EdgeEventType.getEdgeEventTypeByEntityType(alarm.getOriginator().getEntityType()); EdgeEventType type = EdgeUtils.getEdgeEventTypeByEntityType(alarm.getOriginator().getEntityType());
if (type == null) { if (type == null) {
return Futures.immediateFuture(null); return Futures.immediateFuture(null);
} }

2
application/src/main/java/org/thingsboard/server/service/edge/rpc/sync/DefaultEdgeRequestsService.java

@ -130,7 +130,7 @@ public class DefaultEdgeRequestsService implements EdgeRequestsService {
EntityId entityId = EntityIdFactory.getByTypeAndUuid( EntityId entityId = EntityIdFactory.getByTypeAndUuid(
EntityType.valueOf(attributesRequestMsg.getEntityType()), EntityType.valueOf(attributesRequestMsg.getEntityType()),
new UUID(attributesRequestMsg.getEntityIdMSB(), attributesRequestMsg.getEntityIdLSB())); new UUID(attributesRequestMsg.getEntityIdMSB(), attributesRequestMsg.getEntityIdLSB()));
final EdgeEventType entityType = EdgeEventType.getEdgeEventTypeByEntityType(entityId.getEntityType()); final EdgeEventType entityType = EdgeUtils.getEdgeEventTypeByEntityType(entityId.getEntityType());
if (entityType == null) { if (entityType == null) {
log.warn("[{}] Type doesn't supported {}", tenantId, entityId.getEntityType()); log.warn("[{}] Type doesn't supported {}", tenantId, entityId.getEntityType());
return Futures.immediateFuture(null); return Futures.immediateFuture(null);

3
application/src/main/java/org/thingsboard/server/service/queue/DefaultTbClusterService.java

@ -29,6 +29,7 @@ import org.thingsboard.server.cluster.TbClusterService;
import org.thingsboard.server.common.data.ApiUsageState; import org.thingsboard.server.common.data.ApiUsageState;
import org.thingsboard.server.common.data.Device; import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.DeviceProfile; import org.thingsboard.server.common.data.DeviceProfile;
import org.thingsboard.server.common.data.EdgeUtils;
import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.HasName; import org.thingsboard.server.common.data.HasName;
import org.thingsboard.server.common.data.HasRuleEngineProfile; import org.thingsboard.server.common.data.HasRuleEngineProfile;
@ -480,7 +481,7 @@ public class DefaultTbClusterService implements TbClusterService {
} }
if (type == null) { if (type == null) {
if (entityId != null) { if (entityId != null) {
type = EdgeEventType.getEdgeEventTypeByEntityType(entityId.getEntityType()); type = EdgeUtils.getEdgeEventTypeByEntityType(entityId.getEntityType());
} else { } else {
log.trace("[{}] entity id and type are null. Ignoring this notification", tenantId); log.trace("[{}] entity id and type are null. Ignoring this notification", tenantId);
return; return;

16
common/data/src/main/java/org/thingsboard/server/common/data/EdgeUtils.java

@ -25,11 +25,23 @@ import org.thingsboard.server.common.data.id.EdgeId;
import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
import java.util.EnumMap;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
@Slf4j @Slf4j
public final class EdgeUtils { public final class EdgeUtils {
private static final EnumMap<EntityType, EdgeEventType> entityTypeEdgeEventTypeEnumMap;
static {
entityTypeEdgeEventTypeEnumMap = new EnumMap<>(EntityType.class);
for (EdgeEventType edgeEventType : EdgeEventType.values()) {
if (edgeEventType.getEntityType() != null) {
entityTypeEdgeEventTypeEnumMap.put(edgeEventType.getEntityType(), edgeEventType);
}
}
}
private static final int STACK_TRACE_LIMIT = 10; private static final int STACK_TRACE_LIMIT = 10;
private EdgeUtils() {} private EdgeUtils() {}
@ -38,6 +50,10 @@ public final class EdgeUtils {
return ThreadLocalRandom.current().nextInt(0, Integer.MAX_VALUE); return ThreadLocalRandom.current().nextInt(0, Integer.MAX_VALUE);
} }
public static EdgeEventType getEdgeEventTypeByEntityType(EntityType entityType) {
return entityTypeEdgeEventTypeEnumMap.get(entityType);
}
public static EdgeEvent constructEdgeEvent(TenantId tenantId, public static EdgeEvent constructEdgeEvent(TenantId tenantId,
EdgeId edgeId, EdgeId edgeId,
EdgeEventType type, EdgeEventType type,

9
common/data/src/main/java/org/thingsboard/server/common/data/edge/EdgeEventType.java

@ -18,8 +18,6 @@ package org.thingsboard.server.common.data.edge;
import lombok.Getter; import lombok.Getter;
import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.EntityType;
import java.util.Arrays;
@Getter @Getter
public enum EdgeEventType { public enum EdgeEventType {
DASHBOARD(false, EntityType.DASHBOARD), DASHBOARD(false, EntityType.DASHBOARD),
@ -52,11 +50,4 @@ public enum EdgeEventType {
this.allEdgesRelated = allEdgesRelated; this.allEdgesRelated = allEdgesRelated;
this.entityType = entityType; this.entityType = entityType;
} }
public static EdgeEventType getEdgeEventTypeByEntityType(EntityType entityType) {
return Arrays.stream(values())
.filter(edgeEventType -> entityType.equals(edgeEventType.getEntityType()))
.findFirst()
.orElse(null);
}
} }

3
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/edge/TbMsgPushToEdgeNode.java

@ -24,6 +24,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
import org.thingsboard.rule.engine.api.RuleNode; import org.thingsboard.rule.engine.api.RuleNode;
import org.thingsboard.rule.engine.api.TbContext; import org.thingsboard.rule.engine.api.TbContext;
import org.thingsboard.server.common.data.DataConstants; 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.EntityType;
import org.thingsboard.server.common.data.edge.EdgeEvent; import org.thingsboard.server.common.data.edge.EdgeEvent;
import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.edge.EdgeEventActionType;
@ -90,7 +91,7 @@ public class TbMsgPushToEdgeNode extends AbstractTbMsgPushNode<TbMsgPushToEdgeNo
@Override @Override
EdgeEventType getEventTypeByEntityType(EntityType entityType) { EdgeEventType getEventTypeByEntityType(EntityType entityType) {
return EdgeEventType.getEdgeEventTypeByEntityType(entityType); return EdgeUtils.getEdgeEventTypeByEntityType(entityType);
} }
@Override @Override

Loading…
Cancel
Save