Skip to content

Commit

Permalink
Updated to always treat page limit as unboxed for pagiantor options.
Browse files Browse the repository at this point in the history
  • Loading branch information
skmcgrail committed Nov 18, 2020
1 parent b3193dc commit 76246a5
Showing 1 changed file with 13 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import software.amazon.smithy.go.codegen.GoWriter;
import software.amazon.smithy.go.codegen.SmithyGoDependency;
import software.amazon.smithy.go.codegen.SymbolUtils;
import software.amazon.smithy.go.codegen.knowledge.GoPointableIndex;
import software.amazon.smithy.model.Model;
import software.amazon.smithy.model.knowledge.PaginatedIndex;
import software.amazon.smithy.model.knowledge.PaginationInfo;
Expand Down Expand Up @@ -139,6 +140,8 @@ private void writePaginator(
Symbol outputSymbol = symbolProvider.toSymbol(paginationInfo.getOutput());
Optional<MemberShape> pageSizeMember = paginationInfo.getPageSizeMember();

GoPointableIndex pointableIndex = GoPointableIndex.of(model);

writer.writeDocs(String.format("NextPage retrieves the next %s page.", operationSymbol.getName()));
writer.openBlock("func (p $P) NextPage(ctx $T, optFns ...func(*Options)) ($P, error) {", "}",
paginatorSymbol, contextSymbol, outputSymbol, () -> {
Expand All @@ -151,7 +154,15 @@ private void writePaginator(
writer.write("params.$L = p.nextToken", inputMember);

pageSizeMember.ifPresent(memberShape -> {
writer.write("params.$L = p.options.Limit", symbolProvider.toMemberName(pageSizeMember.get()));
writer.openBlock("if p.options.Limit > 0 {", "}", () -> {
String memberName = symbolProvider.toMemberName(pageSizeMember.get());
String value = "p.options.Limit";
if (pointableIndex.isPointable(pageSizeMember.get())) {
value = "&" + value;
}
writer.write("params.$L = $L", memberName, value);
});
writer.write("");
});

writer.write("result, err := p.client.$L(ctx, &params, optFns...)",
Expand Down Expand Up @@ -213,7 +224,7 @@ private void writePaginatorOptions(
memberShape.getMemberTrait(model, DocumentationTrait.class).ifPresent(documentationTrait -> {
writer.writeDocs(documentationTrait.getValue());
});
writer.write("Limit $P", symbolProvider.toSymbol(memberShape));
writer.write("Limit $T", symbolProvider.toSymbol(memberShape));
writer.write("");
});
if (model.expectShape(paginationInfo.getInputTokenMember().getTarget()).isStringShape()) {
Expand Down

0 comments on commit 76246a5

Please sign in to comment.