diff --git a/gcloud-java-core/pom.xml b/gcloud-java-core/pom.xml
index 67d3af27d1a8..3463f40b52bd 100644
--- a/gcloud-java-core/pom.xml
+++ b/gcloud-java-core/pom.xml
@@ -16,18 +16,6 @@
gcloud-java-core
-
- com.google.apis
- google-api-services-cloudresourcemanager
- v1beta1-rev10-1.21.0
- compile
-
-
- com.google.guava
- guava-jdk5
-
-
-
com.google.auth
google-auth-library-credentials
diff --git a/gcloud-java-core/src/main/java/com/google/gcloud/IamPolicy.java b/gcloud-java-core/src/main/java/com/google/gcloud/IamPolicy.java
index 31099729564a..a16ab790b363 100644
--- a/gcloud-java-core/src/main/java/com/google/gcloud/IamPolicy.java
+++ b/gcloud-java-core/src/main/java/com/google/gcloud/IamPolicy.java
@@ -18,9 +18,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
-import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
import java.io.Serializable;
import java.util.Arrays;
@@ -176,44 +174,7 @@ public boolean equals(Object obj) {
return false;
}
Identity other = (Identity) obj;
- return Objects.equals(toPb(), other.toPb());
- }
-
- String toPb() {
- switch (type) {
- case ALL_USERS:
- return "allUsers";
- case ALL_AUTHENTICATED_USERS:
- return "allAuthenticatedUsers";
- case USER:
- return "user:" + id;
- case SERVICE_ACCOUNT:
- return "serviceAccount:" + id;
- case GROUP:
- return "group:" + id;
- default:
- return "domain:" + id;
- }
- }
-
- static Identity fromPb(String identityStr) {
- String[] info = identityStr.split(":");
- switch (info[0]) {
- case "allUsers":
- return allUsers();
- case "allAuthenticatedUsers":
- return allAuthenticatedUsers();
- case "user":
- return user(info[1]);
- case "serviceAccount":
- return serviceAccount(info[1]);
- case "group":
- return group(info[1]);
- case "domain":
- return domain(info[1]);
- default:
- throw new IllegalArgumentException("Unexpected identity type: " + info[0]);
- }
+ return Objects.equals(id, other.id()) && Objects.equals(type, other.type());
}
}
@@ -351,31 +312,7 @@ public boolean equals(Object obj) {
return false;
}
Acl other = (Acl) obj;
- return Objects.equals(toPb(), other.toPb());
- }
-
- com.google.api.services.cloudresourcemanager.model.Binding toPb() {
- com.google.api.services.cloudresourcemanager.model.Binding bindingPb =
- new com.google.api.services.cloudresourcemanager.model.Binding();
- bindingPb.setMembers(Lists.transform(identities, new Function() {
- @Override
- public String apply(Identity identity) {
- return identity.toPb();
- }
- }));
- bindingPb.setRole("roles/" + role);
- return bindingPb;
- }
-
- static Acl fromPb(com.google.api.services.cloudresourcemanager.model.Binding bindingPb) {
- return of(
- bindingPb.getRole().substring("roles/".length()),
- Lists.transform(bindingPb.getMembers(), new Function() {
- @Override
- public Identity apply(String memberPb) {
- return Identity.fromPb(memberPb);
- }
- }));
+ return Objects.equals(identities, other.identities()) && Objects.equals(role, other.role());
}
}
@@ -489,7 +426,8 @@ public boolean equals(Object obj) {
return false;
}
IamPolicy other = (IamPolicy) obj;
- return Objects.equals(toPb(), other.toPb());
+ return Objects.equals(acls, other.acls()) && Objects.equals(etag, other.etag())
+ && Objects.equals(version, other.version());
}
public static Builder builder() {
@@ -499,32 +437,4 @@ public static Builder builder() {
public Builder toBuilder() {
return new Builder().acls(acls).etag(etag).version(version);
}
-
- com.google.api.services.cloudresourcemanager.model.Policy toPb() {
- com.google.api.services.cloudresourcemanager.model.Policy policyPb =
- new com.google.api.services.cloudresourcemanager.model.Policy();
- policyPb.setBindings(Lists.transform(
- acls, new Function() {
- @Override
- public com.google.api.services.cloudresourcemanager.model.Binding apply(Acl acl) {
- return acl.toPb();
- }
- }));
- policyPb.setEtag(etag);
- policyPb.setVersion(version);
- return policyPb;
- }
-
- static IamPolicy fromPb(com.google.api.services.cloudresourcemanager.model.Policy policyPb) {
- Builder builder = new Builder();
- builder.acls(Lists.transform(
- policyPb.getBindings(),
- new Function() {
- @Override
- public Acl apply(com.google.api.services.cloudresourcemanager.model.Binding binding) {
- return Acl.fromPb(binding);
- }
- }));
- return builder.etag(policyPb.getEtag()).version(policyPb.getVersion()).build();
- }
}
diff --git a/gcloud-java-core/src/test/java/com/google/gcloud/IamPolicyTest.java b/gcloud-java-core/src/test/java/com/google/gcloud/IamPolicyTest.java
index a87a0b5f287d..b1a7a4e57c14 100644
--- a/gcloud-java-core/src/test/java/com/google/gcloud/IamPolicyTest.java
+++ b/gcloud-java-core/src/test/java/com/google/gcloud/IamPolicyTest.java
@@ -55,16 +55,6 @@ public void testIdentityOf() {
assertEquals("google.com", DOMAIN.id());
}
- @Test
- public void testIdentityToAndFromPb() {
- assertEquals(ALL_USERS, Identity.fromPb(ALL_USERS.toPb()));
- assertEquals(ALL_AUTHENTICATED_USERS, Identity.fromPb(ALL_AUTHENTICATED_USERS.toPb()));
- assertEquals(USER, Identity.fromPb(USER.toPb()));
- assertEquals(SERVICE_ACCOUNT, Identity.fromPb(SERVICE_ACCOUNT.toPb()));
- assertEquals(GROUP, Identity.fromPb(GROUP.toPb()));
- assertEquals(DOMAIN, Identity.fromPb(DOMAIN.toPb()));
- }
-
@Test
public void testAclBuilder() {
Acl acl = Acl.builder("owner").addIdentity(USER, GROUP).build();
@@ -92,11 +82,6 @@ public void testAclToBuilder() {
assertEquals(ACL1, ACL1.toBuilder().build());
}
- @Test
- public void testAclToAndFromPb() {
- assertEquals(ACL1, Acl.fromPb(ACL1.toPb()));
- }
-
@Test
public void testIamPolicyBuilder() {
assertEquals(ImmutableList.of(ACL1, ACL2), FULL_POLICY.acls());
@@ -117,10 +102,4 @@ public void testIamPolicyToBuilder() {
assertEquals(FULL_POLICY, FULL_POLICY.toBuilder().build());
assertEquals(SIMPLE_POLICY, SIMPLE_POLICY.toBuilder().build());
}
-
- @Test
- public void testToAndFromPb() {
- assertEquals(FULL_POLICY, IamPolicy.fromPb(FULL_POLICY.toPb()));
- assertEquals(SIMPLE_POLICY, IamPolicy.fromPb(SIMPLE_POLICY.toPb()));
- }
}
diff --git a/gcloud-java-resourcemanager/pom.xml b/gcloud-java-resourcemanager/pom.xml
index 5e77ab48f5b5..1311e4dc1bb5 100644
--- a/gcloud-java-resourcemanager/pom.xml
+++ b/gcloud-java-resourcemanager/pom.xml
@@ -21,6 +21,18 @@
gcloud-java-core
${project.version}
+
+ com.google.apis
+ google-api-services-cloudresourcemanager
+ v1beta1-rev10-1.21.0
+ compile
+
+
+ com.google.guava
+ guava-jdk5
+
+
+
junit
junit
diff --git a/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/ResourceManagerImpl.java b/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/ResourceManagerImpl.java
index 4176b4e610ba..e641f3c75a31 100644
--- a/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/ResourceManagerImpl.java
+++ b/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/ResourceManagerImpl.java
@@ -23,8 +23,12 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.gcloud.BaseService;
+import com.google.gcloud.IamPolicy;
+import com.google.gcloud.IamPolicy.Acl;
+import com.google.gcloud.IamPolicy.Identity;
import com.google.gcloud.Page;
import com.google.gcloud.PageImpl;
import com.google.gcloud.PageImpl.NextPageFetcher;
@@ -189,4 +193,94 @@ public Void call() {
}
return ImmutableMap.copyOf(temp);
}
+
+ static String identityToPb(Identity identity) {
+ switch (identity.type()) {
+ case ALL_USERS:
+ return "allUsers";
+ case ALL_AUTHENTICATED_USERS:
+ return "allAuthenticatedUsers";
+ case USER:
+ return "user:" + identity.id();
+ case SERVICE_ACCOUNT:
+ return "serviceAccount:" + identity.id();
+ case GROUP:
+ return "group:" + identity.id();
+ default:
+ return "domain:" + identity.id();
+ }
+ }
+
+ static Identity identityFromPb(String identityStr) {
+ String[] info = identityStr.split(":");
+ switch (info[0]) {
+ case "allUsers":
+ return Identity.allUsers();
+ case "allAuthenticatedUsers":
+ return Identity.allAuthenticatedUsers();
+ case "user":
+ return Identity.user(info[1]);
+ case "serviceAccount":
+ return Identity.serviceAccount(info[1]);
+ case "group":
+ return Identity.group(info[1]);
+ case "domain":
+ return Identity.domain(info[1]);
+ default:
+ throw new IllegalArgumentException("Unexpected identity type: " + info[0]);
+ }
+ }
+
+ static com.google.api.services.cloudresourcemanager.model.Binding aclToPb(Acl acl) {
+ com.google.api.services.cloudresourcemanager.model.Binding bindingPb =
+ new com.google.api.services.cloudresourcemanager.model.Binding();
+ bindingPb.setMembers(Lists.transform(acl.identities(), new Function() {
+ @Override
+ public String apply(Identity identity) {
+ return identityToPb(identity);
+ }
+ }));
+ bindingPb.setRole("roles/" + acl.role());
+ return bindingPb;
+ }
+
+ static Acl aclFromPb(com.google.api.services.cloudresourcemanager.model.Binding bindingPb) {
+ return Acl.of(
+ bindingPb.getRole().substring("roles/".length()),
+ Lists.transform(bindingPb.getMembers(), new Function() {
+ @Override
+ public Identity apply(String memberPb) {
+ return identityFromPb(memberPb);
+ }
+ }));
+ }
+
+ static com.google.api.services.cloudresourcemanager.model.Policy policyToPb(
+ final IamPolicy policy) {
+ com.google.api.services.cloudresourcemanager.model.Policy policyPb =
+ new com.google.api.services.cloudresourcemanager.model.Policy();
+ policyPb.setBindings(Lists.transform(policy.acls(),
+ new Function() {
+ @Override
+ public com.google.api.services.cloudresourcemanager.model.Binding apply(Acl acl) {
+ return aclToPb(acl);
+ }
+ }));
+ policyPb.setEtag(policy.etag());
+ policyPb.setVersion(policy.version());
+ return policyPb;
+ }
+
+ static IamPolicy policyFromPb(
+ com.google.api.services.cloudresourcemanager.model.Policy policyPb) {
+ IamPolicy.Builder builder = new IamPolicy.Builder();
+ builder.acls(Lists.transform(policyPb.getBindings(),
+ new Function() {
+ @Override
+ public Acl apply(com.google.api.services.cloudresourcemanager.model.Binding binding) {
+ return aclFromPb(binding);
+ }
+ }));
+ return builder.etag(policyPb.getEtag()).version(policyPb.getVersion()).build();
+ }
}
diff --git a/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/ResourceManagerImplTest.java b/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/ResourceManagerImplTest.java
index 37c54718fb4a..8a6f06fcaae3 100644
--- a/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/ResourceManagerImplTest.java
+++ b/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/ResourceManagerImplTest.java
@@ -25,6 +25,9 @@
import static org.junit.Assert.fail;
import com.google.common.collect.ImmutableMap;
+import com.google.gcloud.IamPolicy;
+import com.google.gcloud.IamPolicy.Acl;
+import com.google.gcloud.IamPolicy.Identity;
import com.google.gcloud.Page;
import com.google.gcloud.resourcemanager.ProjectInfo.ResourceId;
import com.google.gcloud.resourcemanager.ResourceManager.ProjectField;
@@ -64,6 +67,18 @@ public class ResourceManagerImplTest {
.parent(PARENT)
.build();
private static final Map EMPTY_RPC_OPTIONS = ImmutableMap.of();
+ private static final Identity ALL_USERS = Identity.allUsers();
+ private static final Identity ALL_AUTHENTICATED_USERS = Identity.allAuthenticatedUsers();
+ private static final Identity USER = Identity.user("abc@gmail.com");
+ private static final Identity SERVICE_ACCOUNT =
+ Identity.serviceAccount("service-account@gmail.com");
+ private static final Identity GROUP = Identity.group("group@gmail.com");
+ private static final Identity DOMAIN = Identity.domain("google.com");
+ private static final Acl ACL1 = Acl.of("viewer", USER, SERVICE_ACCOUNT, ALL_USERS);
+ private static final Acl ACL2 = Acl.of("editor", ALL_AUTHENTICATED_USERS, GROUP, DOMAIN);
+ private static final IamPolicy FULL_POLICY =
+ IamPolicy.builder().addAcl(ACL1, ACL2).etag("etag").version(1).build();
+ private static final IamPolicy SIMPLE_POLICY = IamPolicy.builder().addAcl(ACL1, ACL2).build();
@Rule
public ExpectedException thrown = ExpectedException.none();
@@ -271,6 +286,35 @@ public void testUndelete() {
}
}
+ @Test
+ public void testIdentityToAndFromPb() {
+ assertEquals(ALL_USERS,
+ ResourceManagerImpl.identityFromPb(ResourceManagerImpl.identityToPb(ALL_USERS)));
+ assertEquals(ALL_AUTHENTICATED_USERS,
+ ResourceManagerImpl.identityFromPb(
+ ResourceManagerImpl.identityToPb(ALL_AUTHENTICATED_USERS)));
+ assertEquals(USER, ResourceManagerImpl.identityFromPb(ResourceManagerImpl.identityToPb(USER)));
+ assertEquals(SERVICE_ACCOUNT,
+ ResourceManagerImpl.identityFromPb(ResourceManagerImpl.identityToPb(SERVICE_ACCOUNT)));
+ assertEquals(GROUP,
+ ResourceManagerImpl.identityFromPb(ResourceManagerImpl.identityToPb(GROUP)));
+ assertEquals(DOMAIN,
+ ResourceManagerImpl.identityFromPb(ResourceManagerImpl.identityToPb(DOMAIN)));
+ }
+
+ @Test
+ public void testAclToAndFromPb() {
+ assertEquals(ACL1, ResourceManagerImpl.aclFromPb(ResourceManagerImpl.aclToPb(ACL1)));
+ }
+
+ @Test
+ public void testToAndFromPb() {
+ assertEquals(FULL_POLICY,
+ ResourceManagerImpl.policyFromPb(ResourceManagerImpl.policyToPb(FULL_POLICY)));
+ assertEquals(SIMPLE_POLICY,
+ ResourceManagerImpl.policyFromPb(ResourceManagerImpl.policyToPb(SIMPLE_POLICY)));
+ }
+
@Test
public void testRetryableException() {
ResourceManagerRpcFactory rpcFactoryMock = EasyMock.createMock(ResourceManagerRpcFactory.class);