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