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