From 18f7c0f96b6ae768d464af6dc773a1575d2684bc Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Tue, 28 Nov 2023 13:25:39 +0200 Subject: [PATCH] Fix downloadResourceIfChanged in TbResourceController; fix resource search text --- .../org/thingsboard/server/controller/ImageController.java | 7 ++++--- .../server/controller/TbResourceController.java | 3 ++- .../org/thingsboard/server/common/data/TbResourceInfo.java | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/controller/ImageController.java b/application/src/main/java/org/thingsboard/server/controller/ImageController.java index 121ecbb921..1cfdd0347b 100644 --- a/application/src/main/java/org/thingsboard/server/controller/ImageController.java +++ b/application/src/main/java/org/thingsboard/server/controller/ImageController.java @@ -19,6 +19,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ByteArrayResource; import org.springframework.http.CacheControl; @@ -41,7 +42,7 @@ import org.springframework.web.multipart.MultipartFile; import org.thingsboard.server.common.data.ImageDescriptor; import org.thingsboard.server.common.data.ImageExportData; import org.thingsboard.server.common.data.ResourceType; -import org.thingsboard.server.common.data.StringUtils; +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.exception.ThingsboardException; @@ -52,12 +53,12 @@ import org.thingsboard.server.common.data.security.Authority; import org.thingsboard.server.dao.resource.ImageService; import org.thingsboard.server.queue.util.TbCoreComponent; import org.thingsboard.server.service.resource.ImageCacheKey; -import org.thingsboard.server.common.data.TbImageDeleteResult; import org.thingsboard.server.service.resource.TbImageService; import org.thingsboard.server.service.security.model.SecurityUser; import org.thingsboard.server.service.security.permission.Operation; import org.thingsboard.server.service.security.permission.Resource; +import javax.servlet.http.HttpServletRequest; import java.util.concurrent.TimeUnit; import static org.thingsboard.server.controller.ControllerConstants.PAGE_NUMBER_DESCRIPTION; @@ -228,7 +229,7 @@ public class ImageController extends BaseController { private ResponseEntity downloadIfChanged(String type, String key, String etag, boolean preview) throws ThingsboardException, JsonProcessingException { ImageCacheKey cacheKey = new ImageCacheKey(getTenantId(type), key, preview); if (StringUtils.isNotEmpty(etag)) { - etag = etag.replaceAll("\"", ""); // TODO: investigate why Spring provides extra quotes. + etag = StringUtils.remove(etag, '\"'); // etag is wrapped in double quotes due to HTTP specification if (etag.equals(tbImageService.getETag(cacheKey))) { return ResponseEntity.status(HttpStatus.NOT_MODIFIED).build(); } diff --git a/application/src/main/java/org/thingsboard/server/controller/TbResourceController.java b/application/src/main/java/org/thingsboard/server/controller/TbResourceController.java index c5445e4465..5a1758f860 100644 --- a/application/src/main/java/org/thingsboard/server/controller/TbResourceController.java +++ b/application/src/main/java/org/thingsboard/server/controller/TbResourceController.java @@ -19,6 +19,7 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.core.io.ByteArrayResource; import org.springframework.http.CacheControl; import org.springframework.http.HttpHeaders; @@ -37,7 +38,6 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.thingsboard.server.common.data.ResourceType; -import org.thingsboard.server.common.data.StringUtils; import org.thingsboard.server.common.data.TbResource; import org.thingsboard.server.common.data.TbResourceInfo; import org.thingsboard.server.common.data.TbResourceInfoFilter; @@ -303,6 +303,7 @@ public class TbResourceController extends BaseController { TbResourceId resourceId = new TbResourceId(toUUID(strResourceId)); if (etag != null) { TbResourceInfo tbResourceInfo = checkResourceInfoId(resourceId, Operation.READ); + etag = StringUtils.remove(etag, '\"'); // etag is wrapped in double quotes due to HTTP specification if (etag.equals(tbResourceInfo.getEtag())) { return ResponseEntity.status(HttpStatus.NOT_MODIFIED) .eTag(tbResourceInfo.getEtag()) diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/TbResourceInfo.java b/common/data/src/main/java/org/thingsboard/server/common/data/TbResourceInfo.java index ad292fdf67..b8d2267663 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/TbResourceInfo.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/TbResourceInfo.java @@ -116,7 +116,7 @@ public class TbResourceInfo extends BaseData implements HasName, H @JsonIgnore public String getSearchText() { - return searchText != null ? searchText : title; + return title; } public T getDescriptor(Class type) throws JsonProcessingException {