2828import com .google .api .generator .engine .ast .AssignmentExpr ;
2929import com .google .api .generator .engine .ast .ClassDefinition ;
3030import com .google .api .generator .engine .ast .ConcreteReference ;
31+ import com .google .api .generator .engine .ast .EmptyLineStatement ;
3132import com .google .api .generator .engine .ast .EnumRefExpr ;
3233import com .google .api .generator .engine .ast .Expr ;
3334import com .google .api .generator .engine .ast .ExprStatement ;
6869import javax .annotation .Generated ;
6970
7071public 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 }
0 commit comments