Browse Source

Fix downloadResourceIfChanged in TbResourceController; fix resource search text

pull/9542/head
ViacheslavKlimov 3 years ago
parent
commit
18f7c0f96b
  1. 7
      application/src/main/java/org/thingsboard/server/controller/ImageController.java
  2. 3
      application/src/main/java/org/thingsboard/server/controller/TbResourceController.java
  3. 2
      common/data/src/main/java/org/thingsboard/server/common/data/TbResourceInfo.java

7
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<ByteArrayResource> 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();
}

3
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())

2
common/data/src/main/java/org/thingsboard/server/common/data/TbResourceInfo.java

@ -116,7 +116,7 @@ public class TbResourceInfo extends BaseData<TbResourceId> implements HasName, H
@JsonIgnore
public String getSearchText() {
return searchText != null ? searchText : title;
return title;
}
public <T> T getDescriptor(Class<T> type) throws JsonProcessingException {

Loading…
Cancel
Save