96
96
import java .util .stream .Collectors ;
97
97
import javax .annotation .Generated ;
98
98
99
- public class ServiceClientClassComposer implements ClassComposer {
100
- private static final ServiceClientClassComposer INSTANCE = new ServiceClientClassComposer ();
99
+ public abstract class AbstractServiceClientClassComposer implements ClassComposer {
101
100
private static final String PAGED_RESPONSE_TYPE_NAME_PATTERN = "%sPagedResponse" ;
102
101
private static final String CALLABLE_NAME_PATTERN = "%sCallable" ;
103
102
private static final String PAGED_CALLABLE_NAME_PATTERN = "%sPagedCallable" ;
@@ -115,10 +114,14 @@ private enum CallableMethodKind {
115
114
PAGED ,
116
115
}
117
116
118
- private ServiceClientClassComposer () {}
117
+ private final TransportContext transportContext ;
119
118
120
- public static ServiceClientClassComposer instance () {
121
- return INSTANCE ;
119
+ protected AbstractServiceClientClassComposer (TransportContext transportContext ) {
120
+ this .transportContext = transportContext ;
121
+ }
122
+
123
+ protected TransportContext getTransportContext () {
124
+ return transportContext ;
122
125
}
123
126
124
127
@ Override
@@ -198,7 +201,7 @@ private static List<CommentStatement> createClassHeaderComments(
198
201
service , classMethodSampleCode , credentialsSampleCode , endpointSampleCode );
199
202
}
200
203
201
- private static List <MethodDefinition > createClassMethods (
204
+ private List <MethodDefinition > createClassMethods (
202
205
Service service ,
203
206
Map <String , Message > messageTypes ,
204
207
TypeStore typeStore ,
@@ -225,14 +228,16 @@ private static boolean hasLroMethods(Service service) {
225
228
return false ;
226
229
}
227
230
228
- private static List <Statement > createFieldDeclarations (
231
+ private List <Statement > createFieldDeclarations (
229
232
Service service , TypeStore typeStore , boolean hasLroClient ) {
230
233
Map <String , TypeNode > fieldNameToTypes = new HashMap <>();
231
234
fieldNameToTypes .put (
232
235
"settings" , typeStore .get (ClassNames .getServiceSettingsClassName (service )));
233
236
fieldNameToTypes .put ("stub" , typeStore .get (ClassNames .getServiceStubClassName (service )));
234
237
if (hasLroClient ) {
235
- fieldNameToTypes .put ("operationsClient" , typeStore .get ("OperationsClient" ));
238
+ fieldNameToTypes .put (
239
+ getTransportContext ().operationsClientName (),
240
+ getTransportContext ().operationsClientType ());
236
241
}
237
242
238
243
return fieldNameToTypes .entrySet ().stream ()
@@ -352,14 +357,14 @@ private static List<MethodDefinition> createStaticCreatorMethods(
352
357
return methods ;
353
358
}
354
359
355
- private static List <MethodDefinition > createConstructorMethods (
360
+ private List <MethodDefinition > createConstructorMethods (
356
361
Service service , TypeStore typeStore , boolean hasLroClient ) {
357
362
List <MethodDefinition > methods = new ArrayList <>();
358
363
String thisClientName = ClassNames .getServiceClientClassName (service );
359
364
String settingsName = ClassNames .getServiceSettingsClassName (service );
360
365
TypeNode thisClassType = typeStore .get (thisClientName );
361
366
TypeNode stubSettingsType = typeStore .get (ClassNames .getServiceStubSettingsClassName (service ));
362
- TypeNode operationsClientType = typeStore . get ( "OperationsClient" );
367
+ TypeNode operationsClientType = getTransportContext (). operationsClientType ( );
363
368
TypeNode exceptionType = typeStore .get ("IOException" );
364
369
365
370
TypeNode settingsType = typeStore .get (settingsName );
@@ -374,7 +379,10 @@ private static List<MethodDefinition> createConstructorMethods(
374
379
.build ());
375
380
VariableExpr operationsClientVarExpr =
376
381
VariableExpr .withVariable (
377
- Variable .builder ().setType (operationsClientType ).setName ("operationsClient" ).build ());
382
+ Variable .builder ()
383
+ .setType (operationsClientType )
384
+ .setName (getTransportContext ().operationsClientName ())
385
+ .build ());
378
386
379
387
// Create the ServiceClient(ServiceSettings settings) ctor.
380
388
List <Expr > ctorAssignmentExprs = new ArrayList <>();
@@ -404,10 +412,15 @@ private static List<MethodDefinition> createConstructorMethods(
404
412
.build ())
405
413
.build ());
406
414
415
+ String operationsStubGetterName =
416
+ String .format (
417
+ "get%s" ,
418
+ JavaStyle .toUpperCamelCase (getTransportContext ().transportOperationsStubName ()));
419
+
407
420
Expr clientArgExpr =
408
421
MethodInvocationExpr .builder ()
409
422
.setExprReferenceExpr (stubVarExpr .toBuilder ().setExprReferenceExpr (thisExpr ).build ())
410
- .setMethodName ("getOperationsStub" )
423
+ .setMethodName (operationsStubGetterName )
411
424
.build ();
412
425
AssignmentExpr operationsClientAssignExpr =
413
426
AssignmentExpr .builder ()
@@ -476,15 +489,19 @@ private static List<MethodDefinition> createConstructorMethods(
476
489
return methods ;
477
490
}
478
491
479
- private static List <MethodDefinition > createGetterMethods (
492
+ private List <MethodDefinition > createGetterMethods (
480
493
Service service , TypeStore typeStore , boolean hasLroClient ) {
481
494
Map <String , TypeNode > methodNameToTypes = new LinkedHashMap <>();
482
495
methodNameToTypes .put (
483
496
"getSettings" , typeStore .get (ClassNames .getServiceSettingsClassName (service )));
484
497
methodNameToTypes .put ("getStub" , typeStore .get (ClassNames .getServiceStubClassName (service )));
485
- String getOperationsClientMethodName = "getOperationsClient" ;
498
+ String getOperationsClientMethodName =
499
+ String .format (
500
+ "get%s" ,
501
+ JavaStyle .toUpperCamelCase (getTransportContext ().operationsClientName ()));
486
502
if (hasLroClient ) {
487
- methodNameToTypes .put (getOperationsClientMethodName , typeStore .get ("OperationsClient" ));
503
+ methodNameToTypes .put (
504
+ getOperationsClientMethodName , getTransportContext ().operationsClientType ());
488
505
}
489
506
AnnotationNode betaStubAnnotation =
490
507
AnnotationNode .builder ()
@@ -1681,8 +1698,6 @@ private static void createVaporTypes(Service service, TypeStore typeStore) {
1681
1698
ClassNames .getServiceClientClassName (service ));
1682
1699
}
1683
1700
1684
- // LRO Gapic-generated types.
1685
- typeStore .put ("com.google.longrunning" , "OperationsClient" );
1686
1701
// Pagination types.
1687
1702
typeStore .putAll (
1688
1703
service .pakkage (),
0 commit comments