Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
c71f061
feat: add factory var decl in ServiceStubSettings codegen
miraleung Aug 25, 2020
4919bba
fix: prevent duplicate MethodDefinition annotations
miraleung Aug 25, 2020
b77848e
feat: add descriptor fields to ServiceStubSettings codegen
miraleung Aug 25, 2020
861f142
feat: add starter Builder to ServiceStubSettings codegen
miraleung Aug 25, 2020
5f285df
feat: add settings.builder decls to ServiceStubSettings codegen
miraleung Aug 25, 2020
dbc5735
feat: add first nested ctors to ServiceStubSettings codegen
miraleung Aug 26, 2020
164c0b3
feat: add GapicServiceConfig DS and processing
miraleung Aug 26, 2020
3783203
feat: integrate GapicServiceConfig into GapicContext, Parser, Composer
miraleung Aug 26, 2020
3984eaa
feat: initial param block, RetrySettingsComposer, test
miraleung Aug 26, 2020
a0ef19e
fix!: refactor GapicRetrySettings
miraleung Aug 27, 2020
74dbcbb
fix: recognize 1. or .1 double patterns
miraleung Aug 27, 2020
34285db
feat: support BlockStatement in ClassDef stmts
miraleung Aug 27, 2020
2fc9d0e
feat: add params block to ServiceStubSettings codegen
miraleung Aug 27, 2020
f6727d8
feat: add codes def to ServiceStubSettings codegen
miraleung Aug 27, 2020
1c54ec1
feat: add initDefaults() to ServiceStubSettings codegen
miraleung Aug 27, 2020
c50a204
feat: add LRO to ServiceStubSettings.Builder.initDefaults
miraleung Aug 27, 2020
106528f
feat: add third ServiceStubSettings.Builder(settings) ctor
miraleung Aug 27, 2020
6858b33
feat: add createDefault() to ServiceStubSettings
miraleung Aug 27, 2020
0df98cb
feat: add ServiceStubSettings.applyToAllUnaryMethods method
miraleung Aug 27, 2020
5919b29
feat: add ServiceStubSettings.unaryMethodSettingsBuilders()
miraleung Aug 27, 2020
0e03f06
feat: add ServiceStubSettings.build()
miraleung Aug 27, 2020
f172ad1
feat: add settingsBuilder getters in ServiceStubSettings
miraleung Aug 27, 2020
de8ab3b
feat: add gapic.yaml batching parsing
miraleung Aug 28, 2020
6233168
feat: integrate batching with retry settings parsing
miraleung Aug 28, 2020
8cb1372
fix: remove unused test proto imports
miraleung Aug 28, 2020
280858d
fix: handle singleton resname patterns, name_field, add logging test
miraleung Aug 28, 2020
ee033d4
fix: pass in logging grpc service config
miraleung Aug 28, 2020
51c504c
fix: pass in logging grpc service config
miraleung Aug 28, 2020
622f8d3
Merge branch 'gp/g25' of github.com:googleapis/gapic-generator-java i…
miraleung Aug 28, 2020
fee662a
test: add pubsub proto serviceStubSettings test
miraleung Aug 28, 2020
6e3ce4e
feat: add BatchingCallSettings to ServiceStubSettings fields
miraleung Aug 28, 2020
96b6016
feat: add Batching init to ServiceStubSettings.Builder ctor
miraleung Aug 29, 2020
632b6d8
feat: support batching in ServiceStubSettings.Builder.initDefaults
miraleung Aug 29, 2020
729296f
Merge branch 'master' into gp/g29
miraleung Aug 29, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@

package com.google.api.generator.gapic.composer;

import com.google.api.gax.batching.BatchingSettings;
import com.google.api.gax.batching.FlowControlSettings;
import com.google.api.gax.batching.FlowController;
import com.google.api.gax.grpc.ProtoOperationTransformers;
import com.google.api.gax.longrunning.OperationSnapshot;
import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
Expand All @@ -34,6 +37,7 @@
import com.google.api.generator.engine.ast.ValueExpr;
import com.google.api.generator.engine.ast.Variable;
import com.google.api.generator.engine.ast.VariableExpr;
import com.google.api.generator.gapic.model.GapicBatchingSettings;
import com.google.api.generator.gapic.model.GapicRetrySettings;
import com.google.api.generator.gapic.model.GapicServiceConfig;
import com.google.api.generator.gapic.model.Method;
Expand Down Expand Up @@ -365,6 +369,108 @@ public static Expr createLroSettingsBuilderExpr(
return builderSettingsExpr;
}

public static Expr createBatchingBuilderSettingsExpr(
String settingsGetterMethodName,
GapicBatchingSettings batchingSettings,
VariableExpr builderVarExpr) {

Expr batchingSettingsBuilderExpr =
MethodInvocationExpr.builder()
.setStaticReferenceType(STATIC_TYPES.get("BatchingSettings"))
.setMethodName("newBuilder")
.build();

batchingSettingsBuilderExpr =
MethodInvocationExpr.builder()
.setExprReferenceExpr(batchingSettingsBuilderExpr)
.setMethodName("setElementCountThreshold")
.setArguments(toValExpr(batchingSettings.elementCountThreshold()))
.build();

batchingSettingsBuilderExpr =
MethodInvocationExpr.builder()
.setExprReferenceExpr(batchingSettingsBuilderExpr)
.setMethodName("setRequestByteThreshold")
.setArguments(toValExpr(batchingSettings.requestByteThreshold()))
.build();

batchingSettingsBuilderExpr =
MethodInvocationExpr.builder()
.setExprReferenceExpr(batchingSettingsBuilderExpr)
.setMethodName("setDelayThreshold")
.setArguments(
createDurationOfMillisExpr(toValExpr(batchingSettings.delayThresholdMillis())))
.build();

// FlowControlSettings.
Expr flowControlSettingsExpr =
MethodInvocationExpr.builder()
.setStaticReferenceType(STATIC_TYPES.get("FlowControlSettings"))
.setMethodName("newBuilder")
.build();
if (batchingSettings.flowControlElementLimit() != null) {
flowControlSettingsExpr =
MethodInvocationExpr.builder()
.setExprReferenceExpr(flowControlSettingsExpr)
.setMethodName("setMaxOutstandingElementCount")
.setArguments(toValExpr(batchingSettings.flowControlElementLimit()))
.build();
}
if (batchingSettings.flowControlByteLimit() != null) {
flowControlSettingsExpr =
MethodInvocationExpr.builder()
.setExprReferenceExpr(flowControlSettingsExpr)
.setMethodName("setMaxOutstandingRequestBytes")
.setArguments(toValExpr(batchingSettings.flowControlByteLimit()))
.build();
}
flowControlSettingsExpr =
MethodInvocationExpr.builder()
.setExprReferenceExpr(flowControlSettingsExpr)
.setMethodName("setLimitExceededBehavior")
.setArguments(
EnumRefExpr.builder()
.setType(STATIC_TYPES.get("LimitExceededBehavior"))
.setName(
JavaStyle.toUpperCamelCase(
batchingSettings
.flowControlLimitExceededBehavior()
.name()
.toLowerCase()))
.build())
.build();
flowControlSettingsExpr =
MethodInvocationExpr.builder()
.setExprReferenceExpr(flowControlSettingsExpr)
.setMethodName("build")
.build();

batchingSettingsBuilderExpr =
MethodInvocationExpr.builder()
.setExprReferenceExpr(batchingSettingsBuilderExpr)
.setMethodName("setFlowControlSettings")
.setArguments(flowControlSettingsExpr)
.build();

batchingSettingsBuilderExpr =
MethodInvocationExpr.builder()
.setExprReferenceExpr(batchingSettingsBuilderExpr)
.setMethodName("build")
.build();

// Put everything together.
Expr builderExpr =
MethodInvocationExpr.builder()
.setExprReferenceExpr(builderVarExpr)
.setMethodName(settingsGetterMethodName)
.build();
return MethodInvocationExpr.builder()
.setExprReferenceExpr(builderExpr)
.setMethodName("setBatchingSettings")
.setArguments(batchingSettingsBuilderExpr)
.build();
}

private static Expr createRetryCodeDefinitionExpr(
String codeName, List<Code> retryCodes, VariableExpr definitionsVarExpr) {
// Construct something like `definitions.put("code_name",
Expand Down Expand Up @@ -600,7 +706,10 @@ private static MethodInvocationExpr createDurationOfMillisExpr(ValueExpr valExpr
private static Map<String, TypeNode> createStaticTypes() {
List<Class> concreteClazzes =
Arrays.asList(
BatchingSettings.class,
org.threeten.bp.Duration.class,
FlowControlSettings.class,
FlowController.LimitExceededBehavior.class,
ImmutableMap.class,
ImmutableSet.class,
Lists.class,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
import com.google.api.generator.engine.ast.Variable;
import com.google.api.generator.engine.ast.VariableExpr;
import com.google.api.generator.gapic.model.Field;
import com.google.api.generator.gapic.model.GapicBatchingSettings;
import com.google.api.generator.gapic.model.GapicClass;
import com.google.api.generator.gapic.model.GapicServiceConfig;
import com.google.api.generator.gapic.model.Message;
Expand All @@ -101,6 +102,7 @@
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Generated;
Expand Down Expand Up @@ -1199,6 +1201,21 @@ private static MethodDefinition createNestedClassInitDefaultsMethod(
if (streamKind.equals(Method.Stream.CLIENT) || streamKind.equals(Method.Stream.BIDI)) {
continue;
}
if (serviceConfig.hasBatchingSetting(service, method)) {
Optional<GapicBatchingSettings> batchingSettingOpt =
serviceConfig.getBatchingSetting(service, method);
Preconditions.checkState(
batchingSettingOpt.isPresent(),
String.format(
"No batching setting found for service %s, method %s",
service.name(), method.name()));
String settingsGetterMethodName =
String.format("%sSettings", JavaStyle.toLowerCamelCase(method.name()));
bodyExprs.add(
RetrySettingsComposer.createBatchingBuilderSettingsExpr(
settingsGetterMethodName, batchingSettingOpt.get(), builderVarExpr));
}

bodyExprs.add(
RetrySettingsComposer.createSimpleBuilderSettingsExpr(
service,
Expand Down
Loading