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