Skip to content

Commit a7daee6

Browse files
committed
disambiguate between operationsClient (grpc) and httpJsonOperationsClient
1 parent 58daebb commit a7daee6

File tree

11 files changed

+84
-56
lines changed

11 files changed

+84
-56
lines changed

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

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,9 @@ private List<Statement> createFieldDeclarations(
235235
"settings", typeStore.get(ClassNames.getServiceSettingsClassName(service)));
236236
fieldNameToTypes.put("stub", typeStore.get(ClassNames.getServiceStubClassName(service)));
237237
if (hasLroClient) {
238-
fieldNameToTypes.put("operationsClient", getTransportContext().operationsClientType());
238+
fieldNameToTypes.put(
239+
getTransportContext().operationsClientName(),
240+
getTransportContext().operationsClientType());
239241
}
240242

241243
return fieldNameToTypes.entrySet().stream()
@@ -377,7 +379,10 @@ private List<MethodDefinition> createConstructorMethods(
377379
.build());
378380
VariableExpr operationsClientVarExpr =
379381
VariableExpr.withVariable(
380-
Variable.builder().setType(operationsClientType).setName("operationsClient").build());
382+
Variable.builder()
383+
.setType(operationsClientType)
384+
.setName(getTransportContext().operationsClientName())
385+
.build());
381386

382387
// Create the ServiceClient(ServiceSettings settings) ctor.
383388
List<Expr> ctorAssignmentExprs = new ArrayList<>();
@@ -407,10 +412,15 @@ private List<MethodDefinition> createConstructorMethods(
407412
.build())
408413
.build());
409414

415+
String operationsStubGetterName =
416+
String.format(
417+
"get%s",
418+
JavaStyle.toUpperCamelCase(getTransportContext().transportOperationsStubName()));
419+
410420
Expr clientArgExpr =
411421
MethodInvocationExpr.builder()
412422
.setExprReferenceExpr(stubVarExpr.toBuilder().setExprReferenceExpr(thisExpr).build())
413-
.setMethodName("getOperationsStub")
423+
.setMethodName(operationsStubGetterName)
414424
.build();
415425
AssignmentExpr operationsClientAssignExpr =
416426
AssignmentExpr.builder()
@@ -485,9 +495,13 @@ private List<MethodDefinition> createGetterMethods(
485495
methodNameToTypes.put(
486496
"getSettings", typeStore.get(ClassNames.getServiceSettingsClassName(service)));
487497
methodNameToTypes.put("getStub", typeStore.get(ClassNames.getServiceStubClassName(service)));
488-
String getOperationsClientMethodName = "getOperationsClient";
498+
String getOperationsClientMethodName =
499+
String.format(
500+
"get%s",
501+
JavaStyle.toUpperCamelCase(getTransportContext().operationsClientName()));
489502
if (hasLroClient) {
490-
methodNameToTypes.put(getOperationsClientMethodName, getTransportContext().operationsClientType());
503+
methodNameToTypes.put(
504+
getOperationsClientMethodName, getTransportContext().operationsClientType());
491505
}
492506
AnnotationNode betaStubAnnotation =
493507
AnnotationNode.builder()

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

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ private static List<TypeNode> createClassImplements(TypeStore typeStore) {
112112

113113
private List<MethodDefinition> createClassMethods(
114114
Service service, Map<String, Message> messageTypes, TypeStore typeStore) {
115-
boolean hasLroClient = hasLroMethods(service);
115+
boolean hasLroClient = service.hasLroMethods();
116116
List<MethodDefinition> methods = new ArrayList<>();
117117
if (hasLroClient) {
118118
methods.add(createOperationsStubGetter(typeStore));
@@ -207,7 +207,11 @@ private static MethodDefinition createCallableGetterHelper(
207207
}
208208

209209
private MethodDefinition createOperationsStubGetter(TypeStore typeStore) {
210-
String methodName = "getOperationsStub";
210+
String methodName =
211+
String.format(
212+
"get%s",
213+
JavaStyle.toUpperCamelCase(getTransportContext().transportOperationsStubName()));
214+
211215
return MethodDefinition.builder()
212216
.setScope(ScopeNode.PUBLIC)
213217
.setReturnType(getTransportContext().operationsStubType())
@@ -228,15 +232,6 @@ private static List<MethodDefinition> createBackgroundResourceMethodOverrides()
228232
return Arrays.asList(closeMethod);
229233
}
230234

231-
private static boolean hasLroMethods(Service service) {
232-
for (Method method : service.methods()) {
233-
if (method.hasLro()) {
234-
return true;
235-
}
236-
}
237-
return false;
238-
}
239-
240235
private static TypeStore createTypes(Service service, Map<String, Message> messageTypes) {
241236
List<Class> concreteClazzes =
242237
Arrays.asList(

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

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import java.io.IOException;
6262
import java.util.ArrayList;
6363
import java.util.Arrays;
64+
import java.util.Collections;
6465
import java.util.LinkedHashMap;
6566
import java.util.List;
6667
import java.util.Map;
@@ -84,7 +85,7 @@ public abstract class AbstractTransportServiceStubClassComposer implements Class
8485
private static final String CALLABLE_CLASS_MEMBER_PATTERN = "%sCallable";
8586
private static final String OPERATION_CALLABLE_CLASS_MEMBER_PATTERN = "%sOperationCallable";
8687
private static final String OPERATION_CALLABLE_NAME = "OperationCallable";
87-
private static final String OPERATIONS_STUB_MEMBER_NAME = "operationsStub";
88+
// private static final String OPERATIONS_STUB_MEMBER_NAME = "operationsStub";
8889
private static final String PAGED_CALLABLE_NAME = "PagedCallable";
8990

9091
protected static final TypeStore FIXED_TYPESTORE = createStaticTypes();
@@ -143,12 +144,12 @@ public GapicClass generate(GapicContext context, Service service) {
143144
.setName(BACKGROUND_RESOURCES_MEMBER_NAME)
144145
.setType(FIXED_TYPESTORE.get("BackgroundResource"))
145146
.build()));
146-
if (getTransportContext().transportOperationsStubType() != null) {
147+
if (generateOperationsStubLogic(service)) {
147148
classMemberVarExprs.put(
148-
OPERATIONS_STUB_MEMBER_NAME,
149+
getTransportContext().transportOperationsStubName(),
149150
VariableExpr.withVariable(
150151
Variable.builder()
151-
.setName(OPERATIONS_STUB_MEMBER_NAME)
152+
.setName(getTransportContext().transportOperationsStubName())
152153
.setType(getTransportContext().transportOperationsStubType())
153154
.build()));
154155
}
@@ -196,13 +197,26 @@ public GapicClass generate(GapicContext context, Service service) {
196197
protected abstract Statement createMethodDescriptorVariableDecl(
197198
Service service, Method protoMethod, VariableExpr methodDescriptorVarExpr);
198199

200+
protected boolean generateOperationsStubLogic(Service service) {
201+
return true;
202+
}
203+
199204
protected List<MethodDefinition> createOperationsStubGetterMethod(
200-
VariableExpr operationsStubVarExpr) {
205+
Service service, VariableExpr operationsStubVarExpr) {
206+
if (!generateOperationsStubLogic(service)) {
207+
return Collections.emptyList();
208+
}
209+
210+
String methodName =
211+
String.format(
212+
"get%s",
213+
JavaStyle.toUpperCamelCase(getTransportContext().transportOperationsStubName()));
214+
201215
return Arrays.asList(
202216
MethodDefinition.builder()
203217
.setScope(ScopeNode.PUBLIC)
204218
.setReturnType(operationsStubVarExpr.type())
205-
.setName("getOperationsStub")
219+
.setName(methodName)
206220
.setReturnExpr(operationsStubVarExpr)
207221
.build());
208222
}
@@ -385,7 +399,8 @@ protected List<MethodDefinition> createClassMethods(
385399
javaMethods.addAll(
386400
createGetMethodDescriptorsMethod(service, typeStore, protoMethodNameToDescriptorVarExprs));
387401
javaMethods.addAll(
388-
createOperationsStubGetterMethod(classMemberVarExprs.get(OPERATIONS_STUB_MEMBER_NAME)));
402+
createOperationsStubGetterMethod(
403+
service, classMemberVarExprs.get(getTransportContext().transportOperationsStubName())));
389404
javaMethods.addAll(createCallableGetterMethods(callableClassMemberVarExprs));
390405
javaMethods.addAll(
391406
createStubOverrideMethods(classMemberVarExprs.get(BACKGROUND_RESOURCES_MEMBER_NAME)));
@@ -551,8 +566,8 @@ protected List<MethodDefinition> createConstructorMethods(
551566
.build())
552567
.setValueExpr(callableFactoryVarExpr)
553568
.build());
554-
VariableExpr operationsStubClassVarExpr = classMemberVarExprs.get(OPERATIONS_STUB_MEMBER_NAME);
555-
if (getTransportContext().transportOperationsStubType() != null) {
569+
VariableExpr operationsStubClassVarExpr = classMemberVarExprs.get(getTransportContext().transportOperationsStubName());
570+
if (generateOperationsStubLogic(service)) {
556571
secondCtorExprs.add(
557572
AssignmentExpr.builder()
558573
.setVariableExpr(
@@ -716,17 +731,18 @@ private Expr createCallableInitExpr(
716731
clientContextVarExpr);
717732
}
718733

719-
Optional<String> callableCreatorMethodName = getCallableCreatorMethodName(callableVarExpr.type());
720-
734+
Optional<String> callableCreatorMethodName =
735+
getCallableCreatorMethodName(callableVarExpr.type());
721736

722737
Expr initExpr;
723738
if (callableCreatorMethodName.isPresent()) {
724-
initExpr = MethodInvocationExpr.builder()
725-
.setExprReferenceExpr(callableFactoryVarExpr)
726-
.setMethodName(callableCreatorMethodName.get())
727-
.setArguments(creatorMethodArgVarExprs)
728-
.setReturnType(callableVarExpr.type())
729-
.build();
739+
initExpr =
740+
MethodInvocationExpr.builder()
741+
.setExprReferenceExpr(callableFactoryVarExpr)
742+
.setMethodName(callableCreatorMethodName.get())
743+
.setArguments(creatorMethodArgVarExprs)
744+
.setReturnType(callableVarExpr.type())
745+
.build();
730746
} else {
731747
initExpr = ValueExpr.createNullExpr();
732748
}

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import com.google.api.generator.gapic.composer.utils.ClassNames;
2020
import com.google.api.generator.gapic.model.Transport;
2121
import com.google.auto.value.AutoValue;
22-
import javax.annotation.Nullable;
2322

2423
@AutoValue
2524
public abstract class TransportContext {
@@ -37,9 +36,10 @@ public abstract class TransportContext {
3736

3837
public abstract Class<?> methodDescriptorClass();
3938

40-
@Nullable
4139
public abstract TypeNode transportOperationsStubType();
4240

41+
public abstract String transportOperationsStubName();
42+
4343
// For AbstractServiceSettingsClassComposer
4444
public abstract Class<?> instantiatingChannelProviderClass();
4545

@@ -66,6 +66,8 @@ public abstract class TransportContext {
6666

6767
public abstract TypeNode operationsClientType();
6868

69+
public abstract String operationsClientName();
70+
6971
protected static TypeNode classToType(Class<?> clazz) {
7072
return TypeNode.withReference(ConcreteReference.withClazz(clazz));
7173
}
@@ -107,6 +109,8 @@ public abstract Builder setDefaultTransportProviderBuilderName(
107109

108110
public abstract Builder setTransportOperationsStubType(TypeNode transportOperationsStubType);
109111

112+
public abstract Builder setTransportOperationsStubName(String transportOperationsStubName);
113+
110114
public abstract Builder setOperationsStubType(TypeNode operationsStubType);
111115

112116
public abstract Builder setOperationResponseTransformerType(TypeNode operationResponseTransformerType);
@@ -115,6 +119,8 @@ public abstract Builder setDefaultTransportProviderBuilderName(
115119

116120
public abstract Builder setOperationsClientType(TypeNode operationsClientType);
117121

122+
public abstract Builder setOperationsClientName(String operationsClientName);
123+
118124
public abstract TransportContext build();
119125
}
120126
}

src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcContext.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public abstract class GrpcContext extends TransportContext {
3939
.setStubCallableFactoryType(classToType(GrpcStubCallableFactory.class))
4040
.setMethodDescriptorClass(MethodDescriptor.class)
4141
.setTransportOperationsStubType(classToType(GrpcOperationsStub.class))
42+
.setTransportOperationsStubName("operationsStub")
4243
// For grpc.ServiceSettingsClassComposer
4344
.setInstantiatingChannelProviderClass(InstantiatingGrpcChannelProvider.Builder.class)
4445
.setDefaultTransportProviderBuilderName("defaultGrpcTransportProviderBuilder")
@@ -57,6 +58,7 @@ public abstract class GrpcContext extends TransportContext {
5758
classToType(ProtoOperationTransformers.MetadataTransformer.class))
5859
// For ServiceClientClassComposer
5960
.setOperationsClientType(classToType(OperationsClient.class))
61+
.setOperationsClientName("operationsClient")
6062
.build();
6163

6264
public static TransportContext instance() {

src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ private static TypeStore createStaticTypes() {
9090
ProtoRestSerializer.class));
9191
}
9292

93+
@Override
94+
protected boolean generateOperationsStubLogic(Service service) {
95+
return service.hasLroMethods();
96+
}
97+
9398
@Override
9499
protected Statement createMethodDescriptorVariableDecl(
95100
Service service, Method protoMethod, VariableExpr methodDescriptorVarExpr) {

src/main/java/com/google/api/generator/gapic/composer/rest/RestContext.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public abstract class RestContext extends TransportContext {
3939
.setStubCallableFactoryType(classToType(HttpJsonStubCallableFactory.class))
4040
.setMethodDescriptorClass(ApiMethodDescriptor.class)
4141
.setTransportOperationsStubType(classToType(HttpJsonOperationsStub.class))
42+
.setTransportOperationsStubName("httpJsonOperationsStub")
4243
// For httpjson.ServiceSettingsClassComposer
4344
.setInstantiatingChannelProviderClass(InstantiatingHttpJsonChannelProvider.Builder.class)
4445
.setDefaultTransportProviderBuilderName("defaultHttpJsonTransportProviderBuilder")
@@ -58,6 +59,7 @@ public abstract class RestContext extends TransportContext {
5859
classToType(ProtoOperationTransformers.MetadataTransformer.class))
5960
// For ServiceClientClassComposer
6061
.setOperationsClientType(classToType(OperationsClient.class))
62+
.setOperationsClientName("httpJsonOperationsClient")
6163
.build();
6264

6365
public static TransportContext instance() {

src/main/java/com/google/api/generator/gapic/model/Service.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,15 @@ public boolean hasDescription() {
4949
return !Strings.isNullOrEmpty(description());
5050
}
5151

52+
public boolean hasLroMethods() {
53+
for (Method method : methods()) {
54+
if (method.hasLro()) {
55+
return true;
56+
}
57+
}
58+
return false;
59+
}
60+
5261
public abstract Builder toBuilder();
5362

5463
public static Builder builder() {

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
1111
import com.google.api.gax.httpjson.ProtoMessageRequestFormatter;
1212
import com.google.api.gax.httpjson.ProtoMessageResponseParser;
1313
import com.google.api.gax.httpjson.ProtoRestSerializer;
14-
import com.google.api.gax.httpjson.longrunning.stub.HttpJsonOperationsStub;
1514
import com.google.api.gax.rpc.ClientContext;
1615
import com.google.api.gax.rpc.UnaryCallable;
1716
import com.google.showcase.v1beta1.RepeatRequest;
@@ -273,7 +272,6 @@ public class HttpJsonComplianceStub extends ComplianceStub {
273272
private final UnaryCallable<RepeatRequest, RepeatResponse> repeatDataPathTrailingResourceCallable;
274273

275274
private final BackgroundResource backgroundResources;
276-
private final HttpJsonOperationsStub operationsStub;
277275
private final HttpJsonStubCallableFactory callableFactory;
278276

279277
public static final HttpJsonComplianceStub create(ComplianceStubSettings settings)
@@ -313,7 +311,6 @@ public class HttpJsonComplianceStub extends ComplianceStub {
313311
HttpJsonStubCallableFactory callableFactory)
314312
throws IOException {
315313
this.callableFactory = callableFactory;
316-
this.operationsStub = HttpJsonOperationsStub.create(clientContext, callableFactory);
317314

318315
HttpJsonCallSettings<RepeatRequest, RepeatResponse> repeatDataBodyTransportSettings =
319316
HttpJsonCallSettings.<RepeatRequest, RepeatResponse>newBuilder()
@@ -384,10 +381,6 @@ public class HttpJsonComplianceStub extends ComplianceStub {
384381
return methodDescriptors;
385382
}
386383

387-
public HttpJsonOperationsStub getOperationsStub() {
388-
return operationsStub;
389-
}
390-
391384
@Override
392385
public UnaryCallable<RepeatRequest, RepeatResponse> repeatDataBodyCallable() {
393386
return repeatDataBodyCallable;

test/integration/goldens/compute/com/google/cloud/compute/v1/stub/HttpJsonAddressesStub.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import com.google.api.gax.httpjson.ProtoMessageRequestFormatter;
3131
import com.google.api.gax.httpjson.ProtoMessageResponseParser;
3232
import com.google.api.gax.httpjson.ProtoRestSerializer;
33-
import com.google.api.gax.httpjson.longrunning.stub.HttpJsonOperationsStub;
3433
import com.google.api.gax.rpc.ClientContext;
3534
import com.google.api.gax.rpc.UnaryCallable;
3635
import com.google.cloud.compute.v1.AddressAggregatedList;
@@ -228,7 +227,6 @@ public class HttpJsonAddressesStub extends AddressesStub {
228227
private final UnaryCallable<ListAddressesRequest, ListPagedResponse> listPagedCallable;
229228

230229
private final BackgroundResource backgroundResources;
231-
private final HttpJsonOperationsStub operationsStub;
232230
private final HttpJsonStubCallableFactory callableFactory;
233231

234232
public static final HttpJsonAddressesStub create(AddressesStubSettings settings)
@@ -267,7 +265,6 @@ protected HttpJsonAddressesStub(
267265
HttpJsonStubCallableFactory callableFactory)
268266
throws IOException {
269267
this.callableFactory = callableFactory;
270-
this.operationsStub = HttpJsonOperationsStub.create(clientContext, callableFactory);
271268

272269
HttpJsonCallSettings<AggregatedListAddressesRequest, AddressAggregatedList>
273270
aggregatedListTransportSettings =
@@ -320,10 +317,6 @@ public static List<ApiMethodDescriptor> getMethodDescriptors() {
320317
return methodDescriptors;
321318
}
322319

323-
public HttpJsonOperationsStub getOperationsStub() {
324-
return operationsStub;
325-
}
326-
327320
@Override
328321
public UnaryCallable<AggregatedListAddressesRequest, AddressAggregatedList>
329322
aggregatedListCallable() {

0 commit comments

Comments
 (0)