Fix load of JS Module extensions during installation or upgrade.
This commit is contained in:
parent
8f406dad95
commit
94f294aebf
@ -20,6 +20,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.thingsboard.server.common.data.ResourceSubType;
|
||||
import org.thingsboard.server.common.data.ResourceType;
|
||||
import org.thingsboard.server.common.data.id.TenantId;
|
||||
import org.thingsboard.server.common.msg.queue.ServiceType;
|
||||
@ -74,7 +75,7 @@ public class DashboardSyncService {
|
||||
List<RepoFile> resources = listFiles("resources");
|
||||
for (RepoFile resourceFile : resources) {
|
||||
byte[] data = getFileContent(resourceFile.path());
|
||||
resourceService.createOrUpdateSystemResource(ResourceType.JS_MODULE, resourceFile.name(), data);
|
||||
resourceService.createOrUpdateSystemResource(ResourceType.JS_MODULE, ResourceSubType.EXTENSION, resourceFile.name(), data);
|
||||
}
|
||||
List<RepoFile> images = listFiles("images");
|
||||
for (RepoFile imageFile : images) {
|
||||
@ -89,7 +90,7 @@ public class DashboardSyncService {
|
||||
widgetsBundleService.updateSystemWidgets(widgetsBundles, widgetTypes);
|
||||
|
||||
RepoFile dashboardFile = listFiles("dashboards").get(0);
|
||||
resourceService.createOrUpdateSystemResource(ResourceType.DASHBOARD, GATEWAYS_DASHBOARD_KEY, getFileContent(dashboardFile.path()));
|
||||
resourceService.createOrUpdateSystemResource(ResourceType.DASHBOARD, null, GATEWAYS_DASHBOARD_KEY, getFileContent(dashboardFile.path()));
|
||||
|
||||
log.info("Gateways dashboard sync completed");
|
||||
}
|
||||
|
||||
@ -416,9 +416,9 @@ public class InstallScripts {
|
||||
}
|
||||
|
||||
Path resourcesDir = Path.of(getDataDir(), RESOURCES_DIR);
|
||||
loadSystemResources(resourcesDir.resolve("images"), ResourceType.IMAGE);
|
||||
loadSystemResources(resourcesDir.resolve("js_modules"), ResourceType.JS_MODULE);
|
||||
loadSystemResources(resourcesDir.resolve("dashboards"), ResourceType.DASHBOARD);
|
||||
loadSystemResources(resourcesDir.resolve("images"), ResourceType.IMAGE, null);
|
||||
loadSystemResources(resourcesDir.resolve("js_modules"), ResourceType.JS_MODULE, ResourceSubType.EXTENSION);
|
||||
loadSystemResources(resourcesDir.resolve("dashboards"), ResourceType.DASHBOARD, null);
|
||||
}
|
||||
|
||||
public void loadDashboards(TenantId tenantId, CustomerId customerId) {
|
||||
@ -514,7 +514,7 @@ public class InstallScripts {
|
||||
resourcesUpdater.updateWidgetsResources();
|
||||
}
|
||||
|
||||
private void loadSystemResources(Path dir, ResourceType resourceType) {
|
||||
private void loadSystemResources(Path dir, ResourceType resourceType, ResourceSubType resourceSubType) {
|
||||
listDir(dir).forEach(resourceFile -> {
|
||||
String resourceKey = resourceFile.getFileName().toString();
|
||||
try {
|
||||
@ -522,7 +522,7 @@ public class InstallScripts {
|
||||
if (resourceType == ResourceType.IMAGE) {
|
||||
imageService.createOrUpdateSystemImage(resourceKey, data);
|
||||
} else {
|
||||
resourceService.createOrUpdateSystemResource(resourceType, resourceKey, data);
|
||||
resourceService.createOrUpdateSystemResource(resourceType, resourceSubType, resourceKey, data);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Unable to load system resource " + resourceFile, e);
|
||||
|
||||
@ -18,6 +18,7 @@ package org.thingsboard.server.dao.resource;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import org.thingsboard.server.common.data.Dashboard;
|
||||
import org.thingsboard.server.common.data.ResourceExportData;
|
||||
import org.thingsboard.server.common.data.ResourceSubType;
|
||||
import org.thingsboard.server.common.data.ResourceType;
|
||||
import org.thingsboard.server.common.data.TbResource;
|
||||
import org.thingsboard.server.common.data.TbResourceInfo;
|
||||
@ -88,6 +89,6 @@ public interface ResourceService extends EntityDaoService {
|
||||
|
||||
Collection<TbResourceInfo> getUsedResources(TenantId tenantId, WidgetTypeDetails widgetTypeDetails);
|
||||
|
||||
TbResource createOrUpdateSystemResource(ResourceType resourceType, String resourceKey, byte[] data);
|
||||
TbResource createOrUpdateSystemResource(ResourceType resourceType, ResourceSubType resourceSubType, String resourceKey, byte[] data);
|
||||
|
||||
}
|
||||
|
||||
@ -597,7 +597,7 @@ public class BaseResourceService extends AbstractCachedEntityService<ResourceInf
|
||||
}
|
||||
|
||||
@Override
|
||||
public TbResource createOrUpdateSystemResource(ResourceType resourceType, String resourceKey, byte[] data) {
|
||||
public TbResource createOrUpdateSystemResource(ResourceType resourceType, ResourceSubType resourceSubType, String resourceKey, byte[] data) {
|
||||
if (resourceType == ResourceType.DASHBOARD) {
|
||||
Dashboard dashboard = JacksonUtil.fromBytes(data, Dashboard.class);
|
||||
dashboard.setTenantId(TenantId.SYS_TENANT_ID);
|
||||
@ -615,6 +615,7 @@ public class BaseResourceService extends AbstractCachedEntityService<ResourceInf
|
||||
resource = new TbResource();
|
||||
resource.setTenantId(TenantId.SYS_TENANT_ID);
|
||||
resource.setResourceType(resourceType);
|
||||
resource.setResourceSubType(resourceSubType);
|
||||
resource.setResourceKey(resourceKey);
|
||||
resource.setFileName(resourceKey);
|
||||
resource.setTitle(resourceKey);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user