From 21794d13a87eb1986ec41adff3b91b70847b3c40 Mon Sep 17 00:00:00 2001 From: Ajay Kannan Date: Fri, 22 Jan 2016 15:42:58 -0800 Subject: [PATCH] Avoid cast to BuilderImpl --- .../com/google/gcloud/resourcemanager/Project.java | 13 ++++++++++--- .../resourcemanager/ResourceManagerImpl.java | 14 ++++++-------- .../google/gcloud/resourcemanager/ProjectTest.java | 14 +++++++++----- .../resourcemanager/ResourceManagerImplTest.java | 4 +++- .../gcloud/resourcemanager/SerializationTest.java | 2 +- 5 files changed, 29 insertions(+), 18 deletions(-) diff --git a/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/Project.java b/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/Project.java index 59101702bd3c..b4f295514434 100644 --- a/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/Project.java +++ b/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/Project.java @@ -40,7 +40,7 @@ public class Project extends ProjectInfo { public static class Builder extends ProjectInfo.Builder { private final ResourceManager resourceManager; - private ProjectInfo.Builder infoBuilder; + private ProjectInfo.BuilderImpl infoBuilder; Builder(ResourceManager resourceManager) { this.resourceManager = resourceManager; @@ -118,8 +118,8 @@ public Project build() { } } - Project(ResourceManager resourceManager, ProjectInfo.Builder infoBuilder) { - super((BuilderImpl) infoBuilder); + Project(ResourceManager resourceManager, ProjectInfo.BuilderImpl infoBuilder) { + super(infoBuilder); this.resourceManager = checkNotNull(resourceManager); this.options = resourceManager.options(); } @@ -234,4 +234,11 @@ private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundE in.defaultReadObject(); this.resourceManager = options.service(); } + + static Project fromPb( + ResourceManager resourceManager, + com.google.api.services.cloudresourcemanager.model.Project answer) { + ProjectInfo info = ProjectInfo.fromPb(answer); + return new Project(resourceManager, new ProjectInfo.BuilderImpl(info)); + } } 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 2d782cfa1029..e087caab5966 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 @@ -48,15 +48,13 @@ final class ResourceManagerImpl @Override public Project create(final ProjectInfo project) { try { - return new Project( - this, - ProjectInfo.fromPb(runWithRetries( + return Project.fromPb(this, runWithRetries( new Callable() { @Override public com.google.api.services.cloudresourcemanager.model.Project call() { return resourceManagerRpc.create(project.toPb()); } - }, options().retryParams(), EXCEPTION_HANDLER)).toBuilder()); + }, options().retryParams(), EXCEPTION_HANDLER)); } catch (RetryHelperException e) { throw ResourceManagerException.translateAndThrow(e); } @@ -88,7 +86,7 @@ public com.google.api.services.cloudresourcemanager.model.Project call() { return resourceManagerRpc.get(projectId, optionsMap); } }, options().retryParams(), EXCEPTION_HANDLER); - return answer == null ? null : new Project(this, ProjectInfo.fromPb(answer).toBuilder()); + return answer == null ? null : Project.fromPb(this, answer); } catch (RetryHelperException e) { throw ResourceManagerException.translateAndThrow(e); } @@ -142,7 +140,7 @@ Iterable> call() { public Project apply( com.google.api.services.cloudresourcemanager.model.Project projectPb) { return new Project( - serviceOptions.service(), ProjectInfo.fromPb(projectPb).toBuilder()); + serviceOptions.service(), new ProjectInfo.BuilderImpl(ProjectInfo.fromPb(projectPb))); } }); return new PageImpl<>( @@ -155,13 +153,13 @@ public Project apply( @Override public Project replace(final ProjectInfo newProject) { try { - return new Project(this, ProjectInfo.fromPb(runWithRetries( + return Project.fromPb(this, runWithRetries( new Callable() { @Override public com.google.api.services.cloudresourcemanager.model.Project call() { return resourceManagerRpc.replace(newProject.toPb()); } - }, options().retryParams(), EXCEPTION_HANDLER)).toBuilder()); + }, options().retryParams(), EXCEPTION_HANDLER)); } catch (RetryHelperException e) { throw ResourceManagerException.translateAndThrow(e); } diff --git a/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/ProjectTest.java b/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/ProjectTest.java index 8f36f2eb7773..d8903e0817f0 100644 --- a/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/ProjectTest.java +++ b/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/ProjectTest.java @@ -58,7 +58,8 @@ public void setUp() throws Exception { expect(serviceMockReturnsOptions.options()).andReturn(mockOptions).anyTimes(); replay(serviceMockReturnsOptions); resourceManager = createStrictMock(ResourceManager.class); - expectedProject = new Project(serviceMockReturnsOptions, PROJECT_INFO.toBuilder()); + expectedProject = + new Project(serviceMockReturnsOptions, new ProjectInfo.BuilderImpl(PROJECT_INFO)); } @After @@ -67,7 +68,7 @@ public void tearDown() throws Exception { } private void initializeProject() { - project = new Project(resourceManager, PROJECT_INFO.toBuilder()); + project = new Project(resourceManager, new ProjectInfo.BuilderImpl(PROJECT_INFO)); } @Test @@ -105,7 +106,8 @@ public void testGet() { @Test public void testReload() { ProjectInfo newInfo = PROJECT_INFO.toBuilder().addLabel("k3", "v3").build(); - Project expectedProject = new Project(serviceMockReturnsOptions, newInfo.toBuilder()); + Project expectedProject = + new Project(serviceMockReturnsOptions, new ProjectInfo.BuilderImpl(newInfo)); expect(resourceManager.options()).andReturn(mockOptions); expect(resourceManager.get(PROJECT_INFO.projectId())).andReturn(expectedProject); replay(resourceManager); @@ -126,7 +128,8 @@ public void testReloadNull() { expect(resourceManager.options()).andReturn(mockOptions); expect(resourceManager.get(PROJECT_INFO.projectId())).andReturn(null); replay(resourceManager); - Project reloadedProject = new Project(resourceManager, PROJECT_INFO.toBuilder()).reload(); + Project reloadedProject = + new Project(resourceManager, new ProjectInfo.BuilderImpl(PROJECT_INFO)).reload(); assertNull(reloadedProject); } @@ -157,7 +160,8 @@ public void testUndelete() { @Test public void testReplace() { ProjectInfo newInfo = PROJECT_INFO.toBuilder().addLabel("k3", "v3").build(); - Project expectedProject = new Project(serviceMockReturnsOptions, newInfo.toBuilder()); + Project expectedProject = + new Project(serviceMockReturnsOptions, new ProjectInfo.BuilderImpl(newInfo)); expect(resourceManager.options()).andReturn(mockOptions); expect(resourceManager.replace(newInfo)).andReturn(expectedProject); replay(resourceManager); 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 7d8b3e4ed6c8..766ac75e4d49 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 @@ -277,7 +277,9 @@ public void testRetryableException() { .andReturn(PARTIAL_PROJECT.toPb()); EasyMock.replay(resourceManagerRpcMock); Project returnedProject = resourceManagerMock.get(PARTIAL_PROJECT.projectId()); - assertEquals(new Project(resourceManagerMock, PARTIAL_PROJECT.toBuilder()), returnedProject); + assertEquals( + new Project(resourceManagerMock, new ProjectInfo.BuilderImpl(PARTIAL_PROJECT)), + returnedProject); } @Test diff --git a/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/SerializationTest.java b/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/SerializationTest.java index f0651bd863d0..497de880254a 100644 --- a/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/SerializationTest.java +++ b/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/SerializationTest.java @@ -46,7 +46,7 @@ public class SerializationTest { .createTimeMillis(1234L) .build(); private static final Project PROJECT = - new Project(RESOURCE_MANAGER, FULL_PROJECT_INFO.toBuilder()); + new Project(RESOURCE_MANAGER, new ProjectInfo.BuilderImpl(FULL_PROJECT_INFO)); private static final PageImpl PAGE_RESULT = new PageImpl<>(null, "c", Collections.singletonList(PROJECT)); private static final ResourceManager.ProjectGetOption PROJECT_GET_OPTION =