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