55
66import io .grpc .Status ;
77import java .util .List ;
8+ import javax .annotation .Nullable ;
89import org .hypertrace .core .grpcutils .context .RequestContext ;
910import org .hypertrace .notification .config .service .v1 .CreateNotificationRuleRequest ;
1011import 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