diff --git a/application/src/main/java/org/thingsboard/server/service/resource/TbImageService.java b/application/src/main/java/org/thingsboard/server/service/resource/TbImageService.java index 2bfb9c3dd2..c29cc6ad3b 100644 --- a/application/src/main/java/org/thingsboard/server/service/resource/TbImageService.java +++ b/application/src/main/java/org/thingsboard/server/service/resource/TbImageService.java @@ -15,13 +15,10 @@ */ package org.thingsboard.server.service.resource; -import org.thingsboard.server.common.data.Dashboard; -import org.thingsboard.server.common.data.HasImage; import org.thingsboard.server.common.data.TbImageDeleteResult; import org.thingsboard.server.common.data.TbResource; import org.thingsboard.server.common.data.TbResourceInfo; import org.thingsboard.server.common.data.User; -import org.thingsboard.server.common.data.widget.WidgetTypeDetails; import org.thingsboard.server.dao.resource.ImageCacheKey; public interface TbImageService { diff --git a/dao/src/main/java/org/thingsboard/server/dao/resource/BaseImageService.java b/dao/src/main/java/org/thingsboard/server/dao/resource/BaseImageService.java index 4f08c8f494..1f979da609 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/resource/BaseImageService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/resource/BaseImageService.java @@ -66,6 +66,7 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Queue; import java.util.Set; import java.util.regex.Pattern; @@ -285,8 +286,10 @@ public class BaseImageService extends BaseResourceService implements ImageServic boolean updated = result.isUpdated(); if (entity.getDescriptor().isObject()) { ObjectNode descriptor = (ObjectNode) entity.getDescriptor(); - JsonNode defaultConfig = JacksonUtil.toJsonNode(descriptor.get("defaultConfig").asText()); - if (defaultConfig != null && defaultConfig.isObject()) { + JsonNode defaultConfig = Optional.ofNullable(descriptor.get("defaultConfig")) + .filter(JsonNode::isTextual).map(JsonNode::asText) + .map(JacksonUtil::toJsonNode).orElse(null); + if (defaultConfig != null) { updated |= base64ToImageUrlUsingMapping(entity.getTenantId(), WIDGET_TYPE_BASE64_MAPPING, Collections.singletonMap("prefix", prefix), defaultConfig); descriptor.put("defaultConfig", defaultConfig.toString()); } @@ -446,6 +449,9 @@ public class BaseImageService extends BaseResourceService implements ImageServic while (!tasks.isEmpty()) { JsonNodeProcessingTask task = tasks.poll(); JsonNode node = task.getNode(); + if (node == null) { + continue; + } String currentPath = StringUtils.isBlank(task.getPath()) ? "" : (task.getPath() + " "); if (node.isObject()) { ObjectNode on = (ObjectNode) node; diff --git a/dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java b/dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java index d935409afb..eb34f434b1 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java @@ -132,7 +132,6 @@ public class BaseResourceService extends AbstractCachedEntityService