Skip to content

Commit 73cff3c

Browse files
author
Ajay Kannan
committed
---
yaml --- r: 2041 b: refs/heads/pubsub-alpha c: 9d6fbff h: refs/heads/master i: 2039: 02c6813
1 parent 40a75e4 commit 73cff3c

12 files changed

Lines changed: 296 additions & 257 deletions

File tree

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ refs/heads/master: 689bbb466df4b2d5d2483d6edb8ac5c7c7f7c6fa
33
refs/heads/travis: e21ee7b88a5edc3f3d8c71f90c3fc32abf7e8dd6
44
refs/heads/gh-pages: 4e0561bb4504bf647db669a14417b2b2c87ba45d
55
refs/heads/bigquery: 762fa5830e6c398c0396177e3e7fd243bd62cfc3
6-
refs/heads/pubsub-alpha: 65a6240d9dda87434786e016e3cc2cd4d5d26f53
6+
refs/heads/pubsub-alpha: 9d6fbff4ea8172f01a64a51dc78f58131e5120f0
77
refs/heads/resource-manager: ebf4adc5ee835cd2086c4ac5b4e78d01a5a005a7
88
refs/heads/update-datastore: 482954f2c5055231e5b3122ea91d2ba00ce8187c
99
refs/tags/0.0.9: 22f1839238f66c39e67ed4dfdcd273b1ae2e8444

branches/pubsub-alpha/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/Policy.java

Lines changed: 40 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static com.google.common.base.Preconditions.checkNotNull;
2020

2121
import com.google.common.collect.ImmutableList;
22+
import com.google.common.collect.Lists;
2223

2324
import java.io.Serializable;
2425
import 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() {

branches/pubsub-alpha/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/Project.java

Lines changed: 56 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import com.google.gcloud.spi.ResourceManagerRpc.Permission;
2222

23-
import java.util.ArrayList;
2423
import java.util.List;
2524

2625
/**
@@ -35,12 +34,22 @@ public class Project {
3534
private final ProjectInfo info;
3635
private final Policy policy;
3736

37+
/**
38+
* Constructs a Project object that contains the ProjectInfo and Policy given.
39+
*/
3840
public Project(ResourceManager resourceManager, ProjectInfo projectInfo, Policy policy) {
3941
this.resourceManager = checkNotNull(resourceManager);
4042
this.info = checkNotNull(projectInfo);
4143
this.policy = checkNotNull(policy);
4244
}
4345

46+
/**
47+
* Constructs a Project object that contains project and policy information loaded from the
48+
* server.
49+
*
50+
* @return Project object containing the project's metadata and IAM policy
51+
* @throws ResourceManagerException upon failure
52+
*/
4453
public static Project load(ResourceManager resourceManager, String projectId) {
4554
ProjectInfo projectInfo = resourceManager.get(projectId);
4655
Policy policy = resourceManager.getIamPolicy(projectId);
@@ -59,38 +68,76 @@ public ResourceManager resourceManager() {
5968
return resourceManager;
6069
}
6170

71+
/**
72+
* Returns a Project object with updated project and policy information.
73+
*
74+
* @return Project object containing the project's updated metadata and IAM policy
75+
* @throws ResourceManagerException upon failure
76+
*/
6277
public Project reload() {
6378
return new Project(
6479
resourceManager, resourceManager.get(info.id()), resourceManager.getIamPolicy(info.id()));
6580
}
6681

82+
/**
83+
* Requests that this project be deleted. For an unspecified amount of time, this action can be
84+
* undone by calling {@link #undelete}.
85+
*
86+
* @throws ResourceManagerException upon failure
87+
*/
6788
public void delete() {
6889
resourceManager.delete(info.id());
6990
}
7091

92+
/**
93+
* Requests that a project's lifecycle status be changed from {@code DELETE_REQUESTED} to
94+
* {@code ACTIVE}.
95+
*
96+
* @throws ResourceManagerException upon failure
97+
*/
7198
public void undelete() {
7299
resourceManager.undelete(info.id());
73100
}
74101

102+
/**
103+
* Replaces the project metadata (not including the IAM policy) using the given ProjectInfo.
104+
*
105+
* @return Project object containing the project's updated metadata
106+
* @throws ResourceManagerException upon failure
107+
*/
75108
public Project replace(ProjectInfo projectInfo) {
76109
return new Project(resourceManager, resourceManager.replace(checkNotNull(projectInfo)), policy);
77110
}
78111

112+
/**
113+
* Replaces the project's IAM policy using the given policy.
114+
*
115+
* @return Project object containing the project's updated IAM policy
116+
* @throws ResourceManagerException upon failure
117+
*/
79118
public Project replaceIamPolicy(Policy policy) {
80119
return new Project(
81120
resourceManager, info, resourceManager.replaceIamPolicy(info.id(), checkNotNull(policy)));
82121
}
83122

84-
public List<Boolean> hasPermissions(Permission first, Permission... others) {
85-
List<Permission> permissions = new ArrayList<>();
86-
permissions.add(first);
87-
for (Permission other : others) {
88-
permissions.add(other);
89-
}
123+
/**
124+
* Returns whether the caller has the permissions specified in the parameters.
125+
*
126+
* @return List of booleans representing whether the user has the corresponding permission
127+
* provided as a parameter
128+
* @throws ResourceManagerException upon failure
129+
*/
130+
public List<Boolean> hasPermissions(Permission... permissions) {
90131
return resourceManager.hasPermissions(info.id(), permissions);
91132
}
92133

93-
public boolean hasAllPermissions(Permission first, Permission... others) {
94-
return !(hasPermissions(first, others).contains(false));
134+
/**
135+
* Returns whether the caller has all the permissions specified in the parameters.
136+
*
137+
* @return true if the caller has all the permissions specified, otherwise false.
138+
* @throws ResourceManagerException upon failure
139+
*/
140+
public boolean hasAllPermissions(Permission... permissions) {
141+
return !(hasPermissions(permissions).contains(false));
95142
}
96143
}

branches/pubsub-alpha/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/ProjectInfo.java

Lines changed: 13 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import static com.google.common.base.Preconditions.checkNotNull;
1818

1919
import com.google.common.collect.ImmutableMap;
20+
import com.google.common.collect.Maps;
2021

2122
import org.joda.time.DateTime;
2223
import org.joda.time.format.ISODateTimeFormat;
@@ -86,7 +87,7 @@ public Builder clearLabels() {
8687
}
8788

8889
public Builder labels(Map<String, String> labels) {
89-
this.labels = checkNotNull(labels);
90+
this.labels = Maps.newHashMap(checkNotNull(labels));
9091
return this;
9192
}
9293

@@ -111,23 +112,18 @@ public Builder parent(ResourceId parent) {
111112
}
112113

113114
public ProjectInfo build() {
114-
return new ProjectInfo(name, id, labels, number, state, createTimeMillis, parent);
115+
return new ProjectInfo(this);
115116
}
116117
}
117118

118-
ProjectInfo(String name, String id, Map<String, String> labels, Long number, State state,
119-
Long createTimeMillis, ResourceId parent) {
120-
this.name = name;
121-
this.id = checkNotNull(id);
122-
ImmutableMap.Builder<String, String> labelsMapBuilder = ImmutableMap.builder();
123-
for (Map.Entry<String, String> entry : labels.entrySet()) {
124-
labelsMapBuilder.put(entry.getKey(), entry.getValue());
125-
}
126-
this.labels = (labels == null) ? null : labelsMapBuilder.build();
127-
this.number = number;
128-
this.state = state;
129-
this.createTimeMillis = createTimeMillis;
130-
this.parent = parent;
119+
ProjectInfo(Builder builder) {
120+
this.name = builder.name;
121+
this.id = checkNotNull(builder.id);
122+
this.labels = ImmutableMap.copyOf(builder.labels);
123+
this.number = builder.number;
124+
this.state = builder.state;
125+
this.createTimeMillis = builder.createTimeMillis;
126+
this.parent = builder.parent;
131127
}
132128

133129
public String id() {
@@ -160,17 +156,7 @@ public ResourceId parent() {
160156

161157
@Override
162158
public boolean equals(Object obj) {
163-
if (obj == this) {
164-
return true;
165-
} else if (obj instanceof ProjectInfo) {
166-
ProjectInfo other = (ProjectInfo) obj;
167-
return Objects.equals(this.name, other.name) && Objects.equals(this.id, other.id)
168-
&& Objects.equals(this.labels, other.labels) && Objects.equals(this.number, other.number)
169-
&& Objects.equals(this.state, other.state)
170-
&& Objects.equals(this.createTimeMillis, other.createTimeMillis)
171-
&& Objects.equals(this.parent, other.parent);
172-
}
173-
return false;
159+
return obj instanceof ProjectInfo && Objects.equals(toPb(), ((ProjectInfo) obj).toPb());
174160
}
175161

176162
@Override
@@ -183,14 +169,10 @@ public static Builder builder(String id) {
183169
}
184170

185171
public Builder toBuilder() {
186-
Map<String, String> mutableLabels = new HashMap<String, String>();
187-
for (Map.Entry<String, String> entry : labels.entrySet()) {
188-
mutableLabels.put(entry.getKey(), entry.getValue());
189-
}
190172
return new Builder()
191173
.name(name)
192174
.id(id)
193-
.labels(mutableLabels)
175+
.labels(labels)
194176
.number(number)
195177
.state(state)
196178
.createTimeMillis(createTimeMillis)

0 commit comments

Comments
 (0)