Browse Source

Update cache when image info is updated

pull/9846/head
ViacheslavKlimov 3 years ago
parent
commit
8e95b6ef9b
  1. 16
      application/src/main/java/org/thingsboard/server/controller/ImageController.java
  2. 6
      application/src/main/java/org/thingsboard/server/service/resource/DefaultTbImageService.java
  3. 2
      application/src/main/java/org/thingsboard/server/service/resource/TbImageService.java

16
application/src/main/java/org/thingsboard/server/controller/ImageController.java

@ -145,10 +145,11 @@ public class ImageController extends BaseController {
@PathVariable String type,
@ApiParam(value = IMAGE_KEY_PARAM_DESCRIPTION, required = true)
@PathVariable String key,
@RequestBody TbResourceInfo newImageInfo) throws ThingsboardException {
@RequestBody TbResourceInfo request) throws ThingsboardException {
TbResourceInfo imageInfo = checkImageInfo(type, key, Operation.WRITE);
imageInfo.setTitle(newImageInfo.getTitle());
return tbImageService.save(imageInfo, getCurrentUser());
TbResourceInfo newImageInfo = new TbResourceInfo(imageInfo);
newImageInfo.setTitle(request.getTitle());
return tbImageService.save(newImageInfo, imageInfo, getCurrentUser());
}
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')")
@ -159,8 +160,9 @@ public class ImageController extends BaseController {
@PathVariable String key,
@PathVariable boolean isPublic) throws ThingsboardException {
TbResourceInfo imageInfo = checkImageInfo(type, key, Operation.WRITE);
imageInfo.setPublic(isPublic);
return tbImageService.save(imageInfo, getCurrentUser());
TbResourceInfo newImageInfo = new TbResourceInfo(imageInfo);
newImageInfo.setPublic(isPublic);
return tbImageService.save(newImageInfo, imageInfo, getCurrentUser());
}
@PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')")
@ -310,8 +312,8 @@ public class ImageController extends BaseController {
.eTag(descriptor.getEtag());
if (!cacheKey.isPublic()) {
result
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + fileName)
.header("x-filename", fileName);
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + fileName)
.header("x-filename", fileName);
}
if (systemImagesBrowserTtlInMinutes > 0 && imageInfo.getTenantId().isSysTenantId()) {
result.cacheControl(CacheControl.maxAge(systemImagesBrowserTtlInMinutes, TimeUnit.MINUTES));

6
application/src/main/java/org/thingsboard/server/service/resource/DefaultTbImageService.java

@ -134,12 +134,16 @@ public class DefaultTbImageService extends AbstractTbEntityService implements Tb
}
@Override
public TbResourceInfo save(TbResourceInfo imageInfo, User user) {
public TbResourceInfo save(TbResourceInfo imageInfo, TbResourceInfo oldImageInfo, User user) {
TenantId tenantId = imageInfo.getTenantId();
TbResourceId imageId = imageInfo.getId();
try {
imageInfo = imageService.saveImageInfo(imageInfo);
notificationEntityService.logEntityAction(tenantId, imageId, imageInfo, ActionType.UPDATED, user);
if (imageInfo.isPublic() != oldImageInfo.isPublic()) {
evictFromCache(tenantId, List.of(ImageCacheKey.forPublicImage(imageInfo.getPublicResourceKey())));
}
return imageInfo;
} catch (Exception e) {
notificationEntityService.logEntityAction(tenantId, imageId, imageInfo, ActionType.UPDATED, user, e);

2
application/src/main/java/org/thingsboard/server/service/resource/TbImageService.java

@ -25,7 +25,7 @@ public interface TbImageService {
TbResourceInfo save(TbResource image, User user) throws Exception;
TbResourceInfo save(TbResourceInfo imageInfo, User user);
TbResourceInfo save(TbResourceInfo imageInfo, TbResourceInfo oldImageInfo, User user);
TbImageDeleteResult delete(TbResourceInfo imageInfo, User user, boolean force);

Loading…
Cancel
Save