Skip to content

Commit 9e5c7c7

Browse files
author
Praful Makani
authored
fix: nullpointerexception for listroutines and listmodels (#890)
1 parent 4598f6d commit 9e5c7c7

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,8 @@ public Tuple<String, Iterable<Model>> listModels(
388388
.setMaxResults(Option.MAX_RESULTS.getLong(options))
389389
.setPageToken(Option.PAGE_TOKEN.getString(options))
390390
.execute();
391-
Iterable<Model> models = modelList.getModels();
391+
Iterable<Model> models =
392+
modelList.getModels() != null ? modelList.getModels() : ImmutableList.<Model>of();
392393
return Tuple.of(modelList.getNextPageToken(), models);
393394
} catch (IOException ex) {
394395
throw translate(ex);
@@ -456,7 +457,10 @@ public Tuple<String, Iterable<Routine>> listRoutines(
456457
.setMaxResults(Option.MAX_RESULTS.getLong(options))
457458
.setPageToken(Option.PAGE_TOKEN.getString(options))
458459
.execute();
459-
Iterable<Routine> routines = routineList.getRoutines();
460+
Iterable<Routine> routines =
461+
routineList.getRoutines() != null
462+
? routineList.getRoutines()
463+
: ImmutableList.<Routine>of();
460464
return Tuple.of(routineList.getNextPageToken(), routines);
461465
} catch (IOException ex) {
462466
throw translate(ex);

google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ public class ITBigQueryTest {
146146
private static final String MODEL_DATASET = RemoteBigQueryHelper.generateDatasetName();
147147
private static final String ROUTINE_DATASET = RemoteBigQueryHelper.generateDatasetName();
148148
private static final String PROJECT_ID = ServiceOptions.getDefaultProjectId();
149+
private static final String RANDOM_ID = UUID.randomUUID().toString().substring(0, 8);
149150
private static final Map<String, String> LABELS =
150151
ImmutableMap.of(
151152
"example-label1", "example-value1",
@@ -1425,6 +1426,29 @@ public void testModelLifecycle() throws InterruptedException {
14251426
assertTrue(bigquery.delete(modelId));
14261427
}
14271428

1429+
@Test
1430+
public void testEmptyListModels() {
1431+
String datasetId = "test_empty_dataset_list_models_" + RANDOM_ID;
1432+
assertNotNull(bigquery.create(DatasetInfo.of(datasetId)));
1433+
Page<Model> models = bigquery.listModels(datasetId, BigQuery.ModelListOption.pageSize(100));
1434+
assertEquals(0, Iterables.size(models.getValues()));
1435+
assertFalse(models.hasNextPage());
1436+
assertNull(models.getNextPageToken());
1437+
assertTrue(bigquery.delete(datasetId));
1438+
}
1439+
1440+
@Test
1441+
public void testEmptyListRoutines() {
1442+
String datasetId = "test_empty_dataset_list_routines_" + RANDOM_ID;
1443+
assertNotNull(bigquery.create(DatasetInfo.of(datasetId)));
1444+
Page<Routine> routines =
1445+
bigquery.listRoutines(datasetId, BigQuery.RoutineListOption.pageSize(100));
1446+
assertEquals(0, Iterables.size(routines.getValues()));
1447+
assertFalse(routines.hasNextPage());
1448+
assertNull(routines.getNextPageToken());
1449+
assertTrue(bigquery.delete(datasetId));
1450+
}
1451+
14281452
@Test
14291453
public void testRoutineLifecycle() throws InterruptedException {
14301454

0 commit comments

Comments
 (0)