Merge PR #6320
This commit is contained in:
commit
349f331890
@ -24,6 +24,7 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.thingsboard.server.common.data.Customer;
|
import org.thingsboard.server.common.data.Customer;
|
||||||
import org.thingsboard.server.common.data.EntitySubtype;
|
import org.thingsboard.server.common.data.EntitySubtype;
|
||||||
|
import org.thingsboard.server.common.data.EntityView;
|
||||||
import org.thingsboard.server.common.data.Tenant;
|
import org.thingsboard.server.common.data.Tenant;
|
||||||
import org.thingsboard.server.common.data.User;
|
import org.thingsboard.server.common.data.User;
|
||||||
import org.thingsboard.server.common.data.asset.Asset;
|
import org.thingsboard.server.common.data.asset.Asset;
|
||||||
@ -182,6 +183,39 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
.andExpect(status().isNotFound());
|
.andExpect(status().isNotFound());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteAssetAssignedToEntityView() throws Exception {
|
||||||
|
Asset asset1 = new Asset();
|
||||||
|
asset1.setName("My asset 1");
|
||||||
|
asset1.setType("default");
|
||||||
|
Asset savedAsset1 = doPost("/api/asset", asset1, Asset.class);
|
||||||
|
|
||||||
|
Asset asset2 = new Asset();
|
||||||
|
asset2.setName("My asset 2");
|
||||||
|
asset2.setType("default");
|
||||||
|
Asset savedAsset2 = doPost("/api/asset", asset2, Asset.class);
|
||||||
|
|
||||||
|
EntityView view = new EntityView();
|
||||||
|
view.setEntityId(savedAsset1.getId());
|
||||||
|
view.setTenantId(savedTenant.getId());
|
||||||
|
view.setName("My entity view");
|
||||||
|
view.setType("default");
|
||||||
|
EntityView savedView = doPost("/api/entityView", view, EntityView.class);
|
||||||
|
|
||||||
|
doDelete("/api/asset/" + savedAsset1.getId().getId().toString())
|
||||||
|
.andExpect(status().isBadRequest());
|
||||||
|
|
||||||
|
savedView.setEntityId(savedAsset2.getId());
|
||||||
|
|
||||||
|
doPost("/api/entityView", savedView, EntityView.class);
|
||||||
|
|
||||||
|
doDelete("/api/asset/" + savedAsset1.getId().getId().toString())
|
||||||
|
.andExpect(status().isOk());
|
||||||
|
|
||||||
|
doGet("/api/asset/" + savedAsset1.getId().getId().toString())
|
||||||
|
.andExpect(status().isNotFound());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSaveAssetWithEmptyType() throws Exception {
|
public void testSaveAssetWithEmptyType() throws Exception {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
|
|||||||
@ -28,6 +28,7 @@ import org.junit.Assert;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.test.context.TestPropertySource;
|
import org.springframework.test.context.TestPropertySource;
|
||||||
|
import org.springframework.test.web.servlet.ResultMatcher;
|
||||||
import org.thingsboard.server.common.data.Customer;
|
import org.thingsboard.server.common.data.Customer;
|
||||||
import org.thingsboard.server.common.data.Device;
|
import org.thingsboard.server.common.data.Device;
|
||||||
import org.thingsboard.server.common.data.EntityView;
|
import org.thingsboard.server.common.data.EntityView;
|
||||||
@ -119,7 +120,8 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSaveEntityView() throws Exception {
|
public void testSaveEntityView() throws Exception {
|
||||||
EntityView savedView = getNewSavedEntityView("Test entity view");
|
String name = "Test entity view";
|
||||||
|
EntityView savedView = getNewSavedEntityView(name);
|
||||||
|
|
||||||
Assert.assertNotNull(savedView);
|
Assert.assertNotNull(savedView);
|
||||||
Assert.assertNotNull(savedView.getId());
|
Assert.assertNotNull(savedView.getId());
|
||||||
@ -127,14 +129,20 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
|
|||||||
assertEquals(savedTenant.getId(), savedView.getTenantId());
|
assertEquals(savedTenant.getId(), savedView.getTenantId());
|
||||||
Assert.assertNotNull(savedView.getCustomerId());
|
Assert.assertNotNull(savedView.getCustomerId());
|
||||||
assertEquals(NULL_UUID, savedView.getCustomerId().getId());
|
assertEquals(NULL_UUID, savedView.getCustomerId().getId());
|
||||||
assertEquals(savedView.getName(), savedView.getName());
|
assertEquals(name, savedView.getName());
|
||||||
|
|
||||||
savedView.setName("New test entity view");
|
|
||||||
doPost("/api/entityView", savedView, EntityView.class);
|
|
||||||
EntityView foundEntityView = doGet("/api/entityView/" + savedView.getId().getId().toString(), EntityView.class);
|
EntityView foundEntityView = doGet("/api/entityView/" + savedView.getId().getId().toString(), EntityView.class);
|
||||||
|
|
||||||
assertEquals(foundEntityView.getName(), savedView.getName());
|
assertEquals(savedView, foundEntityView);
|
||||||
assertEquals(foundEntityView.getKeys(), telemetry);
|
|
||||||
|
savedView.setName("New test entity view");
|
||||||
|
|
||||||
|
doPost("/api/entityView", savedView, EntityView.class);
|
||||||
|
foundEntityView = doGet("/api/entityView/" + savedView.getId().getId().toString(), EntityView.class);
|
||||||
|
|
||||||
|
assertEquals(savedView, foundEntityView);
|
||||||
|
|
||||||
|
doGet("/api/tenant/entityViews?entityViewName=" + name, EntityView.class, status().isNotFound());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@ -24,9 +24,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.cache.Cache;
|
import org.springframework.cache.Cache;
|
||||||
import org.springframework.cache.CacheManager;
|
import org.springframework.cache.CacheManager;
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
import org.springframework.cache.annotation.Caching;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.thingsboard.server.common.data.EntitySubtype;
|
import org.thingsboard.server.common.data.EntitySubtype;
|
||||||
import org.thingsboard.server.common.data.EntityType;
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
@ -86,29 +84,31 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti
|
|||||||
@Autowired
|
@Autowired
|
||||||
private DataValidator<EntityView> entityViewValidator;
|
private DataValidator<EntityView> entityViewValidator;
|
||||||
|
|
||||||
@Caching(evict = {
|
|
||||||
@CacheEvict(cacheNames = ENTITY_VIEW_CACHE, key = "{#entityView.tenantId, #entityView.entityId}"),
|
|
||||||
@CacheEvict(cacheNames = ENTITY_VIEW_CACHE, key = "{#entityView.tenantId, #entityView.name}"),
|
|
||||||
@CacheEvict(cacheNames = ENTITY_VIEW_CACHE, key = "{#entityView.id}")})
|
|
||||||
@Override
|
@Override
|
||||||
public EntityView saveEntityView(EntityView entityView) {
|
public EntityView saveEntityView(EntityView entityView) {
|
||||||
log.trace("Executing save entity view [{}]", entityView);
|
log.trace("Executing save entity view [{}]", entityView);
|
||||||
entityViewValidator.validate(entityView, EntityView::getTenantId);
|
entityViewValidator.validate(entityView, EntityView::getTenantId);
|
||||||
|
|
||||||
|
if (entityView.getId() != null) {
|
||||||
|
EntityView oldEntityView = entityViewDao.findById(entityView.getTenantId(), entityView.getUuidId());
|
||||||
|
evictCache(oldEntityView);
|
||||||
|
}
|
||||||
|
|
||||||
return entityViewDao.save(entityView.getTenantId(), entityView);
|
return entityViewDao.save(entityView.getTenantId(), entityView);
|
||||||
}
|
}
|
||||||
|
|
||||||
@CacheEvict(cacheNames = ENTITY_VIEW_CACHE, key = "{#entityViewId}")
|
|
||||||
@Override
|
@Override
|
||||||
public EntityView assignEntityViewToCustomer(TenantId tenantId, EntityViewId entityViewId, CustomerId customerId) {
|
public EntityView assignEntityViewToCustomer(TenantId tenantId, EntityViewId entityViewId, CustomerId customerId) {
|
||||||
EntityView entityView = findEntityViewById(tenantId, entityViewId);
|
EntityView entityView = findEntityViewById(tenantId, entityViewId);
|
||||||
|
evictCache(entityView);
|
||||||
entityView.setCustomerId(customerId);
|
entityView.setCustomerId(customerId);
|
||||||
return saveEntityView(entityView);
|
return saveEntityView(entityView);
|
||||||
}
|
}
|
||||||
|
|
||||||
@CacheEvict(cacheNames = ENTITY_VIEW_CACHE, key = "{#entityViewId}")
|
|
||||||
@Override
|
@Override
|
||||||
public EntityView unassignEntityViewFromCustomer(TenantId tenantId, EntityViewId entityViewId) {
|
public EntityView unassignEntityViewFromCustomer(TenantId tenantId, EntityViewId entityViewId) {
|
||||||
EntityView entityView = findEntityViewById(tenantId, entityViewId);
|
EntityView entityView = findEntityViewById(tenantId, entityViewId);
|
||||||
|
evictCache(entityView);
|
||||||
entityView.setCustomerId(null);
|
entityView.setCustomerId(null);
|
||||||
return saveEntityView(entityView);
|
return saveEntityView(entityView);
|
||||||
}
|
}
|
||||||
@ -292,15 +292,13 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@CacheEvict(cacheNames = ENTITY_VIEW_CACHE, key = "{#entityViewId}")
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteEntityView(TenantId tenantId, EntityViewId entityViewId) {
|
public void deleteEntityView(TenantId tenantId, EntityViewId entityViewId) {
|
||||||
log.trace("Executing deleteEntityView [{}]", entityViewId);
|
log.trace("Executing deleteEntityView [{}]", entityViewId);
|
||||||
validateId(entityViewId, INCORRECT_ENTITY_VIEW_ID + entityViewId);
|
validateId(entityViewId, INCORRECT_ENTITY_VIEW_ID + entityViewId);
|
||||||
deleteEntityRelations(tenantId, entityViewId);
|
deleteEntityRelations(tenantId, entityViewId);
|
||||||
EntityView entityView = entityViewDao.findById(tenantId, entityViewId.getId());
|
EntityView entityView = entityViewDao.findById(tenantId, entityViewId.getId());
|
||||||
cacheManager.getCache(ENTITY_VIEW_CACHE).evict(Arrays.asList(entityView.getTenantId(), entityView.getEntityId()));
|
evictCache(entityView);
|
||||||
cacheManager.getCache(ENTITY_VIEW_CACHE).evict(Arrays.asList(entityView.getTenantId(), entityView.getName()));
|
|
||||||
entityViewDao.removeById(tenantId, entityViewId.getId());
|
entityViewDao.removeById(tenantId, entityViewId.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -323,7 +321,6 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti
|
|||||||
}, MoreExecutors.directExecutor());
|
}, MoreExecutors.directExecutor());
|
||||||
}
|
}
|
||||||
|
|
||||||
@CacheEvict(cacheNames = ENTITY_VIEW_CACHE, key = "{#entityViewId}")
|
|
||||||
@Override
|
@Override
|
||||||
public EntityView assignEntityViewToEdge(TenantId tenantId, EntityViewId entityViewId, EdgeId edgeId) {
|
public EntityView assignEntityViewToEdge(TenantId tenantId, EntityViewId entityViewId, EdgeId edgeId) {
|
||||||
EntityView entityView = findEntityViewById(tenantId, entityViewId);
|
EntityView entityView = findEntityViewById(tenantId, entityViewId);
|
||||||
@ -413,4 +410,11 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti
|
|||||||
unassignEntityViewFromCustomer(tenantId, new EntityViewId(entity.getUuidId()));
|
unassignEntityViewFromCustomer(tenantId, new EntityViewId(entity.getUuidId()));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private void evictCache(EntityView entityView) {
|
||||||
|
Cache cache = cacheManager.getCache(ENTITY_VIEW_CACHE);
|
||||||
|
cache.evict(Arrays.asList(entityView.getTenantId(), entityView.getEntityId()));
|
||||||
|
cache.evict(Arrays.asList(entityView.getTenantId(), entityView.getName()));
|
||||||
|
cache.evict(Arrays.asList(entityView.getId()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user