1919import static com .google .common .base .Preconditions .checkNotNull ;
2020
2121import com .google .common .collect .ImmutableList ;
22+ import com .google .common .collect .Lists ;
2223
2324import java .io .Serializable ;
2425import java .util .ArrayList ;
@@ -122,6 +123,32 @@ public boolean equals(Object obj) {
122123 return obj instanceof Member && Objects .equals (this .memberType , ((Member ) obj ).memberType )
123124 && Objects .equals (this .emailOrDomain , ((Member ) obj ).emailOrDomain );
124125 }
126+
127+ String toPb () {
128+ return emailOrDomain != null ? memberType .prefix () + emailOrDomain : memberType .prefix ();
129+ }
130+
131+ static Member fromPb (String memberPb ) {
132+ String [] memberInfo = memberPb .split (":" , 2 );
133+ String memberStr = memberInfo [0 ];
134+ String emailOrDomain = (memberInfo .length > 1 ) ? memberInfo [1 ] : null ;
135+ switch (memberStr ) {
136+ case "allUsers" :
137+ return new Member (MemberType .ALL_USERS , null );
138+ case "allAuthenticatedUsers" :
139+ return new Member (MemberType .ALL_AUTHENTICATED_USERS , null );
140+ case "user" :
141+ return new Member (MemberType .USER , checkNotNull (emailOrDomain ));
142+ case "serviceAccount" :
143+ return new Member (MemberType .SERVICE_ACCOUNT , checkNotNull (emailOrDomain ));
144+ case "group" :
145+ return new Member (MemberType .GROUP , checkNotNull (emailOrDomain ));
146+ case "domain" :
147+ return new Member (MemberType .DOMAIN , checkNotNull (emailOrDomain ));
148+ default :
149+ throw new UnsupportedOperationException ("Unsupported member type: " + memberStr );
150+ }
151+ }
125152 }
126153
127154 /**
@@ -147,7 +174,7 @@ public Builder role(RoleType role) {
147174 }
148175
149176 public Builder members (List <Member > members ) {
150- this .members = checkNotNull (members );
177+ this .members = Lists . newArrayList ( checkNotNull (members ) );
151178 return this ;
152179 }
153180
@@ -172,15 +199,11 @@ public Binding build() {
172199 }
173200
174201 private Binding (RoleType role , List <Member > members ) {
175- this .role = role ;
176- ImmutableList .Builder <Member > membersListBuilder = new ImmutableList .Builder <>();
177- for (Member member : members ) {
178- membersListBuilder .add (member );
179- }
180- this .members = membersListBuilder .build ();
202+ this .role = checkNotNull (role );
203+ this .members = ImmutableList .copyOf (members );
181204 }
182205
183- public static Binding binding (RoleType role , List <Member > members ) {
206+ public static Binding of (RoleType role , List <Member > members ) {
184207 return new Binding (role , members );
185208 }
186209
@@ -197,26 +220,16 @@ public static Builder builder() {
197220 }
198221
199222 public Builder toBuilder () {
200- List <Member > mutableMembers = new ArrayList <>();
201- for (Member member : members ) {
202- mutableMembers .add (member );
203- }
204- return new Builder ().role (role ).members (mutableMembers );
223+ return new Builder ().role (role ).members (members );
205224 }
206225
207226 com .google .api .services .cloudresourcemanager .model .Binding toPb () {
208227 com .google .api .services .cloudresourcemanager .model .Binding bindingPb =
209228 new com .google .api .services .cloudresourcemanager .model .Binding ();
210- if (role != null ) {
211- bindingPb .setRole ("roles/" + role .toString ().toLowerCase ());
212- }
229+ bindingPb .setRole ("roles/" + role .toString ().toLowerCase ());
213230 List <String > membersPb = new ArrayList <>(members .size ());
214231 for (Member member : members ) {
215- if (member .emailOrDomain () != null ) {
216- membersPb .add (member .type ().prefix () + member .emailOrDomain ());
217- } else {
218- membersPb .add (member .type ().prefix ());
219- }
232+ membersPb .add (member .toPb ());
220233 }
221234 bindingPb .setMembers (membersPb );
222235 return bindingPb ;
@@ -229,31 +242,7 @@ static Binding fromPb(com.google.api.services.cloudresourcemanager.model.Binding
229242 List <Member > members = new ArrayList <>();
230243 if (bindingPb .getMembers () != null ) {
231244 for (String memberPb : bindingPb .getMembers ()) {
232- String [] memberInfo = memberPb .split (":" , 2 );
233- String memberTypeStr = memberInfo [0 ];
234- String emailOrDomain = (memberInfo .length > 1 ) ? emailOrDomain = memberInfo [1 ] : null ;
235- switch (memberTypeStr ) {
236- case "allUsers" :
237- members .add (new Member (MemberType .ALL_USERS , null ));
238- break ;
239- case "allAuthenticatedUsers" :
240- members .add (new Member (MemberType .ALL_AUTHENTICATED_USERS , null ));
241- break ;
242- case "user" :
243- members .add (new Member (MemberType .USER , checkNotNull (emailOrDomain )));
244- break ;
245- case "serviceAccount" :
246- members .add (new Member (MemberType .SERVICE_ACCOUNT , checkNotNull (emailOrDomain )));
247- break ;
248- case "group" :
249- members .add (new Member (MemberType .GROUP , checkNotNull (emailOrDomain )));
250- break ;
251- case "domain" :
252- members .add (new Member (MemberType .DOMAIN , checkNotNull (emailOrDomain )));
253- break ;
254- default :
255- throw new UnsupportedOperationException ("Unsupported member type: " + memberTypeStr );
256- }
245+ members .add (Member .fromPb (memberPb ));
257246 }
258247 }
259248 return new Binding (role , members );
@@ -266,8 +255,7 @@ public int hashCode() {
266255
267256 @ Override
268257 public boolean equals (Object obj ) {
269- return obj instanceof Binding && Objects .equals (this .role , ((Binding ) obj ).role )
270- && Objects .equals (this .members , ((Binding ) obj ).members );
258+ return obj instanceof Binding && Objects .equals (toPb (), ((Binding ) obj ).toPb ());
271259 }
272260 }
273261
@@ -296,7 +284,7 @@ public Builder clearBindings() {
296284 }
297285
298286 public Builder bindings (List <Binding > bindings ) {
299- this .bindings = checkNotNull (bindings );
287+ this .bindings = new ArrayList <>( checkNotNull (bindings ) );
300288 return this ;
301289 }
302290
@@ -316,11 +304,7 @@ public Policy build() {
316304 }
317305
318306 Policy (Builder builder ) {
319- ImmutableList .Builder <Binding > bindingsListBuilder = new ImmutableList .Builder <>();
320- for (Binding binding : builder .bindings ) {
321- bindingsListBuilder .add (binding );
322- }
323- bindings = bindingsListBuilder .build ();
307+ bindings = ImmutableList .copyOf (builder .bindings );
324308 version = builder .version ;
325309 etag = builder .etag ;
326310 }
@@ -342,11 +326,7 @@ public static Builder builder() {
342326 }
343327
344328 public Builder toBuilder () {
345- List <Binding > mutableBindings = new ArrayList <>();
346- for (Binding binding : bindings ) {
347- mutableBindings .add (binding );
348- }
349- return new Builder ().bindings (mutableBindings ).etag (etag ).version (version );
329+ return new Builder ().bindings (bindings ).etag (etag ).version (version );
350330 }
351331
352332 @ Override
@@ -356,9 +336,7 @@ public int hashCode() {
356336
357337 @ Override
358338 public boolean equals (Object obj ) {
359- return obj instanceof Policy && Objects .equals (this .bindings , ((Policy ) obj ).bindings )
360- && Objects .equals (this .etag , ((Policy ) obj ).etag )
361- && Objects .equals (this .version , ((Policy ) obj ).version );
339+ return obj instanceof Policy && Objects .equals (toPb (), ((Policy ) obj ).toPb ());
362340 }
363341
364342 com .google .api .services .cloudresourcemanager .model .Policy toPb () {
0 commit comments