diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/DefaultEntitiesExportImportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/DefaultEntitiesExportImportService.java index 2fdf5bc6c7..807831ecff 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/DefaultEntitiesExportImportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/DefaultEntitiesExportImportService.java @@ -72,7 +72,7 @@ public class DefaultEntitiesExportImportService implements EntitiesExportImportS @Override - public , I extends EntityId> EntityExportData exportEntity(EntitiesExportCtx ctx, I entityId, EntityExportSettings exportSettings) throws ThingsboardException { + public , I extends EntityId> EntityExportData exportEntity(EntitiesExportCtx ctx, I entityId) throws ThingsboardException { if (!rateLimitService.checkEntityExportLimit(ctx.getTenantId())) { throw new ThingsboardException("Rate limit for entities export is exceeded", ThingsboardErrorCode.TOO_MANY_REQUESTS); } @@ -80,7 +80,7 @@ public class DefaultEntitiesExportImportService implements EntitiesExportImportS EntityType entityType = entityId.getEntityType(); EntityExportService> exportService = getExportService(entityType); - return exportService.getExportData(ctx, entityId, exportSettings); + return exportService.getExportData(ctx, entityId); } @Override diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/EntitiesExportImportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/EntitiesExportImportService.java index 44f0d84a3a..349509b09e 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/EntitiesExportImportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/EntitiesExportImportService.java @@ -31,7 +31,7 @@ import java.util.Comparator; public interface EntitiesExportImportService { - , I extends EntityId> EntityExportData exportEntity(EntitiesExportCtx ctx, I entityId, EntityExportSettings exportSettings) throws ThingsboardException; + , I extends EntityId> EntityExportData exportEntity(EntitiesExportCtx ctx, I entityId) throws ThingsboardException; , I extends EntityId> EntityImportResult importEntity(EntitiesImportCtx ctx, EntityExportData exportData) throws ThingsboardException; diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/EntityExportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/EntityExportService.java index 4174951e63..ac08425c10 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/EntityExportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/EntityExportService.java @@ -25,6 +25,6 @@ import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx; public interface EntityExportService, D extends EntityExportData> { - D getExportData(EntitiesExportCtx ctx, I entityId, EntityExportSettings exportSettings) throws ThingsboardException; + D getExportData(EntitiesExportCtx ctx, I entityId) throws ThingsboardException; } diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/BaseEntityExportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/BaseEntityExportService.java index f6f72d6ddd..ce6425435b 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/BaseEntityExportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/BaseEntityExportService.java @@ -30,12 +30,12 @@ import java.util.Set; public abstract class BaseEntityExportService, D extends EntityExportData> extends DefaultEntityExportService { @Override - protected void setAdditionalExportData(EntitiesExportCtx ctx, E entity, D exportData, EntityExportSettings exportSettings) throws ThingsboardException { - setRelatedEntities(ctx.getTenantId(), entity, (D) exportData, exportSettings); - super.setAdditionalExportData(ctx, entity, exportData, exportSettings); + protected void setAdditionalExportData(EntitiesExportCtx ctx, E entity, D exportData) throws ThingsboardException { + setRelatedEntities(ctx, entity, (D) exportData); + super.setAdditionalExportData(ctx, entity, exportData); } - protected void setRelatedEntities(TenantId tenantId, E mainEntity, D exportData, EntityExportSettings settings) {} + protected void setRelatedEntities(EntitiesExportCtx ctx, E mainEntity, D exportData) {} protected abstract D newExportData(); diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DefaultEntityExportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DefaultEntityExportService.java index 8dfdbb26eb..142fae385a 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DefaultEntityExportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DefaultEntityExportService.java @@ -60,7 +60,7 @@ public class DefaultEntityExportService ctx, I entityId, EntityExportSettings exportSettings) throws ThingsboardException { + public final D getExportData(EntitiesExportCtx ctx, I entityId) throws ThingsboardException { D exportData = newExportData(); E entity = exportableEntitiesService.findEntityByTenantIdAndId(ctx.getTenantId(), entityId); @@ -70,12 +70,13 @@ public class DefaultEntityExportService ctx, E entity, D exportData, EntityExportSettings exportSettings) throws ThingsboardException { + protected void setAdditionalExportData(EntitiesExportCtx ctx, E entity, D exportData) throws ThingsboardException { + var exportSettings = ctx.getSettings(); if (exportSettings.isExportRelations()) { List relations = exportRelations(ctx, entity); exportData.setRelations(relations); diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DeviceExportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DeviceExportService.java index 0aa8933a27..33650912ba 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DeviceExportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/DeviceExportService.java @@ -25,6 +25,7 @@ import org.thingsboard.server.common.data.sync.ie.EntityExportSettings; import org.thingsboard.server.dao.device.DeviceCredentialsService; import org.thingsboard.server.queue.util.TbCoreComponent; import org.thingsboard.server.common.data.sync.ie.DeviceExportData; +import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx; import java.util.Set; @@ -36,9 +37,9 @@ public class DeviceExportService extends BaseEntityExportService ctx, Device device, DeviceExportData exportData) { + if (ctx.getSettings().isExportCredentials()) { + exportData.setCredentials(deviceCredentialsService.findDeviceCredentialsByDeviceId(ctx.getTenantId(), device.getId())); } } diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/RuleChainExportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/RuleChainExportService.java index a98f9954c8..9af29cceba 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/RuleChainExportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/RuleChainExportService.java @@ -25,6 +25,7 @@ import org.thingsboard.server.common.data.sync.ie.EntityExportSettings; import org.thingsboard.server.dao.rule.RuleChainService; import org.thingsboard.server.queue.util.TbCoreComponent; import org.thingsboard.server.common.data.sync.ie.RuleChainExportData; +import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx; import java.util.Set; @@ -36,8 +37,8 @@ public class RuleChainExportService extends BaseEntityExportService ctx, RuleChain ruleChain, RuleChainExportData exportData) { + exportData.setMetaData(ruleChainService.loadRuleChainMetaData(ctx.getTenantId(), ruleChain.getId())); } @Override diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/WidgetsBundleExportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/WidgetsBundleExportService.java index bb7f5c08a1..3065aae451 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/WidgetsBundleExportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/WidgetsBundleExportService.java @@ -26,6 +26,7 @@ import org.thingsboard.server.common.data.widget.WidgetTypeDetails; import org.thingsboard.server.common.data.widget.WidgetsBundle; import org.thingsboard.server.dao.widget.WidgetTypeService; import org.thingsboard.server.queue.util.TbCoreComponent; +import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx; import java.util.List; import java.util.Set; @@ -38,12 +39,12 @@ public class WidgetsBundleExportService extends BaseEntityExportService ctx, WidgetsBundle widgetsBundle, WidgetsBundleExportData exportData) { if (widgetsBundle.getTenantId() == null || widgetsBundle.getTenantId().isNullUid()) { throw new IllegalArgumentException("Export of system Widget Bundles is not allowed"); } - List widgets = widgetTypeService.findWidgetTypesDetailsByTenantIdAndBundleAlias(tenantId, widgetsBundle.getAlias()); + List widgets = widgetTypeService.findWidgetTypesDetailsByTenantIdAndBundleAlias(ctx.getTenantId(), widgetsBundle.getAlias()); exportData.setWidgets(widgets); } diff --git a/application/src/main/java/org/thingsboard/server/service/sync/vc/DefaultEntitiesVersionControlService.java b/application/src/main/java/org/thingsboard/server/service/sync/vc/DefaultEntitiesVersionControlService.java index 6dd7c87dae..6a6d2e2e6c 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/vc/DefaultEntitiesVersionControlService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/vc/DefaultEntitiesVersionControlService.java @@ -182,7 +182,7 @@ public class DefaultEntitiesVersionControlService implements EntitiesVersionCont } private ListenableFuture saveEntityData(EntitiesExportCtx ctx, EntityId entityId) throws Exception { - EntityExportData> entityData = exportImportService.exportEntity(ctx, entityId, ctx.getSettings()); + EntityExportData> entityData = exportImportService.exportEntity(ctx, entityId); return gitServiceQueue.addToCommit(ctx.getCommit(), entityData); } @@ -408,12 +408,12 @@ public class DefaultEntitiesVersionControlService implements EntitiesVersionCont return transformAsync(gitServiceQueue.getEntity(user.getTenantId(), versionId, externalId), otherVersion -> { - SimpleEntitiesExportCtx ctx = new SimpleEntitiesExportCtx(user, null, null); - EntityExportData currentVersion = exportImportService.exportEntity(ctx, entityId, EntityExportSettings.builder() + SimpleEntitiesExportCtx ctx = new SimpleEntitiesExportCtx(user, null, null, EntityExportSettings.builder() .exportRelations(otherVersion.hasRelations()) .exportAttributes(otherVersion.hasAttributes()) .exportCredentials(otherVersion.hasCredentials()) .build()); + EntityExportData currentVersion = exportImportService.exportEntity(ctx, entityId); return transform(gitServiceQueue.getContentsDiff(user.getTenantId(), JacksonUtil.toPrettyString(currentVersion.sort()), JacksonUtil.toPrettyString(otherVersion.sort())), diff --git a/application/src/main/java/org/thingsboard/server/service/sync/vc/data/EntitiesExportCtx.java b/application/src/main/java/org/thingsboard/server/service/sync/vc/data/EntitiesExportCtx.java index 041567dd07..130a09f255 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/vc/data/EntitiesExportCtx.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/vc/data/EntitiesExportCtx.java @@ -41,7 +41,7 @@ public abstract class EntitiesExportCtx { this.futures = new ArrayList<>(); } - public EntitiesExportCtx(EntitiesExportCtx other) { + protected EntitiesExportCtx(EntitiesExportCtx other) { this.user = other.getUser(); this.commit = other.getCommit(); this.request = other.getRequest(); diff --git a/application/src/main/java/org/thingsboard/server/service/sync/vc/data/SimpleEntitiesExportCtx.java b/application/src/main/java/org/thingsboard/server/service/sync/vc/data/SimpleEntitiesExportCtx.java index d713a2f71b..8cb9cc555e 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/vc/data/SimpleEntitiesExportCtx.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/vc/data/SimpleEntitiesExportCtx.java @@ -26,8 +26,11 @@ public class SimpleEntitiesExportCtx extends EntitiesExportCtx