@@ -260,7 +260,7 @@ public final Builder addIdentity(Role role, Identity first, Identity... others)
260260 Binding binding = bindingsList .get (i );
261261 if (binding .getRole ().equals (role .getValue ())) {
262262 Binding .Builder bindingBuilder = binding .toBuilder ();
263- ImmutableList .Builder <String > membersBuilder = ImmutableList .builder ();
263+ ImmutableSet .Builder <String > membersBuilder = ImmutableSet .builder ();
264264 membersBuilder .addAll (binding .getMembers ());
265265 membersBuilder .add (first .strValue ());
266266 for (Identity identity : others ) {
@@ -273,7 +273,7 @@ public final Builder addIdentity(Role role, Identity first, Identity... others)
273273 }
274274 // Binding does not yet exist.
275275 Binding .Builder bindingBuilder = Binding .newBuilder ().setRole (role .getValue ());
276- ImmutableList .Builder <String > membersBuilder = ImmutableList .builder ();
276+ ImmutableSet .Builder <String > membersBuilder = ImmutableSet .builder ();
277277 membersBuilder .add (first .strValue ());
278278 for (Identity identity : others ) {
279279 membersBuilder .add (identity .strValue ());
@@ -432,9 +432,19 @@ public boolean equals(Object obj) {
432432 return false ;
433433 }
434434 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 ()) {
436441 return false ;
437442 }
443+ for (Binding binding : bindingsList ) {
444+ if (!other .getBindingsList ().contains (binding )) {
445+ return false ;
446+ }
447+ }
438448 return Objects .equals (etag , other .getEtag ()) && version == other .getVersion ();
439449 }
440450
0 commit comments