Browse Source

fixed alarn tests and refactored tb resource service

pull/6757/head
YevhenBondarenko 4 years ago
parent
commit
faa07360d5
  1. 79
      application/src/main/java/org/thingsboard/server/service/resource/DefaultTbResourceService.java
  2. 3
      application/src/main/java/org/thingsboard/server/service/resource/TbResourceService.java
  3. 2
      application/src/test/java/org/thingsboard/server/controller/BaseAlarmControllerTest.java
  4. 35
      application/src/test/java/org/thingsboard/server/service/resource/sql/BaseTbResourceServiceTest.java

79
application/src/main/java/org/thingsboard/server/service/resource/DefaultTbResourceService.java

@ -69,45 +69,6 @@ public class DefaultTbResourceService extends AbstractTbEntityService implements
this.ddfFileParser = new DDFFileParser(new DefaultDDFFileValidator()); this.ddfFileParser = new DDFFileParser(new DefaultDDFFileValidator());
} }
@Override
public TbResource saveResourceInternal(TbResource resource) throws ThingsboardException {
log.trace("Executing saveResource [{}]", resource);
if (StringUtils.isEmpty(resource.getData())) {
throw new DataValidationException("Resource data should be specified!");
}
if (ResourceType.LWM2M_MODEL.equals(resource.getResourceType())) {
try {
List<ObjectModel> objectModels =
ddfFileParser.parse(new ByteArrayInputStream(Base64.getDecoder().decode(resource.getData())), resource.getSearchText());
if (!objectModels.isEmpty()) {
ObjectModel objectModel = objectModels.get(0);
String resourceKey = objectModel.id + LWM2M_SEPARATOR_KEY + objectModel.version;
String name = objectModel.name;
resource.setResourceKey(resourceKey);
if (resource.getId() == null) {
resource.setTitle(name + " id=" + objectModel.id + " v" + objectModel.version);
}
resource.setSearchText(resourceKey + LWM2M_SEPARATOR_SEARCH_TEXT + name);
} else {
throw new DataValidationException(String.format("Could not parse the XML of objectModel with name %s", resource.getSearchText()));
}
} catch (InvalidDDFFileException e) {
log.error("Failed to parse file {}", resource.getFileName(), e);
throw new DataValidationException("Failed to parse file " + resource.getFileName());
} catch (IOException e) {
throw new ThingsboardException(e, ThingsboardErrorCode.GENERAL);
}
if (resource.getResourceType().equals(ResourceType.LWM2M_MODEL) && toLwM2mObject(resource, true) == null) {
throw new DataValidationException(String.format("Could not parse the XML of objectModel with name %s", resource.getSearchText()));
}
} else {
resource.setResourceKey(resource.getFileName());
}
return resourceService.saveResource(resource);
}
@Override @Override
public TbResource getResource(TenantId tenantId, ResourceType resourceType, String resourceId) { public TbResource getResource(TenantId tenantId, ResourceType resourceType, String resourceId) {
return resourceService.getResource(tenantId, resourceType, resourceId); return resourceService.getResource(tenantId, resourceType, resourceId);
@ -222,7 +183,7 @@ public class DefaultTbResourceService extends AbstractTbEntityService implements
ActionType actionType = tbResource.getId() == null ? ActionType.ADDED : ActionType.UPDATED; ActionType actionType = tbResource.getId() == null ? ActionType.ADDED : ActionType.UPDATED;
TenantId tenantId = tbResource.getTenantId(); TenantId tenantId = tbResource.getTenantId();
try { try {
TbResource savedResource = checkNotNull(saveResourceInternal(tbResource)); TbResource savedResource = checkNotNull(doSave(tbResource));
tbClusterService.onResourceChange(savedResource, null); tbClusterService.onResourceChange(savedResource, null);
notificationEntityService.logEntityAction(tenantId, savedResource.getId(), savedResource, actionType, user); notificationEntityService.logEntityAction(tenantId, savedResource.getId(), savedResource, actionType, user);
return savedResource; return savedResource;
@ -247,4 +208,42 @@ public class DefaultTbResourceService extends AbstractTbEntityService implements
throw e; throw e;
} }
} }
private TbResource doSave(TbResource resource) throws ThingsboardException {
log.trace("Executing saveResource [{}]", resource);
if (StringUtils.isEmpty(resource.getData())) {
throw new DataValidationException("Resource data should be specified!");
}
if (ResourceType.LWM2M_MODEL.equals(resource.getResourceType())) {
try {
List<ObjectModel> objectModels =
ddfFileParser.parse(new ByteArrayInputStream(Base64.getDecoder().decode(resource.getData())), resource.getSearchText());
if (!objectModels.isEmpty()) {
ObjectModel objectModel = objectModels.get(0);
String resourceKey = objectModel.id + LWM2M_SEPARATOR_KEY + objectModel.version;
String name = objectModel.name;
resource.setResourceKey(resourceKey);
if (resource.getId() == null) {
resource.setTitle(name + " id=" + objectModel.id + " v" + objectModel.version);
}
resource.setSearchText(resourceKey + LWM2M_SEPARATOR_SEARCH_TEXT + name);
} else {
throw new DataValidationException(String.format("Could not parse the XML of objectModel with name %s", resource.getSearchText()));
}
} catch (InvalidDDFFileException e) {
log.error("Failed to parse file {}", resource.getFileName(), e);
throw new DataValidationException("Failed to parse file " + resource.getFileName());
} catch (IOException e) {
throw new ThingsboardException(e, ThingsboardErrorCode.GENERAL);
}
if (resource.getResourceType().equals(ResourceType.LWM2M_MODEL) && toLwM2mObject(resource, true) == null) {
throw new DataValidationException(String.format("Could not parse the XML of objectModel with name %s", resource.getSearchText()));
}
} else {
resource.setResourceKey(resource.getFileName());
}
return resourceService.saveResource(resource);
}
} }

3
application/src/main/java/org/thingsboard/server/service/resource/TbResourceService.java

@ -18,7 +18,6 @@ package org.thingsboard.server.service.resource;
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;
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.id.TenantId;
import org.thingsboard.server.common.data.lwm2m.LwM2mObject; import org.thingsboard.server.common.data.lwm2m.LwM2mObject;
@ -30,8 +29,6 @@ import java.util.List;
public interface TbResourceService extends SimpleTbEntityService<TbResource> { public interface TbResourceService extends SimpleTbEntityService<TbResource> {
TbResource saveResourceInternal(TbResource resource) throws ThingsboardException;
TbResource getResource(TenantId tenantId, ResourceType resourceType, String resourceKey); TbResource getResource(TenantId tenantId, ResourceType resourceType, String resourceKey);
TbResource findResourceById(TenantId tenantId, TbResourceId resourceId); TbResource findResourceById(TenantId tenantId, TbResourceId resourceId);

2
application/src/test/java/org/thingsboard/server/controller/BaseAlarmControllerTest.java

@ -175,7 +175,7 @@ public abstract class BaseAlarmControllerTest extends AbstractControllerTest {
doDelete("/api/alarm/" + alarm.getId()).andExpect(status().isOk()); doDelete("/api/alarm/" + alarm.getId()).andExpect(status().isOk());
testNotifyEntityOneTimeMsgToEdgeServiceNever(alarm, alarm.getId(), alarm.getOriginator(), testNotifyEntityOneTimeMsgToEdgeServiceNever(alarm, alarm.getId(), alarm.getOriginator(),
tenantId, tenantAdminCustomerId, tenantAdminUserId, TENANT_ADMIN_EMAIL, ActionType.DELETED); tenantId, customerId, tenantAdminUserId, TENANT_ADMIN_EMAIL, ActionType.DELETED);
} }
@Test @Test

35
application/src/test/java/org/thingsboard/server/service/resource/sql/BaseTbResourceServiceTest.java

@ -30,7 +30,6 @@ import org.thingsboard.server.common.data.TbResourceInfo;
import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.TenantProfile; import org.thingsboard.server.common.data.TenantProfile;
import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.User;
import org.thingsboard.server.common.data.exception.ThingsboardException;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
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;
@ -149,7 +148,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
} }
@Test @Test
public void sumDataSizeByTenantId() throws ThingsboardException { public void sumDataSizeByTenantId() throws Exception {
Assert.assertEquals(0, resourceService.sumDataSizeByTenantId(tenantId)); Assert.assertEquals(0, resourceService.sumDataSizeByTenantId(tenantId));
createResource("test", DEFAULT_FILE_NAME); createResource("test", DEFAULT_FILE_NAME);
@ -165,14 +164,14 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
Assert.assertEquals(maxSumDataSize, resourceService.sumDataSizeByTenantId(tenantId)); Assert.assertEquals(maxSumDataSize, resourceService.sumDataSizeByTenantId(tenantId));
} }
private TbResource createResource(String title, String filename) throws ThingsboardException { private TbResource createResource(String title, String filename) throws Exception {
TbResource resource = new TbResource(); TbResource resource = new TbResource();
resource.setTenantId(tenantId); resource.setTenantId(tenantId);
resource.setTitle(title); resource.setTitle(title);
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(filename); resource.setFileName(filename);
resource.setData("1"); resource.setData("1");
return resourceService.saveResourceInternal(resource); return resourceService.save(resource);
} }
@Test @Test
@ -184,7 +183,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setData("Test Data"); resource.setData("Test Data");
TbResource savedResource = resourceService.saveResourceInternal(resource); TbResource savedResource = resourceService.save(resource);
Assert.assertNotNull(savedResource); Assert.assertNotNull(savedResource);
Assert.assertNotNull(savedResource.getId()); Assert.assertNotNull(savedResource.getId());
@ -196,7 +195,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
savedResource.setTitle("My new resource"); savedResource.setTitle("My new resource");
resourceService.saveResourceInternal(savedResource); resourceService.save(savedResource);
TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId()); TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId());
Assert.assertEquals(foundResource.getTitle(), savedResource.getTitle()); Assert.assertEquals(foundResource.getTitle(), savedResource.getTitle());
@ -211,7 +210,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setFileName("test_model.xml"); resource.setFileName("test_model.xml");
resource.setData(Base64.getEncoder().encodeToString(LWM2M_TEST_MODEL.getBytes())); resource.setData(Base64.getEncoder().encodeToString(LWM2M_TEST_MODEL.getBytes()));
TbResource savedResource = resourceService.saveResourceInternal(resource); TbResource savedResource = resourceService.save(resource);
Assert.assertNotNull(savedResource); Assert.assertNotNull(savedResource);
Assert.assertNotNull(savedResource.getId()); Assert.assertNotNull(savedResource.getId());
@ -231,7 +230,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setData("Test Data"); resource.setData("Test Data");
TbResource savedResource = resourceService.saveResourceInternal(resource); TbResource savedResource = resourceService.save(resource);
Assert.assertEquals(TenantId.SYS_TENANT_ID, savedResource.getTenantId()); Assert.assertEquals(TenantId.SYS_TENANT_ID, savedResource.getTenantId());
@ -247,7 +246,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setData("Test Data"); resource.setData("Test Data");
TbResource savedResource = resourceService.saveResourceInternal(resource); TbResource savedResource = resourceService.save(resource);
TbResource resource2 = new TbResource(); TbResource resource2 = new TbResource();
resource.setTenantId(tenantId); resource.setTenantId(tenantId);
@ -257,7 +256,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setData("Test Data"); resource.setData("Test Data");
try { try {
resourceService.saveResourceInternal(resource2); resourceService.save(resource2);
} finally { } finally {
resourceService.delete(savedResource, null); resourceService.delete(savedResource, null);
} }
@ -270,7 +269,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setData("Test Data"); resource.setData("Test Data");
resourceService.saveResourceInternal(resource); resourceService.save(resource);
} }
@Test(expected = DataValidationException.class) @Test(expected = DataValidationException.class)
@ -281,7 +280,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setData("Test Data"); resource.setData("Test Data");
resourceService.saveResourceInternal(resource); resourceService.save(resource);
} }
@Test @Test
@ -291,7 +290,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setData("Test Data"); resource.setData("Test Data");
TbResource savedResource = resourceService.saveResourceInternal(resource); TbResource savedResource = resourceService.save(resource);
TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId()); TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId());
Assert.assertNotNull(foundResource); Assert.assertNotNull(foundResource);
@ -307,7 +306,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setData("Test Data"); resource.setData("Test Data");
TbResource savedResource = resourceService.saveResourceInternal(resource); TbResource savedResource = resourceService.save(resource);
TbResource foundResource = resourceService.getResource(tenantId, savedResource.getResourceType(), savedResource.getResourceKey()); TbResource foundResource = resourceService.getResource(tenantId, savedResource.getResourceType(), savedResource.getResourceKey());
Assert.assertNotNull(foundResource); Assert.assertNotNull(foundResource);
@ -322,7 +321,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTitle("My resource"); resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME); resource.setFileName(DEFAULT_FILE_NAME);
resource.setData("Test Data"); resource.setData("Test Data");
TbResource savedResource = resourceService.saveResourceInternal(resource); TbResource savedResource = resourceService.save(resource);
TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId()); TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId());
Assert.assertNotNull(foundResource); Assert.assertNotNull(foundResource);
@ -348,7 +347,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME); resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setData("Test Data"); resource.setData("Test Data");
resources.add(new TbResourceInfo(resourceService.saveResourceInternal(resource))); resources.add(new TbResourceInfo(resourceService.save(resource)));
} }
List<TbResourceInfo> loadedResources = new ArrayList<>(); List<TbResourceInfo> loadedResources = new ArrayList<>();
@ -396,7 +395,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME); resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setData("Test Data"); resource.setData("Test Data");
TbResourceInfo tbResourceInfo = new TbResourceInfo(resourceService.saveResourceInternal(resource)); TbResourceInfo tbResourceInfo = new TbResourceInfo(resourceService.save(resource));
if (i >= 50) { if (i >= 50) {
resources.add(tbResourceInfo); resources.add(tbResourceInfo);
} }
@ -409,7 +408,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS); resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME); resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setData("Test Data"); resource.setData("Test Data");
resources.add(new TbResourceInfo(resourceService.saveResourceInternal(resource))); resources.add(new TbResourceInfo(resourceService.save(resource)));
} }
List<TbResourceInfo> loadedResources = new ArrayList<>(); List<TbResourceInfo> loadedResources = new ArrayList<>();

Loading…
Cancel
Save