Skip to content

Commit bd371ae

Browse files
Fix rule name duplication check in update (#267)
* Fix rule name duplication check in update
1 parent fada235 commit bd371ae

1 file changed

Lines changed: 11 additions & 7 deletions

File tree

notification-rule-config-service-impl/src/main/java/org/hypertrace/notification/config/service/NotificationRuleConfigServiceRequestValidator.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import io.grpc.Status;
77
import java.util.List;
8+
import javax.annotation.Nullable;
89
import org.hypertrace.core.grpcutils.context.RequestContext;
910
import org.hypertrace.notification.config.service.v1.CreateNotificationRuleRequest;
1011
import org.hypertrace.notification.config.service.v1.DeleteNotificationRuleRequest;
@@ -23,7 +24,7 @@ public void validateCreateNotificationRuleRequest(
2324
List<NotificationRule> existingNotificationRules) {
2425
validateRequestContextOrThrow(requestContext);
2526
validateNonDuplicateNotificationRuleOrThrow(
26-
request.getNotificationRuleMutableData().getRuleName(), existingNotificationRules);
27+
null, request.getNotificationRuleMutableData().getRuleName(), existingNotificationRules);
2728
validateNotificationRuleMutableData(request.getNotificationRuleMutableData());
2829
}
2930

@@ -34,17 +35,20 @@ public void validateUpdateNotificationRuleRequest(
3435
validateRequestContextOrThrow(requestContext);
3536
validateNonDefaultPresenceOrThrow(request, UpdateNotificationRuleRequest.ID_FIELD_NUMBER);
3637
validateNonDuplicateNotificationRuleOrThrow(
37-
request.getNotificationRuleMutableData().getRuleName(), existingNotificationRules);
38+
request.getId(),
39+
request.getNotificationRuleMutableData().getRuleName(),
40+
existingNotificationRules);
3841
validateNotificationRuleMutableData(request.getNotificationRuleMutableData());
3942
}
4043

4144
private void validateNonDuplicateNotificationRuleOrThrow(
42-
String ruleName, List<NotificationRule> existingNotificationRules) {
45+
@Nullable String id, String ruleName, List<NotificationRule> existingNotificationRules) {
4346
for (NotificationRule existingNotificationRule : existingNotificationRules) {
44-
if (existingNotificationRule
45-
.getNotificationRuleMutableData()
46-
.getRuleName()
47-
.equals(ruleName)) {
47+
if (!existingNotificationRule.getId().equals(id)
48+
&& existingNotificationRule
49+
.getNotificationRuleMutableData()
50+
.getRuleName()
51+
.equals(ruleName)) {
4852
throw Status.ALREADY_EXISTS
4953
.withDescription("Notification Rule with the same name already exists.")
5054
.asRuntimeException();

0 commit comments

Comments
 (0)