Skip to content

Commit 46ad436

Browse files
authored
[ggj][codegen] fix: space out codegen in GrpcServiceStub (#376)
* fix: refactor requestBuilder into separate method in ServiceClientClassComposer * feat: add EmptyLineStatement * fix: space out lines in ServiceStubSettings * fix: space out codegen in GrpcServiceStub * fix: privately-scoped vars in ServiceClientTest codegen (#377)
1 parent 533cfc7 commit 46ad436

File tree

4 files changed

+62
-13
lines changed

4 files changed

+62
-13
lines changed

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

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.google.api.generator.engine.ast.AssignmentExpr;
2929
import com.google.api.generator.engine.ast.ClassDefinition;
3030
import com.google.api.generator.engine.ast.ConcreteReference;
31+
import com.google.api.generator.engine.ast.EmptyLineStatement;
3132
import com.google.api.generator.engine.ast.EnumRefExpr;
3233
import com.google.api.generator.engine.ast.Expr;
3334
import com.google.api.generator.engine.ast.ExprStatement;
@@ -68,6 +69,8 @@
6869
import javax.annotation.Generated;
6970

7071
public class GrpcServiceStubClassComposer implements ClassComposer {
72+
private static final Statement EMPTY_LINE_STATEMENT = EmptyLineStatement.create();
73+
7174
private static final String CLASS_NAME_PATTERN = "Grpc%sStub";
7275
private static final String GRPC_SERVICE_CALLABLE_FACTORY_PATTERN = "Grpc%sCallableFactory";
7376
private static final String METHOD_DESCRIPTOR_NAME_PATTERN = "%sMethodDescriptor";
@@ -131,11 +134,12 @@ public GapicClass generate(Service service, Map<String, Message> ignore) {
131134
.setType(staticTypes.get("GrpcStubCallableFactory"))
132135
.build()));
133136

134-
List<Statement> classStatements = new ArrayList<>();
135-
classStatements.addAll(
136-
createMethodDescriptorVariableDecls(service, protoMethodNameToDescriptorVarExprs));
137-
classStatements.addAll(createClassMemberFieldDeclarations(callableClassMemberVarExprs));
138-
classStatements.addAll(createClassMemberFieldDeclarations(classMemberVarExprs));
137+
List<Statement> classStatements =
138+
createClassStatements(
139+
service,
140+
protoMethodNameToDescriptorVarExprs,
141+
callableClassMemberVarExprs,
142+
classMemberVarExprs);
139143

140144
ClassDefinition classDef =
141145
ClassDefinition.builder()
@@ -158,6 +162,25 @@ public GapicClass generate(Service service, Map<String, Message> ignore) {
158162
return GapicClass.create(kind, classDef);
159163
}
160164

165+
private static List<Statement> createClassStatements(
166+
Service service,
167+
Map<String, VariableExpr> protoMethodNameToDescriptorVarExprs,
168+
Map<String, VariableExpr> callableClassMemberVarExprs,
169+
Map<String, VariableExpr> classMemberVarExprs) {
170+
List<Statement> classStatements = new ArrayList<>();
171+
for (Statement statement :
172+
createMethodDescriptorVariableDecls(service, protoMethodNameToDescriptorVarExprs)) {
173+
classStatements.add(statement);
174+
classStatements.add(EMPTY_LINE_STATEMENT);
175+
}
176+
177+
classStatements.addAll(createClassMemberFieldDeclarations(callableClassMemberVarExprs));
178+
classStatements.add(EMPTY_LINE_STATEMENT);
179+
180+
classStatements.addAll(createClassMemberFieldDeclarations(classMemberVarExprs));
181+
return classStatements;
182+
}
183+
161184
private static List<Statement> createMethodDescriptorVariableDecls(
162185
Service service, Map<String, VariableExpr> protoMethodNameToDescriptorVarExprs) {
163186
return service.methods().stream()
@@ -520,6 +543,7 @@ private static List<MethodDefinition> createConstructorMethods(
520543
Expr thisExpr =
521544
ValueExpr.withValue(ThisObjectValue.withType(types.get(getThisClassName(service.name()))));
522545
// Body of the second constructor method.
546+
List<Statement> secondCtorStatements = new ArrayList<>();
523547
List<Expr> secondCtorExprs = new ArrayList<>();
524548
secondCtorExprs.add(
525549
AssignmentExpr.builder()
@@ -544,6 +568,10 @@ private static List<MethodDefinition> createConstructorMethods(
544568
.setReturnType(operationsStubClassVarExpr.type())
545569
.build())
546570
.build());
571+
secondCtorStatements.addAll(
572+
secondCtorExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList()));
573+
secondCtorExprs.clear();
574+
secondCtorStatements.add(EMPTY_LINE_STATEMENT);
547575

548576
// Transport settings local variables.
549577
Map<String, VariableExpr> javaStyleMethodNameToTransportSettingsVarExprs =
@@ -578,6 +606,10 @@ private static List<MethodDefinition> createConstructorMethods(
578606
JavaStyle.toLowerCamelCase(m.name())),
579607
protoMethodNameToDescriptorVarExprs.get(m.name())))
580608
.collect(Collectors.toList()));
609+
secondCtorStatements.addAll(
610+
secondCtorExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList()));
611+
secondCtorExprs.clear();
612+
secondCtorStatements.add(EMPTY_LINE_STATEMENT);
581613

582614
// Initialize <method>Callable variables.
583615
secondCtorExprs.addAll(
@@ -594,6 +626,10 @@ private static List<MethodDefinition> createConstructorMethods(
594626
thisExpr,
595627
javaStyleMethodNameToTransportSettingsVarExprs))
596628
.collect(Collectors.toList()));
629+
secondCtorStatements.addAll(
630+
secondCtorExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList()));
631+
secondCtorExprs.clear();
632+
secondCtorStatements.add(EMPTY_LINE_STATEMENT);
597633

598634
// Instantiate backgroundResources.
599635
MethodInvocationExpr getBackgroundResourcesMethodExpr =
@@ -612,14 +648,15 @@ private static List<MethodDefinition> createConstructorMethods(
612648
.setArguments(Arrays.asList(getBackgroundResourcesMethodExpr))
613649
.build())
614650
.build());
651+
secondCtorStatements.addAll(
652+
secondCtorExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList()));
653+
secondCtorExprs.clear();
615654

616655
// Second constructor method.
617656
MethodDefinition secondCtor =
618657
ctorMakerFn.apply(
619658
Arrays.asList(settingsVarExpr, clientContextVarExpr, callableFactoryVarExpr),
620-
secondCtorExprs.stream()
621-
.map(e -> ExprStatement.withExpr(e))
622-
.collect(Collectors.toList()));
659+
secondCtorStatements);
623660

624661
return Arrays.asList(firstCtor, secondCtor);
625662
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ private static List<Statement> createClassMemberFieldDecls(
186186
ExprStatement.withExpr(
187187
v.toBuilder()
188188
.setIsDecl(true)
189-
.setScope(ScopeNode.PUBLIC)
189+
.setScope(ScopeNode.PRIVATE)
190190
.setIsStatic(v.type().reference().name().startsWith("Mock"))
191191
.build()))
192192
.collect(Collectors.toList());

src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClientTest.golden

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ import org.junit.Test;
3737

3838
@Generated("by gapic-generator-java")
3939
public class EchoClientTest {
40-
public static MockServiceHelper mockServiceHelper;
41-
public static MockEcho mockEcho;
42-
public EchoClient client;
43-
public LocalChannelProvider channelProvider;
40+
private static MockServiceHelper mockServiceHelper;
41+
private static MockEcho mockEcho;
42+
private EchoClient client;
43+
private LocalChannelProvider channelProvider;
4444

4545
@BeforeClass
4646
public static void startStaticServer() {

src/test/java/com/google/api/generator/gapic/composer/goldens/GrpcEchoStub.golden

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,34 +45,39 @@ public class GrpcEchoStub extends EchoStub {
4545
.setRequestMarshaller(ProtoUtils.marshaller(EchoRequest.getDefaultInstance()))
4646
.setResponseMarshaller(ProtoUtils.marshaller(EchoResponse.getDefaultInstance()))
4747
.build();
48+
4849
private static final MethodDescriptor<ExpandRequest, EchoResponse> expandMethodDescriptor =
4950
MethodDescriptor.<ExpandRequest, EchoResponse>newBuilder()
5051
.setType(MethodDescriptor.MethodType.SERVER_STREAMING)
5152
.setFullMethodName("google.showcase.v1beta1.Echo/Expand")
5253
.setRequestMarshaller(ProtoUtils.marshaller(ExpandRequest.getDefaultInstance()))
5354
.setResponseMarshaller(ProtoUtils.marshaller(EchoResponse.getDefaultInstance()))
5455
.build();
56+
5557
private static final MethodDescriptor<EchoRequest, EchoResponse> collectMethodDescriptor =
5658
MethodDescriptor.<EchoRequest, EchoResponse>newBuilder()
5759
.setType(MethodDescriptor.MethodType.CLIENT_STREAMING)
5860
.setFullMethodName("google.showcase.v1beta1.Echo/Collect")
5961
.setRequestMarshaller(ProtoUtils.marshaller(EchoRequest.getDefaultInstance()))
6062
.setResponseMarshaller(ProtoUtils.marshaller(EchoResponse.getDefaultInstance()))
6163
.build();
64+
6265
private static final MethodDescriptor<EchoRequest, EchoResponse> chatMethodDescriptor =
6366
MethodDescriptor.<EchoRequest, EchoResponse>newBuilder()
6467
.setType(MethodDescriptor.MethodType.BIDI_STREAMING)
6568
.setFullMethodName("google.showcase.v1beta1.Echo/Chat")
6669
.setRequestMarshaller(ProtoUtils.marshaller(EchoRequest.getDefaultInstance()))
6770
.setResponseMarshaller(ProtoUtils.marshaller(EchoResponse.getDefaultInstance()))
6871
.build();
72+
6973
private static final MethodDescriptor<EchoRequest, EchoResponse> chatAgainMethodDescriptor =
7074
MethodDescriptor.<EchoRequest, EchoResponse>newBuilder()
7175
.setType(MethodDescriptor.MethodType.BIDI_STREAMING)
7276
.setFullMethodName("google.showcase.v1beta1.Echo/ChatAgain")
7377
.setRequestMarshaller(ProtoUtils.marshaller(EchoRequest.getDefaultInstance()))
7478
.setResponseMarshaller(ProtoUtils.marshaller(EchoResponse.getDefaultInstance()))
7579
.build();
80+
7681
private static final MethodDescriptor<PagedExpandRequest, PagedExpandResponse>
7782
pagedExpandMethodDescriptor =
7883
MethodDescriptor.<PagedExpandRequest, PagedExpandResponse>newBuilder()
@@ -82,20 +87,23 @@ public class GrpcEchoStub extends EchoStub {
8287
.setResponseMarshaller(
8388
ProtoUtils.marshaller(PagedExpandResponse.getDefaultInstance()))
8489
.build();
90+
8591
private static final MethodDescriptor<WaitRequest, Operation> waitMethodDescriptor =
8692
MethodDescriptor.<WaitRequest, Operation>newBuilder()
8793
.setType(MethodDescriptor.MethodType.UNARY)
8894
.setFullMethodName("google.showcase.v1beta1.Echo/Wait")
8995
.setRequestMarshaller(ProtoUtils.marshaller(WaitRequest.getDefaultInstance()))
9096
.setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance()))
9197
.build();
98+
9299
private static final MethodDescriptor<BlockRequest, BlockResponse> blockMethodDescriptor =
93100
MethodDescriptor.<BlockRequest, BlockResponse>newBuilder()
94101
.setType(MethodDescriptor.MethodType.UNARY)
95102
.setFullMethodName("google.showcase.v1beta1.Echo/Block")
96103
.setRequestMarshaller(ProtoUtils.marshaller(BlockRequest.getDefaultInstance()))
97104
.setResponseMarshaller(ProtoUtils.marshaller(BlockResponse.getDefaultInstance()))
98105
.build();
106+
99107
private final UnaryCallable<EchoRequest, EchoResponse> echoCallable;
100108
private final ServerStreamingCallable<ExpandRequest, EchoResponse> expandCallable;
101109
private final ClientStreamingCallable<EchoRequest, EchoResponse> collectCallable;
@@ -107,6 +115,7 @@ public class GrpcEchoStub extends EchoStub {
107115
private final UnaryCallable<WaitRequest, Operation> waitCallable;
108116
private final OperationCallable<WaitRequest, WaitResponse, WaitMetadata> waitOperationCallable;
109117
private final UnaryCallable<BlockRequest, BlockResponse> blockCallable;
118+
110119
private final BackgroundResource backgroundResources;
111120
private final GrpcOperationsStub operationsStub;
112121
private final GrpcStubCallableFactory callableFactory;
@@ -136,6 +145,7 @@ public class GrpcEchoStub extends EchoStub {
136145
throws IOException {
137146
this.callableFactory = callableFactory;
138147
this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory);
148+
139149
GrpcCallSettings<EchoRequest, EchoResponse> echoTransportSettings =
140150
GrpcCallSettings.<EchoRequest, EchoResponse>newBuilder()
141151
.setMethodDescriptor(echoMethodDescriptor)
@@ -168,6 +178,7 @@ public class GrpcEchoStub extends EchoStub {
168178
GrpcCallSettings.<BlockRequest, BlockResponse>newBuilder()
169179
.setMethodDescriptor(blockMethodDescriptor)
170180
.build();
181+
171182
this.echoCallable =
172183
callableFactory.createUnaryCallable(
173184
echoTransportSettings, settings.echoSettings(), clientContext);
@@ -198,6 +209,7 @@ public class GrpcEchoStub extends EchoStub {
198209
this.blockCallable =
199210
callableFactory.createUnaryCallable(
200211
blockTransportSettings, settings.blockSettings(), clientContext);
212+
201213
this.backgroundResources =
202214
new BackgroundResourceAggregation(clientContext.getBackgroundResources());
203215
}

0 commit comments

Comments
 (0)