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