From 11be2b94d77bfe78cb97834d5fbaff378fe1fc9d Mon Sep 17 00:00:00 2001 From: Dongie Agnir Date: Wed, 3 Oct 2018 15:32:56 -0700 Subject: [PATCH] Don't generate item paginator for non-containers Related to #693 --- .../poet/paginators/AsyncResponseClassSpec.java | 10 +++++++++- .../codegen/poet/paginators/SyncResponseClassSpec.java | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/paginators/AsyncResponseClassSpec.java b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/paginators/AsyncResponseClassSpec.java index 0a415366db33..8c2e6f617c15 100644 --- a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/paginators/AsyncResponseClassSpec.java +++ b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/paginators/AsyncResponseClassSpec.java @@ -25,6 +25,7 @@ import com.squareup.javapoet.WildcardTypeName; import java.util.Collections; import java.util.Iterator; +import java.util.Objects; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; import java.util.function.Function; @@ -158,6 +159,7 @@ private Iterable getMethodSpecsForResultKeyList() { if (paginatorDefinition.getResultKey() != null) { return paginatorDefinition.getResultKey().stream() .map(this::getMethodsSpecForSingleResultKey) + .filter(Objects::nonNull) .collect(Collectors.toList()); } return Collections.emptyList(); @@ -182,9 +184,15 @@ private Iterable getMethodSpecsForResultKeyList() { * } */ private MethodSpec getMethodsSpecForSingleResultKey(String resultKey) { - TypeName resultKeyType = getTypeForResultKey(resultKey); MemberModel resultKeyModel = memberModelForResponseMember(resultKey); + // TODO: Support other types besides List or Map + if (!(resultKeyModel.isList() || resultKeyModel.isMap())) { + return null; + } + + TypeName resultKeyType = getTypeForResultKey(resultKey); + return MethodSpec.methodBuilder(resultKeyModel.getFluentGetterMethodName()) .addModifiers(Modifier.PUBLIC, Modifier.FINAL) .returns(ParameterizedTypeName.get(ClassName.get(SdkPublisher.class), resultKeyType)) diff --git a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/paginators/SyncResponseClassSpec.java b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/paginators/SyncResponseClassSpec.java index c538834f4c9c..5976b8102485 100644 --- a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/paginators/SyncResponseClassSpec.java +++ b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/paginators/SyncResponseClassSpec.java @@ -24,6 +24,7 @@ import com.squareup.javapoet.TypeSpec; import java.util.Collections; import java.util.Iterator; +import java.util.Objects; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -132,6 +133,7 @@ private Iterable getMethodSpecsForResultKeyList() { if (paginatorDefinition.getResultKey() != null) { return paginatorDefinition.getResultKey().stream() .map(this::getMethodsSpecForSingleResultKey) + .filter(Objects::nonNull) .collect(Collectors.toList()); } return Collections.emptyList(); @@ -154,9 +156,15 @@ private Iterable getMethodSpecsForResultKeyList() { * } */ private MethodSpec getMethodsSpecForSingleResultKey(String resultKey) { - TypeName resultKeyType = getTypeForResultKey(resultKey); MemberModel resultKeyModel = memberModelForResponseMember(resultKey); + // TODO: Support other types besides List or Map + if (!(resultKeyModel.isList() || resultKeyModel.isMap())) { + return null; + } + + TypeName resultKeyType = getTypeForResultKey(resultKey); + return MethodSpec.methodBuilder(resultKeyModel.getFluentGetterMethodName()) .addModifiers(Modifier.PUBLIC, Modifier.FINAL) .returns(ParameterizedTypeName.get(ClassName.get(SdkIterable.class), resultKeyType))