Improve code, fix failing tests
This commit is contained in:
parent
987bcf476c
commit
5ace34bccf
@ -94,7 +94,7 @@ public class EdgeEventSourcingListener {
|
||||
}
|
||||
EntityType entityType = event.getEntityId().getEntityType();
|
||||
try {
|
||||
if (EntityType.EDGE.equals(entityType) || EntityType.TENANT.equals(entityType)) {
|
||||
if (EntityType.EDGE.equals(entityType) || EntityType.TENANT.equals(entityType) || EntityType.TB_RESOURCE.equals(entityType)) {
|
||||
return;
|
||||
}
|
||||
log.trace("[{}] DeleteEntityEvent called: {}", event.getTenantId(), event);
|
||||
@ -155,8 +155,11 @@ public class EdgeEventSourcingListener {
|
||||
User user = (User) event.getEntity();
|
||||
return !Authority.SYS_ADMIN.equals(user.getAuthority());
|
||||
case OTA_PACKAGE:
|
||||
OtaPackageInfo otaPackageInfo = (OtaPackageInfo) event.getEntity();
|
||||
return otaPackageInfo.hasUrl() || otaPackageInfo.isHasData();
|
||||
if (event.getEntity() instanceof OtaPackageInfo) {
|
||||
OtaPackageInfo otaPackageInfo = (OtaPackageInfo) event.getEntity();
|
||||
return otaPackageInfo.hasUrl() || otaPackageInfo.isHasData();
|
||||
}
|
||||
break;
|
||||
case ALARM:
|
||||
if (event.getEntity() instanceof AlarmApiCallResult) {
|
||||
AlarmApiCallResult alarmApiCallResult = (AlarmApiCallResult) event.getEntity();
|
||||
|
||||
@ -51,7 +51,6 @@ import org.thingsboard.server.dao.entity.EntityStateSyncManager;
|
||||
import org.thingsboard.server.dao.eventsourcing.ActionEntityEvent;
|
||||
import org.thingsboard.server.dao.eventsourcing.DeleteEntityEvent;
|
||||
import org.thingsboard.server.dao.eventsourcing.SaveEntityEvent;
|
||||
import org.thingsboard.server.dao.tenant.TenantService;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.Set;
|
||||
@ -62,7 +61,6 @@ import java.util.Set;
|
||||
public class EntityStateSourcingListener {
|
||||
|
||||
private final TbClusterService tbClusterService;
|
||||
private final TenantService tenantService;
|
||||
private final EntityStateSyncManager entityStateSyncManager;
|
||||
|
||||
@PostConstruct
|
||||
|
||||
@ -167,7 +167,7 @@ public class InstallScripts {
|
||||
return paths;
|
||||
}
|
||||
|
||||
public RuleChain createDefaultRuleChain(TenantId tenantId, String ruleChainName) throws IOException {
|
||||
public RuleChain createDefaultRuleChain(TenantId tenantId, String ruleChainName) {
|
||||
return createRuleChainFromFile(tenantId, getDeviceProfileDefaultRuleChainTemplateFilePath(), ruleChainName);
|
||||
}
|
||||
|
||||
|
||||
@ -192,14 +192,7 @@ public class DefaultTbRuleChainService extends AbstractTbEntityService implement
|
||||
TenantId tenantId = ruleChain.getTenantId();
|
||||
RuleChainId ruleChainId = ruleChain.getId();
|
||||
try {
|
||||
List<RuleNode> referencingRuleNodes = ruleChainService.getReferencingRuleChainNodes(tenantId, ruleChainId);
|
||||
|
||||
Set<RuleChainId> referencingRuleChainIds = referencingRuleNodes.stream().map(RuleNode::getRuleChainId).collect(Collectors.toSet());
|
||||
|
||||
ruleChainService.deleteRuleChainById(tenantId, ruleChainId);
|
||||
|
||||
referencingRuleChainIds.remove(ruleChain.getId());
|
||||
|
||||
logEntityActionService.logEntityAction(tenantId, ruleChainId, ruleChain, null, ActionType.DELETED, user, ruleChainId.toString());
|
||||
} catch (Exception e) {
|
||||
logEntityActionService.logEntityAction(tenantId, emptyId(EntityType.RULE_CHAIN), ActionType.DELETED,
|
||||
|
||||
@ -20,6 +20,7 @@ import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
@ -41,6 +42,8 @@ import org.thingsboard.server.common.data.security.Authority;
|
||||
import org.thingsboard.server.common.data.security.UserCredentials;
|
||||
import org.thingsboard.server.dao.customer.CustomerService;
|
||||
import org.thingsboard.server.dao.dashboard.DashboardService;
|
||||
import org.thingsboard.server.dao.entity.EntityStateSyncManager;
|
||||
import org.thingsboard.server.dao.eventsourcing.SaveEntityEvent;
|
||||
import org.thingsboard.server.dao.oauth2.OAuth2User;
|
||||
import org.thingsboard.server.dao.tenant.TbTenantProfileCache;
|
||||
import org.thingsboard.server.dao.tenant.TenantService;
|
||||
@ -84,6 +87,12 @@ public abstract class AbstractOAuth2ClientMapper {
|
||||
@Autowired
|
||||
protected TbTenantProfileCache tenantProfileCache;
|
||||
|
||||
@Autowired
|
||||
private ApplicationEventPublisher eventPublisher;
|
||||
|
||||
@Autowired
|
||||
private EntityStateSyncManager entityStateSyncManager;
|
||||
|
||||
@Value("${edges.enabled}")
|
||||
@Getter
|
||||
private boolean edgesEnabled;
|
||||
@ -170,12 +179,17 @@ public abstract class AbstractOAuth2ClientMapper {
|
||||
List<Tenant> tenants = tenantService.findTenants(new PageLink(1, 0, tenantName)).getData();
|
||||
Tenant tenant;
|
||||
if (tenants == null || tenants.isEmpty()) {
|
||||
entityStateSyncManager.getSync().set(true);
|
||||
|
||||
tenant = new Tenant();
|
||||
tenant.setTitle(tenantName);
|
||||
tenant = tenantService.saveTenant(tenant);
|
||||
installScripts.createDefaultRuleChains(tenant.getId());
|
||||
installScripts.createDefaultEdgeRuleChains(tenant.getId());
|
||||
tenantProfileCache.evict(tenant.getId());
|
||||
|
||||
entityStateSyncManager.getSync().remove();
|
||||
eventPublisher.publishEvent(SaveEntityEvent.builder().tenantId(TenantId.SYS_TENANT_ID).entityId(tenant.getId()).entity(tenant).added(true).build());
|
||||
} else {
|
||||
tenant = tenants.get(0);
|
||||
}
|
||||
|
||||
@ -132,10 +132,6 @@ public class RuleChainImportService extends BaseEntityImportService<RuleChainId,
|
||||
protected void onEntitySaved(User user, RuleChain savedRuleChain, RuleChain oldRuleChain) {
|
||||
entityActionService.logEntityAction(user, savedRuleChain.getId(), savedRuleChain, null,
|
||||
oldRuleChain == null ? ActionType.ADDED : ActionType.UPDATED, null);
|
||||
if (savedRuleChain.getType() == RuleChainType.CORE) {
|
||||
clusterService.broadcastEntityStateChangeEvent(user.getTenantId(), savedRuleChain.getId(),
|
||||
oldRuleChain == null ? ComponentLifecycleEvent.CREATED : ComponentLifecycleEvent.UPDATED);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -632,6 +632,7 @@ public class ExportImportServiceSqlTest extends BaseExportImportServiceTest {
|
||||
any(), eq(ActionType.ADDED), isNull());
|
||||
verify(tbClusterService).onDeviceProfileChange(eq(importedDeviceProfile), any(), any());
|
||||
verify(tbClusterService).sendNotificationMsgToEdge(any(), any(), eq(importedDeviceProfile.getId()), any(), any(), eq(EdgeEventActionType.ADDED));
|
||||
verify(otaPackageStateService).update(eq(importedDeviceProfile), eq(false), eq(false));
|
||||
|
||||
Device importedDevice = (Device) importEntity(tenantAdmin2, getAndClone(entitiesExportData, EntityType.DEVICE)).getSavedEntity();
|
||||
verify(entityActionService).logEntityAction(any(), eq(importedDevice.getId()), eq(importedDevice),
|
||||
|
||||
@ -23,6 +23,7 @@ import org.thingsboard.server.common.data.DeviceInfoFilter;
|
||||
import org.thingsboard.server.common.data.DeviceProfile;
|
||||
import org.thingsboard.server.common.data.DeviceTransportType;
|
||||
import org.thingsboard.server.common.data.EntitySubtype;
|
||||
import org.thingsboard.server.common.data.Tenant;
|
||||
import org.thingsboard.server.common.data.device.DeviceSearchQuery;
|
||||
import org.thingsboard.server.common.data.id.CustomerId;
|
||||
import org.thingsboard.server.common.data.id.DeviceId;
|
||||
|
||||
@ -130,7 +130,7 @@ public class AssetProfileServiceImpl extends AbstractCachedEntityService<AssetPr
|
||||
savedAssetProfile = assetProfileDao.saveAndFlush(assetProfile.getTenantId(), assetProfile);
|
||||
publishEvictEvent(new AssetProfileEvictEvent(savedAssetProfile.getTenantId(), savedAssetProfile.getName(),
|
||||
oldAssetProfile != null ? oldAssetProfile.getName() : null, savedAssetProfile.getId(), savedAssetProfile.isDefault()));
|
||||
eventPublisher.publishEvent(SaveEntityEvent.builder().tenantId(savedAssetProfile.getTenantId())
|
||||
eventPublisher.publishEvent(SaveEntityEvent.builder().tenantId(savedAssetProfile.getTenantId()).entity(savedAssetProfile)
|
||||
.entityId(savedAssetProfile.getId()).added(oldAssetProfile == null).build());
|
||||
} catch (Exception t) {
|
||||
handleEvictEvent(new AssetProfileEvictEvent(assetProfile.getTenantId(), assetProfile.getName(),
|
||||
|
||||
@ -672,7 +672,7 @@ public class DeviceServiceImpl extends AbstractCachedEntityService<DeviceCacheKe
|
||||
}
|
||||
};
|
||||
|
||||
private PaginatedRemover<CustomerId, Device> customerDeviceUnasigner = new PaginatedRemover<CustomerId, Device>() {
|
||||
private PaginatedRemover<CustomerId, Device> customerDeviceUnasigner = new PaginatedRemover<>() {
|
||||
|
||||
@Override
|
||||
protected PageData<Device> findEntities(TenantId tenantId, CustomerId id, PageLink pageLink) {
|
||||
|
||||
@ -48,17 +48,17 @@ public class BaseEdgeEventService implements EdgeEventService {
|
||||
|
||||
private final ApplicationEventPublisher eventPublisher;
|
||||
|
||||
private ExecutorService executor;
|
||||
private ExecutorService edgeEventExecutor;
|
||||
|
||||
@PostConstruct
|
||||
public void initExecutor() {
|
||||
executor = Executors.newSingleThreadExecutor(ThingsBoardThreadFactory.forName("edge-event"));
|
||||
edgeEventExecutor = Executors.newSingleThreadExecutor(ThingsBoardThreadFactory.forName("edge-event-service"));
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
public void shutdownExecutor() {
|
||||
if (executor != null) {
|
||||
executor.shutdown();
|
||||
if (edgeEventExecutor != null) {
|
||||
edgeEventExecutor.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@ public class BaseEdgeEventService implements EdgeEventService {
|
||||
|
||||
@Override
|
||||
public void onFailure(@NotNull Throwable throwable) {}
|
||||
}, executor);
|
||||
}, edgeEventExecutor);
|
||||
|
||||
return saveFuture;
|
||||
}
|
||||
|
||||
@ -166,7 +166,7 @@ public class EdgeServiceImpl extends AbstractCachedEntityService<EdgeCacheKey, E
|
||||
try {
|
||||
Edge savedEdge = edgeDao.save(edge.getTenantId(), edge);
|
||||
publishEvictEvent(evictEvent);
|
||||
eventPublisher.publishEvent(SaveEntityEvent.builder().tenantId(edge.getTenantId())
|
||||
eventPublisher.publishEvent(SaveEntityEvent.builder().tenantId(savedEdge.getTenantId())
|
||||
.entityId(savedEdge.getId()).entity(savedEdge).added(edge.getId() == null).build());
|
||||
return savedEdge;
|
||||
} catch (Exception t) {
|
||||
|
||||
@ -432,7 +432,6 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC
|
||||
}
|
||||
}
|
||||
checkRuleNodesAndDelete(tenantId, ruleChain, referencingRuleChainIds);
|
||||
referencingRuleChainIds.remove(ruleChainId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -145,7 +145,7 @@ public class ApiUsageStateServiceImpl extends AbstractEntityService implements A
|
||||
validateId(apiUsageState.getTenantId(), INCORRECT_TENANT_ID + apiUsageState.getTenantId());
|
||||
validateId(apiUsageState.getId(), "Can't save new usage state. Only update is allowed!");
|
||||
ApiUsageState savedState = apiUsageStateDao.save(apiUsageState.getTenantId(), apiUsageState);
|
||||
eventPublisher.publishEvent(SaveEntityEvent.builder().tenantId(apiUsageState.getTenantId()).entityId(savedState.getId())
|
||||
eventPublisher.publishEvent(SaveEntityEvent.builder().tenantId(savedState.getTenantId()).entityId(savedState.getId())
|
||||
.entity(savedState).build());
|
||||
return savedState;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user