From 8594ea3e6337c63486e2726343d8471252f0b11c Mon Sep 17 00:00:00 2001 From: dashevchenko Date: Tue, 7 Apr 2026 14:25:30 +0300 Subject: [PATCH] refactoring --- .../controller/AlarmCommentController.java | 4 +--- .../controller/AlarmCommentControllerTest.java | 17 ++++++++++------- .../validator/AlarmCommentDataValidator.java | 14 ++++++++------ 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/controller/AlarmCommentController.java b/application/src/main/java/org/thingsboard/server/controller/AlarmCommentController.java index 1874170139..937eded7ca 100644 --- a/application/src/main/java/org/thingsboard/server/controller/AlarmCommentController.java +++ b/application/src/main/java/org/thingsboard/server/controller/AlarmCommentController.java @@ -79,9 +79,7 @@ public class AlarmCommentController extends BaseController { AlarmId alarmId = new AlarmId(toUUID(strAlarmId)); Alarm alarm = checkAlarmInfoId(alarmId, Operation.WRITE); alarmComment.setAlarmId(alarmId); - if (alarmComment.getType() == AlarmCommentType.SYSTEM) { - throw new ThingsboardException("You can`t create or update SYSTEM comments", ThingsboardErrorCode.BAD_REQUEST_PARAMS); - } + alarmComment.setType(AlarmCommentType.OTHER); return tbAlarmCommentService.saveAlarmComment(alarm, alarmComment, getCurrentUser()); } diff --git a/application/src/test/java/org/thingsboard/server/controller/AlarmCommentControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/AlarmCommentControllerTest.java index 231b72a7fb..5ef04764d0 100644 --- a/application/src/test/java/org/thingsboard/server/controller/AlarmCommentControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/AlarmCommentControllerTest.java @@ -366,26 +366,29 @@ public class AlarmCommentControllerTest extends AbstractControllerTest { .type(AlarmCommentType.SYSTEM) .comment(JacksonUtil.newObjectNode().set("text", new TextNode("Acknowledged by tenant admin"))) .build(); - doPost("/api/alarm/" + alarm.getId() + "/comment", alarmComment).andExpect(status().isBadRequest()); + AlarmComment created = doPost("/api/alarm/" + alarm.getId() + "/comment", alarmComment, AlarmComment.class); + assertThat(created.getType()).isEqualTo(AlarmCommentType.OTHER); // acknowledge alarm to create system comment doPost("/api/alarm/" + alarm.getId() + "/ack").andExpect(status().isOk()); Optional systemCommentOpt = doGetTyped( - "/api/alarm/" + alarm.getId() + "/comment" + "?page=0&pageSize=1", new TypeReference>() { + "/api/alarm/" + alarm.getId() + "/comment" + "?page=0&pageSize=10", new TypeReference>() { } ).getData().stream().filter(alarmCommentInfo -> alarmCommentInfo.getType().equals(AlarmCommentType.SYSTEM)).findFirst(); assertThat(systemCommentOpt).isPresent(); AlarmCommentInfo systemComment = systemCommentOpt.get(); - systemComment.setComment(JacksonUtil.newObjectNode().set("text", new TextNode("New system comment"))); + // system comment can't be updated with other type + systemComment.setType(AlarmCommentType.OTHER); doPost("/api/alarm/" + alarm.getId() + "/comment", systemComment).andExpect(status().isBadRequest()) - .andExpect(statusReason(containsString("You can`t create or update SYSTEM comments"))); + .andExpect(statusReason(containsString("System alarm comment can't be updated!"))); - // type of comment could not be changed - systemComment.setType(AlarmCommentType.OTHER); + // system comment can't be updated with other text + systemComment.setType(AlarmCommentType.SYSTEM); + systemComment.setComment(JacksonUtil.newObjectNode().set("text", new TextNode("New system comment"))); doPost("/api/alarm/" + alarm.getId() + "/comment", systemComment).andExpect(status().isBadRequest()) - .andExpect(statusReason(containsString("System alarm comment type can't be updated!"))); + .andExpect(statusReason(containsString("System alarm comment can't be updated!"))); } private AlarmComment createAlarmComment(AlarmId alarmId, String text) { diff --git a/dao/src/main/java/org/thingsboard/server/dao/service/validator/AlarmCommentDataValidator.java b/dao/src/main/java/org/thingsboard/server/dao/service/validator/AlarmCommentDataValidator.java index 4951eed8a5..0360386559 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/service/validator/AlarmCommentDataValidator.java +++ b/dao/src/main/java/org/thingsboard/server/dao/service/validator/AlarmCommentDataValidator.java @@ -21,7 +21,7 @@ import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.alarm.AlarmComment; import org.thingsboard.server.common.data.alarm.AlarmCommentType; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.dao.alarm.AlarmCommentService; +import org.thingsboard.server.dao.alarm.AlarmCommentDao; import org.thingsboard.server.dao.exception.DataValidationException; import org.thingsboard.server.dao.service.DataValidator; @@ -29,8 +29,7 @@ import org.thingsboard.server.dao.service.DataValidator; @AllArgsConstructor public class AlarmCommentDataValidator extends DataValidator { - @Autowired - AlarmCommentService alarmCommentService; + private final AlarmCommentDao alarmCommentDao; @Override protected void validateDataImpl(TenantId tenantId, AlarmComment alarmComment) { @@ -46,9 +45,12 @@ public class AlarmCommentDataValidator extends DataValidator { protected AlarmComment validateUpdate(TenantId tenantId, AlarmComment alarmComment) { AlarmComment oldAlarmComment = null; if (alarmComment.getId() != null) { - oldAlarmComment = alarmCommentService.findAlarmCommentById(tenantId, alarmComment.getId()); - if (oldAlarmComment.getType() == AlarmCommentType.SYSTEM && alarmComment.getType() != AlarmCommentType.SYSTEM) { - throw new DataValidationException("System alarm comment type can't be updated!"); + oldAlarmComment = alarmCommentDao.findAlarmCommentById(tenantId, alarmComment.getId().getId()); + if (oldAlarmComment == null) { + throw new DataValidationException("Can't update non existing alarm comment!"); + } + if (oldAlarmComment.getType() == AlarmCommentType.SYSTEM) { + throw new DataValidationException("System alarm comment can't be updated!"); } } return oldAlarmComment;