From db013dee200b44bff6d566eed312b85fffea03e3 Mon Sep 17 00:00:00 2001 From: Mira Leung Date: Mon, 7 Jun 2021 12:36:04 -0700 Subject: [PATCH 1/2] chore: Add comment context on null protobuf check --- .../common/AbstractServiceStubSettingsClassComposer.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index fb2d350011..7c6e6c2859 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -579,6 +579,13 @@ private static Expr createPagedListDescriptorAssignExpr( String.format("get%sList", JavaStyle.toUpperCamelCase(repeatedFieldName))) .setReturnType(returnType) .build(); + + // While protobufs should not be null, this null-check is needed to protect against NPEs + // in paged iteration, as some clients actually return null instead of an empty list. + // Context: + // Original issue: https://github.com/googleapis/google-cloud-java/issues/3736 + // Relevant discussion where this check was first added: + // https://github.com/googleapis/google-cloud-java/pull/4499#discussion_r257057409 Expr conditionExpr = RelationalOperationExpr.equalToWithExprs(getResponsesListExpr, ValueExpr.createNullExpr()); Expr thenExpr = From 6acd0cdc732ec4ffbf6a0c461b4fe0385c723544 Mon Sep 17 00:00:00 2001 From: Mira Leung Date: Wed, 9 Jun 2021 13:59:30 -0700 Subject: [PATCH 2/2] Update AbstractServiceStubSettingsClassComposer.java --- .../common/AbstractServiceStubSettingsClassComposer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index e55630d707..f8452a6f70 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -582,7 +582,8 @@ private static Expr createPagedListDescriptorAssignExpr( .build(); // While protobufs should not be null, this null-check is needed to protect against NPEs - // in paged iteration, as some clients actually return null instead of an empty list. + // in paged iteration on clients that use legacy HTTP/JSON types, as these clients can + // actually return null instead of an empty list. // Context: // Original issue: https://github.com/googleapis/google-cloud-java/issues/3736 // Relevant discussion where this check was first added: