diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/ResourceExportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/ResourceExportService.java index 45e21f5fb4..68c1b55690 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/ResourceExportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/ResourceExportService.java @@ -18,9 +18,11 @@ package org.thingsboard.server.service.sync.ie.exporting.impl; import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.TbResource; +import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.TbResourceId; import org.thingsboard.server.common.data.sync.ie.EntityExportData; import org.thingsboard.server.queue.util.TbCoreComponent; +import org.thingsboard.server.service.sync.vc.data.EntitiesExportCtx; import java.util.Set; @@ -28,6 +30,12 @@ import java.util.Set; @TbCoreComponent public class ResourceExportService extends BaseEntityExportService> { + @Override + protected void setAdditionalExportData(EntitiesExportCtx ctx, TbResource resource, EntityExportData exportData) throws ThingsboardException { + super.setAdditionalExportData(ctx, resource, exportData); + resource.setPreview(null); // will be generated on import + } + @Override public Set getSupportedEntityTypes() { return Set.of(EntityType.TB_RESOURCE); diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/importing/impl/ResourceImportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/importing/impl/ResourceImportService.java index bc7db18e80..0ce7ffa7e1 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/importing/impl/ResourceImportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/importing/impl/ResourceImportService.java @@ -18,12 +18,14 @@ package org.thingsboard.server.service.sync.ie.importing.impl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.EntityType; +import org.thingsboard.server.common.data.ResourceType; import org.thingsboard.server.common.data.TbResource; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.id.TbResourceId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.sync.ie.EntityExportData; +import org.thingsboard.server.dao.resource.ImageService; import org.thingsboard.server.dao.resource.ResourceService; import org.thingsboard.server.queue.util.TbCoreComponent; import org.thingsboard.server.service.sync.vc.data.EntitiesImportCtx; @@ -34,6 +36,7 @@ import org.thingsboard.server.service.sync.vc.data.EntitiesImportCtx; public class ResourceImportService extends BaseEntityImportService> { private final ResourceService resourceService; + private final ImageService imageService; @Override protected void setOwner(TenantId tenantId, TbResource resource, IdProvider idProvider) { @@ -66,7 +69,14 @@ public class ResourceImportService extends BaseEntityImportService exportData, IdProvider idProvider) { - return resourceService.saveResource(resource); + if (resource.getResourceType() == ResourceType.IMAGE) { + return new TbResource(imageService.saveImage(resource)); + } else { + resource = resourceService.saveResource(resource); + resource.setData(null); + resource.setPreview(null); + return resource; + } } @Override diff --git a/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepository.java b/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepository.java index 08fc75363c..911233a2f8 100644 --- a/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepository.java +++ b/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepository.java @@ -39,6 +39,7 @@ import org.eclipse.jgit.diff.EditList; import org.eclipse.jgit.diff.HistogramDiff; import org.eclipse.jgit.diff.RawText; import org.eclipse.jgit.diff.RawTextComparator; +import org.eclipse.jgit.errors.LargeObjectException; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectLoader; @@ -236,8 +237,12 @@ public class GitRepository { ObjectId blobId = treeWalk.getObjectId(0); try (ObjectReader objectReader = git.getRepository().newObjectReader()) { ObjectLoader objectLoader = objectReader.open(blobId); - byte[] bytes = objectLoader.getBytes(); - return new String(bytes, StandardCharsets.UTF_8); + try { + byte[] bytes = objectLoader.getBytes(); + return new String(bytes, StandardCharsets.UTF_8); + } catch (LargeObjectException e) { + throw new RuntimeException("File " + file + " is too big to load"); + } } } }