Use JsonGetter/Setter to encode resource data; minor fixes

This commit is contained in:
ViacheslavKlimov 2023-11-16 13:15:32 +02:00
parent e7aabe80a4
commit 6eadef0d68
13 changed files with 97 additions and 80 deletions

View File

@ -43,7 +43,6 @@ import org.thingsboard.server.common.data.TbResourceInfo;
import org.thingsboard.server.common.data.TbResourceInfoFilter; import org.thingsboard.server.common.data.TbResourceInfoFilter;
import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.exception.ThingsboardException;
import org.thingsboard.server.common.data.id.TbResourceId; import org.thingsboard.server.common.data.id.TbResourceId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.lwm2m.LwM2mObject; import org.thingsboard.server.common.data.lwm2m.LwM2mObject;
import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.page.PageLink;
@ -53,7 +52,6 @@ import org.thingsboard.server.service.resource.TbResourceService;
import org.thingsboard.server.service.security.permission.Operation; import org.thingsboard.server.service.security.permission.Operation;
import org.thingsboard.server.service.security.permission.Resource; import org.thingsboard.server.service.security.permission.Resource;
import java.util.Base64;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@ -170,9 +168,7 @@ public class TbResourceController extends BaseController {
@PathVariable(RESOURCE_ID) String strResourceId) throws ThingsboardException { @PathVariable(RESOURCE_ID) String strResourceId) throws ThingsboardException {
checkParameter(RESOURCE_ID, strResourceId); checkParameter(RESOURCE_ID, strResourceId);
TbResourceId resourceId = new TbResourceId(toUUID(strResourceId)); TbResourceId resourceId = new TbResourceId(toUUID(strResourceId));
TbResource resource = checkResourceId(resourceId, Operation.READ); return checkResourceId(resourceId, Operation.READ);
resource.setBase64Data(Base64.getEncoder().encodeToString(resource.getData()));
return resource;
} }
@ApiOperation(value = "Create Or Update Resource (saveResource)", @ApiOperation(value = "Create Or Update Resource (saveResource)",
@ -191,7 +187,7 @@ public class TbResourceController extends BaseController {
@RequestBody TbResource resource) throws Exception { @RequestBody TbResource resource) throws Exception {
resource.setTenantId(getTenantId()); resource.setTenantId(getTenantId());
checkEntity(resource.getId(), resource, Resource.TB_RESOURCE); checkEntity(resource.getId(), resource, Resource.TB_RESOURCE);
return tbResourceService.save(resource, getCurrentUser()); return new TbResourceInfo(tbResourceService.save(resource, getCurrentUser()));
} }
@ApiOperation(value = "Get Resource Infos (getResources)", @ApiOperation(value = "Get Resource Infos (getResources)",

View File

@ -23,8 +23,6 @@ import org.thingsboard.server.gen.edge.v1.ResourceUpdateMsg;
import org.thingsboard.server.gen.edge.v1.UpdateMsgType; import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
import org.thingsboard.server.queue.util.TbCoreComponent; import org.thingsboard.server.queue.util.TbCoreComponent;
import java.util.Base64;
@Component @Component
@TbCoreComponent @TbCoreComponent
public class ResourceMsgConstructor { public class ResourceMsgConstructor {
@ -39,7 +37,7 @@ public class ResourceMsgConstructor {
.setResourceType(tbResource.getResourceType().name()) .setResourceType(tbResource.getResourceType().name())
.setFileName(tbResource.getFileName()); .setFileName(tbResource.getFileName());
if (tbResource.getData() != null) { if (tbResource.getData() != null) {
builder.setData(Base64.getEncoder().encodeToString(tbResource.getData())); builder.setData(tbResource.getEncodedData());
} }
if (tbResource.getEtag() != null) { if (tbResource.getEtag() != null) {
builder.setEtag(tbResource.getEtag()); builder.setEtag(tbResource.getEtag());

View File

@ -46,7 +46,7 @@ public abstract class BaseResourceProcessor extends BaseEdgeProcessor {
resource.setResourceKey(resourceUpdateMsg.getResourceKey()); resource.setResourceKey(resourceUpdateMsg.getResourceKey());
resource.setResourceType(ResourceType.valueOf(resourceUpdateMsg.getResourceType())); resource.setResourceType(ResourceType.valueOf(resourceUpdateMsg.getResourceType()));
resource.setFileName(resourceUpdateMsg.getFileName()); resource.setFileName(resourceUpdateMsg.getFileName());
resource.setBase64Data(resourceUpdateMsg.hasData() ? resourceUpdateMsg.getData() : null); resource.setEncodedData(resourceUpdateMsg.hasData() ? resourceUpdateMsg.getData() : null);
resource.setEtag(resourceUpdateMsg.hasEtag() ? resourceUpdateMsg.getEtag() : null); resource.setEtag(resourceUpdateMsg.hasEtag() ? resourceUpdateMsg.getEtag() : null);
resourceValidator.validate(resource, TbResourceInfo::getTenantId); resourceValidator.validate(resource, TbResourceInfo::getTenantId);
if (created) { if (created) {

View File

@ -101,7 +101,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("My first resource"); resource.setTitle("My first resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource); TbResource savedResource = save(resource);
@ -119,6 +119,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
Assert.assertArrayEquals(resource.getData(), download(savedResource.getId())); Assert.assertArrayEquals(resource.getData(), download(savedResource.getId()));
savedResource.setTitle("My new resource"); savedResource.setTitle("My new resource");
savedResource.setData(null);
save(savedResource); save(savedResource);
@ -136,7 +137,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle(StringUtils.randomAlphabetic(300)); resource.setTitle(StringUtils.randomAlphabetic(300));
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
Mockito.reset(tbClusterService, auditLogService); Mockito.reset(tbClusterService, auditLogService);
@ -155,7 +156,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("My first resource"); resource.setTitle("My first resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource); TbResource savedResource = save(resource);
@ -184,7 +185,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("My first resource"); resource.setTitle("My first resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource); TbResource savedResource = save(resource);
@ -200,7 +201,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("My first resource"); resource.setTitle("My first resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource); TbResource savedResource = save(resource);
@ -225,7 +226,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("My first resource"); resource.setTitle("My first resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource); TbResource savedResource = save(resource);
@ -256,7 +257,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("Resource" + i); resource.setTitle("Resource" + i);
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME); resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
resources.add(new TbResourceInfo(save(resource))); resources.add(new TbResourceInfo(save(resource)));
} }
List<TbResourceInfo> loadedResources = new ArrayList<>(); List<TbResourceInfo> loadedResources = new ArrayList<>();
@ -293,7 +294,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("JKS Resource" + i); resource.setTitle("JKS Resource" + i);
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME); resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
resources.add(new TbResourceInfo(save(resource))); resources.add(new TbResourceInfo(save(resource)));
} }
@ -303,7 +304,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("LWM2M Resource" + i); resource.setTitle("LWM2M Resource" + i);
resource.setResourceType(ResourceType.PKCS_12); resource.setResourceType(ResourceType.PKCS_12);
resource.setFileName(i + DEFAULT_FILE_NAME_2); resource.setFileName(i + DEFAULT_FILE_NAME_2);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
save(resource); save(resource);
} }
@ -340,7 +341,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("Resource" + i); resource.setTitle("Resource" + i);
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME); resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
resources.add(new TbResourceInfo(save(resource))); resources.add(new TbResourceInfo(save(resource)));
} }
List<TbResourceInfo> loadedResources = new ArrayList<>(); List<TbResourceInfo> loadedResources = new ArrayList<>();
@ -400,7 +401,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("JKS Resource" + i); resource.setTitle("JKS Resource" + i);
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME); resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResourceInfo saved = new TbResourceInfo(save(resource)); TbResourceInfo saved = new TbResourceInfo(save(resource));
jksResources.add(saved); jksResources.add(saved);
} }
@ -411,7 +412,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("LWM2M Resource" + i); resource.setTitle("LWM2M Resource" + i);
resource.setResourceType(ResourceType.PKCS_12); resource.setResourceType(ResourceType.PKCS_12);
resource.setFileName(i + DEFAULT_FILE_NAME_2); resource.setFileName(i + DEFAULT_FILE_NAME_2);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResource saved = save(resource); TbResource saved = save(resource);
lwm2mesources.add(saved); lwm2mesources.add(saved);
} }
@ -477,7 +478,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("Resource" + i); resource.setTitle("Resource" + i);
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME); resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
expectedResources.add(new TbResourceInfo(save(resource))); expectedResources.add(new TbResourceInfo(save(resource)));
} }
@ -488,7 +489,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("Resource" + i); resource.setTitle("Resource" + i);
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME); resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResourceInfo savedResource = new TbResourceInfo(save(resource)); TbResourceInfo savedResource = new TbResourceInfo(save(resource));
systemResources.add(savedResource); systemResources.add(savedResource);
if (i >= 73) { if (i >= 73) {
@ -532,7 +533,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JS_MODULE); resource.setResourceType(ResourceType.JS_MODULE);
resource.setTitle("Js resource"); resource.setTitle("Js resource");
resource.setFileName(JS_TEST_FILE_NAME); resource.setFileName(JS_TEST_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource); TbResource savedResource = save(resource);
@ -563,7 +564,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JS_MODULE); resource.setResourceType(ResourceType.JS_MODULE);
resource.setTitle("Js resource"); resource.setTitle("Js resource");
resource.setFileName(JS_TEST_FILE_NAME); resource.setFileName(JS_TEST_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource); TbResource savedResource = save(resource);
@ -607,7 +608,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JS_MODULE); resource.setResourceType(ResourceType.JS_MODULE);
resource.setTitle("Js resource"); resource.setTitle("Js resource");
resource.setFileName(JS_TEST_FILE_NAME); resource.setFileName(JS_TEST_FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource); TbResource savedResource = save(resource);
@ -623,16 +624,16 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.PKCS_12); resource.setResourceType(ResourceType.PKCS_12);
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName("3.pks"); resource.setFileName("3.pks");
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource); TbResource savedResource = save(resource);
resource.setEtag(savedResource.getEtag()); resource.setEtag(savedResource.getEtag());
savedResource.setBase64Data(TEST_DATA); savedResource.setEncodedData(TEST_DATA);
doPost("/api/resource", savedResource) doPost("/api/resource", savedResource)
.andExpect(status().isBadRequest()) .andExpect(status().isBadRequest())
.andExpect(statusReason(containsString("can't be updated"))); .andExpect(statusReason(containsString("can't be updated")));
savedResource.setBase64Data(null); savedResource.setData(null);
savedResource.setTitle("Updated resource"); savedResource.setTitle("Updated resource");
savedResource = doPost("/api/resource", savedResource, TbResource.class); savedResource = doPost("/api/resource", savedResource, TbResource.class);
assertThat(savedResource.getTitle()).isEqualTo("Updated resource"); assertThat(savedResource.getTitle()).isEqualTo("Updated resource");
@ -647,12 +648,12 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JS_MODULE); resource.setResourceType(ResourceType.JS_MODULE);
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName("module.js"); resource.setFileName("module.js");
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource); TbResource savedResource = save(resource);
resource.setEtag(savedResource.getEtag()); resource.setEtag(savedResource.getEtag());
String newData = Base64.getEncoder().encodeToString(new byte[]{1, 2, 3}); String newData = Base64.getEncoder().encodeToString(new byte[]{1, 2, 3});
savedResource.setBase64Data(newData); savedResource.setEncodedData(newData);
savedResource.setFileName("new-module.js"); savedResource.setFileName("new-module.js");
savedResource.setTitle("Updated title"); savedResource.setTitle("Updated title");
savedResource = save(savedResource); savedResource = save(savedResource);

View File

@ -45,7 +45,7 @@ public class ResourceEdgeTest extends AbstractEdgeTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("Edge Test Resource"); resource.setTitle("Edge Test Resource");
resource.setFileName(FILE_NAME); resource.setFileName(FILE_NAME);
resource.setBase64Data(TEST_DATA); resource.setEncodedData(TEST_DATA);
edgeImitator.expectMessageAmount(1); edgeImitator.expectMessageAmount(1);
TbResource savedResource = doPost("/api/resource", resource, TbResource.class); TbResource savedResource = doPost("/api/resource", resource, TbResource.class);
@ -119,6 +119,6 @@ public class ResourceEdgeTest extends AbstractEdgeTest {
TbResource tbResource = doGet("/api/resource/" + uuid, TbResource.class); TbResource tbResource = doGet("/api/resource/" + uuid, TbResource.class);
Assert.assertNotNull(tbResource); Assert.assertNotNull(tbResource);
Assert.assertEquals("Edge Test Resource", tbResource.getName()); Assert.assertEquals("Edge Test Resource", tbResource.getName());
Assert.assertEquals(TEST_DATA, tbResource.getBase64Data()); Assert.assertEquals(TEST_DATA, tbResource.getEncodedData());
} }
} }

View File

@ -209,7 +209,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(filename); resource.setFileName(filename);
byte[] b = new byte[]{1, 2, 3, 4}; byte[] b = new byte[]{1, 2, 3, 4};
resource.setBase64Data(Base64.getEncoder().encodeToString(b)); resource.setData(b);
return tbResourceService.save(resource); return tbResourceService.save(resource);
} }
@ -220,7 +220,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("My first resource"); resource.setTitle("My first resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA); resource.setData(TEST_DATA);
TbResource savedResource = tbResourceService.save(resource); TbResource savedResource = tbResourceService.save(resource);
@ -233,7 +233,6 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
assertArrayEquals(TEST_DATA, savedResource.getData()); assertArrayEquals(TEST_DATA, savedResource.getData());
savedResource.setTitle("My new resource"); savedResource.setTitle("My new resource");
savedResource.setBase64Data(null);
savedResource.setData(null); savedResource.setData(null);
tbResourceService.save(savedResource); tbResourceService.save(savedResource);
@ -250,7 +249,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTenantId(tenantId); resource.setTenantId(tenantId);
resource.setResourceType(ResourceType.LWM2M_MODEL); resource.setResourceType(ResourceType.LWM2M_MODEL);
resource.setFileName("test_model.xml"); resource.setFileName("test_model.xml");
resource.setBase64Data(Base64.getEncoder().encodeToString(LWM2M_TEST_MODEL.getBytes())); resource.setEncodedData(Base64.getEncoder().encodeToString(LWM2M_TEST_MODEL.getBytes()));
TbResource savedResource = tbResourceService.save(resource); TbResource savedResource = tbResourceService.save(resource);
@ -271,7 +270,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA); resource.setData(TEST_DATA);
TbResource savedResource = tbResourceService.save(resource); TbResource savedResource = tbResourceService.save(resource);
assertEquals(TenantId.SYS_TENANT_ID, savedResource.getTenantId()); assertEquals(TenantId.SYS_TENANT_ID, savedResource.getTenantId());
@ -286,7 +285,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA); resource.setData(TEST_DATA);
TbResource savedResource = tbResourceService.save(resource); TbResource savedResource = tbResourceService.save(resource);
@ -295,7 +294,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA); resource.setData(TEST_DATA);
try { try {
Assertions.assertThrows(DataValidationException.class, () -> { Assertions.assertThrows(DataValidationException.class, () -> {
@ -312,7 +311,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTenantId(tenantId); resource.setTenantId(tenantId);
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA); resource.setData(TEST_DATA);
Assertions.assertThrows(DataValidationException.class, () -> { Assertions.assertThrows(DataValidationException.class, () -> {
tbResourceService.save(resource); tbResourceService.save(resource);
}); });
@ -325,7 +324,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA); resource.setData(TEST_DATA);
Assertions.assertThrows(DataValidationException.class, () -> { Assertions.assertThrows(DataValidationException.class, () -> {
tbResourceService.save(resource); tbResourceService.save(resource);
}); });
@ -352,7 +351,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA); resource.setData(TEST_DATA);
TbResource savedResource = tbResourceService.save(resource); TbResource savedResource = tbResourceService.save(resource);
TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId()); TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId());
@ -368,7 +367,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTenantId(tenantId); resource.setTenantId(tenantId);
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA); resource.setData(TEST_DATA);
TbResource savedResource = tbResourceService.save(resource); TbResource savedResource = tbResourceService.save(resource);
TbResource foundResource = resourceService.findResourceByTenantIdAndKey(tenantId, savedResource.getResourceType(), savedResource.getResourceKey()); TbResource foundResource = resourceService.findResourceByTenantIdAndKey(tenantId, savedResource.getResourceType(), savedResource.getResourceKey());
@ -383,7 +382,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA); resource.setData(TEST_DATA);
TbResource savedResource = tbResourceService.save(resource); TbResource savedResource = tbResourceService.save(resource);
TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId()); TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId());
@ -409,7 +408,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTitle("Resource" + i); resource.setTitle("Resource" + i);
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME); resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA); resource.setData(TEST_DATA);
resources.add(new TbResourceInfo(tbResourceService.save(resource))); resources.add(new TbResourceInfo(tbResourceService.save(resource)));
} }
@ -463,7 +462,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTitle("System Resource" + i); resource.setTitle("System Resource" + i);
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME); resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA); resource.setData(TEST_DATA);
TbResourceInfo tbResourceInfo = new TbResourceInfo(tbResourceService.save(resource)); TbResourceInfo tbResourceInfo = new TbResourceInfo(tbResourceService.save(resource));
if (i >= 50) { if (i >= 50) {
resources.add(tbResourceInfo); resources.add(tbResourceInfo);
@ -476,7 +475,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTitle("Tenant Resource" + i); resource.setTitle("Tenant Resource" + i);
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME); resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA); resource.setData(TEST_DATA);
resources.add(new TbResourceInfo(tbResourceService.save(resource))); resources.add(new TbResourceInfo(tbResourceService.save(resource)));
} }

View File

@ -206,7 +206,7 @@ public abstract class AbstractLwM2MIntegrationTest extends AbstractTransportInte
lwModel.setFileName(resourceName); lwModel.setFileName(resourceName);
lwModel.setTenantId(tenantId); lwModel.setTenantId(tenantId);
byte[] bytes = IOUtils.toByteArray(AbstractLwM2MIntegrationTest.class.getClassLoader().getResourceAsStream("lwm2m/" + resourceName)); byte[] bytes = IOUtils.toByteArray(AbstractLwM2MIntegrationTest.class.getClassLoader().getResourceAsStream("lwm2m/" + resourceName));
lwModel.setBase64Data(Base64.getEncoder().encodeToString(bytes)); lwModel.setData(bytes);
lwModel = doPostWithTypedResponse("/api/resource", lwModel, new TypeReference<>() { lwModel = doPostWithTypedResponse("/api/resource", lwModel, new TypeReference<>() {
}); });
Assert.assertNotNull(lwModel); Assert.assertNotNull(lwModel);

View File

@ -24,7 +24,7 @@ public enum ResourceType {
JKS("application/x-java-keystore", false, false), JKS("application/x-java-keystore", false, false),
PKCS_12("application/x-pkcs12", false, false), PKCS_12("application/x-pkcs12", false, false),
JS_MODULE("application/javascript", true, true), JS_MODULE("application/javascript", true, true),
IMAGE(null, true, false); IMAGE(null, true, true);
@Getter @Getter
private final String mediaType; private final String mediaType;

File diff suppressed because one or more lines are too long

View File

@ -32,8 +32,10 @@ import org.thingsboard.server.dao.resource.TbResourceInfoDao;
import org.thingsboard.server.dao.sql.JpaAbstractDao; import org.thingsboard.server.dao.sql.JpaAbstractDao;
import org.thingsboard.server.dao.util.SqlDao; import org.thingsboard.server.dao.util.SqlDao;
import java.util.EnumSet;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -57,22 +59,28 @@ public class JpaTbResourceInfoDao extends JpaAbstractDao<TbResourceInfoEntity, T
@Override @Override
public PageData<TbResourceInfo> findAllTenantResourcesByTenantId(TbResourceInfoFilter filter, PageLink pageLink) { public PageData<TbResourceInfo> findAllTenantResourcesByTenantId(TbResourceInfoFilter filter, PageLink pageLink) {
Set<ResourceType> resourceTypes = filter.getResourceTypes();
if (CollectionsUtil.isEmpty(resourceTypes)) {
resourceTypes = EnumSet.allOf(ResourceType.class);
}
return DaoUtil.toPageData(resourceInfoRepository return DaoUtil.toPageData(resourceInfoRepository
.findAllTenantResourcesByTenantId( .findAllTenantResourcesByTenantId(
filter.getTenantId().getId(), TenantId.NULL_UUID, filter.getTenantId().getId(), TenantId.NULL_UUID,
CollectionsUtil.isNotEmpty(filter.getResourceTypes()) ? filter.getResourceTypes() resourceTypes.stream().map(Enum::name).collect(Collectors.toList()),
.stream().map(Enum::name).collect(Collectors.toList()) : null,
Objects.toString(pageLink.getTextSearch(), ""), Objects.toString(pageLink.getTextSearch(), ""),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@Override @Override
public PageData<TbResourceInfo> findTenantResourcesByTenantId(TbResourceInfoFilter filter, PageLink pageLink) { public PageData<TbResourceInfo> findTenantResourcesByTenantId(TbResourceInfoFilter filter, PageLink pageLink) {
Set<ResourceType> resourceTypes = filter.getResourceTypes();
if (CollectionsUtil.isEmpty(resourceTypes)) {
resourceTypes = EnumSet.allOf(ResourceType.class);
}
return DaoUtil.toPageData(resourceInfoRepository return DaoUtil.toPageData(resourceInfoRepository
.findTenantResourcesByTenantId( .findTenantResourcesByTenantId(
filter.getTenantId().getId(), filter.getTenantId().getId(),
CollectionsUtil.isNotEmpty(filter.getResourceTypes()) ? filter.getResourceTypes() resourceTypes.stream().map(Enum::name).collect(Collectors.toList()),
.stream().map(Enum::name).collect(Collectors.toList()) : null,
pageLink.getTextSearch(), pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }

View File

@ -67,7 +67,7 @@
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
<tb-file-input *ngIf="isAdd || (isEdit && entityForm.get('resourceType').value === resourceType.JS_MODULE)" <tb-file-input *ngIf="isAdd || (isEdit && entityForm.get('resourceType').value === resourceType.JS_MODULE)"
formControlName="base64Data" formControlName="data"
required required
[readAsBinary]="true" [readAsBinary]="true"
[allowedExtensions]="getAllowedExtensions()" [allowedExtensions]="getAllowedExtensions()"

View File

@ -68,7 +68,7 @@ export class ResourcesLibraryComponent extends EntityComponent<Resource> impleme
this.entityForm.get('title').enable({emitEvent: false}); this.entityForm.get('title').enable({emitEvent: false});
} }
this.entityForm.patchValue({ this.entityForm.patchValue({
base64Data: null, data: null,
fileName: null fileName: null
}, {emitEvent: false}); }, {emitEvent: false});
}); });
@ -93,7 +93,7 @@ export class ResourcesLibraryComponent extends EntityComponent<Resource> impleme
title: [entity ? entity.title : '', [Validators.required, Validators.maxLength(255)]], title: [entity ? entity.title : '', [Validators.required, Validators.maxLength(255)]],
resourceType: [entity?.resourceType ? entity.resourceType : ResourceType.JS_MODULE, Validators.required], resourceType: [entity?.resourceType ? entity.resourceType : ResourceType.JS_MODULE, Validators.required],
fileName: [entity ? entity.fileName : null, Validators.required], fileName: [entity ? entity.fileName : null, Validators.required],
base64Data: [entity ? entity.base64Data : null, Validators.required] data: [entity ? entity.data : null, Validators.required]
}); });
} }
@ -102,20 +102,20 @@ export class ResourcesLibraryComponent extends EntityComponent<Resource> impleme
this.entityForm.get('resourceType').disable({emitEvent: false}); this.entityForm.get('resourceType').disable({emitEvent: false});
if (entity.resourceType !== ResourceType.JS_MODULE) { if (entity.resourceType !== ResourceType.JS_MODULE) {
this.entityForm.get('fileName').disable({emitEvent: false}); this.entityForm.get('fileName').disable({emitEvent: false});
this.entityForm.get('base64Data').disable({emitEvent: false}); this.entityForm.get('data').disable({emitEvent: false});
} }
} }
this.entityForm.patchValue({ this.entityForm.patchValue({
resourceType: entity.resourceType, resourceType: entity.resourceType,
fileName: entity.fileName, fileName: entity.fileName,
title: entity.title, title: entity.title,
base64Data: entity.base64Data data: entity.data
}); });
} }
prepareFormValue(formValue: Resource): Resource { prepareFormValue(formValue: Resource): Resource {
if (this.isEdit && !isDefinedAndNotNull(formValue.base64Data)) { if (this.isEdit && !isDefinedAndNotNull(formValue.data)) {
delete formValue.base64Data; delete formValue.data;
} }
return super.prepareFormValue(formValue); return super.prepareFormValue(formValue);
} }

View File

@ -64,6 +64,6 @@ export interface ResourceInfo extends Omit<BaseData<TbResourceId>, 'name' | 'lab
} }
export interface Resource extends ResourceInfo { export interface Resource extends ResourceInfo {
base64Data: string; data: string;
name?: string; name?: string;
} }