@@ -260,7 +260,7 @@ public final Builder addIdentity(Role role, Identity first, Identity... others)
260
260
Binding binding = bindingsList .get (i );
261
261
if (binding .getRole ().equals (role .getValue ())) {
262
262
Binding .Builder bindingBuilder = binding .toBuilder ();
263
- ImmutableList .Builder <String > membersBuilder = ImmutableList .builder ();
263
+ ImmutableSet .Builder <String > membersBuilder = ImmutableSet .builder ();
264
264
membersBuilder .addAll (binding .getMembers ());
265
265
membersBuilder .add (first .strValue ());
266
266
for (Identity identity : others ) {
@@ -273,7 +273,7 @@ public final Builder addIdentity(Role role, Identity first, Identity... others)
273
273
}
274
274
// Binding does not yet exist.
275
275
Binding .Builder bindingBuilder = Binding .newBuilder ().setRole (role .getValue ());
276
- ImmutableList .Builder <String > membersBuilder = ImmutableList .builder ();
276
+ ImmutableSet .Builder <String > membersBuilder = ImmutableSet .builder ();
277
277
membersBuilder .add (first .strValue ());
278
278
for (Identity identity : others ) {
279
279
membersBuilder .add (identity .strValue ());
@@ -432,9 +432,19 @@ public boolean equals(Object obj) {
432
432
return false ;
433
433
}
434
434
Policy other = (Policy ) obj ;
435
- if (!bindingsList .equals (other .getBindingsList ())) {
435
+ if (bindingsList == null && other .getBindingsList () == null ) {
436
+ return true ;
437
+ }
438
+ if ((bindingsList == null && other .getBindingsList () != null )
439
+ || bindingsList != null && other .getBindingsList () == null
440
+ || bindingsList .size () != other .getBindingsList ().size ()) {
436
441
return false ;
437
442
}
443
+ for (Binding binding : bindingsList ) {
444
+ if (!other .getBindingsList ().contains (binding )) {
445
+ return false ;
446
+ }
447
+ }
438
448
return Objects .equals (etag , other .getEtag ()) && version == other .getVersion ();
439
449
}
440
450
0 commit comments