Use JsonGetter/Setter to encode resource data; minor fixes
This commit is contained in:
parent
e7aabe80a4
commit
6eadef0d68
@ -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)",
|
||||||
|
|||||||
@ -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());
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -198,7 +198,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
|
|||||||
|
|
||||||
for (int i = 2; i < 4; i++) {
|
for (int i = 2; i < 4; i++) {
|
||||||
createResource("test" + i, i + DEFAULT_FILE_NAME);
|
createResource("test" + i, i + DEFAULT_FILE_NAME);
|
||||||
assertEquals(i*4, resourceService.sumDataSizeByTenantId(tenantId));
|
assertEquals(i * 4, resourceService.sumDataSizeByTenantId(tenantId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -487,7 +486,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
|
|||||||
TbResourceInfoFilter filter = TbResourceInfoFilter.builder()
|
TbResourceInfoFilter filter = TbResourceInfoFilter.builder()
|
||||||
.tenantId(tenantId)
|
.tenantId(tenantId)
|
||||||
.build();
|
.build();
|
||||||
pageData = resourceService.findAllTenantResourcesByTenantId(filter, pageLink);
|
pageData = resourceService.findAllTenantResourcesByTenantId(filter, pageLink);
|
||||||
loadedResources.addAll(pageData.getData());
|
loadedResources.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageLink.nextPageLink();
|
pageLink = pageLink.nextPageLink();
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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
@ -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)));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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()"
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user