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