From 60b91000f3b4d9c74f6b2aa2d2470fad302a02e5 Mon Sep 17 00:00:00 2001 From: Praful Makani Date: Wed, 28 Nov 2018 20:27:56 +0530 Subject: [PATCH 1/3] Fixes create, update and delete methods --- .../google/cloud/bigquery/BigQueryImpl.java | 23 +++++++++-- .../cloud/bigquery/BigQueryImplTest.java | 38 +++++++++++++++++++ 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java b/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java index 3cfaa9629609..7bca18a421b8 100644 --- a/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java +++ b/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java @@ -160,8 +160,14 @@ public com.google.api.services.bigquery.model.Dataset call() { @Override public Table create(TableInfo tableInfo, TableOption... options) { + // More context about why this: https://github.com/googleapis/google-cloud-java/issues/3808 final com.google.api.services.bigquery.model.Table tablePb = - tableInfo.setProjectId(getOptions().getProjectId()).toPb(); + tableInfo + .setProjectId( + Strings.isNullOrEmpty(tableInfo.getTableId().getProject()) + ? getOptions().getProjectId() + : tableInfo.getTableId().getProject()) + .toPb(); final Map optionsMap = optionMap(options); try { return Table.fromPb(this, @@ -345,7 +351,12 @@ public boolean delete(String datasetId, String tableId) { @Override public boolean delete(TableId tableId) { - final TableId completeTableId = tableId.setProjectId(getOptions().getProjectId()); + final TableId completeTableId = + tableId.setProjectId( + Strings.isNullOrEmpty(tableId.getProject()) + ? getOptions().getProjectId() + : tableId.getProject() + ); try { return runWithRetries(new Callable() { @Override @@ -379,8 +390,14 @@ public com.google.api.services.bigquery.model.Dataset call() { @Override public Table update(TableInfo tableInfo, TableOption... options) { + // More context about why this: https://github.com/googleapis/google-cloud-java/issues/3808 final com.google.api.services.bigquery.model.Table tablePb = - tableInfo.setProjectId(getOptions().getProjectId()).toPb(); + tableInfo + .setProjectId( + Strings.isNullOrEmpty(tableInfo.getTableId().getProject()) + ? getOptions().getProjectId() + : tableInfo.getTableId().getProject()) + .toPb(); final Map optionsMap = optionMap(options); try { return Table.fromPb(this, diff --git a/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryImplTest.java b/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryImplTest.java index 8291045b34d1..a12a92860d45 100644 --- a/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryImplTest.java +++ b/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryImplTest.java @@ -552,6 +552,20 @@ public void testCreateTable() { assertEquals(new Table(bigquery, new TableInfo.BuilderImpl(tableInfo)), table); } + @Test + public void testCreateTableWithoutProject() { + TableInfo tableInfo = TABLE_INFO.setProjectId(PROJECT); + TableId tableId = TableId.of("", TABLE_ID.getDataset(), TABLE_ID.getTable()); + tableInfo.toBuilder().setTableId(tableId); + EasyMock.expect(bigqueryRpcMock.create(tableInfo.toPb(), EMPTY_RPC_OPTIONS)) + .andReturn(tableInfo.toPb()); + EasyMock.replay(bigqueryRpcMock); + BigQueryOptions bigQueryOptions = createBigQueryOptionsForProject(PROJECT, rpcFactoryMock); + bigquery = bigQueryOptions.getService(); + Table table = bigquery.create(tableInfo); + assertEquals(new Table(bigquery, new TableInfo.BuilderImpl(tableInfo)), table); + } + @Test public void testCreateTableWithSelectedFields() { Capture> capturedOptions = Capture.newInstance(); @@ -728,6 +742,16 @@ public void testDeleteTableFromTableIdWithProject() { assertTrue(bigquery.delete(tableId)); } + @Test + public void testDeleteTableFromTableIdWithoutProject() { + TableId tableId = TableId.of("", TABLE_ID.getDataset(), TABLE_ID.getTable()); + EasyMock.expect(bigqueryRpcMock.deleteTable(PROJECT, DATASET, TABLE)).andReturn(true); + EasyMock.replay(bigqueryRpcMock); + BigQueryOptions bigQueryOptions = createBigQueryOptionsForProject(PROJECT, rpcFactoryMock); + bigquery = bigQueryOptions.getService(); + assertTrue(bigquery.delete(tableId)); + } + @Test public void testUpdateTable() { TableInfo updatedTableInfo = @@ -741,6 +765,20 @@ public void testUpdateTable() { assertEquals(new Table(bigquery, new TableInfo.BuilderImpl(updatedTableInfo)), table); } + @Test + public void testUpdateTableWithoutProject() { + TableInfo tableInfo = TABLE_INFO.setProjectId(PROJECT); + TableId tableId = TableId.of("", TABLE_ID.getDataset(), TABLE_ID.getTable()); + tableInfo.toBuilder().setTableId(tableId); + EasyMock.expect(bigqueryRpcMock.patch(tableInfo.toPb(), EMPTY_RPC_OPTIONS)) + .andReturn(tableInfo.toPb()); + EasyMock.replay(bigqueryRpcMock); + BigQueryOptions bigQueryOptions = createBigQueryOptionsForProject(PROJECT, rpcFactoryMock); + bigquery = bigQueryOptions.getService(); + Table table = bigquery.update(tableInfo); + assertEquals(new Table(bigquery, new TableInfo.BuilderImpl(tableInfo)), table); + } + @Test public void testUpdateTableWithSelectedFields() { Capture> capturedOptions = Capture.newInstance(); From ab95626c8bb801a5d242e5ec606d0001df555879 Mon Sep 17 00:00:00 2001 From: Praful Makani Date: Thu, 29 Nov 2018 13:13:28 +0530 Subject: [PATCH 2/3] remove comments --- .../src/main/java/com/google/cloud/bigquery/BigQueryImpl.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java b/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java index 7bca18a421b8..fd83eac629bd 100644 --- a/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java +++ b/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java @@ -160,7 +160,6 @@ public com.google.api.services.bigquery.model.Dataset call() { @Override public Table create(TableInfo tableInfo, TableOption... options) { - // More context about why this: https://github.com/googleapis/google-cloud-java/issues/3808 final com.google.api.services.bigquery.model.Table tablePb = tableInfo .setProjectId( @@ -390,7 +389,6 @@ public com.google.api.services.bigquery.model.Dataset call() { @Override public Table update(TableInfo tableInfo, TableOption... options) { - // More context about why this: https://github.com/googleapis/google-cloud-java/issues/3808 final com.google.api.services.bigquery.model.Table tablePb = tableInfo .setProjectId( From cf241c9d75f46a39ff717656b1e06296692ab0a0 Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Thu, 29 Nov 2018 16:29:31 -0800 Subject: [PATCH 3/3] Fix formatting --- .../main/java/com/google/cloud/bigquery/BigQueryImpl.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java b/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java index fd83eac629bd..7800effb8e4d 100644 --- a/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java +++ b/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java @@ -350,11 +350,10 @@ public boolean delete(String datasetId, String tableId) { @Override public boolean delete(TableId tableId) { - final TableId completeTableId = - tableId.setProjectId( + final TableId completeTableId = tableId.setProjectId( Strings.isNullOrEmpty(tableId.getProject()) - ? getOptions().getProjectId() - : tableId.getProject() + ? getOptions().getProjectId() + : tableId.getProject() ); try { return runWithRetries(new Callable() {