Skip to content

Commit f699849

Browse files
committed
Don't generate item paginator for non-containers
Related to #693
1 parent f412724 commit f699849

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

codegen/src/main/java/software/amazon/awssdk/codegen/poet/paginators/AsyncResponseClassSpec.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.squareup.javapoet.WildcardTypeName;
2626
import java.util.Collections;
2727
import java.util.Iterator;
28+
import java.util.Objects;
2829
import java.util.concurrent.CompletableFuture;
2930
import java.util.function.Consumer;
3031
import java.util.function.Function;
@@ -158,6 +159,7 @@ private Iterable<MethodSpec> getMethodSpecsForResultKeyList() {
158159
if (paginatorDefinition.getResultKey() != null) {
159160
return paginatorDefinition.getResultKey().stream()
160161
.map(this::getMethodsSpecForSingleResultKey)
162+
.filter(Objects::nonNull)
161163
.collect(Collectors.toList());
162164
}
163165
return Collections.emptyList();
@@ -182,9 +184,15 @@ private Iterable<MethodSpec> getMethodSpecsForResultKeyList() {
182184
* }
183185
*/
184186
private MethodSpec getMethodsSpecForSingleResultKey(String resultKey) {
185-
TypeName resultKeyType = getTypeForResultKey(resultKey);
186187
MemberModel resultKeyModel = memberModelForResponseMember(resultKey);
187188

189+
// TODO: Support other types besides List or Map
190+
if (!(resultKeyModel.isList() || resultKeyModel.isMap())) {
191+
return null;
192+
}
193+
194+
TypeName resultKeyType = getTypeForResultKey(resultKey);
195+
188196
return MethodSpec.methodBuilder(resultKeyModel.getFluentGetterMethodName())
189197
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
190198
.returns(ParameterizedTypeName.get(ClassName.get(SdkPublisher.class), resultKeyType))

codegen/src/main/java/software/amazon/awssdk/codegen/poet/paginators/SyncResponseClassSpec.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.squareup.javapoet.TypeSpec;
2525
import java.util.Collections;
2626
import java.util.Iterator;
27+
import java.util.Objects;
2728
import java.util.function.Function;
2829
import java.util.stream.Collectors;
2930
import java.util.stream.Stream;
@@ -132,6 +133,7 @@ private Iterable<MethodSpec> getMethodSpecsForResultKeyList() {
132133
if (paginatorDefinition.getResultKey() != null) {
133134
return paginatorDefinition.getResultKey().stream()
134135
.map(this::getMethodsSpecForSingleResultKey)
136+
.filter(Objects::nonNull)
135137
.collect(Collectors.toList());
136138
}
137139
return Collections.emptyList();
@@ -154,9 +156,15 @@ private Iterable<MethodSpec> getMethodSpecsForResultKeyList() {
154156
* }
155157
*/
156158
private MethodSpec getMethodsSpecForSingleResultKey(String resultKey) {
157-
TypeName resultKeyType = getTypeForResultKey(resultKey);
158159
MemberModel resultKeyModel = memberModelForResponseMember(resultKey);
159160

161+
// TODO: Support other types besides List or Map
162+
if (!(resultKeyModel.isList() || resultKeyModel.isMap())) {
163+
return null;
164+
}
165+
166+
TypeName resultKeyType = getTypeForResultKey(resultKey);
167+
160168
return MethodSpec.methodBuilder(resultKeyModel.getFluentGetterMethodName())
161169
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
162170
.returns(ParameterizedTypeName.get(ClassName.get(SdkIterable.class), resultKeyType))

0 commit comments

Comments
 (0)