Skip to content

Commit 8a5c36c

Browse files
authored
fix(types): Use fully-qualified message type names [ggj] (#723)
* fix(types): Use fully-qualified message type names * fix: cleanup
1 parent 2318136 commit 8a5c36c

17 files changed

+144
-82
lines changed

src/main/java/com/google/api/generator/gapic/composer/BatchingDescriptorComposer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public static Expr createBatchingDescriptorFieldDeclExpr(
106106

107107
private static MethodDefinition createGetBatchPartitionKeyMethod(
108108
Method method, GapicBatchingSettings batchingSettings, Map<String, Message> messageTypes) {
109-
String methodInputTypeName = method.inputType().reference().name();
109+
String methodInputTypeName = method.inputType().reference().fullName();
110110
Message inputMessage = messageTypes.get(methodInputTypeName);
111111
Preconditions.checkNotNull(
112112
inputMessage,
@@ -283,7 +283,7 @@ private static MethodDefinition createSplitResponseMethod(
283283

284284
List<Statement> outerForBody = new ArrayList<>();
285285
if (hasSubresponseField) {
286-
Message outputMessage = messageTypes.get(method.outputType().reference().name());
286+
Message outputMessage = messageTypes.get(method.outputType().reference().fullName());
287287
Preconditions.checkNotNull(
288288
outputMessage, String.format("Output message not found for RPC %s", method.name()));
289289

src/main/java/com/google/api/generator/gapic/composer/ServiceClientClassComposer.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -1041,7 +1041,7 @@ private static List<ClassDefinition> createNestedPagingClasses(
10411041
continue;
10421042
}
10431043
// Find the repeated field.
1044-
Message methodOutputMessage = messageTypes.get(method.outputType().reference().simpleName());
1044+
Message methodOutputMessage = messageTypes.get(method.outputType().reference().fullName());
10451045
Field repeatedPagedResultsField = methodOutputMessage.findAndUnwrapFirstRepeatedField();
10461046
Preconditions.checkNotNull(
10471047
repeatedPagedResultsField,
@@ -1657,7 +1657,6 @@ private static TypeStore createTypes(Service service, Map<String, Message> messa
16571657
TimeUnit.class,
16581658
UnaryCallable.class);
16591659
TypeStore typeStore = new TypeStore(concreteClazzes);
1660-
typeStore.putMessageTypes(service.pakkage(), messageTypes);
16611660
createVaporTypes(service, typeStore);
16621661
return typeStore;
16631662
}

src/main/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposer.java

+11-11
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ private static MethodDefinition createRpcTestMethod(
546546
VariableExpr responsesElementVarExpr = null;
547547
String mockServiceVarName = getMockServiceVarName(rpcService);
548548
if (method.isPaged()) {
549-
Message methodOutputMessage = messageTypes.get(method.outputType().reference().simpleName());
549+
Message methodOutputMessage = messageTypes.get(method.outputType().reference().fullName());
550550
Field repeatedPagedResultsField = methodOutputMessage.findAndUnwrapFirstRepeatedField();
551551
Preconditions.checkNotNull(
552552
repeatedPagedResultsField,
@@ -577,7 +577,7 @@ private static MethodDefinition createRpcTestMethod(
577577
Variable.builder().setType(methodOutputType).setName("expectedResponse").build());
578578
Expr expectedResponseValExpr = null;
579579
if (method.isPaged()) {
580-
Message methodOutputMessage = messageTypes.get(method.outputType().reference().simpleName());
580+
Message methodOutputMessage = messageTypes.get(method.outputType().reference().fullName());
581581
Field firstRepeatedField = methodOutputMessage.findAndUnwrapFirstRepeatedField();
582582
Preconditions.checkNotNull(
583583
firstRepeatedField,
@@ -589,10 +589,10 @@ private static MethodDefinition createRpcTestMethod(
589589
DefaultValueComposer.createSimplePagedResponse(
590590
method.outputType(), firstRepeatedField.name(), responsesElementVarExpr);
591591
} else {
592-
if (messageTypes.containsKey(methodOutputType.reference().name())) {
592+
if (messageTypes.containsKey(methodOutputType.reference().fullName())) {
593593
expectedResponseValExpr =
594594
DefaultValueComposer.createSimpleMessageBuilderExpr(
595-
messageTypes.get(methodOutputType.reference().simpleName()),
595+
messageTypes.get(methodOutputType.reference().fullName()),
596596
resourceNames,
597597
messageTypes);
598598
} else {
@@ -658,7 +658,7 @@ private static MethodDefinition createRpcTestMethod(
658658
VariableExpr.withVariable(
659659
Variable.builder().setType(method.inputType()).setName("request").build());
660660
argExprs.add(requestVarExpr);
661-
requestMessage = messageTypes.get(method.inputType().reference().simpleName());
661+
requestMessage = messageTypes.get(method.inputType().reference().fullName());
662662
Preconditions.checkNotNull(requestMessage);
663663
Expr valExpr =
664664
DefaultValueComposer.createSimpleMessageBuilderExpr(
@@ -784,7 +784,7 @@ private static MethodDefinition createRpcTestMethod(
784784
.build());
785785

786786
// Assert the responses are equivalent.
787-
Message methodOutputMessage = messageTypes.get(method.outputType().reference().simpleName());
787+
Message methodOutputMessage = messageTypes.get(method.outputType().reference().fullName());
788788
Field repeatedPagedResultsField = methodOutputMessage.findAndUnwrapFirstRepeatedField();
789789
Preconditions.checkNotNull(
790790
repeatedPagedResultsField,
@@ -1022,10 +1022,10 @@ private static MethodDefinition createStreamingRpcTestMethod(
10221022
VariableExpr.withVariable(
10231023
Variable.builder().setType(methodOutputType).setName("expectedResponse").build());
10241024
Expr expectedResponseValExpr = null;
1025-
if (messageTypes.containsKey(methodOutputType.reference().name())) {
1025+
if (messageTypes.containsKey(methodOutputType.reference().fullName())) {
10261026
expectedResponseValExpr =
10271027
DefaultValueComposer.createSimpleMessageBuilderExpr(
1028-
messageTypes.get(methodOutputType.reference().simpleName()),
1028+
messageTypes.get(methodOutputType.reference().fullName()),
10291029
resourceNames,
10301030
messageTypes);
10311031
} else {
@@ -1080,7 +1080,7 @@ private static MethodDefinition createStreamingRpcTestMethod(
10801080
VariableExpr requestVarExpr =
10811081
VariableExpr.withVariable(
10821082
Variable.builder().setType(method.inputType()).setName("request").build());
1083-
Message requestMessage = messageTypes.get(method.inputType().reference().simpleName());
1083+
Message requestMessage = messageTypes.get(method.inputType().reference().fullName());
10841084
Preconditions.checkNotNull(requestMessage);
10851085
Expr valExpr =
10861086
DefaultValueComposer.createSimpleMessageBuilderExpr(
@@ -1363,7 +1363,7 @@ private static List<Statement> createStreamingRpcExceptionTestStatements(
13631363
VariableExpr requestVarExpr =
13641364
VariableExpr.withVariable(
13651365
Variable.builder().setType(method.inputType()).setName("request").build());
1366-
Message requestMessage = messageTypes.get(method.inputType().reference().simpleName());
1366+
Message requestMessage = messageTypes.get(method.inputType().reference().fullName());
13671367
Preconditions.checkNotNull(requestMessage);
13681368
Expr valExpr =
13691369
DefaultValueComposer.createSimpleMessageBuilderExpr(
@@ -1552,7 +1552,7 @@ private static List<Statement> createRpcExceptionTestStatements(
15521552
VariableExpr.withVariable(
15531553
Variable.builder().setType(method.inputType()).setName("request").build());
15541554
argVarExprs.add(varExpr);
1555-
Message requestMessage = messageTypes.get(method.inputType().reference().simpleName());
1555+
Message requestMessage = messageTypes.get(method.inputType().reference().fullName());
15561556
Preconditions.checkNotNull(requestMessage);
15571557
Expr valExpr =
15581558
DefaultValueComposer.createSimpleMessageBuilderExpr(

src/main/java/com/google/api/generator/gapic/composer/ServiceStubClassComposer.java

-1
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,6 @@ private static TypeStore createTypes(Service service, Map<String, Message> messa
248248
UnaryCallable.class,
249249
UnsupportedOperationException.class);
250250
TypeStore typeStore = new TypeStore(concreteClazzes);
251-
typeStore.putMessageTypes(service.pakkage(), messageTypes);
252251

253252
typeStore.put("com.google.longrunning.stub", "OperationsStub");
254253

src/main/java/com/google/api/generator/gapic/composer/ServiceStubSettingsClassComposer.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -389,11 +389,9 @@ private static List<Expr> createPagingStaticAssignExprs(
389389
}
390390

391391
// Find the repeated type.
392-
String pagedResponseMessageKey =
393-
JavaStyle.toUpperCamelCase(method.outputType().reference().simpleName());
392+
String pagedResponseMessageKey = method.outputType().reference().fullName();
394393
if (method.hasLro()) {
395-
pagedResponseMessageKey =
396-
JavaStyle.toUpperCamelCase(method.lro().responseType().reference().simpleName());
394+
pagedResponseMessageKey = method.lro().responseType().reference().fullName();
397395
}
398396
Message pagedResponseMessage = messageTypes.get(pagedResponseMessageKey);
399397
Preconditions.checkNotNull(

src/main/java/com/google/api/generator/gapic/composer/defaultvalue/DefaultValueComposer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ public static Expr createSimpleMessageBuilderExpr(
236236
if (field.isContainedInOneof() // Avoid colliding fields.
237237
|| ((field.isMessage() || field.isEnum()) // Avoid importing unparsed messages.
238238
&& !field.isRepeated()
239-
&& !messageTypes.containsKey(field.type().reference().name()))) {
239+
&& !messageTypes.containsKey(field.type().reference().fullName()))) {
240240
continue;
241241
}
242242
String setterMethodNamePattern = "set%s";

src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientSampleCodeComposer.java

+18-13
Original file line numberDiff line numberDiff line change
@@ -290,11 +290,11 @@ public static String composeRpcDefaultMethodHeaderSampleCode(
290290
VariableExpr.withVariable(
291291
Variable.builder().setName("request").setType(method.inputType()).build());
292292
List<VariableExpr> rpcMethodArgVarExprs = Arrays.asList(requestVarExpr);
293-
Message requestMessage = messageTypes.get(method.inputType().reference().simpleName());
293+
Message requestMessage = messageTypes.get(method.inputType().reference().fullName());
294294
Preconditions.checkNotNull(
295295
requestMessage,
296296
String.format(
297-
"Could not find the message type %s.", method.inputType().reference().simpleName()));
297+
"Could not find the message type %s.", method.inputType().reference().fullName()));
298298
Expr requestBuilderExpr =
299299
DefaultValueComposer.createSimpleMessageBuilderExpr(
300300
requestMessage, resourceNames, messageTypes);
@@ -346,11 +346,11 @@ public static String composeLroCallableMethodHeaderSampleCode(
346346
VariableExpr requestVarExpr =
347347
VariableExpr.withVariable(
348348
Variable.builder().setName("request").setType(method.inputType()).build());
349-
Message requestMessage = messageTypes.get(method.inputType().reference().simpleName());
349+
Message requestMessage = messageTypes.get(method.inputType().reference().fullName());
350350
Preconditions.checkNotNull(
351351
requestMessage,
352352
String.format(
353-
"Could not find the message type %s.", method.inputType().reference().simpleName()));
353+
"Could not find the message type %s.", method.inputType().reference().fullName()));
354354
Expr requestBuilderExpr =
355355
DefaultValueComposer.createSimpleMessageBuilderExpr(
356356
requestMessage, resourceNames, messageTypes);
@@ -458,11 +458,11 @@ public static String composePagedCallableMethodHeaderSampleCode(
458458
VariableExpr requestVarExpr =
459459
VariableExpr.withVariable(
460460
Variable.builder().setName("request").setType(method.inputType()).build());
461-
Message requestMessage = messageTypes.get(method.inputType().reference().simpleName());
461+
Message requestMessage = messageTypes.get(method.inputType().reference().fullName());
462462
Preconditions.checkNotNull(
463463
requestMessage,
464464
String.format(
465-
"Could not find the message type %s.", method.inputType().reference().simpleName()));
465+
"Could not find the message type %s.", method.inputType().reference().fullName()));
466466
Expr requestBuilderExpr =
467467
DefaultValueComposer.createSimpleMessageBuilderExpr(
468468
requestMessage, resourceNames, messageTypes);
@@ -476,7 +476,7 @@ public static String composePagedCallableMethodHeaderSampleCode(
476476
bodyExprs.add(requestAssignmentExpr);
477477

478478
// Find the repeated field.
479-
Message methodOutputMessage = messageTypes.get(method.outputType().reference().simpleName());
479+
Message methodOutputMessage = messageTypes.get(method.outputType().reference().fullName());
480480
Field repeatedPagedResultsField = methodOutputMessage.findAndUnwrapFirstRepeatedField();
481481
Preconditions.checkNotNull(
482482
repeatedPagedResultsField,
@@ -578,11 +578,11 @@ public static String composeRegularCallableMethodHeaderSampleCode(
578578
VariableExpr requestVarExpr =
579579
VariableExpr.withVariable(
580580
Variable.builder().setName("request").setType(method.inputType()).build());
581-
Message requestMessage = messageTypes.get(method.inputType().reference().simpleName());
581+
Message requestMessage = messageTypes.get(method.inputType().reference().fullName());
582582
Preconditions.checkNotNull(
583583
requestMessage,
584584
String.format(
585-
"Could not find the message type %s.", method.inputType().reference().simpleName()));
585+
"Could not find the message type %s.", method.inputType().reference().fullName()));
586586
Expr requestBuilderExpr =
587587
DefaultValueComposer.createSimpleMessageBuilderExpr(
588588
requestMessage, resourceNames, messageTypes);
@@ -626,11 +626,11 @@ public static String composeStreamCallableMethodHeaderSampleCode(
626626
VariableExpr requestVarExpr =
627627
VariableExpr.withVariable(
628628
Variable.builder().setName("request").setType(method.inputType()).build());
629-
Message requestMessage = messageTypes.get(method.inputType().reference().simpleName());
629+
Message requestMessage = messageTypes.get(method.inputType().reference().fullName());
630630
Preconditions.checkNotNull(
631631
requestMessage,
632632
String.format(
633-
"Could not find the message type %s.", method.inputType().reference().simpleName()));
633+
"Could not find the message type %s.", method.inputType().reference().fullName()));
634634
Expr requestBuilderExpr =
635635
DefaultValueComposer.createSimpleMessageBuilderExpr(
636636
requestMessage, resourceNames, messageTypes);
@@ -702,7 +702,12 @@ private static List<Statement> composeUnaryPagedRpcMethodBodyStatements(
702702
Map<String, Message> messageTypes) {
703703

704704
// Find the repeated field.
705-
Message methodOutputMessage = messageTypes.get(method.outputType().reference().simpleName());
705+
Message methodOutputMessage = messageTypes.get(method.outputType().reference().fullName());
706+
Preconditions.checkNotNull(
707+
methodOutputMessage,
708+
"Output message %s not found, keys: ",
709+
method.outputType().reference().fullName(),
710+
messageTypes.keySet().toString());
706711
Field repeatedPagedResultsField = methodOutputMessage.findAndUnwrapFirstRepeatedField();
707712
Preconditions.checkNotNull(
708713
repeatedPagedResultsField,
@@ -1128,7 +1133,7 @@ private static List<Statement> composePagedCallableBodyStatements(
11281133
VariableExpr requestVarExpr,
11291134
Map<String, Message> messageTypes) {
11301135
// Find the repeated field.
1131-
Message methodOutputMessage = messageTypes.get(method.outputType().reference().simpleName());
1136+
Message methodOutputMessage = messageTypes.get(method.outputType().reference().fullName());
11321137
Field repeatedPagedResultsField = methodOutputMessage.findAndUnwrapFirstRepeatedField();
11331138
Preconditions.checkNotNull(
11341139
repeatedPagedResultsField,

src/main/java/com/google/api/generator/gapic/model/Message.java

+7
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@
3030
public abstract class Message {
3131
public abstract String name();
3232

33+
// The fully-qualified proto name, which differs from the Java fully-qualified name.
34+
// For example, this would be google.showcase.v1beta1.EchoRequest for echo.proto (see testdata),
35+
// whereas that message's Java fully-qualified name is com.google.showcase.v1beta1.EchoRequest.
36+
public abstract String fullProtoName();
37+
3338
// TODO(unsupported): oneof fields are parsed as separate ones because field flattening refers to
3439
// a specific field.
3540
public abstract ImmutableList<Field> fields();
@@ -88,6 +93,8 @@ public static Builder builder() {
8893
public abstract static class Builder {
8994
public abstract Builder setName(String name);
9095

96+
public abstract Builder setFullProtoName(String fullProtoName);
97+
9198
public abstract Builder setFields(List<Field> fields);
9299

93100
public Builder setEnumValues(List<String> names, List<Integer> numbers) {

src/main/java/com/google/api/generator/gapic/protoparser/HttpRuleParser.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public static Optional<List<String>> parseHttpBindings(
7474
String subField = descendantBindings[i];
7575
if (i < descendantBindings.length - 1) {
7676
Field field = containingMessage.fieldMap().get(subField);
77-
containingMessage = messageTypes.get(field.type().reference().simpleName());
77+
containingMessage = messageTypes.get(field.type().reference().fullName());
7878
Preconditions.checkNotNull(
7979
containingMessage,
8080
String.format(

src/main/java/com/google/api/generator/gapic/protoparser/MethodSignatureParser.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public static List<List<MethodArgument>> parseMethodSignatures(
5757

5858
Map<String, ResourceName> patternsToResourceNames =
5959
ResourceParserHelpers.createPatternResourceNameMap(resourceNames);
60-
Message inputMessage = messageTypes.get(methodInputType.reference().simpleName());
60+
Message inputMessage = messageTypes.get(methodInputType.reference().fullName());
6161

6262
// Example from Expand in echo.proto:
6363
// stringSigs: ["content,error", "content,error,info"].
@@ -266,7 +266,7 @@ private static Map<TypeNode, Field> parseTypeFromArgumentName(
266266
TypeNode.isReferenceType(firstFieldType) && !firstFieldType.equals(TypeNode.STRING),
267267
String.format("Field reference on %s cannot be a primitive type", firstFieldName));
268268

269-
String firstFieldTypeName = firstFieldType.reference().name();
269+
String firstFieldTypeName = firstFieldType.reference().fullName();
270270
Message firstFieldMessage = messageTypes.get(firstFieldTypeName);
271271
Preconditions.checkNotNull(
272272
firstFieldMessage,

0 commit comments

Comments
 (0)