Browse Source
Merge pull request #9632 from ShvaykaD/fix/validate-nodes-after-upgrade
Save rule chain metadata: validate node configuration only after upgrade
pull/9643/head
Andrew Shvayka
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
8 additions and
4 deletions
-
dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java
-
dao/src/main/java/org/thingsboard/server/dao/service/validator/RuleChainDataValidator.java
|
|
|
@ -155,7 +155,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC |
|
|
|
if (ruleChain == null) { |
|
|
|
return RuleChainUpdateResult.failed(); |
|
|
|
} |
|
|
|
RuleChainDataValidator.validateMetaData(ruleChainMetaData); |
|
|
|
RuleChainDataValidator.validateMetaDataFieldsAndConnections(ruleChainMetaData); |
|
|
|
|
|
|
|
List<RuleNode> nodes = ruleChainMetaData.getNodes(); |
|
|
|
List<RuleNode> toAddOrUpdate = new ArrayList<>(); |
|
|
|
@ -194,6 +194,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC |
|
|
|
for (RuleNode node : toAddOrUpdate) { |
|
|
|
node.setRuleChainId(ruleChainId); |
|
|
|
node = ruleNodeUpdater.apply(node); |
|
|
|
RuleChainDataValidator.validateRuleNode(node); |
|
|
|
RuleNode savedNode = ruleNodeDao.save(tenantId, node); |
|
|
|
relations.add(new EntityRelation(ruleChainMetaData.getRuleChainId(), savedNode.getId(), |
|
|
|
EntityRelation.CONTAINS_TYPE, RelationTypeGroup.RULE_CHAIN)); |
|
|
|
|
|
|
|
@ -87,15 +87,18 @@ public class RuleChainDataValidator extends DataValidator<RuleChain> { |
|
|
|
} |
|
|
|
|
|
|
|
public static List<Throwable> validateMetaData(RuleChainMetaData ruleChainMetaData) { |
|
|
|
ConstraintValidator.validateFields(ruleChainMetaData); |
|
|
|
List<Throwable> throwables = ruleChainMetaData.getNodes().stream() |
|
|
|
validateMetaDataFieldsAndConnections(ruleChainMetaData); |
|
|
|
return ruleChainMetaData.getNodes().stream() |
|
|
|
.map(RuleChainDataValidator::validateRuleNode) |
|
|
|
.filter(Objects::nonNull) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
} |
|
|
|
|
|
|
|
public static void validateMetaDataFieldsAndConnections(RuleChainMetaData ruleChainMetaData) { |
|
|
|
ConstraintValidator.validateFields(ruleChainMetaData); |
|
|
|
if (CollectionUtils.isNotEmpty(ruleChainMetaData.getConnections())) { |
|
|
|
validateCircles(ruleChainMetaData.getConnections()); |
|
|
|
} |
|
|
|
return throwables; |
|
|
|
} |
|
|
|
|
|
|
|
public static Throwable validateRuleNode(RuleNode ruleNode) { |
|
|
|
|