diff --git a/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java b/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java index 845582350b..81da3803fc 100644 --- a/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java +++ b/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java @@ -437,10 +437,14 @@ static LongrunningOperation parseLro( static boolean parseIsPaged( MethodDescriptor methodDescriptor, Map messageTypes) { Message inputMessage = messageTypes.get(methodDescriptor.getInputType().getName()); - Message outputMessage = messageTypes.get(methodDescriptor.getInputType().getName()); + Message outputMessage = messageTypes.get(methodDescriptor.getOutputType().getName()); + + // This should technically handle the absence of either of these fields (aip.dev/158), but we + // gate on their collective presence to ensure the generated surface is backawrds-compatible + // with monolith-gnerated libraries. return inputMessage.fieldMap().containsKey("page_size") - || inputMessage.fieldMap().containsKey("page_token") - || outputMessage.fieldMap().containsKey("next_page_token"); + && inputMessage.fieldMap().containsKey("page_token") + && outputMessage.fieldMap().containsKey("next_page_token"); } @VisibleForTesting