diff --git a/application/src/test/java/org/thingsboard/server/controller/ImageControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/ImageControllerTest.java
index e0eda93d58..1f1a0a0a7d 100644
--- a/application/src/test/java/org/thingsboard/server/controller/ImageControllerTest.java
+++ b/application/src/test/java/org/thingsboard/server/controller/ImageControllerTest.java
@@ -130,13 +130,14 @@ public class ImageControllerTest extends AbstractControllerTest {
checkPngImageDescriptor(imageInfo.getDescriptor(ImageDescriptor.class));
String newFilename = "my_jpeg_image.png";
- imageInfo = uploadImage(HttpMethod.PUT, "/api/images/tenant/" + filename, newFilename, "image/jpeg", JPEG_IMAGE);
+ TbResourceInfo newImageInfo = uploadImage(HttpMethod.PUT, "/api/images/tenant/" + filename, newFilename, "image/jpeg", JPEG_IMAGE);
- assertThat(imageInfo.getTitle()).isEqualTo(filename);
- assertThat(imageInfo.getResourceKey()).isEqualTo(filename);
- assertThat(imageInfo.getFileName()).isEqualTo(newFilename);
+ assertThat(newImageInfo.getTitle()).isEqualTo(filename);
+ assertThat(newImageInfo.getResourceKey()).isEqualTo(filename);
+ assertThat(newImageInfo.getFileName()).isEqualTo(newFilename);
+ assertThat(newImageInfo.getPublicResourceKey()).isEqualTo(imageInfo.getPublicResourceKey());
- ImageDescriptor imageDescriptor = imageInfo.getDescriptor(ImageDescriptor.class);
+ ImageDescriptor imageDescriptor = newImageInfo.getDescriptor(ImageDescriptor.class);
checkJpegImageDescriptor(imageDescriptor);
assertThat(downloadImage("tenant", filename)).containsExactly(JPEG_IMAGE);
@@ -154,12 +155,15 @@ public class ImageControllerTest extends AbstractControllerTest {
assertThat(imageInfo.getFileName()).isEqualTo(filename);
String newTitle = "My PNG image";
- imageInfo.setTitle(newTitle);
- imageInfo.setDescriptor(JacksonUtil.newObjectNode());
- imageInfo = doPut("/api/images/tenant/" + filename + "/info", imageInfo, TbResourceInfo.class);
-
- assertThat(imageInfo.getTitle()).isEqualTo(newTitle);
- assertThat(imageInfo.getDescriptor(ImageDescriptor.class)).isEqualTo(imageDescriptor);
+ TbResourceInfo newImageInfo = new TbResourceInfo(imageInfo);
+ newImageInfo.setTitle(newTitle);
+ newImageInfo.setDescriptor(JacksonUtil.newObjectNode());
+ newImageInfo = doPut("/api/images/tenant/" + filename + "/info", newImageInfo, TbResourceInfo.class);
+
+ assertThat(newImageInfo.getTitle()).isEqualTo(newTitle);
+ assertThat(newImageInfo.getDescriptor(ImageDescriptor.class)).isEqualTo(imageDescriptor);
+ assertThat(newImageInfo.getResourceKey()).isEqualTo(imageInfo.getResourceKey());
+ assertThat(newImageInfo.getPublicResourceKey()).isEqualTo(newImageInfo.getPublicResourceKey());
}
@Test
diff --git a/application/src/test/resources/logback-test.xml b/application/src/test/resources/logback-test.xml
index 3d0ce3f933..981bcab132 100644
--- a/application/src/test/resources/logback-test.xml
+++ b/application/src/test/resources/logback-test.xml
@@ -38,8 +38,6 @@
-
-
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 50ca981c1a..a77923d500 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
@@ -150,12 +150,9 @@ public class BaseImageService extends BaseResourceService implements ImageServic
image.setDescriptorValue(descriptor);
image.setPreview(result.getRight());
- if (StringUtils.isEmpty(image.getPublicResourceKey())) {
+ if (StringUtils.isEmpty(image.getPublicResourceKey()) || (image.getId() == null &&
+ resourceInfoDao.existsByPublicResourceKey(ResourceType.IMAGE, image.getPublicResourceKey()))) {
image.setPublicResourceKey(generatePublicResourceKey());
- } else {
- if (resourceInfoDao.existsByPublicResourceKey(ResourceType.IMAGE, image.getPublicResourceKey())) {
- image.setPublicResourceKey(generatePublicResourceKey());
- }
}
log.debug("[{}] Creating image {} ('{}')", image.getTenantId(), image.getResourceKey(), image.getName());
return new TbResourceInfo(doSaveResource(image));