• 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.compute.v1.stub;
18 
19 import static com.google.cloud.compute.v1.HealthChecksClient.AggregatedListPagedResponse;
20 import static com.google.cloud.compute.v1.HealthChecksClient.ListPagedResponse;
21 
22 import com.google.api.core.BetaApi;
23 import com.google.api.core.InternalApi;
24 import com.google.api.gax.core.BackgroundResource;
25 import com.google.api.gax.core.BackgroundResourceAggregation;
26 import com.google.api.gax.httpjson.ApiMethodDescriptor;
27 import com.google.api.gax.httpjson.HttpJsonCallSettings;
28 import com.google.api.gax.httpjson.HttpJsonOperationSnapshot;
29 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
30 import com.google.api.gax.httpjson.ProtoMessageRequestFormatter;
31 import com.google.api.gax.httpjson.ProtoMessageResponseParser;
32 import com.google.api.gax.httpjson.ProtoRestSerializer;
33 import com.google.api.gax.rpc.ClientContext;
34 import com.google.api.gax.rpc.OperationCallable;
35 import com.google.api.gax.rpc.UnaryCallable;
36 import com.google.cloud.compute.v1.AggregatedListHealthChecksRequest;
37 import com.google.cloud.compute.v1.DeleteHealthCheckRequest;
38 import com.google.cloud.compute.v1.GetHealthCheckRequest;
39 import com.google.cloud.compute.v1.HealthCheck;
40 import com.google.cloud.compute.v1.HealthCheckList;
41 import com.google.cloud.compute.v1.HealthChecksAggregatedList;
42 import com.google.cloud.compute.v1.InsertHealthCheckRequest;
43 import com.google.cloud.compute.v1.ListHealthChecksRequest;
44 import com.google.cloud.compute.v1.Operation;
45 import com.google.cloud.compute.v1.Operation.Status;
46 import com.google.cloud.compute.v1.PatchHealthCheckRequest;
47 import com.google.cloud.compute.v1.UpdateHealthCheckRequest;
48 import com.google.protobuf.TypeRegistry;
49 import java.io.IOException;
50 import java.util.ArrayList;
51 import java.util.HashMap;
52 import java.util.List;
53 import java.util.Map;
54 import java.util.concurrent.TimeUnit;
55 import javax.annotation.Generated;
56 
57 // AUTO-GENERATED DOCUMENTATION AND CLASS.
58 /**
59  * REST stub implementation for the HealthChecks service API.
60  *
61  * <p>This class is for advanced usage and reflects the underlying API directly.
62  */
63 @Generated("by gapic-generator-java")
64 @BetaApi
65 public class HttpJsonHealthChecksStub extends HealthChecksStub {
66   private static final TypeRegistry typeRegistry =
67       TypeRegistry.newBuilder().add(Operation.getDescriptor()).build();
68 
69   private static final ApiMethodDescriptor<
70           AggregatedListHealthChecksRequest, HealthChecksAggregatedList>
71       aggregatedListMethodDescriptor =
72           ApiMethodDescriptor
73               .<AggregatedListHealthChecksRequest, HealthChecksAggregatedList>newBuilder()
74               .setFullMethodName("google.cloud.compute.v1.HealthChecks/AggregatedList")
75               .setHttpMethod("GET")
76               .setType(ApiMethodDescriptor.MethodType.UNARY)
77               .setRequestFormatter(
78                   ProtoMessageRequestFormatter.<AggregatedListHealthChecksRequest>newBuilder()
79                       .setPath(
80                           "/compute/v1/projects/{project}/aggregated/healthChecks",
81                           request -> {
82                             Map<String, String> fields = new HashMap<>();
83                             ProtoRestSerializer<AggregatedListHealthChecksRequest> serializer =
84                                 ProtoRestSerializer.create();
85                             serializer.putPathParam(fields, "project", request.getProject());
86                             return fields;
87                           })
88                       .setQueryParamsExtractor(
89                           request -> {
90                             Map<String, List<String>> fields = new HashMap<>();
91                             ProtoRestSerializer<AggregatedListHealthChecksRequest> serializer =
92                                 ProtoRestSerializer.create();
93                             if (request.hasFilter()) {
94                               serializer.putQueryParam(fields, "filter", request.getFilter());
95                             }
96                             if (request.hasIncludeAllScopes()) {
97                               serializer.putQueryParam(
98                                   fields, "includeAllScopes", request.getIncludeAllScopes());
99                             }
100                             if (request.hasMaxResults()) {
101                               serializer.putQueryParam(
102                                   fields, "maxResults", request.getMaxResults());
103                             }
104                             if (request.hasOrderBy()) {
105                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
106                             }
107                             if (request.hasPageToken()) {
108                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
109                             }
110                             if (request.hasReturnPartialSuccess()) {
111                               serializer.putQueryParam(
112                                   fields,
113                                   "returnPartialSuccess",
114                                   request.getReturnPartialSuccess());
115                             }
116                             return fields;
117                           })
118                       .setRequestBodyExtractor(request -> null)
119                       .build())
120               .setResponseParser(
121                   ProtoMessageResponseParser.<HealthChecksAggregatedList>newBuilder()
122                       .setDefaultInstance(HealthChecksAggregatedList.getDefaultInstance())
123                       .setDefaultTypeRegistry(typeRegistry)
124                       .build())
125               .build();
126 
127   private static final ApiMethodDescriptor<DeleteHealthCheckRequest, Operation>
128       deleteMethodDescriptor =
129           ApiMethodDescriptor.<DeleteHealthCheckRequest, Operation>newBuilder()
130               .setFullMethodName("google.cloud.compute.v1.HealthChecks/Delete")
131               .setHttpMethod("DELETE")
132               .setType(ApiMethodDescriptor.MethodType.UNARY)
133               .setRequestFormatter(
134                   ProtoMessageRequestFormatter.<DeleteHealthCheckRequest>newBuilder()
135                       .setPath(
136                           "/compute/v1/projects/{project}/global/healthChecks/{healthCheck}",
137                           request -> {
138                             Map<String, String> fields = new HashMap<>();
139                             ProtoRestSerializer<DeleteHealthCheckRequest> serializer =
140                                 ProtoRestSerializer.create();
141                             serializer.putPathParam(
142                                 fields, "healthCheck", request.getHealthCheck());
143                             serializer.putPathParam(fields, "project", request.getProject());
144                             return fields;
145                           })
146                       .setQueryParamsExtractor(
147                           request -> {
148                             Map<String, List<String>> fields = new HashMap<>();
149                             ProtoRestSerializer<DeleteHealthCheckRequest> serializer =
150                                 ProtoRestSerializer.create();
151                             if (request.hasRequestId()) {
152                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
153                             }
154                             return fields;
155                           })
156                       .setRequestBodyExtractor(request -> null)
157                       .build())
158               .setResponseParser(
159                   ProtoMessageResponseParser.<Operation>newBuilder()
160                       .setDefaultInstance(Operation.getDefaultInstance())
161                       .setDefaultTypeRegistry(typeRegistry)
162                       .build())
163               .setOperationSnapshotFactory(
164                   (DeleteHealthCheckRequest request, Operation response) -> {
165                     StringBuilder opName = new StringBuilder(response.getName());
166                     opName.append(":").append(request.getProject());
167                     return HttpJsonOperationSnapshot.newBuilder()
168                         .setName(opName.toString())
169                         .setMetadata(response)
170                         .setDone(Status.DONE.equals(response.getStatus()))
171                         .setResponse(response)
172                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
173                         .build();
174                   })
175               .build();
176 
177   private static final ApiMethodDescriptor<GetHealthCheckRequest, HealthCheck> getMethodDescriptor =
178       ApiMethodDescriptor.<GetHealthCheckRequest, HealthCheck>newBuilder()
179           .setFullMethodName("google.cloud.compute.v1.HealthChecks/Get")
180           .setHttpMethod("GET")
181           .setType(ApiMethodDescriptor.MethodType.UNARY)
182           .setRequestFormatter(
183               ProtoMessageRequestFormatter.<GetHealthCheckRequest>newBuilder()
184                   .setPath(
185                       "/compute/v1/projects/{project}/global/healthChecks/{healthCheck}",
186                       request -> {
187                         Map<String, String> fields = new HashMap<>();
188                         ProtoRestSerializer<GetHealthCheckRequest> serializer =
189                             ProtoRestSerializer.create();
190                         serializer.putPathParam(fields, "healthCheck", request.getHealthCheck());
191                         serializer.putPathParam(fields, "project", request.getProject());
192                         return fields;
193                       })
194                   .setQueryParamsExtractor(
195                       request -> {
196                         Map<String, List<String>> fields = new HashMap<>();
197                         ProtoRestSerializer<GetHealthCheckRequest> serializer =
198                             ProtoRestSerializer.create();
199                         return fields;
200                       })
201                   .setRequestBodyExtractor(request -> null)
202                   .build())
203           .setResponseParser(
204               ProtoMessageResponseParser.<HealthCheck>newBuilder()
205                   .setDefaultInstance(HealthCheck.getDefaultInstance())
206                   .setDefaultTypeRegistry(typeRegistry)
207                   .build())
208           .build();
209 
210   private static final ApiMethodDescriptor<InsertHealthCheckRequest, Operation>
211       insertMethodDescriptor =
212           ApiMethodDescriptor.<InsertHealthCheckRequest, Operation>newBuilder()
213               .setFullMethodName("google.cloud.compute.v1.HealthChecks/Insert")
214               .setHttpMethod("POST")
215               .setType(ApiMethodDescriptor.MethodType.UNARY)
216               .setRequestFormatter(
217                   ProtoMessageRequestFormatter.<InsertHealthCheckRequest>newBuilder()
218                       .setPath(
219                           "/compute/v1/projects/{project}/global/healthChecks",
220                           request -> {
221                             Map<String, String> fields = new HashMap<>();
222                             ProtoRestSerializer<InsertHealthCheckRequest> serializer =
223                                 ProtoRestSerializer.create();
224                             serializer.putPathParam(fields, "project", request.getProject());
225                             return fields;
226                           })
227                       .setQueryParamsExtractor(
228                           request -> {
229                             Map<String, List<String>> fields = new HashMap<>();
230                             ProtoRestSerializer<InsertHealthCheckRequest> serializer =
231                                 ProtoRestSerializer.create();
232                             if (request.hasRequestId()) {
233                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
234                             }
235                             return fields;
236                           })
237                       .setRequestBodyExtractor(
238                           request ->
239                               ProtoRestSerializer.create()
240                                   .toBody(
241                                       "healthCheckResource",
242                                       request.getHealthCheckResource(),
243                                       false))
244                       .build())
245               .setResponseParser(
246                   ProtoMessageResponseParser.<Operation>newBuilder()
247                       .setDefaultInstance(Operation.getDefaultInstance())
248                       .setDefaultTypeRegistry(typeRegistry)
249                       .build())
250               .setOperationSnapshotFactory(
251                   (InsertHealthCheckRequest request, Operation response) -> {
252                     StringBuilder opName = new StringBuilder(response.getName());
253                     opName.append(":").append(request.getProject());
254                     return HttpJsonOperationSnapshot.newBuilder()
255                         .setName(opName.toString())
256                         .setMetadata(response)
257                         .setDone(Status.DONE.equals(response.getStatus()))
258                         .setResponse(response)
259                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
260                         .build();
261                   })
262               .build();
263 
264   private static final ApiMethodDescriptor<ListHealthChecksRequest, HealthCheckList>
265       listMethodDescriptor =
266           ApiMethodDescriptor.<ListHealthChecksRequest, HealthCheckList>newBuilder()
267               .setFullMethodName("google.cloud.compute.v1.HealthChecks/List")
268               .setHttpMethod("GET")
269               .setType(ApiMethodDescriptor.MethodType.UNARY)
270               .setRequestFormatter(
271                   ProtoMessageRequestFormatter.<ListHealthChecksRequest>newBuilder()
272                       .setPath(
273                           "/compute/v1/projects/{project}/global/healthChecks",
274                           request -> {
275                             Map<String, String> fields = new HashMap<>();
276                             ProtoRestSerializer<ListHealthChecksRequest> serializer =
277                                 ProtoRestSerializer.create();
278                             serializer.putPathParam(fields, "project", request.getProject());
279                             return fields;
280                           })
281                       .setQueryParamsExtractor(
282                           request -> {
283                             Map<String, List<String>> fields = new HashMap<>();
284                             ProtoRestSerializer<ListHealthChecksRequest> serializer =
285                                 ProtoRestSerializer.create();
286                             if (request.hasFilter()) {
287                               serializer.putQueryParam(fields, "filter", request.getFilter());
288                             }
289                             if (request.hasMaxResults()) {
290                               serializer.putQueryParam(
291                                   fields, "maxResults", request.getMaxResults());
292                             }
293                             if (request.hasOrderBy()) {
294                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
295                             }
296                             if (request.hasPageToken()) {
297                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
298                             }
299                             if (request.hasReturnPartialSuccess()) {
300                               serializer.putQueryParam(
301                                   fields,
302                                   "returnPartialSuccess",
303                                   request.getReturnPartialSuccess());
304                             }
305                             return fields;
306                           })
307                       .setRequestBodyExtractor(request -> null)
308                       .build())
309               .setResponseParser(
310                   ProtoMessageResponseParser.<HealthCheckList>newBuilder()
311                       .setDefaultInstance(HealthCheckList.getDefaultInstance())
312                       .setDefaultTypeRegistry(typeRegistry)
313                       .build())
314               .build();
315 
316   private static final ApiMethodDescriptor<PatchHealthCheckRequest, Operation>
317       patchMethodDescriptor =
318           ApiMethodDescriptor.<PatchHealthCheckRequest, Operation>newBuilder()
319               .setFullMethodName("google.cloud.compute.v1.HealthChecks/Patch")
320               .setHttpMethod("PATCH")
321               .setType(ApiMethodDescriptor.MethodType.UNARY)
322               .setRequestFormatter(
323                   ProtoMessageRequestFormatter.<PatchHealthCheckRequest>newBuilder()
324                       .setPath(
325                           "/compute/v1/projects/{project}/global/healthChecks/{healthCheck}",
326                           request -> {
327                             Map<String, String> fields = new HashMap<>();
328                             ProtoRestSerializer<PatchHealthCheckRequest> serializer =
329                                 ProtoRestSerializer.create();
330                             serializer.putPathParam(
331                                 fields, "healthCheck", request.getHealthCheck());
332                             serializer.putPathParam(fields, "project", request.getProject());
333                             return fields;
334                           })
335                       .setQueryParamsExtractor(
336                           request -> {
337                             Map<String, List<String>> fields = new HashMap<>();
338                             ProtoRestSerializer<PatchHealthCheckRequest> serializer =
339                                 ProtoRestSerializer.create();
340                             if (request.hasRequestId()) {
341                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
342                             }
343                             return fields;
344                           })
345                       .setRequestBodyExtractor(
346                           request ->
347                               ProtoRestSerializer.create()
348                                   .toBody(
349                                       "healthCheckResource",
350                                       request.getHealthCheckResource(),
351                                       false))
352                       .build())
353               .setResponseParser(
354                   ProtoMessageResponseParser.<Operation>newBuilder()
355                       .setDefaultInstance(Operation.getDefaultInstance())
356                       .setDefaultTypeRegistry(typeRegistry)
357                       .build())
358               .setOperationSnapshotFactory(
359                   (PatchHealthCheckRequest request, Operation response) -> {
360                     StringBuilder opName = new StringBuilder(response.getName());
361                     opName.append(":").append(request.getProject());
362                     return HttpJsonOperationSnapshot.newBuilder()
363                         .setName(opName.toString())
364                         .setMetadata(response)
365                         .setDone(Status.DONE.equals(response.getStatus()))
366                         .setResponse(response)
367                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
368                         .build();
369                   })
370               .build();
371 
372   private static final ApiMethodDescriptor<UpdateHealthCheckRequest, Operation>
373       updateMethodDescriptor =
374           ApiMethodDescriptor.<UpdateHealthCheckRequest, Operation>newBuilder()
375               .setFullMethodName("google.cloud.compute.v1.HealthChecks/Update")
376               .setHttpMethod("PUT")
377               .setType(ApiMethodDescriptor.MethodType.UNARY)
378               .setRequestFormatter(
379                   ProtoMessageRequestFormatter.<UpdateHealthCheckRequest>newBuilder()
380                       .setPath(
381                           "/compute/v1/projects/{project}/global/healthChecks/{healthCheck}",
382                           request -> {
383                             Map<String, String> fields = new HashMap<>();
384                             ProtoRestSerializer<UpdateHealthCheckRequest> serializer =
385                                 ProtoRestSerializer.create();
386                             serializer.putPathParam(
387                                 fields, "healthCheck", request.getHealthCheck());
388                             serializer.putPathParam(fields, "project", request.getProject());
389                             return fields;
390                           })
391                       .setQueryParamsExtractor(
392                           request -> {
393                             Map<String, List<String>> fields = new HashMap<>();
394                             ProtoRestSerializer<UpdateHealthCheckRequest> serializer =
395                                 ProtoRestSerializer.create();
396                             if (request.hasRequestId()) {
397                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
398                             }
399                             return fields;
400                           })
401                       .setRequestBodyExtractor(
402                           request ->
403                               ProtoRestSerializer.create()
404                                   .toBody(
405                                       "healthCheckResource",
406                                       request.getHealthCheckResource(),
407                                       false))
408                       .build())
409               .setResponseParser(
410                   ProtoMessageResponseParser.<Operation>newBuilder()
411                       .setDefaultInstance(Operation.getDefaultInstance())
412                       .setDefaultTypeRegistry(typeRegistry)
413                       .build())
414               .setOperationSnapshotFactory(
415                   (UpdateHealthCheckRequest request, Operation response) -> {
416                     StringBuilder opName = new StringBuilder(response.getName());
417                     opName.append(":").append(request.getProject());
418                     return HttpJsonOperationSnapshot.newBuilder()
419                         .setName(opName.toString())
420                         .setMetadata(response)
421                         .setDone(Status.DONE.equals(response.getStatus()))
422                         .setResponse(response)
423                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
424                         .build();
425                   })
426               .build();
427 
428   private final UnaryCallable<AggregatedListHealthChecksRequest, HealthChecksAggregatedList>
429       aggregatedListCallable;
430   private final UnaryCallable<AggregatedListHealthChecksRequest, AggregatedListPagedResponse>
431       aggregatedListPagedCallable;
432   private final UnaryCallable<DeleteHealthCheckRequest, Operation> deleteCallable;
433   private final OperationCallable<DeleteHealthCheckRequest, Operation, Operation>
434       deleteOperationCallable;
435   private final UnaryCallable<GetHealthCheckRequest, HealthCheck> getCallable;
436   private final UnaryCallable<InsertHealthCheckRequest, Operation> insertCallable;
437   private final OperationCallable<InsertHealthCheckRequest, Operation, Operation>
438       insertOperationCallable;
439   private final UnaryCallable<ListHealthChecksRequest, HealthCheckList> listCallable;
440   private final UnaryCallable<ListHealthChecksRequest, ListPagedResponse> listPagedCallable;
441   private final UnaryCallable<PatchHealthCheckRequest, Operation> patchCallable;
442   private final OperationCallable<PatchHealthCheckRequest, Operation, Operation>
443       patchOperationCallable;
444   private final UnaryCallable<UpdateHealthCheckRequest, Operation> updateCallable;
445   private final OperationCallable<UpdateHealthCheckRequest, Operation, Operation>
446       updateOperationCallable;
447 
448   private final BackgroundResource backgroundResources;
449   private final HttpJsonGlobalOperationsStub httpJsonOperationsStub;
450   private final HttpJsonStubCallableFactory callableFactory;
451 
create(HealthChecksStubSettings settings)452   public static final HttpJsonHealthChecksStub create(HealthChecksStubSettings settings)
453       throws IOException {
454     return new HttpJsonHealthChecksStub(settings, ClientContext.create(settings));
455   }
456 
create(ClientContext clientContext)457   public static final HttpJsonHealthChecksStub create(ClientContext clientContext)
458       throws IOException {
459     return new HttpJsonHealthChecksStub(
460         HealthChecksStubSettings.newBuilder().build(), clientContext);
461   }
462 
create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)463   public static final HttpJsonHealthChecksStub create(
464       ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException {
465     return new HttpJsonHealthChecksStub(
466         HealthChecksStubSettings.newBuilder().build(), clientContext, callableFactory);
467   }
468 
469   /**
470    * Constructs an instance of HttpJsonHealthChecksStub, using the given settings. This is protected
471    * so that it is easy to make a subclass, but otherwise, the static factory methods should be
472    * preferred.
473    */
HttpJsonHealthChecksStub(HealthChecksStubSettings settings, ClientContext clientContext)474   protected HttpJsonHealthChecksStub(HealthChecksStubSettings settings, ClientContext clientContext)
475       throws IOException {
476     this(settings, clientContext, new HttpJsonHealthChecksCallableFactory());
477   }
478 
479   /**
480    * Constructs an instance of HttpJsonHealthChecksStub, using the given settings. This is protected
481    * so that it is easy to make a subclass, but otherwise, the static factory methods should be
482    * preferred.
483    */
HttpJsonHealthChecksStub( HealthChecksStubSettings settings, ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)484   protected HttpJsonHealthChecksStub(
485       HealthChecksStubSettings settings,
486       ClientContext clientContext,
487       HttpJsonStubCallableFactory callableFactory)
488       throws IOException {
489     this.callableFactory = callableFactory;
490     this.httpJsonOperationsStub =
491         HttpJsonGlobalOperationsStub.create(clientContext, callableFactory);
492 
493     HttpJsonCallSettings<AggregatedListHealthChecksRequest, HealthChecksAggregatedList>
494         aggregatedListTransportSettings =
495             HttpJsonCallSettings
496                 .<AggregatedListHealthChecksRequest, HealthChecksAggregatedList>newBuilder()
497                 .setMethodDescriptor(aggregatedListMethodDescriptor)
498                 .setTypeRegistry(typeRegistry)
499                 .build();
500     HttpJsonCallSettings<DeleteHealthCheckRequest, Operation> deleteTransportSettings =
501         HttpJsonCallSettings.<DeleteHealthCheckRequest, Operation>newBuilder()
502             .setMethodDescriptor(deleteMethodDescriptor)
503             .setTypeRegistry(typeRegistry)
504             .build();
505     HttpJsonCallSettings<GetHealthCheckRequest, HealthCheck> getTransportSettings =
506         HttpJsonCallSettings.<GetHealthCheckRequest, HealthCheck>newBuilder()
507             .setMethodDescriptor(getMethodDescriptor)
508             .setTypeRegistry(typeRegistry)
509             .build();
510     HttpJsonCallSettings<InsertHealthCheckRequest, Operation> insertTransportSettings =
511         HttpJsonCallSettings.<InsertHealthCheckRequest, Operation>newBuilder()
512             .setMethodDescriptor(insertMethodDescriptor)
513             .setTypeRegistry(typeRegistry)
514             .build();
515     HttpJsonCallSettings<ListHealthChecksRequest, HealthCheckList> listTransportSettings =
516         HttpJsonCallSettings.<ListHealthChecksRequest, HealthCheckList>newBuilder()
517             .setMethodDescriptor(listMethodDescriptor)
518             .setTypeRegistry(typeRegistry)
519             .build();
520     HttpJsonCallSettings<PatchHealthCheckRequest, Operation> patchTransportSettings =
521         HttpJsonCallSettings.<PatchHealthCheckRequest, Operation>newBuilder()
522             .setMethodDescriptor(patchMethodDescriptor)
523             .setTypeRegistry(typeRegistry)
524             .build();
525     HttpJsonCallSettings<UpdateHealthCheckRequest, Operation> updateTransportSettings =
526         HttpJsonCallSettings.<UpdateHealthCheckRequest, Operation>newBuilder()
527             .setMethodDescriptor(updateMethodDescriptor)
528             .setTypeRegistry(typeRegistry)
529             .build();
530 
531     this.aggregatedListCallable =
532         callableFactory.createUnaryCallable(
533             aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext);
534     this.aggregatedListPagedCallable =
535         callableFactory.createPagedCallable(
536             aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext);
537     this.deleteCallable =
538         callableFactory.createUnaryCallable(
539             deleteTransportSettings, settings.deleteSettings(), clientContext);
540     this.deleteOperationCallable =
541         callableFactory.createOperationCallable(
542             deleteTransportSettings,
543             settings.deleteOperationSettings(),
544             clientContext,
545             httpJsonOperationsStub);
546     this.getCallable =
547         callableFactory.createUnaryCallable(
548             getTransportSettings, settings.getSettings(), clientContext);
549     this.insertCallable =
550         callableFactory.createUnaryCallable(
551             insertTransportSettings, settings.insertSettings(), clientContext);
552     this.insertOperationCallable =
553         callableFactory.createOperationCallable(
554             insertTransportSettings,
555             settings.insertOperationSettings(),
556             clientContext,
557             httpJsonOperationsStub);
558     this.listCallable =
559         callableFactory.createUnaryCallable(
560             listTransportSettings, settings.listSettings(), clientContext);
561     this.listPagedCallable =
562         callableFactory.createPagedCallable(
563             listTransportSettings, settings.listSettings(), clientContext);
564     this.patchCallable =
565         callableFactory.createUnaryCallable(
566             patchTransportSettings, settings.patchSettings(), clientContext);
567     this.patchOperationCallable =
568         callableFactory.createOperationCallable(
569             patchTransportSettings,
570             settings.patchOperationSettings(),
571             clientContext,
572             httpJsonOperationsStub);
573     this.updateCallable =
574         callableFactory.createUnaryCallable(
575             updateTransportSettings, settings.updateSettings(), clientContext);
576     this.updateOperationCallable =
577         callableFactory.createOperationCallable(
578             updateTransportSettings,
579             settings.updateOperationSettings(),
580             clientContext,
581             httpJsonOperationsStub);
582 
583     this.backgroundResources =
584         new BackgroundResourceAggregation(clientContext.getBackgroundResources());
585   }
586 
587   @InternalApi
getMethodDescriptors()588   public static List<ApiMethodDescriptor> getMethodDescriptors() {
589     List<ApiMethodDescriptor> methodDescriptors = new ArrayList<>();
590     methodDescriptors.add(aggregatedListMethodDescriptor);
591     methodDescriptors.add(deleteMethodDescriptor);
592     methodDescriptors.add(getMethodDescriptor);
593     methodDescriptors.add(insertMethodDescriptor);
594     methodDescriptors.add(listMethodDescriptor);
595     methodDescriptors.add(patchMethodDescriptor);
596     methodDescriptors.add(updateMethodDescriptor);
597     return methodDescriptors;
598   }
599 
600   @Override
601   public UnaryCallable<AggregatedListHealthChecksRequest, HealthChecksAggregatedList>
aggregatedListCallable()602       aggregatedListCallable() {
603     return aggregatedListCallable;
604   }
605 
606   @Override
607   public UnaryCallable<AggregatedListHealthChecksRequest, AggregatedListPagedResponse>
aggregatedListPagedCallable()608       aggregatedListPagedCallable() {
609     return aggregatedListPagedCallable;
610   }
611 
612   @Override
deleteCallable()613   public UnaryCallable<DeleteHealthCheckRequest, Operation> deleteCallable() {
614     return deleteCallable;
615   }
616 
617   @Override
618   public OperationCallable<DeleteHealthCheckRequest, Operation, Operation>
deleteOperationCallable()619       deleteOperationCallable() {
620     return deleteOperationCallable;
621   }
622 
623   @Override
getCallable()624   public UnaryCallable<GetHealthCheckRequest, HealthCheck> getCallable() {
625     return getCallable;
626   }
627 
628   @Override
insertCallable()629   public UnaryCallable<InsertHealthCheckRequest, Operation> insertCallable() {
630     return insertCallable;
631   }
632 
633   @Override
634   public OperationCallable<InsertHealthCheckRequest, Operation, Operation>
insertOperationCallable()635       insertOperationCallable() {
636     return insertOperationCallable;
637   }
638 
639   @Override
listCallable()640   public UnaryCallable<ListHealthChecksRequest, HealthCheckList> listCallable() {
641     return listCallable;
642   }
643 
644   @Override
listPagedCallable()645   public UnaryCallable<ListHealthChecksRequest, ListPagedResponse> listPagedCallable() {
646     return listPagedCallable;
647   }
648 
649   @Override
patchCallable()650   public UnaryCallable<PatchHealthCheckRequest, Operation> patchCallable() {
651     return patchCallable;
652   }
653 
654   @Override
patchOperationCallable()655   public OperationCallable<PatchHealthCheckRequest, Operation, Operation> patchOperationCallable() {
656     return patchOperationCallable;
657   }
658 
659   @Override
updateCallable()660   public UnaryCallable<UpdateHealthCheckRequest, Operation> updateCallable() {
661     return updateCallable;
662   }
663 
664   @Override
665   public OperationCallable<UpdateHealthCheckRequest, Operation, Operation>
updateOperationCallable()666       updateOperationCallable() {
667     return updateOperationCallable;
668   }
669 
670   @Override
close()671   public final void close() {
672     try {
673       backgroundResources.close();
674     } catch (RuntimeException e) {
675       throw e;
676     } catch (Exception e) {
677       throw new IllegalStateException("Failed to close resource", e);
678     }
679   }
680 
681   @Override
shutdown()682   public void shutdown() {
683     backgroundResources.shutdown();
684   }
685 
686   @Override
isShutdown()687   public boolean isShutdown() {
688     return backgroundResources.isShutdown();
689   }
690 
691   @Override
isTerminated()692   public boolean isTerminated() {
693     return backgroundResources.isTerminated();
694   }
695 
696   @Override
shutdownNow()697   public void shutdownNow() {
698     backgroundResources.shutdownNow();
699   }
700 
701   @Override
awaitTermination(long duration, TimeUnit unit)702   public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
703     return backgroundResources.awaitTermination(duration, unit);
704   }
705 }
706