Do not send delete notification if related edges empty. Minor code refactoring
This commit is contained in:
parent
366583cc0a
commit
dd1effafc4
@ -38,8 +38,6 @@ import org.thingsboard.server.common.data.id.EntityIdFactory;
|
|||||||
import org.thingsboard.server.common.data.id.EntityViewId;
|
import org.thingsboard.server.common.data.id.EntityViewId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.id.UserId;
|
import org.thingsboard.server.common.data.id.UserId;
|
||||||
import org.thingsboard.server.common.data.page.PageData;
|
|
||||||
import org.thingsboard.server.common.data.page.PageLink;
|
|
||||||
import org.thingsboard.server.common.data.relation.EntityRelation;
|
import org.thingsboard.server.common.data.relation.EntityRelation;
|
||||||
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
|
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
|
||||||
import org.thingsboard.server.gen.edge.v1.DownlinkMsg;
|
import org.thingsboard.server.gen.edge.v1.DownlinkMsg;
|
||||||
@ -136,8 +134,8 @@ public class RelationEdgeProcessor extends BaseEdgeProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Set<EdgeId> uniqueEdgeIds = new HashSet<>();
|
Set<EdgeId> uniqueEdgeIds = new HashSet<>();
|
||||||
uniqueEdgeIds.addAll(findRelatedEdgeIds(tenantId, relation.getTo()));
|
uniqueEdgeIds.addAll(edgeService.findAllRelatedEdgeIds(tenantId, relation.getTo()));
|
||||||
uniqueEdgeIds.addAll(findRelatedEdgeIds(tenantId, relation.getFrom()));
|
uniqueEdgeIds.addAll(edgeService.findAllRelatedEdgeIds(tenantId, relation.getFrom()));
|
||||||
if (uniqueEdgeIds.isEmpty()) {
|
if (uniqueEdgeIds.isEmpty()) {
|
||||||
return Futures.immediateFuture(null);
|
return Futures.immediateFuture(null);
|
||||||
}
|
}
|
||||||
@ -152,20 +150,4 @@ public class RelationEdgeProcessor extends BaseEdgeProcessor {
|
|||||||
}
|
}
|
||||||
return Futures.transform(Futures.allAsList(futures), voids -> null, dbCallbackExecutorService);
|
return Futures.transform(Futures.allAsList(futures), voids -> null, dbCallbackExecutorService);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<EdgeId> findRelatedEdgeIds(TenantId tenantId, EntityId entityId) {
|
|
||||||
List<EdgeId> result = new ArrayList<>();
|
|
||||||
PageLink pageLink = new PageLink(DEFAULT_PAGE_SIZE);
|
|
||||||
PageData<EdgeId> pageData;
|
|
||||||
do {
|
|
||||||
pageData = edgeService.findRelatedEdgeIdsByEntityId(tenantId, entityId, pageLink);
|
|
||||||
if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) {
|
|
||||||
result.addAll(pageData.getData());
|
|
||||||
if (pageData.hasNext()) {
|
|
||||||
pageLink = pageLink.nextPageLink();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} while (pageData != null && pageData.hasNext());
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,12 +29,10 @@ import org.thingsboard.server.common.data.alarm.AlarmQuery;
|
|||||||
import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;
|
import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;
|
||||||
import org.thingsboard.server.common.data.exception.ThingsboardException;
|
import org.thingsboard.server.common.data.exception.ThingsboardException;
|
||||||
import org.thingsboard.server.common.data.id.AlarmId;
|
import org.thingsboard.server.common.data.id.AlarmId;
|
||||||
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.EntityIdFactory;
|
import org.thingsboard.server.common.data.id.EntityIdFactory;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.page.PageData;
|
import org.thingsboard.server.common.data.page.PageData;
|
||||||
import org.thingsboard.server.common.data.page.PageDataIterableByTenantIdEntityId;
|
|
||||||
import org.thingsboard.server.common.data.page.TimePageLink;
|
import org.thingsboard.server.common.data.page.TimePageLink;
|
||||||
import org.thingsboard.server.dao.alarm.AlarmService;
|
import org.thingsboard.server.dao.alarm.AlarmService;
|
||||||
import org.thingsboard.server.dao.customer.CustomerService;
|
import org.thingsboard.server.dao.customer.CustomerService;
|
||||||
@ -43,8 +41,6 @@ import org.thingsboard.server.dao.model.ModelConstants;
|
|||||||
import org.thingsboard.server.service.executors.DbCallbackExecutorService;
|
import org.thingsboard.server.service.executors.DbCallbackExecutorService;
|
||||||
import org.thingsboard.server.service.sync.vc.EntitiesVersionControlService;
|
import org.thingsboard.server.service.sync.vc.EntitiesVersionControlService;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -53,14 +49,9 @@ import java.util.stream.Collectors;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public abstract class AbstractTbEntityService {
|
public abstract class AbstractTbEntityService {
|
||||||
|
|
||||||
protected static final int DEFAULT_PAGE_SIZE = 1000;
|
|
||||||
|
|
||||||
@Value("${server.log_controller_error_stack_trace}")
|
@Value("${server.log_controller_error_stack_trace}")
|
||||||
@Getter
|
@Getter
|
||||||
private boolean logControllerErrorStackTrace;
|
private boolean logControllerErrorStackTrace;
|
||||||
@Value("${edges.enabled}")
|
|
||||||
@Getter
|
|
||||||
protected boolean edgesEnabled;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
protected DbCallbackExecutorService dbExecutor;
|
protected DbCallbackExecutorService dbExecutor;
|
||||||
@ -113,22 +104,6 @@ public abstract class AbstractTbEntityService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List<EdgeId> findRelatedEdgeIds(TenantId tenantId, EntityId entityId) {
|
|
||||||
if (!edgesEnabled) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (EntityType.EDGE.equals(entityId.getEntityType())) {
|
|
||||||
return Collections.singletonList(new EdgeId(entityId.getId()));
|
|
||||||
}
|
|
||||||
PageDataIterableByTenantIdEntityId<EdgeId> relatedEdgeIdsIterator =
|
|
||||||
new PageDataIterableByTenantIdEntityId<>(edgeService::findRelatedEdgeIdsByEntityId, tenantId, entityId, DEFAULT_PAGE_SIZE);
|
|
||||||
List<EdgeId> result = new ArrayList<>();
|
|
||||||
for (EdgeId edgeId : relatedEdgeIdsIterator) {
|
|
||||||
result.add(edgeId);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected <I extends EntityId> I emptyId(EntityType entityType) {
|
protected <I extends EntityId> I emptyId(EntityType entityType) {
|
||||||
return (I) EntityIdFactory.getByTypeAndUuid(entityType, ModelConstants.NULL_UUID);
|
return (I) EntityIdFactory.getByTypeAndUuid(entityType, ModelConstants.NULL_UUID);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -280,8 +280,6 @@ public class DefaultTbNotificationEntityService implements TbNotificationEntityS
|
|||||||
for (EdgeId edgeId : edgeIds) {
|
for (EdgeId edgeId : edgeIds) {
|
||||||
sendNotificationMsgToEdge(tenantId, edgeId, entityId, body, null, EdgeEventActionType.DELETED);
|
sendNotificationMsgToEdge(tenantId, edgeId, entityId, body, null, EdgeEventActionType.DELETED);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
sendNotificationMsgToEdge(tenantId, null, entityId, body, null, EdgeEventActionType.DELETED);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,7 +79,7 @@ public class DefaultTbAlarmService extends AbstractTbEntityService implements Tb
|
|||||||
@Override
|
@Override
|
||||||
public Boolean delete(Alarm alarm, User user) {
|
public Boolean delete(Alarm alarm, User user) {
|
||||||
TenantId tenantId = alarm.getTenantId();
|
TenantId tenantId = alarm.getTenantId();
|
||||||
List<EdgeId> relatedEdgeIds = findRelatedEdgeIds(tenantId, alarm.getOriginator());
|
List<EdgeId> relatedEdgeIds = edgeService.findAllRelatedEdgeIds(tenantId, alarm.getOriginator());
|
||||||
notificationEntityService.notifyDeleteAlarm(tenantId, alarm, alarm.getOriginator(), alarm.getCustomerId(),
|
notificationEntityService.notifyDeleteAlarm(tenantId, alarm, alarm.getOriginator(), alarm.getCustomerId(),
|
||||||
relatedEdgeIds, user, JacksonUtil.toString(alarm));
|
relatedEdgeIds, user, JacksonUtil.toString(alarm));
|
||||||
return alarmService.deleteAlarm(tenantId, alarm.getId()).isSuccessful();
|
return alarmService.deleteAlarm(tenantId, alarm.getId()).isSuccessful();
|
||||||
|
|||||||
@ -61,7 +61,7 @@ public class DefaultTbAssetService extends AbstractTbEntityService implements Tb
|
|||||||
TenantId tenantId = asset.getTenantId();
|
TenantId tenantId = asset.getTenantId();
|
||||||
AssetId assetId = asset.getId();
|
AssetId assetId = asset.getId();
|
||||||
try {
|
try {
|
||||||
List<EdgeId> relatedEdgeIds = findRelatedEdgeIds(tenantId, assetId);
|
List<EdgeId> relatedEdgeIds = edgeService.findAllRelatedEdgeIds(tenantId, assetId);
|
||||||
assetService.deleteAsset(tenantId, assetId);
|
assetService.deleteAsset(tenantId, assetId);
|
||||||
notificationEntityService.notifyDeleteEntity(tenantId, assetId, asset, asset.getCustomerId(),
|
notificationEntityService.notifyDeleteEntity(tenantId, assetId, asset, asset.getCustomerId(),
|
||||||
ActionType.DELETED, relatedEdgeIds, user, assetId.toString());
|
ActionType.DELETED, relatedEdgeIds, user, assetId.toString());
|
||||||
|
|||||||
@ -65,7 +65,7 @@ public class DefaultTbDashboardService extends AbstractTbEntityService implement
|
|||||||
DashboardId dashboardId = dashboard.getId();
|
DashboardId dashboardId = dashboard.getId();
|
||||||
TenantId tenantId = dashboard.getTenantId();
|
TenantId tenantId = dashboard.getTenantId();
|
||||||
try {
|
try {
|
||||||
List<EdgeId> relatedEdgeIds = findRelatedEdgeIds(tenantId, dashboardId);
|
List<EdgeId> relatedEdgeIds = edgeService.findAllRelatedEdgeIds(tenantId, dashboardId);
|
||||||
dashboardService.deleteDashboard(tenantId, dashboardId);
|
dashboardService.deleteDashboard(tenantId, dashboardId);
|
||||||
notificationEntityService.notifyDeleteEntity(tenantId, dashboardId, dashboard, null,
|
notificationEntityService.notifyDeleteEntity(tenantId, dashboardId, dashboard, null,
|
||||||
ActionType.DELETED, relatedEdgeIds, user, dashboardId.toString());
|
ActionType.DELETED, relatedEdgeIds, user, dashboardId.toString());
|
||||||
|
|||||||
@ -96,7 +96,7 @@ public class DefaultTbDeviceService extends AbstractTbEntityService implements T
|
|||||||
TenantId tenantId = device.getTenantId();
|
TenantId tenantId = device.getTenantId();
|
||||||
DeviceId deviceId = device.getId();
|
DeviceId deviceId = device.getId();
|
||||||
try {
|
try {
|
||||||
List<EdgeId> relatedEdgeIds = findRelatedEdgeIds(tenantId, deviceId);
|
List<EdgeId> relatedEdgeIds = edgeService.findAllRelatedEdgeIds(tenantId, deviceId);
|
||||||
deviceService.deleteDevice(tenantId, deviceId);
|
deviceService.deleteDevice(tenantId, deviceId);
|
||||||
notificationEntityService.notifyDeleteDevice(tenantId, deviceId, device.getCustomerId(), device,
|
notificationEntityService.notifyDeleteDevice(tenantId, deviceId, device.getCustomerId(), device,
|
||||||
relatedEdgeIds, user, deviceId.toString());
|
relatedEdgeIds, user, deviceId.toString());
|
||||||
|
|||||||
@ -129,7 +129,7 @@ public class DefaultTbEntityViewService extends AbstractTbEntityService implemen
|
|||||||
TenantId tenantId = entityView.getTenantId();
|
TenantId tenantId = entityView.getTenantId();
|
||||||
EntityViewId entityViewId = entityView.getId();
|
EntityViewId entityViewId = entityView.getId();
|
||||||
try {
|
try {
|
||||||
List<EdgeId> relatedEdgeIds = findRelatedEdgeIds(tenantId, entityViewId);
|
List<EdgeId> relatedEdgeIds = edgeService.findAllRelatedEdgeIds(tenantId, entityViewId);
|
||||||
entityViewService.deleteEntityView(tenantId, entityViewId);
|
entityViewService.deleteEntityView(tenantId, entityViewId);
|
||||||
notificationEntityService.notifyDeleteEntity(tenantId, entityViewId, entityView, entityView.getCustomerId(), ActionType.DELETED,
|
notificationEntityService.notifyDeleteEntity(tenantId, entityViewId, entityView, entityView.getCustomerId(), ActionType.DELETED,
|
||||||
relatedEdgeIds, user, entityViewId.toString());
|
relatedEdgeIds, user, entityViewId.toString());
|
||||||
|
|||||||
@ -203,7 +203,7 @@ public class DefaultTbRuleChainService extends AbstractTbEntityService implement
|
|||||||
|
|
||||||
List<EdgeId> relatedEdgeIds = null;
|
List<EdgeId> relatedEdgeIds = null;
|
||||||
if (RuleChainType.EDGE.equals(ruleChain.getType())) {
|
if (RuleChainType.EDGE.equals(ruleChain.getType())) {
|
||||||
relatedEdgeIds = findRelatedEdgeIds(tenantId, ruleChainId);
|
relatedEdgeIds = edgeService.findAllRelatedEdgeIds(tenantId, ruleChainId);
|
||||||
}
|
}
|
||||||
|
|
||||||
ruleChainService.deleteRuleChainById(tenantId, ruleChainId);
|
ruleChainService.deleteRuleChainById(tenantId, ruleChainId);
|
||||||
|
|||||||
@ -37,6 +37,7 @@ import org.thingsboard.server.common.data.User;
|
|||||||
import org.thingsboard.server.common.data.audit.ActionType;
|
import org.thingsboard.server.common.data.audit.ActionType;
|
||||||
import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;
|
import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;
|
||||||
import org.thingsboard.server.common.data.exception.ThingsboardException;
|
import org.thingsboard.server.common.data.exception.ThingsboardException;
|
||||||
|
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.EntityIdFactory;
|
import org.thingsboard.server.common.data.id.EntityIdFactory;
|
||||||
import org.thingsboard.server.common.data.id.HasId;
|
import org.thingsboard.server.common.data.id.HasId;
|
||||||
@ -69,6 +70,7 @@ import org.thingsboard.server.common.data.sync.vc.request.load.SingleEntityVersi
|
|||||||
import org.thingsboard.server.common.data.sync.vc.request.load.VersionLoadConfig;
|
import org.thingsboard.server.common.data.sync.vc.request.load.VersionLoadConfig;
|
||||||
import org.thingsboard.server.common.data.sync.vc.request.load.VersionLoadRequest;
|
import org.thingsboard.server.common.data.sync.vc.request.load.VersionLoadRequest;
|
||||||
import org.thingsboard.server.dao.DaoUtil;
|
import org.thingsboard.server.dao.DaoUtil;
|
||||||
|
import org.thingsboard.server.dao.edge.EdgeService;
|
||||||
import org.thingsboard.server.dao.exception.DeviceCredentialsValidationException;
|
import org.thingsboard.server.dao.exception.DeviceCredentialsValidationException;
|
||||||
import org.thingsboard.server.queue.util.TbCoreComponent;
|
import org.thingsboard.server.queue.util.TbCoreComponent;
|
||||||
import org.thingsboard.server.service.entitiy.TbNotificationEntityService;
|
import org.thingsboard.server.service.entitiy.TbNotificationEntityService;
|
||||||
@ -112,6 +114,7 @@ public class DefaultEntitiesVersionControlService implements EntitiesVersionCont
|
|||||||
private final EntitiesExportImportService exportImportService;
|
private final EntitiesExportImportService exportImportService;
|
||||||
private final ExportableEntitiesService exportableEntitiesService;
|
private final ExportableEntitiesService exportableEntitiesService;
|
||||||
private final TbNotificationEntityService entityNotificationService;
|
private final TbNotificationEntityService entityNotificationService;
|
||||||
|
private final EdgeService edgeService;
|
||||||
private final TransactionTemplate transactionTemplate;
|
private final TransactionTemplate transactionTemplate;
|
||||||
private final TbTransactionalCache<UUID, VersionControlTaskCacheEntry> taskCache;
|
private final TbTransactionalCache<UUID, VersionControlTaskCacheEntry> taskCache;
|
||||||
|
|
||||||
@ -427,11 +430,12 @@ public class DefaultEntitiesVersionControlService implements EntitiesVersionCont
|
|||||||
return exportableEntitiesService.findEntitiesByTenantId(ctx.getTenantId(), entityType, pageLink);
|
return exportableEntitiesService.findEntitiesByTenantId(ctx.getTenantId(), entityType, pageLink);
|
||||||
}, 100, entity -> {
|
}, 100, entity -> {
|
||||||
if (ctx.getImportedEntities().get(entityType) == null || !ctx.getImportedEntities().get(entityType).contains(entity.getId())) {
|
if (ctx.getImportedEntities().get(entityType) == null || !ctx.getImportedEntities().get(entityType).contains(entity.getId())) {
|
||||||
|
List<EdgeId> relatedEdgeIds = edgeService.findAllRelatedEdgeIds(ctx.getTenantId(), entity.getId());
|
||||||
exportableEntitiesService.removeById(ctx.getTenantId(), entity.getId());
|
exportableEntitiesService.removeById(ctx.getTenantId(), entity.getId());
|
||||||
|
|
||||||
ctx.addEventCallback(() -> {
|
ctx.addEventCallback(() -> {
|
||||||
entityNotificationService.notifyDeleteEntity(ctx.getTenantId(), entity.getId(),
|
entityNotificationService.notifyDeleteEntity(ctx.getTenantId(), entity.getId(),
|
||||||
entity, null, ActionType.DELETED, null, ctx.getUser());
|
entity, null, ActionType.DELETED, relatedEdgeIds, ctx.getUser());
|
||||||
});
|
});
|
||||||
ctx.registerDeleted(entityType);
|
ctx.registerDeleted(entityType);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,6 +82,8 @@ public interface EdgeService {
|
|||||||
|
|
||||||
PageData<Edge> findEdgesByTenantIdAndEntityId(TenantId tenantId, EntityId ruleChainId, PageLink pageLink);
|
PageData<Edge> findEdgesByTenantIdAndEntityId(TenantId tenantId, EntityId ruleChainId, PageLink pageLink);
|
||||||
|
|
||||||
|
List<EdgeId> findAllRelatedEdgeIds(TenantId tenantId, EntityId entityId);
|
||||||
|
|
||||||
PageData<EdgeId> findRelatedEdgeIdsByEntityId(TenantId tenantId, EntityId entityId, PageLink pageLink);
|
PageData<EdgeId> findRelatedEdgeIdsByEntityId(TenantId tenantId, EntityId entityId, PageLink pageLink);
|
||||||
|
|
||||||
String findMissingToRelatedRuleChains(TenantId tenantId, EdgeId edgeId, String tbRuleChainInputNodeClassName);
|
String findMissingToRelatedRuleChains(TenantId tenantId, EdgeId edgeId, String tbRuleChainInputNodeClassName);
|
||||||
|
|||||||
@ -21,9 +21,11 @@ import com.google.common.base.Function;
|
|||||||
import com.google.common.util.concurrent.Futures;
|
import com.google.common.util.concurrent.Futures;
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
import com.google.common.util.concurrent.MoreExecutors;
|
import com.google.common.util.concurrent.MoreExecutors;
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.hibernate.exception.ConstraintViolationException;
|
import org.hibernate.exception.ConstraintViolationException;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.transaction.event.TransactionalEventListener;
|
import org.springframework.transaction.event.TransactionalEventListener;
|
||||||
@ -43,6 +45,7 @@ import org.thingsboard.server.common.data.id.RuleChainId;
|
|||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.id.UserId;
|
import org.thingsboard.server.common.data.id.UserId;
|
||||||
import org.thingsboard.server.common.data.page.PageData;
|
import org.thingsboard.server.common.data.page.PageData;
|
||||||
|
import org.thingsboard.server.common.data.page.PageDataIterableByTenantIdEntityId;
|
||||||
import org.thingsboard.server.common.data.page.PageLink;
|
import org.thingsboard.server.common.data.page.PageLink;
|
||||||
import org.thingsboard.server.common.data.relation.EntityRelation;
|
import org.thingsboard.server.common.data.relation.EntityRelation;
|
||||||
import org.thingsboard.server.common.data.relation.EntitySearchDirection;
|
import org.thingsboard.server.common.data.relation.EntitySearchDirection;
|
||||||
@ -97,6 +100,10 @@ public class EdgeServiceImpl extends AbstractCachedEntityService<EdgeCacheKey, E
|
|||||||
@Autowired
|
@Autowired
|
||||||
private DataValidator<Edge> edgeValidator;
|
private DataValidator<Edge> edgeValidator;
|
||||||
|
|
||||||
|
@Value("${edges.enabled}")
|
||||||
|
@Getter
|
||||||
|
private boolean edgesEnabled;
|
||||||
|
|
||||||
@TransactionalEventListener(classes = EdgeCacheEvictEvent.class)
|
@TransactionalEventListener(classes = EdgeCacheEvictEvent.class)
|
||||||
@Override
|
@Override
|
||||||
public void handleEvictEvent(EdgeCacheEvictEvent event) {
|
public void handleEvictEvent(EdgeCacheEvictEvent event) {
|
||||||
@ -396,6 +403,23 @@ public class EdgeServiceImpl extends AbstractCachedEntityService<EdgeCacheKey, E
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<EdgeId> findAllRelatedEdgeIds(TenantId tenantId, EntityId entityId) {
|
||||||
|
if (!edgesEnabled) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (EntityType.EDGE.equals(entityId.getEntityType())) {
|
||||||
|
return Collections.singletonList(new EdgeId(entityId.getId()));
|
||||||
|
}
|
||||||
|
PageDataIterableByTenantIdEntityId<EdgeId> relatedEdgeIdsIterator =
|
||||||
|
new PageDataIterableByTenantIdEntityId<>(edgeService::findRelatedEdgeIdsByEntityId, tenantId, entityId, DEFAULT_PAGE_SIZE);
|
||||||
|
List<EdgeId> result = new ArrayList<>();
|
||||||
|
for (EdgeId edgeId : relatedEdgeIdsIterator) {
|
||||||
|
result.add(edgeId);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageData<EdgeId> findRelatedEdgeIdsByEntityId(TenantId tenantId, EntityId entityId, PageLink pageLink) {
|
public PageData<EdgeId> findRelatedEdgeIdsByEntityId(TenantId tenantId, EntityId entityId, PageLink pageLink) {
|
||||||
log.trace("[{}] Executing findRelatedEdgeIdsByEntityId [{}] [{}]", tenantId, entityId, pageLink);
|
log.trace("[{}] Executing findRelatedEdgeIdsByEntityId [{}] [{}]", tenantId, entityId, pageLink);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user