• 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.SubnetworksClient.AggregatedListPagedResponse;
20 import static com.google.cloud.compute.v1.SubnetworksClient.ListPagedResponse;
21 import static com.google.cloud.compute.v1.SubnetworksClient.ListUsablePagedResponse;
22 
23 import com.google.api.core.BetaApi;
24 import com.google.api.core.InternalApi;
25 import com.google.api.gax.core.BackgroundResource;
26 import com.google.api.gax.core.BackgroundResourceAggregation;
27 import com.google.api.gax.httpjson.ApiMethodDescriptor;
28 import com.google.api.gax.httpjson.HttpJsonCallSettings;
29 import com.google.api.gax.httpjson.HttpJsonOperationSnapshot;
30 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
31 import com.google.api.gax.httpjson.ProtoMessageRequestFormatter;
32 import com.google.api.gax.httpjson.ProtoMessageResponseParser;
33 import com.google.api.gax.httpjson.ProtoRestSerializer;
34 import com.google.api.gax.rpc.ClientContext;
35 import com.google.api.gax.rpc.OperationCallable;
36 import com.google.api.gax.rpc.UnaryCallable;
37 import com.google.cloud.compute.v1.AggregatedListSubnetworksRequest;
38 import com.google.cloud.compute.v1.DeleteSubnetworkRequest;
39 import com.google.cloud.compute.v1.ExpandIpCidrRangeSubnetworkRequest;
40 import com.google.cloud.compute.v1.GetIamPolicySubnetworkRequest;
41 import com.google.cloud.compute.v1.GetSubnetworkRequest;
42 import com.google.cloud.compute.v1.InsertSubnetworkRequest;
43 import com.google.cloud.compute.v1.ListSubnetworksRequest;
44 import com.google.cloud.compute.v1.ListUsableSubnetworksRequest;
45 import com.google.cloud.compute.v1.Operation;
46 import com.google.cloud.compute.v1.Operation.Status;
47 import com.google.cloud.compute.v1.PatchSubnetworkRequest;
48 import com.google.cloud.compute.v1.Policy;
49 import com.google.cloud.compute.v1.SetIamPolicySubnetworkRequest;
50 import com.google.cloud.compute.v1.SetPrivateIpGoogleAccessSubnetworkRequest;
51 import com.google.cloud.compute.v1.Subnetwork;
52 import com.google.cloud.compute.v1.SubnetworkAggregatedList;
53 import com.google.cloud.compute.v1.SubnetworkList;
54 import com.google.cloud.compute.v1.TestIamPermissionsSubnetworkRequest;
55 import com.google.cloud.compute.v1.TestPermissionsResponse;
56 import com.google.cloud.compute.v1.UsableSubnetworksAggregatedList;
57 import com.google.protobuf.TypeRegistry;
58 import java.io.IOException;
59 import java.util.ArrayList;
60 import java.util.HashMap;
61 import java.util.List;
62 import java.util.Map;
63 import java.util.concurrent.TimeUnit;
64 import javax.annotation.Generated;
65 
66 // AUTO-GENERATED DOCUMENTATION AND CLASS.
67 /**
68  * REST stub implementation for the Subnetworks service API.
69  *
70  * <p>This class is for advanced usage and reflects the underlying API directly.
71  */
72 @Generated("by gapic-generator-java")
73 @BetaApi
74 public class HttpJsonSubnetworksStub extends SubnetworksStub {
75   private static final TypeRegistry typeRegistry =
76       TypeRegistry.newBuilder().add(Operation.getDescriptor()).build();
77 
78   private static final ApiMethodDescriptor<
79           AggregatedListSubnetworksRequest, SubnetworkAggregatedList>
80       aggregatedListMethodDescriptor =
81           ApiMethodDescriptor
82               .<AggregatedListSubnetworksRequest, SubnetworkAggregatedList>newBuilder()
83               .setFullMethodName("google.cloud.compute.v1.Subnetworks/AggregatedList")
84               .setHttpMethod("GET")
85               .setType(ApiMethodDescriptor.MethodType.UNARY)
86               .setRequestFormatter(
87                   ProtoMessageRequestFormatter.<AggregatedListSubnetworksRequest>newBuilder()
88                       .setPath(
89                           "/compute/v1/projects/{project}/aggregated/subnetworks",
90                           request -> {
91                             Map<String, String> fields = new HashMap<>();
92                             ProtoRestSerializer<AggregatedListSubnetworksRequest> serializer =
93                                 ProtoRestSerializer.create();
94                             serializer.putPathParam(fields, "project", request.getProject());
95                             return fields;
96                           })
97                       .setQueryParamsExtractor(
98                           request -> {
99                             Map<String, List<String>> fields = new HashMap<>();
100                             ProtoRestSerializer<AggregatedListSubnetworksRequest> serializer =
101                                 ProtoRestSerializer.create();
102                             if (request.hasFilter()) {
103                               serializer.putQueryParam(fields, "filter", request.getFilter());
104                             }
105                             if (request.hasIncludeAllScopes()) {
106                               serializer.putQueryParam(
107                                   fields, "includeAllScopes", request.getIncludeAllScopes());
108                             }
109                             if (request.hasMaxResults()) {
110                               serializer.putQueryParam(
111                                   fields, "maxResults", request.getMaxResults());
112                             }
113                             if (request.hasOrderBy()) {
114                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
115                             }
116                             if (request.hasPageToken()) {
117                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
118                             }
119                             if (request.hasReturnPartialSuccess()) {
120                               serializer.putQueryParam(
121                                   fields,
122                                   "returnPartialSuccess",
123                                   request.getReturnPartialSuccess());
124                             }
125                             return fields;
126                           })
127                       .setRequestBodyExtractor(request -> null)
128                       .build())
129               .setResponseParser(
130                   ProtoMessageResponseParser.<SubnetworkAggregatedList>newBuilder()
131                       .setDefaultInstance(SubnetworkAggregatedList.getDefaultInstance())
132                       .setDefaultTypeRegistry(typeRegistry)
133                       .build())
134               .build();
135 
136   private static final ApiMethodDescriptor<DeleteSubnetworkRequest, Operation>
137       deleteMethodDescriptor =
138           ApiMethodDescriptor.<DeleteSubnetworkRequest, Operation>newBuilder()
139               .setFullMethodName("google.cloud.compute.v1.Subnetworks/Delete")
140               .setHttpMethod("DELETE")
141               .setType(ApiMethodDescriptor.MethodType.UNARY)
142               .setRequestFormatter(
143                   ProtoMessageRequestFormatter.<DeleteSubnetworkRequest>newBuilder()
144                       .setPath(
145                           "/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}",
146                           request -> {
147                             Map<String, String> fields = new HashMap<>();
148                             ProtoRestSerializer<DeleteSubnetworkRequest> serializer =
149                                 ProtoRestSerializer.create();
150                             serializer.putPathParam(fields, "project", request.getProject());
151                             serializer.putPathParam(fields, "region", request.getRegion());
152                             serializer.putPathParam(fields, "subnetwork", request.getSubnetwork());
153                             return fields;
154                           })
155                       .setQueryParamsExtractor(
156                           request -> {
157                             Map<String, List<String>> fields = new HashMap<>();
158                             ProtoRestSerializer<DeleteSubnetworkRequest> serializer =
159                                 ProtoRestSerializer.create();
160                             if (request.hasRequestId()) {
161                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
162                             }
163                             return fields;
164                           })
165                       .setRequestBodyExtractor(request -> null)
166                       .build())
167               .setResponseParser(
168                   ProtoMessageResponseParser.<Operation>newBuilder()
169                       .setDefaultInstance(Operation.getDefaultInstance())
170                       .setDefaultTypeRegistry(typeRegistry)
171                       .build())
172               .setOperationSnapshotFactory(
173                   (DeleteSubnetworkRequest request, Operation response) -> {
174                     StringBuilder opName = new StringBuilder(response.getName());
175                     opName.append(":").append(request.getProject());
176                     opName.append(":").append(request.getRegion());
177                     return HttpJsonOperationSnapshot.newBuilder()
178                         .setName(opName.toString())
179                         .setMetadata(response)
180                         .setDone(Status.DONE.equals(response.getStatus()))
181                         .setResponse(response)
182                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
183                         .build();
184                   })
185               .build();
186 
187   private static final ApiMethodDescriptor<ExpandIpCidrRangeSubnetworkRequest, Operation>
188       expandIpCidrRangeMethodDescriptor =
189           ApiMethodDescriptor.<ExpandIpCidrRangeSubnetworkRequest, Operation>newBuilder()
190               .setFullMethodName("google.cloud.compute.v1.Subnetworks/ExpandIpCidrRange")
191               .setHttpMethod("POST")
192               .setType(ApiMethodDescriptor.MethodType.UNARY)
193               .setRequestFormatter(
194                   ProtoMessageRequestFormatter.<ExpandIpCidrRangeSubnetworkRequest>newBuilder()
195                       .setPath(
196                           "/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange",
197                           request -> {
198                             Map<String, String> fields = new HashMap<>();
199                             ProtoRestSerializer<ExpandIpCidrRangeSubnetworkRequest> serializer =
200                                 ProtoRestSerializer.create();
201                             serializer.putPathParam(fields, "project", request.getProject());
202                             serializer.putPathParam(fields, "region", request.getRegion());
203                             serializer.putPathParam(fields, "subnetwork", request.getSubnetwork());
204                             return fields;
205                           })
206                       .setQueryParamsExtractor(
207                           request -> {
208                             Map<String, List<String>> fields = new HashMap<>();
209                             ProtoRestSerializer<ExpandIpCidrRangeSubnetworkRequest> serializer =
210                                 ProtoRestSerializer.create();
211                             if (request.hasRequestId()) {
212                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
213                             }
214                             return fields;
215                           })
216                       .setRequestBodyExtractor(
217                           request ->
218                               ProtoRestSerializer.create()
219                                   .toBody(
220                                       "subnetworksExpandIpCidrRangeRequestResource",
221                                       request.getSubnetworksExpandIpCidrRangeRequestResource(),
222                                       false))
223                       .build())
224               .setResponseParser(
225                   ProtoMessageResponseParser.<Operation>newBuilder()
226                       .setDefaultInstance(Operation.getDefaultInstance())
227                       .setDefaultTypeRegistry(typeRegistry)
228                       .build())
229               .setOperationSnapshotFactory(
230                   (ExpandIpCidrRangeSubnetworkRequest request, Operation response) -> {
231                     StringBuilder opName = new StringBuilder(response.getName());
232                     opName.append(":").append(request.getProject());
233                     opName.append(":").append(request.getRegion());
234                     return HttpJsonOperationSnapshot.newBuilder()
235                         .setName(opName.toString())
236                         .setMetadata(response)
237                         .setDone(Status.DONE.equals(response.getStatus()))
238                         .setResponse(response)
239                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
240                         .build();
241                   })
242               .build();
243 
244   private static final ApiMethodDescriptor<GetSubnetworkRequest, Subnetwork> getMethodDescriptor =
245       ApiMethodDescriptor.<GetSubnetworkRequest, Subnetwork>newBuilder()
246           .setFullMethodName("google.cloud.compute.v1.Subnetworks/Get")
247           .setHttpMethod("GET")
248           .setType(ApiMethodDescriptor.MethodType.UNARY)
249           .setRequestFormatter(
250               ProtoMessageRequestFormatter.<GetSubnetworkRequest>newBuilder()
251                   .setPath(
252                       "/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}",
253                       request -> {
254                         Map<String, String> fields = new HashMap<>();
255                         ProtoRestSerializer<GetSubnetworkRequest> serializer =
256                             ProtoRestSerializer.create();
257                         serializer.putPathParam(fields, "project", request.getProject());
258                         serializer.putPathParam(fields, "region", request.getRegion());
259                         serializer.putPathParam(fields, "subnetwork", request.getSubnetwork());
260                         return fields;
261                       })
262                   .setQueryParamsExtractor(
263                       request -> {
264                         Map<String, List<String>> fields = new HashMap<>();
265                         ProtoRestSerializer<GetSubnetworkRequest> serializer =
266                             ProtoRestSerializer.create();
267                         return fields;
268                       })
269                   .setRequestBodyExtractor(request -> null)
270                   .build())
271           .setResponseParser(
272               ProtoMessageResponseParser.<Subnetwork>newBuilder()
273                   .setDefaultInstance(Subnetwork.getDefaultInstance())
274                   .setDefaultTypeRegistry(typeRegistry)
275                   .build())
276           .build();
277 
278   private static final ApiMethodDescriptor<GetIamPolicySubnetworkRequest, Policy>
279       getIamPolicyMethodDescriptor =
280           ApiMethodDescriptor.<GetIamPolicySubnetworkRequest, Policy>newBuilder()
281               .setFullMethodName("google.cloud.compute.v1.Subnetworks/GetIamPolicy")
282               .setHttpMethod("GET")
283               .setType(ApiMethodDescriptor.MethodType.UNARY)
284               .setRequestFormatter(
285                   ProtoMessageRequestFormatter.<GetIamPolicySubnetworkRequest>newBuilder()
286                       .setPath(
287                           "/compute/v1/projects/{project}/regions/{region}/subnetworks/{resource}/getIamPolicy",
288                           request -> {
289                             Map<String, String> fields = new HashMap<>();
290                             ProtoRestSerializer<GetIamPolicySubnetworkRequest> serializer =
291                                 ProtoRestSerializer.create();
292                             serializer.putPathParam(fields, "project", request.getProject());
293                             serializer.putPathParam(fields, "region", request.getRegion());
294                             serializer.putPathParam(fields, "resource", request.getResource());
295                             return fields;
296                           })
297                       .setQueryParamsExtractor(
298                           request -> {
299                             Map<String, List<String>> fields = new HashMap<>();
300                             ProtoRestSerializer<GetIamPolicySubnetworkRequest> serializer =
301                                 ProtoRestSerializer.create();
302                             if (request.hasOptionsRequestedPolicyVersion()) {
303                               serializer.putQueryParam(
304                                   fields,
305                                   "optionsRequestedPolicyVersion",
306                                   request.getOptionsRequestedPolicyVersion());
307                             }
308                             return fields;
309                           })
310                       .setRequestBodyExtractor(request -> null)
311                       .build())
312               .setResponseParser(
313                   ProtoMessageResponseParser.<Policy>newBuilder()
314                       .setDefaultInstance(Policy.getDefaultInstance())
315                       .setDefaultTypeRegistry(typeRegistry)
316                       .build())
317               .build();
318 
319   private static final ApiMethodDescriptor<InsertSubnetworkRequest, Operation>
320       insertMethodDescriptor =
321           ApiMethodDescriptor.<InsertSubnetworkRequest, Operation>newBuilder()
322               .setFullMethodName("google.cloud.compute.v1.Subnetworks/Insert")
323               .setHttpMethod("POST")
324               .setType(ApiMethodDescriptor.MethodType.UNARY)
325               .setRequestFormatter(
326                   ProtoMessageRequestFormatter.<InsertSubnetworkRequest>newBuilder()
327                       .setPath(
328                           "/compute/v1/projects/{project}/regions/{region}/subnetworks",
329                           request -> {
330                             Map<String, String> fields = new HashMap<>();
331                             ProtoRestSerializer<InsertSubnetworkRequest> serializer =
332                                 ProtoRestSerializer.create();
333                             serializer.putPathParam(fields, "project", request.getProject());
334                             serializer.putPathParam(fields, "region", request.getRegion());
335                             return fields;
336                           })
337                       .setQueryParamsExtractor(
338                           request -> {
339                             Map<String, List<String>> fields = new HashMap<>();
340                             ProtoRestSerializer<InsertSubnetworkRequest> serializer =
341                                 ProtoRestSerializer.create();
342                             if (request.hasRequestId()) {
343                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
344                             }
345                             return fields;
346                           })
347                       .setRequestBodyExtractor(
348                           request ->
349                               ProtoRestSerializer.create()
350                                   .toBody(
351                                       "subnetworkResource", request.getSubnetworkResource(), false))
352                       .build())
353               .setResponseParser(
354                   ProtoMessageResponseParser.<Operation>newBuilder()
355                       .setDefaultInstance(Operation.getDefaultInstance())
356                       .setDefaultTypeRegistry(typeRegistry)
357                       .build())
358               .setOperationSnapshotFactory(
359                   (InsertSubnetworkRequest request, Operation response) -> {
360                     StringBuilder opName = new StringBuilder(response.getName());
361                     opName.append(":").append(request.getProject());
362                     opName.append(":").append(request.getRegion());
363                     return HttpJsonOperationSnapshot.newBuilder()
364                         .setName(opName.toString())
365                         .setMetadata(response)
366                         .setDone(Status.DONE.equals(response.getStatus()))
367                         .setResponse(response)
368                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
369                         .build();
370                   })
371               .build();
372 
373   private static final ApiMethodDescriptor<ListSubnetworksRequest, SubnetworkList>
374       listMethodDescriptor =
375           ApiMethodDescriptor.<ListSubnetworksRequest, SubnetworkList>newBuilder()
376               .setFullMethodName("google.cloud.compute.v1.Subnetworks/List")
377               .setHttpMethod("GET")
378               .setType(ApiMethodDescriptor.MethodType.UNARY)
379               .setRequestFormatter(
380                   ProtoMessageRequestFormatter.<ListSubnetworksRequest>newBuilder()
381                       .setPath(
382                           "/compute/v1/projects/{project}/regions/{region}/subnetworks",
383                           request -> {
384                             Map<String, String> fields = new HashMap<>();
385                             ProtoRestSerializer<ListSubnetworksRequest> serializer =
386                                 ProtoRestSerializer.create();
387                             serializer.putPathParam(fields, "project", request.getProject());
388                             serializer.putPathParam(fields, "region", request.getRegion());
389                             return fields;
390                           })
391                       .setQueryParamsExtractor(
392                           request -> {
393                             Map<String, List<String>> fields = new HashMap<>();
394                             ProtoRestSerializer<ListSubnetworksRequest> serializer =
395                                 ProtoRestSerializer.create();
396                             if (request.hasFilter()) {
397                               serializer.putQueryParam(fields, "filter", request.getFilter());
398                             }
399                             if (request.hasMaxResults()) {
400                               serializer.putQueryParam(
401                                   fields, "maxResults", request.getMaxResults());
402                             }
403                             if (request.hasOrderBy()) {
404                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
405                             }
406                             if (request.hasPageToken()) {
407                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
408                             }
409                             if (request.hasReturnPartialSuccess()) {
410                               serializer.putQueryParam(
411                                   fields,
412                                   "returnPartialSuccess",
413                                   request.getReturnPartialSuccess());
414                             }
415                             return fields;
416                           })
417                       .setRequestBodyExtractor(request -> null)
418                       .build())
419               .setResponseParser(
420                   ProtoMessageResponseParser.<SubnetworkList>newBuilder()
421                       .setDefaultInstance(SubnetworkList.getDefaultInstance())
422                       .setDefaultTypeRegistry(typeRegistry)
423                       .build())
424               .build();
425 
426   private static final ApiMethodDescriptor<
427           ListUsableSubnetworksRequest, UsableSubnetworksAggregatedList>
428       listUsableMethodDescriptor =
429           ApiMethodDescriptor
430               .<ListUsableSubnetworksRequest, UsableSubnetworksAggregatedList>newBuilder()
431               .setFullMethodName("google.cloud.compute.v1.Subnetworks/ListUsable")
432               .setHttpMethod("GET")
433               .setType(ApiMethodDescriptor.MethodType.UNARY)
434               .setRequestFormatter(
435                   ProtoMessageRequestFormatter.<ListUsableSubnetworksRequest>newBuilder()
436                       .setPath(
437                           "/compute/v1/projects/{project}/aggregated/subnetworks/listUsable",
438                           request -> {
439                             Map<String, String> fields = new HashMap<>();
440                             ProtoRestSerializer<ListUsableSubnetworksRequest> serializer =
441                                 ProtoRestSerializer.create();
442                             serializer.putPathParam(fields, "project", request.getProject());
443                             return fields;
444                           })
445                       .setQueryParamsExtractor(
446                           request -> {
447                             Map<String, List<String>> fields = new HashMap<>();
448                             ProtoRestSerializer<ListUsableSubnetworksRequest> serializer =
449                                 ProtoRestSerializer.create();
450                             if (request.hasFilter()) {
451                               serializer.putQueryParam(fields, "filter", request.getFilter());
452                             }
453                             if (request.hasMaxResults()) {
454                               serializer.putQueryParam(
455                                   fields, "maxResults", request.getMaxResults());
456                             }
457                             if (request.hasOrderBy()) {
458                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
459                             }
460                             if (request.hasPageToken()) {
461                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
462                             }
463                             if (request.hasReturnPartialSuccess()) {
464                               serializer.putQueryParam(
465                                   fields,
466                                   "returnPartialSuccess",
467                                   request.getReturnPartialSuccess());
468                             }
469                             return fields;
470                           })
471                       .setRequestBodyExtractor(request -> null)
472                       .build())
473               .setResponseParser(
474                   ProtoMessageResponseParser.<UsableSubnetworksAggregatedList>newBuilder()
475                       .setDefaultInstance(UsableSubnetworksAggregatedList.getDefaultInstance())
476                       .setDefaultTypeRegistry(typeRegistry)
477                       .build())
478               .build();
479 
480   private static final ApiMethodDescriptor<PatchSubnetworkRequest, Operation>
481       patchMethodDescriptor =
482           ApiMethodDescriptor.<PatchSubnetworkRequest, Operation>newBuilder()
483               .setFullMethodName("google.cloud.compute.v1.Subnetworks/Patch")
484               .setHttpMethod("PATCH")
485               .setType(ApiMethodDescriptor.MethodType.UNARY)
486               .setRequestFormatter(
487                   ProtoMessageRequestFormatter.<PatchSubnetworkRequest>newBuilder()
488                       .setPath(
489                           "/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}",
490                           request -> {
491                             Map<String, String> fields = new HashMap<>();
492                             ProtoRestSerializer<PatchSubnetworkRequest> serializer =
493                                 ProtoRestSerializer.create();
494                             serializer.putPathParam(fields, "project", request.getProject());
495                             serializer.putPathParam(fields, "region", request.getRegion());
496                             serializer.putPathParam(fields, "subnetwork", request.getSubnetwork());
497                             return fields;
498                           })
499                       .setQueryParamsExtractor(
500                           request -> {
501                             Map<String, List<String>> fields = new HashMap<>();
502                             ProtoRestSerializer<PatchSubnetworkRequest> serializer =
503                                 ProtoRestSerializer.create();
504                             if (request.hasDrainTimeoutSeconds()) {
505                               serializer.putQueryParam(
506                                   fields, "drainTimeoutSeconds", request.getDrainTimeoutSeconds());
507                             }
508                             if (request.hasRequestId()) {
509                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
510                             }
511                             return fields;
512                           })
513                       .setRequestBodyExtractor(
514                           request ->
515                               ProtoRestSerializer.create()
516                                   .toBody(
517                                       "subnetworkResource", request.getSubnetworkResource(), false))
518                       .build())
519               .setResponseParser(
520                   ProtoMessageResponseParser.<Operation>newBuilder()
521                       .setDefaultInstance(Operation.getDefaultInstance())
522                       .setDefaultTypeRegistry(typeRegistry)
523                       .build())
524               .setOperationSnapshotFactory(
525                   (PatchSubnetworkRequest request, Operation response) -> {
526                     StringBuilder opName = new StringBuilder(response.getName());
527                     opName.append(":").append(request.getProject());
528                     opName.append(":").append(request.getRegion());
529                     return HttpJsonOperationSnapshot.newBuilder()
530                         .setName(opName.toString())
531                         .setMetadata(response)
532                         .setDone(Status.DONE.equals(response.getStatus()))
533                         .setResponse(response)
534                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
535                         .build();
536                   })
537               .build();
538 
539   private static final ApiMethodDescriptor<SetIamPolicySubnetworkRequest, Policy>
540       setIamPolicyMethodDescriptor =
541           ApiMethodDescriptor.<SetIamPolicySubnetworkRequest, Policy>newBuilder()
542               .setFullMethodName("google.cloud.compute.v1.Subnetworks/SetIamPolicy")
543               .setHttpMethod("POST")
544               .setType(ApiMethodDescriptor.MethodType.UNARY)
545               .setRequestFormatter(
546                   ProtoMessageRequestFormatter.<SetIamPolicySubnetworkRequest>newBuilder()
547                       .setPath(
548                           "/compute/v1/projects/{project}/regions/{region}/subnetworks/{resource}/setIamPolicy",
549                           request -> {
550                             Map<String, String> fields = new HashMap<>();
551                             ProtoRestSerializer<SetIamPolicySubnetworkRequest> serializer =
552                                 ProtoRestSerializer.create();
553                             serializer.putPathParam(fields, "project", request.getProject());
554                             serializer.putPathParam(fields, "region", request.getRegion());
555                             serializer.putPathParam(fields, "resource", request.getResource());
556                             return fields;
557                           })
558                       .setQueryParamsExtractor(
559                           request -> {
560                             Map<String, List<String>> fields = new HashMap<>();
561                             ProtoRestSerializer<SetIamPolicySubnetworkRequest> serializer =
562                                 ProtoRestSerializer.create();
563                             return fields;
564                           })
565                       .setRequestBodyExtractor(
566                           request ->
567                               ProtoRestSerializer.create()
568                                   .toBody(
569                                       "regionSetPolicyRequestResource",
570                                       request.getRegionSetPolicyRequestResource(),
571                                       false))
572                       .build())
573               .setResponseParser(
574                   ProtoMessageResponseParser.<Policy>newBuilder()
575                       .setDefaultInstance(Policy.getDefaultInstance())
576                       .setDefaultTypeRegistry(typeRegistry)
577                       .build())
578               .build();
579 
580   private static final ApiMethodDescriptor<SetPrivateIpGoogleAccessSubnetworkRequest, Operation>
581       setPrivateIpGoogleAccessMethodDescriptor =
582           ApiMethodDescriptor.<SetPrivateIpGoogleAccessSubnetworkRequest, Operation>newBuilder()
583               .setFullMethodName("google.cloud.compute.v1.Subnetworks/SetPrivateIpGoogleAccess")
584               .setHttpMethod("POST")
585               .setType(ApiMethodDescriptor.MethodType.UNARY)
586               .setRequestFormatter(
587                   ProtoMessageRequestFormatter
588                       .<SetPrivateIpGoogleAccessSubnetworkRequest>newBuilder()
589                       .setPath(
590                           "/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}/setPrivateIpGoogleAccess",
591                           request -> {
592                             Map<String, String> fields = new HashMap<>();
593                             ProtoRestSerializer<SetPrivateIpGoogleAccessSubnetworkRequest>
594                                 serializer = ProtoRestSerializer.create();
595                             serializer.putPathParam(fields, "project", request.getProject());
596                             serializer.putPathParam(fields, "region", request.getRegion());
597                             serializer.putPathParam(fields, "subnetwork", request.getSubnetwork());
598                             return fields;
599                           })
600                       .setQueryParamsExtractor(
601                           request -> {
602                             Map<String, List<String>> fields = new HashMap<>();
603                             ProtoRestSerializer<SetPrivateIpGoogleAccessSubnetworkRequest>
604                                 serializer = ProtoRestSerializer.create();
605                             if (request.hasRequestId()) {
606                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
607                             }
608                             return fields;
609                           })
610                       .setRequestBodyExtractor(
611                           request ->
612                               ProtoRestSerializer.create()
613                                   .toBody(
614                                       "subnetworksSetPrivateIpGoogleAccessRequestResource",
615                                       request
616                                           .getSubnetworksSetPrivateIpGoogleAccessRequestResource(),
617                                       false))
618                       .build())
619               .setResponseParser(
620                   ProtoMessageResponseParser.<Operation>newBuilder()
621                       .setDefaultInstance(Operation.getDefaultInstance())
622                       .setDefaultTypeRegistry(typeRegistry)
623                       .build())
624               .setOperationSnapshotFactory(
625                   (SetPrivateIpGoogleAccessSubnetworkRequest request, Operation response) -> {
626                     StringBuilder opName = new StringBuilder(response.getName());
627                     opName.append(":").append(request.getProject());
628                     opName.append(":").append(request.getRegion());
629                     return HttpJsonOperationSnapshot.newBuilder()
630                         .setName(opName.toString())
631                         .setMetadata(response)
632                         .setDone(Status.DONE.equals(response.getStatus()))
633                         .setResponse(response)
634                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
635                         .build();
636                   })
637               .build();
638 
639   private static final ApiMethodDescriptor<
640           TestIamPermissionsSubnetworkRequest, TestPermissionsResponse>
641       testIamPermissionsMethodDescriptor =
642           ApiMethodDescriptor
643               .<TestIamPermissionsSubnetworkRequest, TestPermissionsResponse>newBuilder()
644               .setFullMethodName("google.cloud.compute.v1.Subnetworks/TestIamPermissions")
645               .setHttpMethod("POST")
646               .setType(ApiMethodDescriptor.MethodType.UNARY)
647               .setRequestFormatter(
648                   ProtoMessageRequestFormatter.<TestIamPermissionsSubnetworkRequest>newBuilder()
649                       .setPath(
650                           "/compute/v1/projects/{project}/regions/{region}/subnetworks/{resource}/testIamPermissions",
651                           request -> {
652                             Map<String, String> fields = new HashMap<>();
653                             ProtoRestSerializer<TestIamPermissionsSubnetworkRequest> serializer =
654                                 ProtoRestSerializer.create();
655                             serializer.putPathParam(fields, "project", request.getProject());
656                             serializer.putPathParam(fields, "region", request.getRegion());
657                             serializer.putPathParam(fields, "resource", request.getResource());
658                             return fields;
659                           })
660                       .setQueryParamsExtractor(
661                           request -> {
662                             Map<String, List<String>> fields = new HashMap<>();
663                             ProtoRestSerializer<TestIamPermissionsSubnetworkRequest> serializer =
664                                 ProtoRestSerializer.create();
665                             return fields;
666                           })
667                       .setRequestBodyExtractor(
668                           request ->
669                               ProtoRestSerializer.create()
670                                   .toBody(
671                                       "testPermissionsRequestResource",
672                                       request.getTestPermissionsRequestResource(),
673                                       false))
674                       .build())
675               .setResponseParser(
676                   ProtoMessageResponseParser.<TestPermissionsResponse>newBuilder()
677                       .setDefaultInstance(TestPermissionsResponse.getDefaultInstance())
678                       .setDefaultTypeRegistry(typeRegistry)
679                       .build())
680               .build();
681 
682   private final UnaryCallable<AggregatedListSubnetworksRequest, SubnetworkAggregatedList>
683       aggregatedListCallable;
684   private final UnaryCallable<AggregatedListSubnetworksRequest, AggregatedListPagedResponse>
685       aggregatedListPagedCallable;
686   private final UnaryCallable<DeleteSubnetworkRequest, Operation> deleteCallable;
687   private final OperationCallable<DeleteSubnetworkRequest, Operation, Operation>
688       deleteOperationCallable;
689   private final UnaryCallable<ExpandIpCidrRangeSubnetworkRequest, Operation>
690       expandIpCidrRangeCallable;
691   private final OperationCallable<ExpandIpCidrRangeSubnetworkRequest, Operation, Operation>
692       expandIpCidrRangeOperationCallable;
693   private final UnaryCallable<GetSubnetworkRequest, Subnetwork> getCallable;
694   private final UnaryCallable<GetIamPolicySubnetworkRequest, Policy> getIamPolicyCallable;
695   private final UnaryCallable<InsertSubnetworkRequest, Operation> insertCallable;
696   private final OperationCallable<InsertSubnetworkRequest, Operation, Operation>
697       insertOperationCallable;
698   private final UnaryCallable<ListSubnetworksRequest, SubnetworkList> listCallable;
699   private final UnaryCallable<ListSubnetworksRequest, ListPagedResponse> listPagedCallable;
700   private final UnaryCallable<ListUsableSubnetworksRequest, UsableSubnetworksAggregatedList>
701       listUsableCallable;
702   private final UnaryCallable<ListUsableSubnetworksRequest, ListUsablePagedResponse>
703       listUsablePagedCallable;
704   private final UnaryCallable<PatchSubnetworkRequest, Operation> patchCallable;
705   private final OperationCallable<PatchSubnetworkRequest, Operation, Operation>
706       patchOperationCallable;
707   private final UnaryCallable<SetIamPolicySubnetworkRequest, Policy> setIamPolicyCallable;
708   private final UnaryCallable<SetPrivateIpGoogleAccessSubnetworkRequest, Operation>
709       setPrivateIpGoogleAccessCallable;
710   private final OperationCallable<SetPrivateIpGoogleAccessSubnetworkRequest, Operation, Operation>
711       setPrivateIpGoogleAccessOperationCallable;
712   private final UnaryCallable<TestIamPermissionsSubnetworkRequest, TestPermissionsResponse>
713       testIamPermissionsCallable;
714 
715   private final BackgroundResource backgroundResources;
716   private final HttpJsonRegionOperationsStub httpJsonOperationsStub;
717   private final HttpJsonStubCallableFactory callableFactory;
718 
create(SubnetworksStubSettings settings)719   public static final HttpJsonSubnetworksStub create(SubnetworksStubSettings settings)
720       throws IOException {
721     return new HttpJsonSubnetworksStub(settings, ClientContext.create(settings));
722   }
723 
create(ClientContext clientContext)724   public static final HttpJsonSubnetworksStub create(ClientContext clientContext)
725       throws IOException {
726     return new HttpJsonSubnetworksStub(SubnetworksStubSettings.newBuilder().build(), clientContext);
727   }
728 
create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)729   public static final HttpJsonSubnetworksStub create(
730       ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException {
731     return new HttpJsonSubnetworksStub(
732         SubnetworksStubSettings.newBuilder().build(), clientContext, callableFactory);
733   }
734 
735   /**
736    * Constructs an instance of HttpJsonSubnetworksStub, using the given settings. This is protected
737    * so that it is easy to make a subclass, but otherwise, the static factory methods should be
738    * preferred.
739    */
HttpJsonSubnetworksStub(SubnetworksStubSettings settings, ClientContext clientContext)740   protected HttpJsonSubnetworksStub(SubnetworksStubSettings settings, ClientContext clientContext)
741       throws IOException {
742     this(settings, clientContext, new HttpJsonSubnetworksCallableFactory());
743   }
744 
745   /**
746    * Constructs an instance of HttpJsonSubnetworksStub, using the given settings. This is protected
747    * so that it is easy to make a subclass, but otherwise, the static factory methods should be
748    * preferred.
749    */
HttpJsonSubnetworksStub( SubnetworksStubSettings settings, ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)750   protected HttpJsonSubnetworksStub(
751       SubnetworksStubSettings settings,
752       ClientContext clientContext,
753       HttpJsonStubCallableFactory callableFactory)
754       throws IOException {
755     this.callableFactory = callableFactory;
756     this.httpJsonOperationsStub =
757         HttpJsonRegionOperationsStub.create(clientContext, callableFactory);
758 
759     HttpJsonCallSettings<AggregatedListSubnetworksRequest, SubnetworkAggregatedList>
760         aggregatedListTransportSettings =
761             HttpJsonCallSettings
762                 .<AggregatedListSubnetworksRequest, SubnetworkAggregatedList>newBuilder()
763                 .setMethodDescriptor(aggregatedListMethodDescriptor)
764                 .setTypeRegistry(typeRegistry)
765                 .build();
766     HttpJsonCallSettings<DeleteSubnetworkRequest, Operation> deleteTransportSettings =
767         HttpJsonCallSettings.<DeleteSubnetworkRequest, Operation>newBuilder()
768             .setMethodDescriptor(deleteMethodDescriptor)
769             .setTypeRegistry(typeRegistry)
770             .build();
771     HttpJsonCallSettings<ExpandIpCidrRangeSubnetworkRequest, Operation>
772         expandIpCidrRangeTransportSettings =
773             HttpJsonCallSettings.<ExpandIpCidrRangeSubnetworkRequest, Operation>newBuilder()
774                 .setMethodDescriptor(expandIpCidrRangeMethodDescriptor)
775                 .setTypeRegistry(typeRegistry)
776                 .build();
777     HttpJsonCallSettings<GetSubnetworkRequest, Subnetwork> getTransportSettings =
778         HttpJsonCallSettings.<GetSubnetworkRequest, Subnetwork>newBuilder()
779             .setMethodDescriptor(getMethodDescriptor)
780             .setTypeRegistry(typeRegistry)
781             .build();
782     HttpJsonCallSettings<GetIamPolicySubnetworkRequest, Policy> getIamPolicyTransportSettings =
783         HttpJsonCallSettings.<GetIamPolicySubnetworkRequest, Policy>newBuilder()
784             .setMethodDescriptor(getIamPolicyMethodDescriptor)
785             .setTypeRegistry(typeRegistry)
786             .build();
787     HttpJsonCallSettings<InsertSubnetworkRequest, Operation> insertTransportSettings =
788         HttpJsonCallSettings.<InsertSubnetworkRequest, Operation>newBuilder()
789             .setMethodDescriptor(insertMethodDescriptor)
790             .setTypeRegistry(typeRegistry)
791             .build();
792     HttpJsonCallSettings<ListSubnetworksRequest, SubnetworkList> listTransportSettings =
793         HttpJsonCallSettings.<ListSubnetworksRequest, SubnetworkList>newBuilder()
794             .setMethodDescriptor(listMethodDescriptor)
795             .setTypeRegistry(typeRegistry)
796             .build();
797     HttpJsonCallSettings<ListUsableSubnetworksRequest, UsableSubnetworksAggregatedList>
798         listUsableTransportSettings =
799             HttpJsonCallSettings
800                 .<ListUsableSubnetworksRequest, UsableSubnetworksAggregatedList>newBuilder()
801                 .setMethodDescriptor(listUsableMethodDescriptor)
802                 .setTypeRegistry(typeRegistry)
803                 .build();
804     HttpJsonCallSettings<PatchSubnetworkRequest, Operation> patchTransportSettings =
805         HttpJsonCallSettings.<PatchSubnetworkRequest, Operation>newBuilder()
806             .setMethodDescriptor(patchMethodDescriptor)
807             .setTypeRegistry(typeRegistry)
808             .build();
809     HttpJsonCallSettings<SetIamPolicySubnetworkRequest, Policy> setIamPolicyTransportSettings =
810         HttpJsonCallSettings.<SetIamPolicySubnetworkRequest, Policy>newBuilder()
811             .setMethodDescriptor(setIamPolicyMethodDescriptor)
812             .setTypeRegistry(typeRegistry)
813             .build();
814     HttpJsonCallSettings<SetPrivateIpGoogleAccessSubnetworkRequest, Operation>
815         setPrivateIpGoogleAccessTransportSettings =
816             HttpJsonCallSettings.<SetPrivateIpGoogleAccessSubnetworkRequest, Operation>newBuilder()
817                 .setMethodDescriptor(setPrivateIpGoogleAccessMethodDescriptor)
818                 .setTypeRegistry(typeRegistry)
819                 .build();
820     HttpJsonCallSettings<TestIamPermissionsSubnetworkRequest, TestPermissionsResponse>
821         testIamPermissionsTransportSettings =
822             HttpJsonCallSettings
823                 .<TestIamPermissionsSubnetworkRequest, TestPermissionsResponse>newBuilder()
824                 .setMethodDescriptor(testIamPermissionsMethodDescriptor)
825                 .setTypeRegistry(typeRegistry)
826                 .build();
827 
828     this.aggregatedListCallable =
829         callableFactory.createUnaryCallable(
830             aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext);
831     this.aggregatedListPagedCallable =
832         callableFactory.createPagedCallable(
833             aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext);
834     this.deleteCallable =
835         callableFactory.createUnaryCallable(
836             deleteTransportSettings, settings.deleteSettings(), clientContext);
837     this.deleteOperationCallable =
838         callableFactory.createOperationCallable(
839             deleteTransportSettings,
840             settings.deleteOperationSettings(),
841             clientContext,
842             httpJsonOperationsStub);
843     this.expandIpCidrRangeCallable =
844         callableFactory.createUnaryCallable(
845             expandIpCidrRangeTransportSettings,
846             settings.expandIpCidrRangeSettings(),
847             clientContext);
848     this.expandIpCidrRangeOperationCallable =
849         callableFactory.createOperationCallable(
850             expandIpCidrRangeTransportSettings,
851             settings.expandIpCidrRangeOperationSettings(),
852             clientContext,
853             httpJsonOperationsStub);
854     this.getCallable =
855         callableFactory.createUnaryCallable(
856             getTransportSettings, settings.getSettings(), clientContext);
857     this.getIamPolicyCallable =
858         callableFactory.createUnaryCallable(
859             getIamPolicyTransportSettings, settings.getIamPolicySettings(), clientContext);
860     this.insertCallable =
861         callableFactory.createUnaryCallable(
862             insertTransportSettings, settings.insertSettings(), clientContext);
863     this.insertOperationCallable =
864         callableFactory.createOperationCallable(
865             insertTransportSettings,
866             settings.insertOperationSettings(),
867             clientContext,
868             httpJsonOperationsStub);
869     this.listCallable =
870         callableFactory.createUnaryCallable(
871             listTransportSettings, settings.listSettings(), clientContext);
872     this.listPagedCallable =
873         callableFactory.createPagedCallable(
874             listTransportSettings, settings.listSettings(), clientContext);
875     this.listUsableCallable =
876         callableFactory.createUnaryCallable(
877             listUsableTransportSettings, settings.listUsableSettings(), clientContext);
878     this.listUsablePagedCallable =
879         callableFactory.createPagedCallable(
880             listUsableTransportSettings, settings.listUsableSettings(), clientContext);
881     this.patchCallable =
882         callableFactory.createUnaryCallable(
883             patchTransportSettings, settings.patchSettings(), clientContext);
884     this.patchOperationCallable =
885         callableFactory.createOperationCallable(
886             patchTransportSettings,
887             settings.patchOperationSettings(),
888             clientContext,
889             httpJsonOperationsStub);
890     this.setIamPolicyCallable =
891         callableFactory.createUnaryCallable(
892             setIamPolicyTransportSettings, settings.setIamPolicySettings(), clientContext);
893     this.setPrivateIpGoogleAccessCallable =
894         callableFactory.createUnaryCallable(
895             setPrivateIpGoogleAccessTransportSettings,
896             settings.setPrivateIpGoogleAccessSettings(),
897             clientContext);
898     this.setPrivateIpGoogleAccessOperationCallable =
899         callableFactory.createOperationCallable(
900             setPrivateIpGoogleAccessTransportSettings,
901             settings.setPrivateIpGoogleAccessOperationSettings(),
902             clientContext,
903             httpJsonOperationsStub);
904     this.testIamPermissionsCallable =
905         callableFactory.createUnaryCallable(
906             testIamPermissionsTransportSettings,
907             settings.testIamPermissionsSettings(),
908             clientContext);
909 
910     this.backgroundResources =
911         new BackgroundResourceAggregation(clientContext.getBackgroundResources());
912   }
913 
914   @InternalApi
getMethodDescriptors()915   public static List<ApiMethodDescriptor> getMethodDescriptors() {
916     List<ApiMethodDescriptor> methodDescriptors = new ArrayList<>();
917     methodDescriptors.add(aggregatedListMethodDescriptor);
918     methodDescriptors.add(deleteMethodDescriptor);
919     methodDescriptors.add(expandIpCidrRangeMethodDescriptor);
920     methodDescriptors.add(getMethodDescriptor);
921     methodDescriptors.add(getIamPolicyMethodDescriptor);
922     methodDescriptors.add(insertMethodDescriptor);
923     methodDescriptors.add(listMethodDescriptor);
924     methodDescriptors.add(listUsableMethodDescriptor);
925     methodDescriptors.add(patchMethodDescriptor);
926     methodDescriptors.add(setIamPolicyMethodDescriptor);
927     methodDescriptors.add(setPrivateIpGoogleAccessMethodDescriptor);
928     methodDescriptors.add(testIamPermissionsMethodDescriptor);
929     return methodDescriptors;
930   }
931 
932   @Override
933   public UnaryCallable<AggregatedListSubnetworksRequest, SubnetworkAggregatedList>
aggregatedListCallable()934       aggregatedListCallable() {
935     return aggregatedListCallable;
936   }
937 
938   @Override
939   public UnaryCallable<AggregatedListSubnetworksRequest, AggregatedListPagedResponse>
aggregatedListPagedCallable()940       aggregatedListPagedCallable() {
941     return aggregatedListPagedCallable;
942   }
943 
944   @Override
deleteCallable()945   public UnaryCallable<DeleteSubnetworkRequest, Operation> deleteCallable() {
946     return deleteCallable;
947   }
948 
949   @Override
950   public OperationCallable<DeleteSubnetworkRequest, Operation, Operation>
deleteOperationCallable()951       deleteOperationCallable() {
952     return deleteOperationCallable;
953   }
954 
955   @Override
expandIpCidrRangeCallable()956   public UnaryCallable<ExpandIpCidrRangeSubnetworkRequest, Operation> expandIpCidrRangeCallable() {
957     return expandIpCidrRangeCallable;
958   }
959 
960   @Override
961   public OperationCallable<ExpandIpCidrRangeSubnetworkRequest, Operation, Operation>
expandIpCidrRangeOperationCallable()962       expandIpCidrRangeOperationCallable() {
963     return expandIpCidrRangeOperationCallable;
964   }
965 
966   @Override
getCallable()967   public UnaryCallable<GetSubnetworkRequest, Subnetwork> getCallable() {
968     return getCallable;
969   }
970 
971   @Override
getIamPolicyCallable()972   public UnaryCallable<GetIamPolicySubnetworkRequest, Policy> getIamPolicyCallable() {
973     return getIamPolicyCallable;
974   }
975 
976   @Override
insertCallable()977   public UnaryCallable<InsertSubnetworkRequest, Operation> insertCallable() {
978     return insertCallable;
979   }
980 
981   @Override
982   public OperationCallable<InsertSubnetworkRequest, Operation, Operation>
insertOperationCallable()983       insertOperationCallable() {
984     return insertOperationCallable;
985   }
986 
987   @Override
listCallable()988   public UnaryCallable<ListSubnetworksRequest, SubnetworkList> listCallable() {
989     return listCallable;
990   }
991 
992   @Override
listPagedCallable()993   public UnaryCallable<ListSubnetworksRequest, ListPagedResponse> listPagedCallable() {
994     return listPagedCallable;
995   }
996 
997   @Override
998   public UnaryCallable<ListUsableSubnetworksRequest, UsableSubnetworksAggregatedList>
listUsableCallable()999       listUsableCallable() {
1000     return listUsableCallable;
1001   }
1002 
1003   @Override
1004   public UnaryCallable<ListUsableSubnetworksRequest, ListUsablePagedResponse>
listUsablePagedCallable()1005       listUsablePagedCallable() {
1006     return listUsablePagedCallable;
1007   }
1008 
1009   @Override
patchCallable()1010   public UnaryCallable<PatchSubnetworkRequest, Operation> patchCallable() {
1011     return patchCallable;
1012   }
1013 
1014   @Override
patchOperationCallable()1015   public OperationCallable<PatchSubnetworkRequest, Operation, Operation> patchOperationCallable() {
1016     return patchOperationCallable;
1017   }
1018 
1019   @Override
setIamPolicyCallable()1020   public UnaryCallable<SetIamPolicySubnetworkRequest, Policy> setIamPolicyCallable() {
1021     return setIamPolicyCallable;
1022   }
1023 
1024   @Override
1025   public UnaryCallable<SetPrivateIpGoogleAccessSubnetworkRequest, Operation>
setPrivateIpGoogleAccessCallable()1026       setPrivateIpGoogleAccessCallable() {
1027     return setPrivateIpGoogleAccessCallable;
1028   }
1029 
1030   @Override
1031   public OperationCallable<SetPrivateIpGoogleAccessSubnetworkRequest, Operation, Operation>
setPrivateIpGoogleAccessOperationCallable()1032       setPrivateIpGoogleAccessOperationCallable() {
1033     return setPrivateIpGoogleAccessOperationCallable;
1034   }
1035 
1036   @Override
1037   public UnaryCallable<TestIamPermissionsSubnetworkRequest, TestPermissionsResponse>
testIamPermissionsCallable()1038       testIamPermissionsCallable() {
1039     return testIamPermissionsCallable;
1040   }
1041 
1042   @Override
close()1043   public final void close() {
1044     try {
1045       backgroundResources.close();
1046     } catch (RuntimeException e) {
1047       throw e;
1048     } catch (Exception e) {
1049       throw new IllegalStateException("Failed to close resource", e);
1050     }
1051   }
1052 
1053   @Override
shutdown()1054   public void shutdown() {
1055     backgroundResources.shutdown();
1056   }
1057 
1058   @Override
isShutdown()1059   public boolean isShutdown() {
1060     return backgroundResources.isShutdown();
1061   }
1062 
1063   @Override
isTerminated()1064   public boolean isTerminated() {
1065     return backgroundResources.isTerminated();
1066   }
1067 
1068   @Override
shutdownNow()1069   public void shutdownNow() {
1070     backgroundResources.shutdownNow();
1071   }
1072 
1073   @Override
awaitTermination(long duration, TimeUnit unit)1074   public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
1075     return backgroundResources.awaitTermination(duration, unit);
1076   }
1077 }
1078