Browse Source

Fix RuleChainMetadata for older Edge versions

- renaming
pull/12843/head
Yevhenii 2 years ago
parent
commit
1675e3aa50
  1. 20
      application/src/main/java/org/thingsboard/server/service/edge/EdgeMsgConstructorUtils.java
  2. 10
      application/src/test/java/org/thingsboard/server/service/edge/EdgeMsgConstructorUtilsTest.java

20
application/src/main/java/org/thingsboard/server/service/edge/EdgeMsgConstructorUtils.java

@ -129,7 +129,7 @@ import java.util.UUID;
@Slf4j
public class EdgeMsgConstructorUtils {
public static final Map<EdgeVersion, Map<String, String>> VERSION_TO_IGNORED_PARAM = Map.of(
public static final Map<EdgeVersion, Map<String, String>> IGNORED_PARAMS_BY_EDGE_VERSION = Map.of(
EdgeVersion.V_3_8_0,
Map.of(
TbMsgTimeseriesNode.class.getName(), "processingSettings",
@ -144,7 +144,7 @@ public class EdgeMsgConstructorUtils {
)
);
public static final Map<EdgeVersion, Set<String>> VERSION_TO_MISSING_NODES = Map.of(
public static final Map<EdgeVersion, Set<String>> EXCLUDED_NODES_BY_EDGE_VERSION = Map.of(
EdgeVersion.V_3_7_0,
Set.of(
TbSendRestApiCallReplyNode.class.getName(),
@ -451,7 +451,7 @@ public class EdgeMsgConstructorUtils {
}
public static RuleChainMetadataUpdateMsg constructRuleChainMetadataUpdatedMsg(UpdateMsgType msgType, RuleChainMetaData ruleChainMetaData, EdgeVersion edgeVersion) {
String metaData = filterMetadataForOldEdgeVersions(ruleChainMetaData, edgeVersion);
String metaData = sanitizeMetadataForLegacyEdgeVersion(ruleChainMetaData, edgeVersion);
return RuleChainMetadataUpdateMsg.newBuilder()
.setMsgType(msgType)
@ -459,21 +459,21 @@ public class EdgeMsgConstructorUtils {
.build();
}
private static String filterMetadataForOldEdgeVersions(RuleChainMetaData ruleChainMetaData, EdgeVersion edgeVersion) {
private static String sanitizeMetadataForLegacyEdgeVersion(RuleChainMetaData ruleChainMetaData, EdgeVersion edgeVersion) {
JsonNode jsonNode = JacksonUtil.valueToTree(ruleChainMetaData);
JsonNode nodes = jsonNode.get("nodes");
changeConfigForOldEdgeVersions(nodes, edgeVersion);
removeMissingNodeForOldEdge(nodes, edgeVersion);
updateNodeConfigurationsForLegacyEdge(nodes, edgeVersion);
removeExcludedNodesForLegacyEdge(nodes, edgeVersion);
return JacksonUtil.toString(jsonNode);
}
private static void changeConfigForOldEdgeVersions(JsonNode nodes, EdgeVersion edgeVersion) {
private static void updateNodeConfigurationsForLegacyEdge(JsonNode nodes, EdgeVersion edgeVersion) {
nodes.forEach(node -> {
if (node.isObject() && node.has("configuration")) {
String nodeType = node.get("type").asText();
Map<String, String> ignoredParams = VERSION_TO_IGNORED_PARAM.get(edgeVersion);
Map<String, String> ignoredParams = IGNORED_PARAMS_BY_EDGE_VERSION.get(edgeVersion);
if (ignoredParams != null && ignoredParams.containsKey(nodeType)) {
((ObjectNode) node.get("configuration")).remove(ignoredParams.get(nodeType));
@ -482,13 +482,13 @@ public class EdgeMsgConstructorUtils {
});
}
private static void removeMissingNodeForOldEdge(JsonNode nodes, EdgeVersion edgeVersion) {
private static void removeExcludedNodesForLegacyEdge(JsonNode nodes, EdgeVersion edgeVersion) {
Iterator<JsonNode> iterator = nodes.iterator();
while (iterator.hasNext()) {
JsonNode node = iterator.next();
String type = node.get("type").asText();
Set<String> missNodes = VERSION_TO_MISSING_NODES.get(edgeVersion);
Set<String> missNodes = EXCLUDED_NODES_BY_EDGE_VERSION.get(edgeVersion);
if (missNodes != null && missNodes.contains(type)) {
iterator.remove();

10
application/src/test/java/org/thingsboard/server/service/edge/EdgeMsgConstructorUtilsTest.java

@ -40,8 +40,8 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
import static org.thingsboard.server.service.edge.EdgeMsgConstructorUtils.VERSION_TO_IGNORED_PARAM;
import static org.thingsboard.server.service.edge.EdgeMsgConstructorUtils.VERSION_TO_MISSING_NODES;
import static org.thingsboard.server.service.edge.EdgeMsgConstructorUtils.EXCLUDED_NODES_BY_EDGE_VERSION;
import static org.thingsboard.server.service.edge.EdgeMsgConstructorUtils.IGNORED_PARAMS_BY_EDGE_VERSION;
@Slf4j
public class EdgeMsgConstructorUtilsTest {
@ -92,8 +92,8 @@ public class EdgeMsgConstructorUtilsTest {
List<RuleNode> ruleNodes = extractRuleNodesFromUpdateMsg(metaData, edgeVersion);
// THEN
int leftNode = VERSION_TO_MISSING_NODES.containsKey(edgeVersion) ?
CONFIG_TO_MISS_NODE_FOR_OLD_EDGE.size() - VERSION_TO_MISSING_NODES.get(edgeVersion).size() :
int leftNode = EXCLUDED_NODES_BY_EDGE_VERSION.containsKey(edgeVersion) ?
CONFIG_TO_MISS_NODE_FOR_OLD_EDGE.size() - EXCLUDED_NODES_BY_EDGE_VERSION.get(edgeVersion).size() :
CONFIG_TO_MISS_NODE_FOR_OLD_EDGE.size();
Assert.assertEquals(leftNode, ruleNodes.size());
@ -136,7 +136,7 @@ public class EdgeMsgConstructorUtilsTest {
ruleNodes.forEach(ruleNode -> {
int configParamCount = NODE_TO_CONFIG_PARAMS_COUNT.get(ruleNode.getType());
boolean isOldEdgeVersion = VERSION_TO_IGNORED_PARAM.entrySet().stream()
boolean isOldEdgeVersion = IGNORED_PARAMS_BY_EDGE_VERSION.entrySet().stream()
.anyMatch(entry -> entry.getKey().equals(edgeVersion) &&
entry.getValue().containsKey(ruleNode.getType()));
int expectedConfigAmount = isOldEdgeVersion ? configParamCount - 1 : configParamCount;

Loading…
Cancel
Save