Browse Source

Added possibility to disable validation for save edge function

pull/4571/head
Volodymyr Babak 5 years ago
parent
commit
c85aea31a0
  1. 2
      application/src/main/java/org/thingsboard/server/controller/EdgeController.java
  2. 2
      application/src/main/java/org/thingsboard/server/service/edge/DefaultEdgeNotificationService.java
  3. 2
      common/dao-api/src/main/java/org/thingsboard/server/dao/edge/EdgeService.java
  4. 10
      dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java
  5. 2
      dao/src/test/java/org/thingsboard/server/dao/service/BaseDashboardServiceTest.java
  6. 48
      dao/src/test/java/org/thingsboard/server/dao/service/BaseEdgeServiceTest.java
  7. 4
      dao/src/test/java/org/thingsboard/server/dao/service/BaseEntityServiceTest.java
  8. 2
      dao/src/test/java/org/thingsboard/server/dao/service/BaseRuleChainServiceTest.java

2
application/src/main/java/org/thingsboard/server/controller/EdgeController.java

@ -127,7 +127,7 @@ public class EdgeController extends BaseController {
accessControlService.checkPermission(getCurrentUser(), Resource.EDGE, operation,
edge.getId(), edge);
Edge savedEdge = checkNotNull(edgeService.saveEdge(edge));
Edge savedEdge = checkNotNull(edgeService.saveEdge(edge, true));
if (created) {
ruleChainService.assignRuleChainToEdge(tenantId, edgeTemplateRootRuleChain.getId(), savedEdge.getId());

2
application/src/main/java/org/thingsboard/server/service/edge/DefaultEdgeNotificationService.java

@ -100,7 +100,7 @@ public class DefaultEdgeNotificationService implements EdgeNotificationService {
@Override
public Edge setEdgeRootRuleChain(TenantId tenantId, Edge edge, RuleChainId ruleChainId) throws IOException {
edge.setRootRuleChainId(ruleChainId);
Edge savedEdge = edgeService.saveEdge(edge);
Edge savedEdge = edgeService.saveEdge(edge, true);
saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.RULE_CHAIN, EdgeEventActionType.UPDATED, ruleChainId, null);
return savedEdge;
}

2
common/dao-api/src/main/java/org/thingsboard/server/dao/edge/EdgeService.java

@ -44,7 +44,7 @@ public interface EdgeService {
Optional<Edge> findEdgeByRoutingKey(TenantId tenantId, String routingKey);
Edge saveEdge(Edge edge);
Edge saveEdge(Edge edge, boolean doValidate);
Edge assignEdgeToCustomer(TenantId tenantId, EdgeId edgeId, CustomerId customerId);

10
dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java

@ -180,9 +180,11 @@ public class EdgeServiceImpl extends AbstractEntityService implements EdgeServic
@CacheEvict(cacheNames = EDGE_CACHE, key = "{#edge.tenantId, #edge.name}")
@Override
public Edge saveEdge(Edge edge) {
public Edge saveEdge(Edge edge, boolean doValidate) {
log.trace("Executing saveEdge [{}]", edge);
edgeValidator.validate(edge, Edge::getTenantId);
if (doValidate) {
edgeValidator.validate(edge, Edge::getTenantId);
}
try {
return edgeDao.save(edge.getTenantId(), edge);
} catch (Exception t) {
@ -201,7 +203,7 @@ public class EdgeServiceImpl extends AbstractEntityService implements EdgeServic
log.trace("[{}] Executing assignEdgeToCustomer [{}][{}]", tenantId, edgeId, customerId);
Edge edge = findEdgeById(tenantId, edgeId);
edge.setCustomerId(customerId);
return saveEdge(edge);
return saveEdge(edge, true);
}
@Override
@ -209,7 +211,7 @@ public class EdgeServiceImpl extends AbstractEntityService implements EdgeServic
log.trace("[{}] Executing unassignEdgeFromCustomer [{}]", tenantId, edgeId);
Edge edge = findEdgeById(tenantId, edgeId);
edge.setCustomerId(null);
return saveEdge(edge);
return saveEdge(edge, true);
}
@Override

2
dao/src/test/java/org/thingsboard/server/dao/service/BaseDashboardServiceTest.java

@ -360,7 +360,7 @@ public abstract class BaseDashboardServiceTest extends AbstractServiceTest {
edge.setRoutingKey(RandomStringUtils.randomAlphanumeric(20));
edge.setEdgeLicenseKey(RandomStringUtils.randomAlphanumeric(20));
edge.setCloudEndpoint("http://localhost:8080");
edge = edgeService.saveEdge(edge);
edge = edgeService.saveEdge(edge, true);
try {
dashboardService.assignDashboardToEdge(tenantId, dashboard.getId(), edge.getId());
} finally {

48
dao/src/test/java/org/thingsboard/server/dao/service/BaseEdgeServiceTest.java

@ -60,7 +60,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
@Test
public void testSaveEdge() {
Edge edge = constructEdge("My edge", "default");
Edge savedEdge = edgeService.saveEdge(edge);
Edge savedEdge = edgeService.saveEdge(edge, true);
Assert.assertNotNull(savedEdge);
Assert.assertNotNull(savedEdge.getId());
@ -72,7 +72,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
savedEdge.setName("My new edge");
edgeService.saveEdge(savedEdge);
edgeService.saveEdge(savedEdge, true);
Edge foundEdge = edgeService.findEdgeById(tenantId, savedEdge.getId());
Assert.assertEquals(foundEdge.getName(), savedEdge.getName());
@ -84,7 +84,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
Edge edge = new Edge();
edge.setType("default");
edge.setTenantId(tenantId);
edgeService.saveEdge(edge);
edgeService.saveEdge(edge, true);
}
@Test(expected = DataValidationException.class)
@ -92,7 +92,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
Edge edge = new Edge();
edge.setName("My edge");
edge.setType("default");
edgeService.saveEdge(edge);
edgeService.saveEdge(edge, true);
}
@Test(expected = DataValidationException.class)
@ -101,13 +101,13 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
edge.setName("My edge");
edge.setType("default");
edge.setTenantId(new TenantId(Uuids.timeBased()));
edgeService.saveEdge(edge);
edgeService.saveEdge(edge, true);
}
@Test(expected = DataValidationException.class)
public void testAssignEdgeToNonExistentCustomer() {
Edge edge = constructEdge("My edge", "default");
edge = edgeService.saveEdge(edge);
edge = edgeService.saveEdge(edge, true);
try {
edgeService.assignEdgeToCustomer(tenantId, edge.getId(), new CustomerId(Uuids.timeBased()));
} finally {
@ -118,7 +118,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
@Test(expected = DataValidationException.class)
public void testAssignEdgeToCustomerFromDifferentTenant() {
Edge edge = constructEdge("My edge", "default");
edge = edgeService.saveEdge(edge);
edge = edgeService.saveEdge(edge, true);
Tenant tenant = new Tenant();
tenant.setTitle("Test different tenant");
tenant = tenantService.saveTenant(tenant);
@ -137,7 +137,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
@Test
public void testFindEdgeById() {
Edge edge = constructEdge("My edge", "default");
Edge savedEdge = edgeService.saveEdge(edge);
Edge savedEdge = edgeService.saveEdge(edge, true);
Edge foundEdge = edgeService.findEdgeById(tenantId, savedEdge.getId());
Assert.assertNotNull(foundEdge);
Assert.assertEquals(savedEdge, foundEdge);
@ -150,15 +150,15 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
try {
for (int i = 0; i < 3; i++) {
Edge edge = constructEdge("My edge B" + i, "typeB");
edges.add(edgeService.saveEdge(edge));
edges.add(edgeService.saveEdge(edge, true));
}
for (int i = 0; i < 7; i++) {
Edge edge = constructEdge("My edge C" + i, "typeC");
edges.add(edgeService.saveEdge(edge));
edges.add(edgeService.saveEdge(edge, true));
}
for (int i = 0; i < 9; i++) {
Edge edge = constructEdge("My edge A" + i, "typeA");
edges.add(edgeService.saveEdge(edge));
edges.add(edgeService.saveEdge(edge, true));
}
List<EntitySubtype> edgeTypes = edgeService.findEdgeTypesByTenantId(tenantId).get();
Assert.assertNotNull(edgeTypes);
@ -176,7 +176,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
@Test
public void testDeleteEdge() {
Edge edge = constructEdge("My edge", "default");
Edge savedEdge = edgeService.saveEdge(edge);
Edge savedEdge = edgeService.saveEdge(edge, true);
Edge foundEdge = edgeService.findEdgeById(tenantId, savedEdge.getId());
Assert.assertNotNull(foundEdge);
edgeService.deleteEdge(tenantId, savedEdge.getId());
@ -195,7 +195,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
List<Edge> edges = new ArrayList<>();
for (int i = 0; i < 178; i++) {
Edge edge = constructEdge(tenantId, "Edge " + i, "default");
edges.add(edgeService.saveEdge(edge));
edges.add(edgeService.saveEdge(edge, true));
}
List<Edge> loadedEdges = new ArrayList<>();
@ -233,7 +233,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
String name = title1 + suffix;
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
Edge edge = constructEdge(name, "default");
edgesTitle1.add(edgeService.saveEdge(edge));
edgesTitle1.add(edgeService.saveEdge(edge, true));
}
String title2 = "Edge title 2";
List<Edge> edgesTitle2 = new ArrayList<>();
@ -242,7 +242,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
String name = title2 + suffix;
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
Edge edge = constructEdge(name, "default");
edgesTitle2.add(edgeService.saveEdge(edge));
edgesTitle2.add(edgeService.saveEdge(edge, true));
}
List<Edge> loadedEdgesTitle1 = new ArrayList<>();
@ -305,7 +305,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
String name = title1 + suffix;
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
Edge edge = constructEdge(name, type1);
edgesType1.add(edgeService.saveEdge(edge));
edgesType1.add(edgeService.saveEdge(edge, true));
}
String title2 = "Edge title 2";
String type2 = "typeB";
@ -315,7 +315,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
String name = title2 + suffix;
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
Edge edge = constructEdge(name, type2);
edgesType2.add(edgeService.saveEdge(edge));
edgesType2.add(edgeService.saveEdge(edge, true));
}
List<Edge> loadedEdgesType1 = new ArrayList<>();
@ -385,7 +385,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
List<Edge> edges = new ArrayList<>();
for (int i = 0; i < 278; i++) {
Edge edge = constructEdge(tenantId, "Edge" + i, "default");
edge = edgeService.saveEdge(edge);
edge = edgeService.saveEdge(edge, true);
edges.add(edgeService.assignEdgeToCustomer(tenantId, edge.getId(), customerId));
}
@ -431,7 +431,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
String name = title1 + suffix;
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
Edge edge = constructEdge(name, "default");
edge = edgeService.saveEdge(edge);
edge = edgeService.saveEdge(edge, true);
edgesTitle1.add(edgeService.assignEdgeToCustomer(tenantId, edge.getId(), customerId));
}
String title2 = "Edge title 2";
@ -441,7 +441,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
String name = title2 + suffix;
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
Edge edge = constructEdge(name, "default");
edge = edgeService.saveEdge(edge);
edge = edgeService.saveEdge(edge, true);
edgesTitle2.add(edgeService.assignEdgeToCustomer(tenantId, edge.getId(), customerId));
}
@ -513,7 +513,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
String name = title1 + suffix;
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
Edge edge = constructEdge(name, type1);
edge = edgeService.saveEdge(edge);
edge = edgeService.saveEdge(edge, true);
edgesType1.add(edgeService.assignEdgeToCustomer(tenantId, edge.getId(), customerId));
}
String title2 = "Edge title 2";
@ -524,7 +524,7 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
String name = title2 + suffix;
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
Edge edge = constructEdge(name, type2);
edge = edgeService.saveEdge(edge);
edge = edgeService.saveEdge(edge, true);
edgesType2.add(edgeService.assignEdgeToCustomer(tenantId, edge.getId(), customerId));
}
@ -589,12 +589,12 @@ public abstract class BaseEdgeServiceTest extends AbstractServiceTest {
String edgeNameAfterRename = RandomStringUtils.randomAlphanumeric(15);
Edge edge = constructEdge(tenantId, edgeNameBeforeRename, "default");
edgeService.saveEdge(edge);
edgeService.saveEdge(edge, true);
Edge savedEdge = edgeService.findEdgeByTenantIdAndName(tenantId, edgeNameBeforeRename);
savedEdge.setName(edgeNameAfterRename);
edgeService.saveEdge(savedEdge);
edgeService.saveEdge(savedEdge, true);
Edge renamedEdge = edgeService.findEdgeByTenantIdAndName(tenantId, edgeNameBeforeRename);

4
dao/src/test/java/org/thingsboard/server/dao/service/BaseEntityServiceTest.java

@ -224,7 +224,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
List<Edge> edges = new ArrayList<>();
for (int i = 0; i < 97; i++) {
Edge edge = createEdge(i, "default");
edges.add(edgeService.saveEdge(edge));
edges.add(edgeService.saveEdge(edge, true));
}
EdgeTypeFilter filter = new EdgeTypeFilter();
@ -262,7 +262,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
public void testCountHierarchicalEntitiesByEdgeSearchQuery() throws InterruptedException {
for (int i = 0; i < 5; i++) {
Edge edge = createEdge(i, "type" + i);
edge = edgeService.saveEdge(edge);
edge = edgeService.saveEdge(edge, true);
//TO make sure devices have different created time
Thread.sleep(1);

2
dao/src/test/java/org/thingsboard/server/dao/service/BaseRuleChainServiceTest.java

@ -495,7 +495,7 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest {
@Test
public void testFindEdgeRuleChainsByTenantIdAndName() {
Edge edge = constructEdge(tenantId, "My edge", "default");
Edge savedEdge = edgeService.saveEdge(edge);
Edge savedEdge = edgeService.saveEdge(edge, true);
String name1 = "Edge RuleChain name 1";
List<RuleChain> ruleChainsName1 = new ArrayList<>();

Loading…
Cancel
Save