Skip to content

Commit 76d8fba

Browse files
committed
fix: update LRO parsing to check package for short-form response and metadata types
1 parent 7ce4084 commit 76d8fba

File tree

1 file changed

+19
-24
lines changed
  • gapic-generator-java/src/main/java/com/google/api/generator/gapic/protoparser

1 file changed

+19
-24
lines changed

gapic-generator-java/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java

+19-24
Original file line numberDiff line numberDiff line change
@@ -824,39 +824,34 @@ static LongrunningOperation parseLro(
824824
boolean isResponseTypeNameShortOnly = lastDotIndex < 0;
825825
String responseTypeShortName =
826826
lastDotIndex >= 0 ? responseTypeName.substring(lastDotIndex + 1) : responseTypeName;
827+
// When only shortname is provided, match on same proto package as method (See
828+
// https://aip.dev/151)
829+
String responseTypeFullName =
830+
isResponseTypeNameShortOnly
831+
? methodDescriptor.getFile().getPackage() + "." + responseTypeShortName
832+
: responseTypeName;
827833

828834
lastDotIndex = metadataTypeName.lastIndexOf('.');
829835
boolean isMetadataTypeNameShortOnly = lastDotIndex < 0;
830836
String metadataTypeShortName =
831837
lastDotIndex >= 0 ? metadataTypeName.substring(lastDotIndex + 1) : metadataTypeName;
838+
// When only shortname is provided, match on same proto package as method (See
839+
// https://aip.dev/151)
840+
String metadataTypeFullName =
841+
isMetadataTypeNameShortOnly
842+
? methodDescriptor.getFile().getPackage() + "." + metadataTypeShortName
843+
: metadataTypeName;
832844

833845
// The messageTypes map keys to the Java fully-qualified name.
834846
for (Map.Entry<String, Message> messageEntry : messageTypes.entrySet()) {
835-
String messageKey = messageEntry.getKey();
836-
int messageLastDotIndex = messageEntry.getKey().lastIndexOf('.');
837-
String messageShortName =
838-
messageLastDotIndex >= 0 ? messageKey.substring(messageLastDotIndex + 1) : messageKey;
839-
if (responseMessage == null) {
840-
if (isResponseTypeNameShortOnly && responseTypeName.equals(messageShortName)) {
841-
responseMessage = messageEntry.getValue();
842-
} else if (!isResponseTypeNameShortOnly && responseTypeShortName.equals(messageShortName)) {
843-
// Ensure that the full proto name matches.
844-
Message candidateMessage = messageEntry.getValue();
845-
if (candidateMessage.fullProtoName().equals(responseTypeName)) {
846-
responseMessage = candidateMessage;
847-
}
848-
}
847+
Message candidateMessage = messageEntry.getValue();
848+
if (responseMessage == null
849+
&& candidateMessage.fullProtoName().equals(responseTypeFullName)) {
850+
responseMessage = candidateMessage;
849851
}
850-
if (metadataMessage == null) {
851-
if (isMetadataTypeNameShortOnly && metadataTypeName.equals(messageShortName)) {
852-
metadataMessage = messageEntry.getValue();
853-
} else if (!isMetadataTypeNameShortOnly && metadataTypeShortName.equals(messageShortName)) {
854-
// Ensure that the full proto name matches.
855-
Message candidateMessage = messageEntry.getValue();
856-
if (candidateMessage.fullProtoName().equals(metadataTypeName)) {
857-
metadataMessage = candidateMessage;
858-
}
859-
}
852+
if (metadataMessage == null
853+
&& candidateMessage.fullProtoName().equals(metadataTypeFullName)) {
854+
metadataMessage = candidateMessage;
860855
}
861856
}
862857

0 commit comments

Comments
 (0)