Skip to content

Commit 6534445

Browse files
authored
[ggj][codegen] fix: use BatchingCallSettings for batching methods in ServiceSettings (#610)
* fix: delete unused IamCredietialsClientTest golden * fix: use BatchingCallSettings for batching methods in ServiceSettings
1 parent bda8a87 commit 6534445

File tree

6 files changed

+62
-7
lines changed

6 files changed

+62
-7
lines changed

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

+4
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.google.api.gax.core.InstantiatingExecutorProvider;
2121
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
2222
import com.google.api.gax.rpc.ApiClientHeaderProvider;
23+
import com.google.api.gax.rpc.BatchingCallSettings;
2324
import com.google.api.gax.rpc.ClientContext;
2425
import com.google.api.gax.rpc.ClientSettings;
2526
import com.google.api.gax.rpc.OperationCallSettings;
@@ -797,6 +798,9 @@ private static TypeNode getCallSettingsTypeHelper(
797798
Class callSettingsClazz = isBuilder ? UnaryCallSettings.Builder.class : UnaryCallSettings.class;
798799
if (protoMethod.isPaged()) {
799800
callSettingsClazz = isBuilder ? PagedCallSettings.Builder.class : PagedCallSettings.class;
801+
} else if (protoMethod.isBatching()) {
802+
callSettingsClazz =
803+
isBuilder ? BatchingCallSettings.Builder.class : BatchingCallSettings.class;
800804
} else {
801805
switch (protoMethod.stream()) {
802806
case CLIENT:

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

+8
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,14 @@ public boolean hasBatchingSetting(Service service, Method method) {
159159
return batchingSettingsTable.containsKey(toName(service, method));
160160
}
161161

162+
public boolean hasBatchingSetting(String protoPakkage, String serviceName, String methodName) {
163+
return batchingSettingsTable.containsKey(
164+
MethodConfig.Name.newBuilder()
165+
.setService(String.format("%s.%s", protoPakkage, serviceName))
166+
.setMethod(methodName)
167+
.build());
168+
}
169+
162170
public Optional<GapicLroRetrySettings> getLroRetrySetting(Service service, Method method) {
163171
return hasLroRetrySetting(service, method)
164172
? Optional.of(lroRetrySettingsTable.get(toName(service, method)))

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

+5
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public enum Stream {
3737

3838
public abstract TypeNode outputType();
3939

40+
public abstract boolean isBatching();
41+
4042
public abstract boolean isPaged();
4143

4244
@Nullable
@@ -70,6 +72,7 @@ public static Builder builder() {
7072
.setStream(Stream.NONE)
7173
.setMethodSignatures(ImmutableList.of())
7274
.setHttpBindings(ImmutableList.of())
75+
.setIsBatching(false)
7376
.setIsPaged(false);
7477
}
7578

@@ -104,6 +107,8 @@ public abstract static class Builder {
104107

105108
public abstract Builder setMethodSignatures(List<List<MethodArgument>> methodSignature);
106109

110+
public abstract Builder setIsBatching(boolean isBatching);
111+
107112
public abstract Builder setIsPaged(boolean isPaged);
108113

109114
public abstract Method build();

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

+18-1
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,13 @@ public static List<Service> parseService(
305305
.setOriginalJavaPackage(originalJavaPackage)
306306
.setProtoPakkage(fileDescriptor.getPackage())
307307
.setMethods(
308-
parseMethods(s, pakkage, messageTypes, resourceNames, outputArgResourceNames))
308+
parseMethods(
309+
s,
310+
pakkage,
311+
messageTypes,
312+
resourceNames,
313+
serviceConfigOpt,
314+
outputArgResourceNames))
309315
.build();
310316
})
311317
.collect(Collectors.toList());
@@ -433,6 +439,7 @@ static List<Method> parseMethods(
433439
String servicePackage,
434440
Map<String, Message> messageTypes,
435441
Map<String, ResourceName> resourceNames,
442+
Optional<GapicServiceConfig> serviceConfigOpt,
436443
Set<ResourceName> outputArgResourceNames) {
437444
List<Method> methods = new ArrayList<>();
438445
for (MethodDescriptor protoMethod : serviceDescriptor.getMethods()) {
@@ -456,6 +463,15 @@ static List<Method> parseMethods(
456463
HttpRuleParser.parseHttpBindings(protoMethod, inputMessage, messageTypes);
457464
List<String> httpBindings =
458465
httpBindingsOpt.isPresent() ? httpBindingsOpt.get() : Collections.emptyList();
466+
boolean isBatching =
467+
!serviceConfigOpt.isPresent()
468+
? false
469+
: serviceConfigOpt
470+
.get()
471+
.hasBatchingSetting(
472+
/* protoPakkage */ protoMethod.getFile().getPackage(),
473+
serviceDescriptor.getName(),
474+
protoMethod.getName());
459475

460476
methods.add(
461477
methodBuilder
@@ -474,6 +490,7 @@ static List<Method> parseMethods(
474490
resourceNames,
475491
outputArgResourceNames))
476492
.setHttpBindings(httpBindings)
493+
.setIsBatching(isBatching)
477494
.setIsPaged(parseIsPaged(protoMethod, messageTypes))
478495
.build());
479496

src/test/java/com/google/api/generator/gapic/protoparser/ParserTest.java

+24-4
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,12 @@ public void parseMethods_basic() {
101101
Set<ResourceName> outputResourceNames = new HashSet<>();
102102
List<Method> methods =
103103
Parser.parseMethods(
104-
echoService, ECHO_PACKAGE, messageTypes, resourceNames, outputResourceNames);
104+
echoService,
105+
ECHO_PACKAGE,
106+
messageTypes,
107+
resourceNames,
108+
Optional.empty(),
109+
outputResourceNames);
105110

106111
assertEquals(9, methods.size());
107112

@@ -153,7 +158,12 @@ public void parseMethods_basicLro() {
153158
Set<ResourceName> outputResourceNames = new HashSet<>();
154159
List<Method> methods =
155160
Parser.parseMethods(
156-
echoService, ECHO_PACKAGE, messageTypes, resourceNames, outputResourceNames);
161+
echoService,
162+
ECHO_PACKAGE,
163+
messageTypes,
164+
resourceNames,
165+
Optional.empty(),
166+
outputResourceNames);
157167

158168
assertEquals(9, methods.size());
159169

@@ -199,7 +209,12 @@ public void parseMethodSignatures_empty() {
199209

200210
List<Method> methods =
201211
Parser.parseMethods(
202-
echoService, ECHO_PACKAGE, messageTypes, resourceNames, outputResourceNames);
212+
echoService,
213+
ECHO_PACKAGE,
214+
messageTypes,
215+
resourceNames,
216+
Optional.empty(),
217+
outputResourceNames);
203218
assertThat(
204219
MethodSignatureParser.parseMethodSignatures(
205220
methodDescriptor,
@@ -223,7 +238,12 @@ public void parseMethodSignatures_validArgstAndEmptyString() {
223238

224239
List<Method> methods =
225240
Parser.parseMethods(
226-
echoService, ECHO_PACKAGE, messageTypes, resourceNames, outputResourceNames);
241+
echoService,
242+
ECHO_PACKAGE,
243+
messageTypes,
244+
resourceNames,
245+
Optional.empty(),
246+
outputResourceNames);
227247
List<List<MethodArgument>> methodArgs =
228248
MethodSignatureParser.parseMethodSignatures(
229249
methodDescriptor,

test/integration/goldens/logging/LoggingSettings.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.google.api.gax.core.InstantiatingExecutorProvider;
2727
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
2828
import com.google.api.gax.rpc.ApiClientHeaderProvider;
29+
import com.google.api.gax.rpc.BatchingCallSettings;
2930
import com.google.api.gax.rpc.ClientContext;
3031
import com.google.api.gax.rpc.ClientSettings;
3132
import com.google.api.gax.rpc.PagedCallSettings;
@@ -87,7 +88,7 @@ public UnaryCallSettings<DeleteLogRequest, Empty> deleteLogSettings() {
8788
}
8889

8990
/** Returns the object with the settings used for calls to writeLogEntries. */
90-
public UnaryCallSettings<WriteLogEntriesRequest, WriteLogEntriesResponse>
91+
public BatchingCallSettings<WriteLogEntriesRequest, WriteLogEntriesResponse>
9192
writeLogEntriesSettings() {
9293
return ((LoggingServiceV2StubSettings) getStubSettings()).writeLogEntriesSettings();
9394
}
@@ -218,7 +219,7 @@ public UnaryCallSettings.Builder<DeleteLogRequest, Empty> deleteLogSettings() {
218219
}
219220

220221
/** Returns the builder for the settings used for calls to writeLogEntries. */
221-
public UnaryCallSettings.Builder<WriteLogEntriesRequest, WriteLogEntriesResponse>
222+
public BatchingCallSettings.Builder<WriteLogEntriesRequest, WriteLogEntriesResponse>
222223
writeLogEntriesSettings() {
223224
return getStubSettingsBuilder().writeLogEntriesSettings();
224225
}

0 commit comments

Comments
 (0)