Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.

Commit 8355125

Browse files
authored
[ggj][engx] chore: centralize all Gapic class name getters (#599)
* fix: fix dep ordering in Bazel dedupe rules * chore: centralize all Gapic class name getters * fix: revert unrelated changes
1 parent 573fb8d commit 8355125

11 files changed

Lines changed: 207 additions & 217 deletions
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// Copyright 2020 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
package com.google.api.generator.gapic.composer;
16+
17+
import com.google.api.generator.gapic.model.Service;
18+
19+
/** Provides Gapic class names. */
20+
public class ClassNames {
21+
// Using constants since many of these class names are used often.
22+
private static final String MOCK_SERVICE_CLASS_NAME_PATTERN = "Mock%s";
23+
private static final String SERVICE_CLIENT_CLASS_NAME_PATTERN = "%sClient";
24+
private static final String SERVICE_SETTINGS_CLASS_NAME_PATTERN = "%sSettings";
25+
private static final String SERVICE_STUB_SETTINGS_CLASS_NAME_PATTERN = "%sStubSettings";
26+
private static final String SERVICE_STUB_CLASS_NAME_PATTERN = "%sStub";
27+
private static final String GRPC_SERVICE_STUB_CLASS_NAME_PATTERN = "Grpc%sStub";
28+
private static final String GRPC_SERVICE_CALLABLE_FACTORY_CLASS_NAME_PATTERN =
29+
"Grpc%sCallableFactory";
30+
private static final String MOCK_SERVICE_IMPL_CLASS_NAME_PATTERN = "Mock%sImpl";
31+
32+
protected static String getServiceClientClassName(Service service) {
33+
return String.format(SERVICE_CLIENT_CLASS_NAME_PATTERN, service.overriddenName());
34+
}
35+
36+
protected static String getServiceSettingsClassName(Service service) {
37+
return String.format(SERVICE_SETTINGS_CLASS_NAME_PATTERN, service.overriddenName());
38+
}
39+
40+
protected static String getMockServiceClassName(Service service) {
41+
return String.format(MOCK_SERVICE_CLASS_NAME_PATTERN, service.name());
42+
}
43+
44+
protected static String getMockServiceImplClassName(Service service) {
45+
return String.format(MOCK_SERVICE_IMPL_CLASS_NAME_PATTERN, service.name());
46+
}
47+
48+
protected static String getServiceStubSettingsClassName(Service service) {
49+
return String.format(SERVICE_STUB_SETTINGS_CLASS_NAME_PATTERN, service.name());
50+
}
51+
52+
protected static String getServiceStubClassName(Service service) {
53+
return String.format(SERVICE_STUB_CLASS_NAME_PATTERN, service.name());
54+
}
55+
56+
protected static String getGrpcServiceCallableFactoryClassName(Service service) {
57+
return String.format(GRPC_SERVICE_CALLABLE_FACTORY_CLASS_NAME_PATTERN, service.name());
58+
}
59+
60+
protected static String getGrpcServiceStubClassName(Service service) {
61+
return String.format(GRPC_SERVICE_STUB_CLASS_NAME_PATTERN, service.name());
62+
}
63+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public static GrpcServiceCallableFactoryClassComposer instance() {
6666
@Override
6767
public GapicClass generate(Service service, Map<String, Message> ignore) {
6868
Map<String, TypeNode> types = createTypes(service);
69-
String className = String.format("Grpc%sCallableFactory", service.name());
69+
String className = ClassNames.getGrpcServiceCallableFactoryClassName(service);
7070
GapicClass.Kind kind = Kind.STUB;
7171
String pakkage = String.format("%s.stub", service.pakkage());
7272

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

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@
7979
public class GrpcServiceStubClassComposer implements ClassComposer {
8080
private static final Statement EMPTY_LINE_STATEMENT = EmptyLineStatement.create();
8181

82-
private static final String CLASS_NAME_PATTERN = "Grpc%sStub";
8382
private static final String GRPC_SERVICE_CALLABLE_FACTORY_PATTERN = "Grpc%sCallableFactory";
8483
private static final String METHOD_DESCRIPTOR_NAME_PATTERN = "%sMethodDescriptor";
8584
private static final String PAGED_RESPONSE_TYPE_NAME_PATTERN = "%sPagedResponse";
@@ -117,7 +116,7 @@ public static GrpcServiceStubClassComposer instance() {
117116
public GapicClass generate(Service service, Map<String, Message> ignore) {
118117
String pakkage = service.pakkage() + ".stub";
119118
Map<String, TypeNode> types = createDynamicTypes(service, pakkage);
120-
String className = getThisClassName(service.name());
119+
String className = ClassNames.getGrpcServiceStubClassName(service);
121120
GapicClass.Kind kind = Kind.STUB;
122121

123122
Map<String, VariableExpr> protoMethodNameToDescriptorVarExprs =
@@ -400,7 +399,7 @@ private static List<MethodDefinition> createClassMethods(
400399
Map<String, VariableExpr> callableClassMemberVarExprs,
401400
Map<String, VariableExpr> protoMethodNameToDescriptorVarExprs) {
402401
List<MethodDefinition> javaMethods = new ArrayList<>();
403-
javaMethods.addAll(createStaticCreatorMethods(service.name(), types));
402+
javaMethods.addAll(createStaticCreatorMethods(service, types));
404403
javaMethods.addAll(
405404
createConstructorMethods(
406405
service,
@@ -417,8 +416,8 @@ private static List<MethodDefinition> createClassMethods(
417416
}
418417

419418
private static List<MethodDefinition> createStaticCreatorMethods(
420-
String serviceName, Map<String, TypeNode> types) {
421-
TypeNode creatorMethodReturnType = types.get(getThisClassName(serviceName));
419+
Service service, Map<String, TypeNode> types) {
420+
TypeNode creatorMethodReturnType = types.get(ClassNames.getGrpcServiceStubClassName(service));
422421
Function<List<VariableExpr>, MethodDefinition.Builder> creatorMethodStarterFn =
423422
argList ->
424423
MethodDefinition.builder()
@@ -439,7 +438,7 @@ private static List<MethodDefinition> createStaticCreatorMethods(
439438
argList ->
440439
NewObjectExpr.builder().setType(creatorMethodReturnType).setArguments(argList).build();
441440

442-
TypeNode stubSettingsType = types.get(String.format(STUB_SETTINGS_PATTERN, serviceName));
441+
TypeNode stubSettingsType = types.get(ClassNames.getServiceStubSettingsClassName(service));
443442
VariableExpr settingsVarExpr =
444443
VariableExpr.withVariable(
445444
Variable.builder().setName("settings").setType(stubSettingsType).build());
@@ -518,7 +517,7 @@ private static List<MethodDefinition> createConstructorMethods(
518517
.setType(STATIC_TYPES.get("GrpcStubCallableFactory"))
519518
.build());
520519

521-
TypeNode thisClassType = types.get(getThisClassName(service.name()));
520+
TypeNode thisClassType = types.get(ClassNames.getGrpcServiceStubClassName(service));
522521
TypeNode ioExceptionType =
523522
TypeNode.withReference(ConcreteReference.withClazz(IOException.class));
524523

@@ -527,8 +526,7 @@ private static List<MethodDefinition> createConstructorMethods(
527526
MethodDefinition.constructorBuilder()
528527
.setScope(ScopeNode.PROTECTED)
529528
.setReturnType(thisClassType)
530-
.setHeaderCommentStatements(
531-
Arrays.asList(createProtectedCtorComment(service.name())))
529+
.setHeaderCommentStatements(Arrays.asList(createProtectedCtorComment(service)))
532530
.setArguments(
533531
args.stream()
534532
.map(v -> v.toBuilder().setIsDecl(true).build())
@@ -557,7 +555,8 @@ private static List<MethodDefinition> createConstructorMethods(
557555
.build())));
558556

559557
Expr thisExpr =
560-
ValueExpr.withValue(ThisObjectValue.withType(types.get(getThisClassName(service.name()))));
558+
ValueExpr.withValue(
559+
ThisObjectValue.withType(types.get(ClassNames.getGrpcServiceStubClassName(service))));
561560
// Body of the second constructor method.
562561
List<Statement> secondCtorStatements = new ArrayList<>();
563562
List<Expr> secondCtorExprs = new ArrayList<>();
@@ -1049,20 +1048,17 @@ private static Map<String, TypeNode> createDynamicTypes(Service service, String
10491048
Map<String, TypeNode> types = new HashMap<>();
10501049
types.putAll(
10511050
Arrays.asList(
1052-
CLASS_NAME_PATTERN,
1053-
STUB_SETTINGS_PATTERN,
1054-
STUB_PATTERN,
1055-
GRPC_SERVICE_CALLABLE_FACTORY_PATTERN)
1051+
ClassNames.getGrpcServiceStubClassName(service),
1052+
ClassNames.getServiceStubSettingsClassName(service),
1053+
ClassNames.getServiceStubClassName(service),
1054+
ClassNames.getGrpcServiceCallableFactoryClassName(service))
10561055
.stream()
10571056
.collect(
10581057
Collectors.toMap(
1059-
p -> String.format(p, service.name()),
1060-
p ->
1058+
n -> n,
1059+
n ->
10611060
TypeNode.withReference(
1062-
VaporReference.builder()
1063-
.setName(String.format(p, service.name()))
1064-
.setPakkage(stubPakkage)
1065-
.build()))));
1061+
VaporReference.builder().setName(n).setPakkage(stubPakkage).build()))));
10661062
// Pagination types.
10671063
types.putAll(
10681064
service.methods().stream()
@@ -1076,7 +1072,7 @@ private static Map<String, TypeNode> createDynamicTypes(Service service, String
10761072
.setName(String.format(PAGED_RESPONSE_TYPE_NAME_PATTERN, m.name()))
10771073
.setPakkage(service.pakkage())
10781074
.setEnclosingClassNames(
1079-
String.format("%sClient", service.overriddenName()))
1075+
ClassNames.getServiceClientClassName(service))
10801076
.setIsStaticImport(true)
10811077
.build()))));
10821078
return types;
@@ -1144,17 +1140,13 @@ private static String getProtoRpcFullMethodName(Service protoService, Method pro
11441140
return String.format("google.iam.v1.IAMPolicy/%s", protoMethod.name());
11451141
}
11461142

1147-
private static String getThisClassName(String serviceName) {
1148-
return String.format(CLASS_NAME_PATTERN, serviceName);
1149-
}
1150-
1151-
private static CommentStatement createProtectedCtorComment(String serviceName) {
1143+
private static CommentStatement createProtectedCtorComment(Service service) {
11521144
return CommentStatement.withComment(
11531145
JavaDocComment.withComment(
11541146
String.format(
11551147
"Constructs an instance of %s, using the given settings. This is protected so that"
11561148
+ " it is easy to make a subclass, but otherwise, the static factory methods"
11571149
+ " should be preferred.",
1158-
getThisClassName(serviceName))));
1150+
ClassNames.getGrpcServiceStubClassName(service))));
11591151
}
11601152
}

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

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@
4444

4545
public class MockServiceClassComposer implements ClassComposer {
4646
private static final MockServiceClassComposer INSTANCE = new MockServiceClassComposer();
47-
private static final String MOCK_SERVICE_NAME_PATTERN = "Mock%s";
48-
private static final String MOCK_IMPL_NAME_PATTERN = "Mock%sImpl";
4947
private static final String SERVICE_IMPL_VAR_NAME = "serviceImpl";
5048

5149
private MockServiceClassComposer() {}
@@ -57,7 +55,7 @@ public static MockServiceClassComposer instance() {
5755
@Override
5856
public GapicClass generate(Service service, Map<String, Message> ignore) {
5957
Map<String, TypeNode> types = createTypes(service);
60-
String className = String.format(MOCK_SERVICE_NAME_PATTERN, service.name());
58+
String className = ClassNames.getMockServiceClassName(service);
6159
GapicClass.Kind kind = Kind.TEST;
6260
String pakkage = service.pakkage();
6361

@@ -68,18 +66,18 @@ public GapicClass generate(Service service, Map<String, Message> ignore) {
6866
.setScope(ScopeNode.PUBLIC)
6967
.setName(className)
7068
.setImplementsTypes(createClassImplements(types))
71-
.setStatements(createFieldDeclarations(service.name(), types))
69+
.setStatements(createFieldDeclarations(service, types))
7270
.setMethods(createClassMethods(service, types))
7371
.build();
7472
return GapicClass.create(kind, classDef);
7573
}
7674

7775
private static List<Statement> createFieldDeclarations(
78-
String serviceName, Map<String, TypeNode> types) {
76+
Service service, Map<String, TypeNode> types) {
7977
return Arrays.asList(
8078
ExprStatement.withExpr(
8179
VariableExpr.builder()
82-
.setVariable(getServiceImplVariable(serviceName, types))
80+
.setVariable(getServiceImplVariable(service, types))
8381
.setScope(ScopeNode.PRIVATE)
8482
.setIsFinal(true)
8583
.setIsDecl(true)
@@ -102,9 +100,9 @@ private static List<TypeNode> createClassImplements(Map<String, TypeNode> types)
102100
private static List<MethodDefinition> createClassMethods(
103101
Service service, Map<String, TypeNode> types) {
104102
VariableExpr serviceImplVarExpr =
105-
VariableExpr.withVariable(getServiceImplVariable(service.name(), types));
103+
VariableExpr.withVariable(getServiceImplVariable(service, types));
106104
return Arrays.asList(
107-
createConstructor(service.name(), serviceImplVarExpr, types),
105+
createConstructor(service, serviceImplVarExpr, types),
108106
createGetRequestsMethod(serviceImplVarExpr, types),
109107
createAddResponseMethod(serviceImplVarExpr, types),
110108
createAddExceptionMethod(serviceImplVarExpr),
@@ -113,8 +111,8 @@ private static List<MethodDefinition> createClassMethods(
113111
}
114112

115113
private static MethodDefinition createConstructor(
116-
String serviceName, VariableExpr serviceImplVarExpr, Map<String, TypeNode> types) {
117-
String mockImplName = String.format(MOCK_IMPL_NAME_PATTERN, serviceName);
114+
Service service, VariableExpr serviceImplVarExpr, Map<String, TypeNode> types) {
115+
String mockImplName = ClassNames.getMockServiceImplClassName(service);
118116
Expr serviceImplAssignExpr =
119117
AssignmentExpr.builder()
120118
.setVariableExpr(serviceImplVarExpr)
@@ -124,7 +122,7 @@ private static MethodDefinition createConstructor(
124122
return MethodDefinition.constructorBuilder()
125123
.setScope(ScopeNode.PUBLIC)
126124
.setBody(Arrays.asList(ExprStatement.withExpr(serviceImplAssignExpr)))
127-
.setReturnType(types.get(String.format(MOCK_SERVICE_NAME_PATTERN, serviceName)))
125+
.setReturnType(types.get(ClassNames.getMockServiceClassName(service)))
128126
.build();
129127
}
130128

@@ -255,24 +253,24 @@ private static Map<String, TypeNode> createTypes(Service service) {
255253
.setPakkage("com.google.api.gax.grpc.testing")
256254
.build()));
257255
// Vapor same-package deps.
258-
String mockImplName = String.format(MOCK_IMPL_NAME_PATTERN, service.name());
256+
String mockImplName = ClassNames.getMockServiceImplClassName(service);
259257
types.put(
260258
mockImplName,
261259
TypeNode.withReference(
262260
VaporReference.builder().setName(mockImplName).setPakkage(service.pakkage()).build()));
263261

264-
String className = String.format(MOCK_SERVICE_NAME_PATTERN, service.name());
262+
String className = ClassNames.getMockServiceClassName(service);
265263
types.put(
266264
className,
267265
TypeNode.withReference(
268266
VaporReference.builder().setName(className).setPakkage(service.pakkage()).build()));
269267
return types;
270268
}
271269

272-
private static Variable getServiceImplVariable(String serviceName, Map<String, TypeNode> types) {
270+
private static Variable getServiceImplVariable(Service service, Map<String, TypeNode> types) {
273271
return Variable.builder()
274272
.setName(SERVICE_IMPL_VAR_NAME)
275-
.setType(types.get(String.format(MOCK_IMPL_NAME_PATTERN, serviceName)))
273+
.setType(types.get(ClassNames.getMockServiceImplClassName(service)))
276274
.build();
277275
}
278276
}

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@
6060

6161
public class MockServiceImplClassComposer implements ClassComposer {
6262
private static final MockServiceImplClassComposer INSTANCE = new MockServiceImplClassComposer();
63-
private static final String MOCK_SERVICE_IMPL_NAME_PATTERN = "Mock%sImpl";
6463
private static final String IMPL_BASE_PATTERN = "%sImplBase";
6564
private static final Map<String, TypeNode> staticTypes = createStaticTypes();
6665
private static final VariableExpr requestsVarExpr =
@@ -96,7 +95,7 @@ public static MockServiceImplClassComposer instance() {
9695
@Override
9796
public GapicClass generate(Service service, Map<String, Message> ignore) {
9897
Map<String, TypeNode> types = createDynamicTypes(service);
99-
String className = String.format(MOCK_SERVICE_IMPL_NAME_PATTERN, service.name());
98+
String className = ClassNames.getMockServiceImplClassName(service);
10099
GapicClass.Kind kind = Kind.TEST;
101100
String pakkage = service.pakkage();
102101

@@ -133,9 +132,7 @@ private static List<AnnotationNode> createClassAnnotations() {
133132
private static List<MethodDefinition> createClassMethods(
134133
Service service, Map<String, TypeNode> types) {
135134
List<MethodDefinition> javaMethods = new ArrayList<>();
136-
javaMethods.add(
137-
createConstructor(
138-
types.get(String.format(MOCK_SERVICE_IMPL_NAME_PATTERN, service.name()))));
135+
javaMethods.add(createConstructor(types.get(ClassNames.getMockServiceImplClassName(service))));
139136
javaMethods.add(createGetRequestsMethod());
140137
javaMethods.add(createAddResponseMethod());
141138
javaMethods.add(createSetResponsesMethod(service));
@@ -562,7 +559,7 @@ private static Map<String, TypeNode> createDynamicTypes(Service service) {
562559
.setPakkage(
563560
String.format("%s.%sGrpc", service.originalJavaPackage(), service.name()))
564561
.build()));
565-
String className = String.format(MOCK_SERVICE_IMPL_NAME_PATTERN, service.name());
562+
String className = ClassNames.getMockServiceImplClassName(service);
566563
types.put(
567564
className,
568565
TypeNode.withReference(
@@ -577,7 +574,7 @@ private static Map<String, TypeNode> createDynamicTypes(Service service) {
577574
private static TypeNode getThisClassType(Service service) {
578575
return TypeNode.withReference(
579576
VaporReference.builder()
580-
.setName(String.format(MOCK_SERVICE_IMPL_NAME_PATTERN, service.name()))
577+
.setName(ClassNames.getMockServiceImplClassName(service))
581578
.setPakkage(service.pakkage())
582579
.build());
583580
}

0 commit comments

Comments
 (0)