Skip to content

Commit bcc1bdb

Browse files
authored
feat: Support explicit dynamic routing header (#887)
This PR is to support explicit dynamic routing header feature proposed in go/actools-dynamic-routing-proposal. All examples provided in routing.proto are covered by golden files unit tests. Added validation that the field has to be of String type as suggested(Compare to implicit routing headers support primitive types as well). For nested fields, when getting field values, added null check for each level to prevent null pointer exception during runtime.
1 parent 50a8693 commit bcc1bdb

29 files changed

+2014
-79
lines changed

WORKSPACE

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jvm_maven_import_external(
3333
# which in its turn, prioritizes actual generated clients runtime dependencies
3434
# over the generator dependencies.
3535

36-
_gax_java_version = "2.10.0"
36+
_gax_java_version = "2.11.0"
3737

3838
http_archive(
3939
name = "com_google_api_gax_java",

src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java

+11-8
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
import com.google.api.generator.engine.ast.VariableExpr;
5252
import com.google.api.generator.gapic.composer.comment.StubCommentComposer;
5353
import com.google.api.generator.gapic.composer.store.TypeStore;
54-
import com.google.api.generator.gapic.composer.utils.ClassNames;
5554
import com.google.api.generator.gapic.composer.utils.PackageChecker;
5655
import com.google.api.generator.gapic.model.GapicClass;
5756
import com.google.api.generator.gapic.model.GapicClass.Kind;
@@ -204,15 +203,15 @@ public GapicClass generate(GapicContext context, Service service) {
204203
.setName(className)
205204
.setExtendsType(
206205
typeStore.get(getTransportContext().classNames().getServiceStubClassName(service)))
207-
.setStatements(classStatements)
208206
.setMethods(
209207
createClassMethods(
210208
context,
211209
service,
212210
typeStore,
213211
classMemberVarExprs,
214212
callableClassMemberVarExprs,
215-
protoMethodNameToDescriptorVarExprs))
213+
protoMethodNameToDescriptorVarExprs, classStatements))
214+
.setStatements(classStatements)
216215
.build();
217216
return GapicClass.create(kind, classDef);
218217
}
@@ -249,7 +248,8 @@ protected List<MethodDefinition> createOperationsStubGetterMethod(
249248
}
250249

251250
protected abstract Expr createTransportSettingsInitExpr(
252-
Method method, VariableExpr transportSettingsVarExpr, VariableExpr methodDescriptorVarExpr);
251+
Method method, VariableExpr transportSettingsVarExpr, VariableExpr methodDescriptorVarExpr,
252+
List<Statement> classStatements);
253253

254254
protected List<MethodDefinition> createGetMethodDescriptorsMethod(
255255
Service service,
@@ -430,7 +430,8 @@ protected List<MethodDefinition> createClassMethods(
430430
TypeStore typeStore,
431431
Map<String, VariableExpr> classMemberVarExprs,
432432
Map<String, VariableExpr> callableClassMemberVarExprs,
433-
Map<String, VariableExpr> protoMethodNameToDescriptorVarExprs) {
433+
Map<String, VariableExpr> protoMethodNameToDescriptorVarExprs,
434+
List<Statement> classStatements) {
434435
List<MethodDefinition> javaMethods = new ArrayList<>();
435436
javaMethods.addAll(createStaticCreatorMethods(service, typeStore, "newBuilder"));
436437
javaMethods.addAll(
@@ -440,7 +441,8 @@ protected List<MethodDefinition> createClassMethods(
440441
typeStore,
441442
classMemberVarExprs,
442443
callableClassMemberVarExprs,
443-
protoMethodNameToDescriptorVarExprs));
444+
protoMethodNameToDescriptorVarExprs,
445+
classStatements));
444446
javaMethods.addAll(
445447
createGetMethodDescriptorsMethod(service, typeStore, protoMethodNameToDescriptorVarExprs));
446448
javaMethods.addAll(
@@ -541,7 +543,8 @@ protected List<MethodDefinition> createConstructorMethods(
541543
TypeStore typeStore,
542544
Map<String, VariableExpr> classMemberVarExprs,
543545
Map<String, VariableExpr> callableClassMemberVarExprs,
544-
Map<String, VariableExpr> protoMethodNameToDescriptorVarExprs) {
546+
Map<String, VariableExpr> protoMethodNameToDescriptorVarExprs,
547+
List<Statement> classStatements) {
545548
TypeNode stubSettingsType =
546549
typeStore.get(getTransportContext().classNames().getServiceStubSettingsClassName(service));
547550
VariableExpr settingsVarExpr =
@@ -666,7 +669,7 @@ protected List<MethodDefinition> createConstructorMethods(
666669
m,
667670
javaStyleMethodNameToTransportSettingsVarExprs.get(
668671
JavaStyle.toLowerCamelCase(m.name())),
669-
protoMethodNameToDescriptorVarExprs.get(m.name())))
672+
protoMethodNameToDescriptorVarExprs.get(m.name()), classStatements))
670673
.collect(Collectors.toList()));
671674
secondCtorStatements.addAll(
672675
secondCtorExprs.stream().map(ExprStatement::withExpr).collect(Collectors.toList()));

0 commit comments

Comments
 (0)