From 4d1a82d50b2e21be39966cd7c66fde2d8ebc8c19 Mon Sep 17 00:00:00 2001 From: Viacheslav Klimov Date: Tue, 28 Jun 2022 13:39:09 +0300 Subject: [PATCH] Fix export/import of deprecated dashboards --- .../server/common/data/Dashboard.java | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java b/common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java index 049c830745..f0d0d88f68 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java @@ -17,19 +17,18 @@ package org.thingsboard.server.common.data; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.google.common.collect.Streams; import io.swagger.annotations.ApiModelProperty; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import org.thingsboard.server.common.data.id.DashboardId; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; -import java.util.stream.StreamSupport; +import java.util.stream.Collectors; @EqualsAndHashCode(callSuper = true) public class Dashboard extends DashboardInfo implements ExportableEntity { @@ -86,17 +85,11 @@ public class Dashboard extends DashboardInfo implements ExportableEntity getChildObjects(String propertyName) { return Optional.ofNullable(configuration) .map(config -> config.get(propertyName)) - .filter(node -> !node.isEmpty()) - .map(node -> (ObjectNode) node) - .map(object -> { - List widgets = new ArrayList<>(object.size()); - object.forEach(child -> { - if (child.isObject()) { - widgets.add((ObjectNode) child); - } - }); - return widgets; - }) + .filter(node -> !node.isEmpty() && (node.isObject() || node.isArray())) + .map(node -> Streams.stream(node.elements()) + .filter(JsonNode::isObject) + .map(jsonNode -> (ObjectNode) jsonNode) + .collect(Collectors.toList())) .orElse(Collections.emptyList()); }