• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2022 Google LLC
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      https://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.google.cloud.vision.v1p4beta1.stub;
18 
19 import static com.google.cloud.vision.v1p4beta1.ProductSearchClient.ListProductSetsPagedResponse;
20 import static com.google.cloud.vision.v1p4beta1.ProductSearchClient.ListProductsInProductSetPagedResponse;
21 import static com.google.cloud.vision.v1p4beta1.ProductSearchClient.ListProductsPagedResponse;
22 import static com.google.cloud.vision.v1p4beta1.ProductSearchClient.ListReferenceImagesPagedResponse;
23 
24 import com.google.api.core.BetaApi;
25 import com.google.api.gax.core.BackgroundResource;
26 import com.google.api.gax.core.BackgroundResourceAggregation;
27 import com.google.api.gax.grpc.GrpcCallSettings;
28 import com.google.api.gax.grpc.GrpcStubCallableFactory;
29 import com.google.api.gax.rpc.ClientContext;
30 import com.google.api.gax.rpc.OperationCallable;
31 import com.google.api.gax.rpc.UnaryCallable;
32 import com.google.cloud.vision.v1p4beta1.AddProductToProductSetRequest;
33 import com.google.cloud.vision.v1p4beta1.BatchOperationMetadata;
34 import com.google.cloud.vision.v1p4beta1.CreateProductRequest;
35 import com.google.cloud.vision.v1p4beta1.CreateProductSetRequest;
36 import com.google.cloud.vision.v1p4beta1.CreateReferenceImageRequest;
37 import com.google.cloud.vision.v1p4beta1.DeleteProductRequest;
38 import com.google.cloud.vision.v1p4beta1.DeleteProductSetRequest;
39 import com.google.cloud.vision.v1p4beta1.DeleteReferenceImageRequest;
40 import com.google.cloud.vision.v1p4beta1.GetProductRequest;
41 import com.google.cloud.vision.v1p4beta1.GetProductSetRequest;
42 import com.google.cloud.vision.v1p4beta1.GetReferenceImageRequest;
43 import com.google.cloud.vision.v1p4beta1.ImportProductSetsRequest;
44 import com.google.cloud.vision.v1p4beta1.ImportProductSetsResponse;
45 import com.google.cloud.vision.v1p4beta1.ListProductSetsRequest;
46 import com.google.cloud.vision.v1p4beta1.ListProductSetsResponse;
47 import com.google.cloud.vision.v1p4beta1.ListProductsInProductSetRequest;
48 import com.google.cloud.vision.v1p4beta1.ListProductsInProductSetResponse;
49 import com.google.cloud.vision.v1p4beta1.ListProductsRequest;
50 import com.google.cloud.vision.v1p4beta1.ListProductsResponse;
51 import com.google.cloud.vision.v1p4beta1.ListReferenceImagesRequest;
52 import com.google.cloud.vision.v1p4beta1.ListReferenceImagesResponse;
53 import com.google.cloud.vision.v1p4beta1.Product;
54 import com.google.cloud.vision.v1p4beta1.ProductSet;
55 import com.google.cloud.vision.v1p4beta1.PurgeProductsRequest;
56 import com.google.cloud.vision.v1p4beta1.ReferenceImage;
57 import com.google.cloud.vision.v1p4beta1.RemoveProductFromProductSetRequest;
58 import com.google.cloud.vision.v1p4beta1.UpdateProductRequest;
59 import com.google.cloud.vision.v1p4beta1.UpdateProductSetRequest;
60 import com.google.common.collect.ImmutableMap;
61 import com.google.longrunning.Operation;
62 import com.google.longrunning.stub.GrpcOperationsStub;
63 import com.google.protobuf.Empty;
64 import io.grpc.MethodDescriptor;
65 import io.grpc.protobuf.ProtoUtils;
66 import java.io.IOException;
67 import java.util.concurrent.TimeUnit;
68 import javax.annotation.Generated;
69 
70 // AUTO-GENERATED DOCUMENTATION AND CLASS.
71 /**
72  * gRPC stub implementation for the ProductSearch service API.
73  *
74  * <p>This class is for advanced usage and reflects the underlying API directly.
75  */
76 @BetaApi
77 @Generated("by gapic-generator-java")
78 public class GrpcProductSearchStub extends ProductSearchStub {
79   private static final MethodDescriptor<CreateProductSetRequest, ProductSet>
80       createProductSetMethodDescriptor =
81           MethodDescriptor.<CreateProductSetRequest, ProductSet>newBuilder()
82               .setType(MethodDescriptor.MethodType.UNARY)
83               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/CreateProductSet")
84               .setRequestMarshaller(
85                   ProtoUtils.marshaller(CreateProductSetRequest.getDefaultInstance()))
86               .setResponseMarshaller(ProtoUtils.marshaller(ProductSet.getDefaultInstance()))
87               .build();
88 
89   private static final MethodDescriptor<ListProductSetsRequest, ListProductSetsResponse>
90       listProductSetsMethodDescriptor =
91           MethodDescriptor.<ListProductSetsRequest, ListProductSetsResponse>newBuilder()
92               .setType(MethodDescriptor.MethodType.UNARY)
93               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/ListProductSets")
94               .setRequestMarshaller(
95                   ProtoUtils.marshaller(ListProductSetsRequest.getDefaultInstance()))
96               .setResponseMarshaller(
97                   ProtoUtils.marshaller(ListProductSetsResponse.getDefaultInstance()))
98               .build();
99 
100   private static final MethodDescriptor<GetProductSetRequest, ProductSet>
101       getProductSetMethodDescriptor =
102           MethodDescriptor.<GetProductSetRequest, ProductSet>newBuilder()
103               .setType(MethodDescriptor.MethodType.UNARY)
104               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/GetProductSet")
105               .setRequestMarshaller(
106                   ProtoUtils.marshaller(GetProductSetRequest.getDefaultInstance()))
107               .setResponseMarshaller(ProtoUtils.marshaller(ProductSet.getDefaultInstance()))
108               .build();
109 
110   private static final MethodDescriptor<UpdateProductSetRequest, ProductSet>
111       updateProductSetMethodDescriptor =
112           MethodDescriptor.<UpdateProductSetRequest, ProductSet>newBuilder()
113               .setType(MethodDescriptor.MethodType.UNARY)
114               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/UpdateProductSet")
115               .setRequestMarshaller(
116                   ProtoUtils.marshaller(UpdateProductSetRequest.getDefaultInstance()))
117               .setResponseMarshaller(ProtoUtils.marshaller(ProductSet.getDefaultInstance()))
118               .build();
119 
120   private static final MethodDescriptor<DeleteProductSetRequest, Empty>
121       deleteProductSetMethodDescriptor =
122           MethodDescriptor.<DeleteProductSetRequest, Empty>newBuilder()
123               .setType(MethodDescriptor.MethodType.UNARY)
124               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/DeleteProductSet")
125               .setRequestMarshaller(
126                   ProtoUtils.marshaller(DeleteProductSetRequest.getDefaultInstance()))
127               .setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance()))
128               .build();
129 
130   private static final MethodDescriptor<CreateProductRequest, Product>
131       createProductMethodDescriptor =
132           MethodDescriptor.<CreateProductRequest, Product>newBuilder()
133               .setType(MethodDescriptor.MethodType.UNARY)
134               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/CreateProduct")
135               .setRequestMarshaller(
136                   ProtoUtils.marshaller(CreateProductRequest.getDefaultInstance()))
137               .setResponseMarshaller(ProtoUtils.marshaller(Product.getDefaultInstance()))
138               .build();
139 
140   private static final MethodDescriptor<ListProductsRequest, ListProductsResponse>
141       listProductsMethodDescriptor =
142           MethodDescriptor.<ListProductsRequest, ListProductsResponse>newBuilder()
143               .setType(MethodDescriptor.MethodType.UNARY)
144               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/ListProducts")
145               .setRequestMarshaller(ProtoUtils.marshaller(ListProductsRequest.getDefaultInstance()))
146               .setResponseMarshaller(
147                   ProtoUtils.marshaller(ListProductsResponse.getDefaultInstance()))
148               .build();
149 
150   private static final MethodDescriptor<GetProductRequest, Product> getProductMethodDescriptor =
151       MethodDescriptor.<GetProductRequest, Product>newBuilder()
152           .setType(MethodDescriptor.MethodType.UNARY)
153           .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/GetProduct")
154           .setRequestMarshaller(ProtoUtils.marshaller(GetProductRequest.getDefaultInstance()))
155           .setResponseMarshaller(ProtoUtils.marshaller(Product.getDefaultInstance()))
156           .build();
157 
158   private static final MethodDescriptor<UpdateProductRequest, Product>
159       updateProductMethodDescriptor =
160           MethodDescriptor.<UpdateProductRequest, Product>newBuilder()
161               .setType(MethodDescriptor.MethodType.UNARY)
162               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/UpdateProduct")
163               .setRequestMarshaller(
164                   ProtoUtils.marshaller(UpdateProductRequest.getDefaultInstance()))
165               .setResponseMarshaller(ProtoUtils.marshaller(Product.getDefaultInstance()))
166               .build();
167 
168   private static final MethodDescriptor<DeleteProductRequest, Empty> deleteProductMethodDescriptor =
169       MethodDescriptor.<DeleteProductRequest, Empty>newBuilder()
170           .setType(MethodDescriptor.MethodType.UNARY)
171           .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/DeleteProduct")
172           .setRequestMarshaller(ProtoUtils.marshaller(DeleteProductRequest.getDefaultInstance()))
173           .setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance()))
174           .build();
175 
176   private static final MethodDescriptor<CreateReferenceImageRequest, ReferenceImage>
177       createReferenceImageMethodDescriptor =
178           MethodDescriptor.<CreateReferenceImageRequest, ReferenceImage>newBuilder()
179               .setType(MethodDescriptor.MethodType.UNARY)
180               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/CreateReferenceImage")
181               .setRequestMarshaller(
182                   ProtoUtils.marshaller(CreateReferenceImageRequest.getDefaultInstance()))
183               .setResponseMarshaller(ProtoUtils.marshaller(ReferenceImage.getDefaultInstance()))
184               .build();
185 
186   private static final MethodDescriptor<DeleteReferenceImageRequest, Empty>
187       deleteReferenceImageMethodDescriptor =
188           MethodDescriptor.<DeleteReferenceImageRequest, Empty>newBuilder()
189               .setType(MethodDescriptor.MethodType.UNARY)
190               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/DeleteReferenceImage")
191               .setRequestMarshaller(
192                   ProtoUtils.marshaller(DeleteReferenceImageRequest.getDefaultInstance()))
193               .setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance()))
194               .build();
195 
196   private static final MethodDescriptor<ListReferenceImagesRequest, ListReferenceImagesResponse>
197       listReferenceImagesMethodDescriptor =
198           MethodDescriptor.<ListReferenceImagesRequest, ListReferenceImagesResponse>newBuilder()
199               .setType(MethodDescriptor.MethodType.UNARY)
200               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/ListReferenceImages")
201               .setRequestMarshaller(
202                   ProtoUtils.marshaller(ListReferenceImagesRequest.getDefaultInstance()))
203               .setResponseMarshaller(
204                   ProtoUtils.marshaller(ListReferenceImagesResponse.getDefaultInstance()))
205               .build();
206 
207   private static final MethodDescriptor<GetReferenceImageRequest, ReferenceImage>
208       getReferenceImageMethodDescriptor =
209           MethodDescriptor.<GetReferenceImageRequest, ReferenceImage>newBuilder()
210               .setType(MethodDescriptor.MethodType.UNARY)
211               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/GetReferenceImage")
212               .setRequestMarshaller(
213                   ProtoUtils.marshaller(GetReferenceImageRequest.getDefaultInstance()))
214               .setResponseMarshaller(ProtoUtils.marshaller(ReferenceImage.getDefaultInstance()))
215               .build();
216 
217   private static final MethodDescriptor<AddProductToProductSetRequest, Empty>
218       addProductToProductSetMethodDescriptor =
219           MethodDescriptor.<AddProductToProductSetRequest, Empty>newBuilder()
220               .setType(MethodDescriptor.MethodType.UNARY)
221               .setFullMethodName(
222                   "google.cloud.vision.v1p4beta1.ProductSearch/AddProductToProductSet")
223               .setRequestMarshaller(
224                   ProtoUtils.marshaller(AddProductToProductSetRequest.getDefaultInstance()))
225               .setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance()))
226               .build();
227 
228   private static final MethodDescriptor<RemoveProductFromProductSetRequest, Empty>
229       removeProductFromProductSetMethodDescriptor =
230           MethodDescriptor.<RemoveProductFromProductSetRequest, Empty>newBuilder()
231               .setType(MethodDescriptor.MethodType.UNARY)
232               .setFullMethodName(
233                   "google.cloud.vision.v1p4beta1.ProductSearch/RemoveProductFromProductSet")
234               .setRequestMarshaller(
235                   ProtoUtils.marshaller(RemoveProductFromProductSetRequest.getDefaultInstance()))
236               .setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance()))
237               .build();
238 
239   private static final MethodDescriptor<
240           ListProductsInProductSetRequest, ListProductsInProductSetResponse>
241       listProductsInProductSetMethodDescriptor =
242           MethodDescriptor
243               .<ListProductsInProductSetRequest, ListProductsInProductSetResponse>newBuilder()
244               .setType(MethodDescriptor.MethodType.UNARY)
245               .setFullMethodName(
246                   "google.cloud.vision.v1p4beta1.ProductSearch/ListProductsInProductSet")
247               .setRequestMarshaller(
248                   ProtoUtils.marshaller(ListProductsInProductSetRequest.getDefaultInstance()))
249               .setResponseMarshaller(
250                   ProtoUtils.marshaller(ListProductsInProductSetResponse.getDefaultInstance()))
251               .build();
252 
253   private static final MethodDescriptor<ImportProductSetsRequest, Operation>
254       importProductSetsMethodDescriptor =
255           MethodDescriptor.<ImportProductSetsRequest, Operation>newBuilder()
256               .setType(MethodDescriptor.MethodType.UNARY)
257               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/ImportProductSets")
258               .setRequestMarshaller(
259                   ProtoUtils.marshaller(ImportProductSetsRequest.getDefaultInstance()))
260               .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance()))
261               .build();
262 
263   private static final MethodDescriptor<PurgeProductsRequest, Operation>
264       purgeProductsMethodDescriptor =
265           MethodDescriptor.<PurgeProductsRequest, Operation>newBuilder()
266               .setType(MethodDescriptor.MethodType.UNARY)
267               .setFullMethodName("google.cloud.vision.v1p4beta1.ProductSearch/PurgeProducts")
268               .setRequestMarshaller(
269                   ProtoUtils.marshaller(PurgeProductsRequest.getDefaultInstance()))
270               .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance()))
271               .build();
272 
273   private final UnaryCallable<CreateProductSetRequest, ProductSet> createProductSetCallable;
274   private final UnaryCallable<ListProductSetsRequest, ListProductSetsResponse>
275       listProductSetsCallable;
276   private final UnaryCallable<ListProductSetsRequest, ListProductSetsPagedResponse>
277       listProductSetsPagedCallable;
278   private final UnaryCallable<GetProductSetRequest, ProductSet> getProductSetCallable;
279   private final UnaryCallable<UpdateProductSetRequest, ProductSet> updateProductSetCallable;
280   private final UnaryCallable<DeleteProductSetRequest, Empty> deleteProductSetCallable;
281   private final UnaryCallable<CreateProductRequest, Product> createProductCallable;
282   private final UnaryCallable<ListProductsRequest, ListProductsResponse> listProductsCallable;
283   private final UnaryCallable<ListProductsRequest, ListProductsPagedResponse>
284       listProductsPagedCallable;
285   private final UnaryCallable<GetProductRequest, Product> getProductCallable;
286   private final UnaryCallable<UpdateProductRequest, Product> updateProductCallable;
287   private final UnaryCallable<DeleteProductRequest, Empty> deleteProductCallable;
288   private final UnaryCallable<CreateReferenceImageRequest, ReferenceImage>
289       createReferenceImageCallable;
290   private final UnaryCallable<DeleteReferenceImageRequest, Empty> deleteReferenceImageCallable;
291   private final UnaryCallable<ListReferenceImagesRequest, ListReferenceImagesResponse>
292       listReferenceImagesCallable;
293   private final UnaryCallable<ListReferenceImagesRequest, ListReferenceImagesPagedResponse>
294       listReferenceImagesPagedCallable;
295   private final UnaryCallable<GetReferenceImageRequest, ReferenceImage> getReferenceImageCallable;
296   private final UnaryCallable<AddProductToProductSetRequest, Empty> addProductToProductSetCallable;
297   private final UnaryCallable<RemoveProductFromProductSetRequest, Empty>
298       removeProductFromProductSetCallable;
299   private final UnaryCallable<ListProductsInProductSetRequest, ListProductsInProductSetResponse>
300       listProductsInProductSetCallable;
301   private final UnaryCallable<
302           ListProductsInProductSetRequest, ListProductsInProductSetPagedResponse>
303       listProductsInProductSetPagedCallable;
304   private final UnaryCallable<ImportProductSetsRequest, Operation> importProductSetsCallable;
305   private final OperationCallable<
306           ImportProductSetsRequest, ImportProductSetsResponse, BatchOperationMetadata>
307       importProductSetsOperationCallable;
308   private final UnaryCallable<PurgeProductsRequest, Operation> purgeProductsCallable;
309   private final OperationCallable<PurgeProductsRequest, Empty, BatchOperationMetadata>
310       purgeProductsOperationCallable;
311 
312   private final BackgroundResource backgroundResources;
313   private final GrpcOperationsStub operationsStub;
314   private final GrpcStubCallableFactory callableFactory;
315 
create(ProductSearchStubSettings settings)316   public static final GrpcProductSearchStub create(ProductSearchStubSettings settings)
317       throws IOException {
318     return new GrpcProductSearchStub(settings, ClientContext.create(settings));
319   }
320 
create(ClientContext clientContext)321   public static final GrpcProductSearchStub create(ClientContext clientContext) throws IOException {
322     return new GrpcProductSearchStub(ProductSearchStubSettings.newBuilder().build(), clientContext);
323   }
324 
create( ClientContext clientContext, GrpcStubCallableFactory callableFactory)325   public static final GrpcProductSearchStub create(
326       ClientContext clientContext, GrpcStubCallableFactory callableFactory) throws IOException {
327     return new GrpcProductSearchStub(
328         ProductSearchStubSettings.newBuilder().build(), clientContext, callableFactory);
329   }
330 
331   /**
332    * Constructs an instance of GrpcProductSearchStub, using the given settings. This is protected so
333    * that it is easy to make a subclass, but otherwise, the static factory methods should be
334    * preferred.
335    */
GrpcProductSearchStub(ProductSearchStubSettings settings, ClientContext clientContext)336   protected GrpcProductSearchStub(ProductSearchStubSettings settings, ClientContext clientContext)
337       throws IOException {
338     this(settings, clientContext, new GrpcProductSearchCallableFactory());
339   }
340 
341   /**
342    * Constructs an instance of GrpcProductSearchStub, using the given settings. This is protected so
343    * that it is easy to make a subclass, but otherwise, the static factory methods should be
344    * preferred.
345    */
GrpcProductSearchStub( ProductSearchStubSettings settings, ClientContext clientContext, GrpcStubCallableFactory callableFactory)346   protected GrpcProductSearchStub(
347       ProductSearchStubSettings settings,
348       ClientContext clientContext,
349       GrpcStubCallableFactory callableFactory)
350       throws IOException {
351     this.callableFactory = callableFactory;
352     this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory);
353 
354     GrpcCallSettings<CreateProductSetRequest, ProductSet> createProductSetTransportSettings =
355         GrpcCallSettings.<CreateProductSetRequest, ProductSet>newBuilder()
356             .setMethodDescriptor(createProductSetMethodDescriptor)
357             .setParamsExtractor(
358                 request -> {
359                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
360                   params.put("parent", String.valueOf(request.getParent()));
361                   return params.build();
362                 })
363             .build();
364     GrpcCallSettings<ListProductSetsRequest, ListProductSetsResponse>
365         listProductSetsTransportSettings =
366             GrpcCallSettings.<ListProductSetsRequest, ListProductSetsResponse>newBuilder()
367                 .setMethodDescriptor(listProductSetsMethodDescriptor)
368                 .setParamsExtractor(
369                     request -> {
370                       ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
371                       params.put("parent", String.valueOf(request.getParent()));
372                       return params.build();
373                     })
374                 .build();
375     GrpcCallSettings<GetProductSetRequest, ProductSet> getProductSetTransportSettings =
376         GrpcCallSettings.<GetProductSetRequest, ProductSet>newBuilder()
377             .setMethodDescriptor(getProductSetMethodDescriptor)
378             .setParamsExtractor(
379                 request -> {
380                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
381                   params.put("name", String.valueOf(request.getName()));
382                   return params.build();
383                 })
384             .build();
385     GrpcCallSettings<UpdateProductSetRequest, ProductSet> updateProductSetTransportSettings =
386         GrpcCallSettings.<UpdateProductSetRequest, ProductSet>newBuilder()
387             .setMethodDescriptor(updateProductSetMethodDescriptor)
388             .setParamsExtractor(
389                 request -> {
390                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
391                   params.put("product_set.name", String.valueOf(request.getProductSet().getName()));
392                   return params.build();
393                 })
394             .build();
395     GrpcCallSettings<DeleteProductSetRequest, Empty> deleteProductSetTransportSettings =
396         GrpcCallSettings.<DeleteProductSetRequest, Empty>newBuilder()
397             .setMethodDescriptor(deleteProductSetMethodDescriptor)
398             .setParamsExtractor(
399                 request -> {
400                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
401                   params.put("name", String.valueOf(request.getName()));
402                   return params.build();
403                 })
404             .build();
405     GrpcCallSettings<CreateProductRequest, Product> createProductTransportSettings =
406         GrpcCallSettings.<CreateProductRequest, Product>newBuilder()
407             .setMethodDescriptor(createProductMethodDescriptor)
408             .setParamsExtractor(
409                 request -> {
410                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
411                   params.put("parent", String.valueOf(request.getParent()));
412                   return params.build();
413                 })
414             .build();
415     GrpcCallSettings<ListProductsRequest, ListProductsResponse> listProductsTransportSettings =
416         GrpcCallSettings.<ListProductsRequest, ListProductsResponse>newBuilder()
417             .setMethodDescriptor(listProductsMethodDescriptor)
418             .setParamsExtractor(
419                 request -> {
420                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
421                   params.put("parent", String.valueOf(request.getParent()));
422                   return params.build();
423                 })
424             .build();
425     GrpcCallSettings<GetProductRequest, Product> getProductTransportSettings =
426         GrpcCallSettings.<GetProductRequest, Product>newBuilder()
427             .setMethodDescriptor(getProductMethodDescriptor)
428             .setParamsExtractor(
429                 request -> {
430                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
431                   params.put("name", String.valueOf(request.getName()));
432                   return params.build();
433                 })
434             .build();
435     GrpcCallSettings<UpdateProductRequest, Product> updateProductTransportSettings =
436         GrpcCallSettings.<UpdateProductRequest, Product>newBuilder()
437             .setMethodDescriptor(updateProductMethodDescriptor)
438             .setParamsExtractor(
439                 request -> {
440                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
441                   params.put("product.name", String.valueOf(request.getProduct().getName()));
442                   return params.build();
443                 })
444             .build();
445     GrpcCallSettings<DeleteProductRequest, Empty> deleteProductTransportSettings =
446         GrpcCallSettings.<DeleteProductRequest, Empty>newBuilder()
447             .setMethodDescriptor(deleteProductMethodDescriptor)
448             .setParamsExtractor(
449                 request -> {
450                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
451                   params.put("name", String.valueOf(request.getName()));
452                   return params.build();
453                 })
454             .build();
455     GrpcCallSettings<CreateReferenceImageRequest, ReferenceImage>
456         createReferenceImageTransportSettings =
457             GrpcCallSettings.<CreateReferenceImageRequest, ReferenceImage>newBuilder()
458                 .setMethodDescriptor(createReferenceImageMethodDescriptor)
459                 .setParamsExtractor(
460                     request -> {
461                       ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
462                       params.put("parent", String.valueOf(request.getParent()));
463                       return params.build();
464                     })
465                 .build();
466     GrpcCallSettings<DeleteReferenceImageRequest, Empty> deleteReferenceImageTransportSettings =
467         GrpcCallSettings.<DeleteReferenceImageRequest, Empty>newBuilder()
468             .setMethodDescriptor(deleteReferenceImageMethodDescriptor)
469             .setParamsExtractor(
470                 request -> {
471                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
472                   params.put("name", String.valueOf(request.getName()));
473                   return params.build();
474                 })
475             .build();
476     GrpcCallSettings<ListReferenceImagesRequest, ListReferenceImagesResponse>
477         listReferenceImagesTransportSettings =
478             GrpcCallSettings.<ListReferenceImagesRequest, ListReferenceImagesResponse>newBuilder()
479                 .setMethodDescriptor(listReferenceImagesMethodDescriptor)
480                 .setParamsExtractor(
481                     request -> {
482                       ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
483                       params.put("parent", String.valueOf(request.getParent()));
484                       return params.build();
485                     })
486                 .build();
487     GrpcCallSettings<GetReferenceImageRequest, ReferenceImage> getReferenceImageTransportSettings =
488         GrpcCallSettings.<GetReferenceImageRequest, ReferenceImage>newBuilder()
489             .setMethodDescriptor(getReferenceImageMethodDescriptor)
490             .setParamsExtractor(
491                 request -> {
492                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
493                   params.put("name", String.valueOf(request.getName()));
494                   return params.build();
495                 })
496             .build();
497     GrpcCallSettings<AddProductToProductSetRequest, Empty> addProductToProductSetTransportSettings =
498         GrpcCallSettings.<AddProductToProductSetRequest, Empty>newBuilder()
499             .setMethodDescriptor(addProductToProductSetMethodDescriptor)
500             .setParamsExtractor(
501                 request -> {
502                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
503                   params.put("name", String.valueOf(request.getName()));
504                   return params.build();
505                 })
506             .build();
507     GrpcCallSettings<RemoveProductFromProductSetRequest, Empty>
508         removeProductFromProductSetTransportSettings =
509             GrpcCallSettings.<RemoveProductFromProductSetRequest, Empty>newBuilder()
510                 .setMethodDescriptor(removeProductFromProductSetMethodDescriptor)
511                 .setParamsExtractor(
512                     request -> {
513                       ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
514                       params.put("name", String.valueOf(request.getName()));
515                       return params.build();
516                     })
517                 .build();
518     GrpcCallSettings<ListProductsInProductSetRequest, ListProductsInProductSetResponse>
519         listProductsInProductSetTransportSettings =
520             GrpcCallSettings
521                 .<ListProductsInProductSetRequest, ListProductsInProductSetResponse>newBuilder()
522                 .setMethodDescriptor(listProductsInProductSetMethodDescriptor)
523                 .setParamsExtractor(
524                     request -> {
525                       ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
526                       params.put("name", String.valueOf(request.getName()));
527                       return params.build();
528                     })
529                 .build();
530     GrpcCallSettings<ImportProductSetsRequest, Operation> importProductSetsTransportSettings =
531         GrpcCallSettings.<ImportProductSetsRequest, Operation>newBuilder()
532             .setMethodDescriptor(importProductSetsMethodDescriptor)
533             .setParamsExtractor(
534                 request -> {
535                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
536                   params.put("parent", String.valueOf(request.getParent()));
537                   return params.build();
538                 })
539             .build();
540     GrpcCallSettings<PurgeProductsRequest, Operation> purgeProductsTransportSettings =
541         GrpcCallSettings.<PurgeProductsRequest, Operation>newBuilder()
542             .setMethodDescriptor(purgeProductsMethodDescriptor)
543             .setParamsExtractor(
544                 request -> {
545                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
546                   params.put("parent", String.valueOf(request.getParent()));
547                   return params.build();
548                 })
549             .build();
550 
551     this.createProductSetCallable =
552         callableFactory.createUnaryCallable(
553             createProductSetTransportSettings, settings.createProductSetSettings(), clientContext);
554     this.listProductSetsCallable =
555         callableFactory.createUnaryCallable(
556             listProductSetsTransportSettings, settings.listProductSetsSettings(), clientContext);
557     this.listProductSetsPagedCallable =
558         callableFactory.createPagedCallable(
559             listProductSetsTransportSettings, settings.listProductSetsSettings(), clientContext);
560     this.getProductSetCallable =
561         callableFactory.createUnaryCallable(
562             getProductSetTransportSettings, settings.getProductSetSettings(), clientContext);
563     this.updateProductSetCallable =
564         callableFactory.createUnaryCallable(
565             updateProductSetTransportSettings, settings.updateProductSetSettings(), clientContext);
566     this.deleteProductSetCallable =
567         callableFactory.createUnaryCallable(
568             deleteProductSetTransportSettings, settings.deleteProductSetSettings(), clientContext);
569     this.createProductCallable =
570         callableFactory.createUnaryCallable(
571             createProductTransportSettings, settings.createProductSettings(), clientContext);
572     this.listProductsCallable =
573         callableFactory.createUnaryCallable(
574             listProductsTransportSettings, settings.listProductsSettings(), clientContext);
575     this.listProductsPagedCallable =
576         callableFactory.createPagedCallable(
577             listProductsTransportSettings, settings.listProductsSettings(), clientContext);
578     this.getProductCallable =
579         callableFactory.createUnaryCallable(
580             getProductTransportSettings, settings.getProductSettings(), clientContext);
581     this.updateProductCallable =
582         callableFactory.createUnaryCallable(
583             updateProductTransportSettings, settings.updateProductSettings(), clientContext);
584     this.deleteProductCallable =
585         callableFactory.createUnaryCallable(
586             deleteProductTransportSettings, settings.deleteProductSettings(), clientContext);
587     this.createReferenceImageCallable =
588         callableFactory.createUnaryCallable(
589             createReferenceImageTransportSettings,
590             settings.createReferenceImageSettings(),
591             clientContext);
592     this.deleteReferenceImageCallable =
593         callableFactory.createUnaryCallable(
594             deleteReferenceImageTransportSettings,
595             settings.deleteReferenceImageSettings(),
596             clientContext);
597     this.listReferenceImagesCallable =
598         callableFactory.createUnaryCallable(
599             listReferenceImagesTransportSettings,
600             settings.listReferenceImagesSettings(),
601             clientContext);
602     this.listReferenceImagesPagedCallable =
603         callableFactory.createPagedCallable(
604             listReferenceImagesTransportSettings,
605             settings.listReferenceImagesSettings(),
606             clientContext);
607     this.getReferenceImageCallable =
608         callableFactory.createUnaryCallable(
609             getReferenceImageTransportSettings,
610             settings.getReferenceImageSettings(),
611             clientContext);
612     this.addProductToProductSetCallable =
613         callableFactory.createUnaryCallable(
614             addProductToProductSetTransportSettings,
615             settings.addProductToProductSetSettings(),
616             clientContext);
617     this.removeProductFromProductSetCallable =
618         callableFactory.createUnaryCallable(
619             removeProductFromProductSetTransportSettings,
620             settings.removeProductFromProductSetSettings(),
621             clientContext);
622     this.listProductsInProductSetCallable =
623         callableFactory.createUnaryCallable(
624             listProductsInProductSetTransportSettings,
625             settings.listProductsInProductSetSettings(),
626             clientContext);
627     this.listProductsInProductSetPagedCallable =
628         callableFactory.createPagedCallable(
629             listProductsInProductSetTransportSettings,
630             settings.listProductsInProductSetSettings(),
631             clientContext);
632     this.importProductSetsCallable =
633         callableFactory.createUnaryCallable(
634             importProductSetsTransportSettings,
635             settings.importProductSetsSettings(),
636             clientContext);
637     this.importProductSetsOperationCallable =
638         callableFactory.createOperationCallable(
639             importProductSetsTransportSettings,
640             settings.importProductSetsOperationSettings(),
641             clientContext,
642             operationsStub);
643     this.purgeProductsCallable =
644         callableFactory.createUnaryCallable(
645             purgeProductsTransportSettings, settings.purgeProductsSettings(), clientContext);
646     this.purgeProductsOperationCallable =
647         callableFactory.createOperationCallable(
648             purgeProductsTransportSettings,
649             settings.purgeProductsOperationSettings(),
650             clientContext,
651             operationsStub);
652 
653     this.backgroundResources =
654         new BackgroundResourceAggregation(clientContext.getBackgroundResources());
655   }
656 
getOperationsStub()657   public GrpcOperationsStub getOperationsStub() {
658     return operationsStub;
659   }
660 
661   @Override
createProductSetCallable()662   public UnaryCallable<CreateProductSetRequest, ProductSet> createProductSetCallable() {
663     return createProductSetCallable;
664   }
665 
666   @Override
listProductSetsCallable()667   public UnaryCallable<ListProductSetsRequest, ListProductSetsResponse> listProductSetsCallable() {
668     return listProductSetsCallable;
669   }
670 
671   @Override
672   public UnaryCallable<ListProductSetsRequest, ListProductSetsPagedResponse>
listProductSetsPagedCallable()673       listProductSetsPagedCallable() {
674     return listProductSetsPagedCallable;
675   }
676 
677   @Override
getProductSetCallable()678   public UnaryCallable<GetProductSetRequest, ProductSet> getProductSetCallable() {
679     return getProductSetCallable;
680   }
681 
682   @Override
updateProductSetCallable()683   public UnaryCallable<UpdateProductSetRequest, ProductSet> updateProductSetCallable() {
684     return updateProductSetCallable;
685   }
686 
687   @Override
deleteProductSetCallable()688   public UnaryCallable<DeleteProductSetRequest, Empty> deleteProductSetCallable() {
689     return deleteProductSetCallable;
690   }
691 
692   @Override
createProductCallable()693   public UnaryCallable<CreateProductRequest, Product> createProductCallable() {
694     return createProductCallable;
695   }
696 
697   @Override
listProductsCallable()698   public UnaryCallable<ListProductsRequest, ListProductsResponse> listProductsCallable() {
699     return listProductsCallable;
700   }
701 
702   @Override
listProductsPagedCallable()703   public UnaryCallable<ListProductsRequest, ListProductsPagedResponse> listProductsPagedCallable() {
704     return listProductsPagedCallable;
705   }
706 
707   @Override
getProductCallable()708   public UnaryCallable<GetProductRequest, Product> getProductCallable() {
709     return getProductCallable;
710   }
711 
712   @Override
updateProductCallable()713   public UnaryCallable<UpdateProductRequest, Product> updateProductCallable() {
714     return updateProductCallable;
715   }
716 
717   @Override
deleteProductCallable()718   public UnaryCallable<DeleteProductRequest, Empty> deleteProductCallable() {
719     return deleteProductCallable;
720   }
721 
722   @Override
createReferenceImageCallable()723   public UnaryCallable<CreateReferenceImageRequest, ReferenceImage> createReferenceImageCallable() {
724     return createReferenceImageCallable;
725   }
726 
727   @Override
deleteReferenceImageCallable()728   public UnaryCallable<DeleteReferenceImageRequest, Empty> deleteReferenceImageCallable() {
729     return deleteReferenceImageCallable;
730   }
731 
732   @Override
733   public UnaryCallable<ListReferenceImagesRequest, ListReferenceImagesResponse>
listReferenceImagesCallable()734       listReferenceImagesCallable() {
735     return listReferenceImagesCallable;
736   }
737 
738   @Override
739   public UnaryCallable<ListReferenceImagesRequest, ListReferenceImagesPagedResponse>
listReferenceImagesPagedCallable()740       listReferenceImagesPagedCallable() {
741     return listReferenceImagesPagedCallable;
742   }
743 
744   @Override
getReferenceImageCallable()745   public UnaryCallable<GetReferenceImageRequest, ReferenceImage> getReferenceImageCallable() {
746     return getReferenceImageCallable;
747   }
748 
749   @Override
addProductToProductSetCallable()750   public UnaryCallable<AddProductToProductSetRequest, Empty> addProductToProductSetCallable() {
751     return addProductToProductSetCallable;
752   }
753 
754   @Override
755   public UnaryCallable<RemoveProductFromProductSetRequest, Empty>
removeProductFromProductSetCallable()756       removeProductFromProductSetCallable() {
757     return removeProductFromProductSetCallable;
758   }
759 
760   @Override
761   public UnaryCallable<ListProductsInProductSetRequest, ListProductsInProductSetResponse>
listProductsInProductSetCallable()762       listProductsInProductSetCallable() {
763     return listProductsInProductSetCallable;
764   }
765 
766   @Override
767   public UnaryCallable<ListProductsInProductSetRequest, ListProductsInProductSetPagedResponse>
listProductsInProductSetPagedCallable()768       listProductsInProductSetPagedCallable() {
769     return listProductsInProductSetPagedCallable;
770   }
771 
772   @Override
importProductSetsCallable()773   public UnaryCallable<ImportProductSetsRequest, Operation> importProductSetsCallable() {
774     return importProductSetsCallable;
775   }
776 
777   @Override
778   public OperationCallable<
779           ImportProductSetsRequest, ImportProductSetsResponse, BatchOperationMetadata>
importProductSetsOperationCallable()780       importProductSetsOperationCallable() {
781     return importProductSetsOperationCallable;
782   }
783 
784   @Override
purgeProductsCallable()785   public UnaryCallable<PurgeProductsRequest, Operation> purgeProductsCallable() {
786     return purgeProductsCallable;
787   }
788 
789   @Override
790   public OperationCallable<PurgeProductsRequest, Empty, BatchOperationMetadata>
purgeProductsOperationCallable()791       purgeProductsOperationCallable() {
792     return purgeProductsOperationCallable;
793   }
794 
795   @Override
close()796   public final void close() {
797     try {
798       backgroundResources.close();
799     } catch (RuntimeException e) {
800       throw e;
801     } catch (Exception e) {
802       throw new IllegalStateException("Failed to close resource", e);
803     }
804   }
805 
806   @Override
shutdown()807   public void shutdown() {
808     backgroundResources.shutdown();
809   }
810 
811   @Override
isShutdown()812   public boolean isShutdown() {
813     return backgroundResources.isShutdown();
814   }
815 
816   @Override
isTerminated()817   public boolean isTerminated() {
818     return backgroundResources.isTerminated();
819   }
820 
821   @Override
shutdownNow()822   public void shutdownNow() {
823     backgroundResources.shutdownNow();
824   }
825 
826   @Override
awaitTermination(long duration, TimeUnit unit)827   public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
828     return backgroundResources.awaitTermination(duration, unit);
829   }
830 }
831