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