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.RoutersClient.AggregatedListPagedResponse; 20 import static com.google.cloud.compute.v1.RoutersClient.GetNatMappingInfoPagedResponse; 21 import static com.google.cloud.compute.v1.RoutersClient.ListPagedResponse; 22 23 import com.google.api.core.BetaApi; 24 import com.google.api.core.InternalApi; 25 import com.google.api.gax.core.BackgroundResource; 26 import com.google.api.gax.core.BackgroundResourceAggregation; 27 import com.google.api.gax.httpjson.ApiMethodDescriptor; 28 import com.google.api.gax.httpjson.HttpJsonCallSettings; 29 import com.google.api.gax.httpjson.HttpJsonOperationSnapshot; 30 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; 31 import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; 32 import com.google.api.gax.httpjson.ProtoMessageResponseParser; 33 import com.google.api.gax.httpjson.ProtoRestSerializer; 34 import com.google.api.gax.rpc.ClientContext; 35 import com.google.api.gax.rpc.OperationCallable; 36 import com.google.api.gax.rpc.UnaryCallable; 37 import com.google.cloud.compute.v1.AggregatedListRoutersRequest; 38 import com.google.cloud.compute.v1.DeleteRouterRequest; 39 import com.google.cloud.compute.v1.GetNatMappingInfoRoutersRequest; 40 import com.google.cloud.compute.v1.GetRouterRequest; 41 import com.google.cloud.compute.v1.GetRouterStatusRouterRequest; 42 import com.google.cloud.compute.v1.InsertRouterRequest; 43 import com.google.cloud.compute.v1.ListRoutersRequest; 44 import com.google.cloud.compute.v1.Operation; 45 import com.google.cloud.compute.v1.Operation.Status; 46 import com.google.cloud.compute.v1.PatchRouterRequest; 47 import com.google.cloud.compute.v1.PreviewRouterRequest; 48 import com.google.cloud.compute.v1.Router; 49 import com.google.cloud.compute.v1.RouterAggregatedList; 50 import com.google.cloud.compute.v1.RouterList; 51 import com.google.cloud.compute.v1.RouterStatusResponse; 52 import com.google.cloud.compute.v1.RoutersPreviewResponse; 53 import com.google.cloud.compute.v1.UpdateRouterRequest; 54 import com.google.cloud.compute.v1.VmEndpointNatMappingsList; 55 import com.google.protobuf.TypeRegistry; 56 import java.io.IOException; 57 import java.util.ArrayList; 58 import java.util.HashMap; 59 import java.util.List; 60 import java.util.Map; 61 import java.util.concurrent.TimeUnit; 62 import javax.annotation.Generated; 63 64 // AUTO-GENERATED DOCUMENTATION AND CLASS. 65 /** 66 * REST stub implementation for the Routers service API. 67 * 68 * <p>This class is for advanced usage and reflects the underlying API directly. 69 */ 70 @Generated("by gapic-generator-java") 71 @BetaApi 72 public class HttpJsonRoutersStub extends RoutersStub { 73 private static final TypeRegistry typeRegistry = 74 TypeRegistry.newBuilder().add(Operation.getDescriptor()).build(); 75 76 private static final ApiMethodDescriptor<AggregatedListRoutersRequest, RouterAggregatedList> 77 aggregatedListMethodDescriptor = 78 ApiMethodDescriptor.<AggregatedListRoutersRequest, RouterAggregatedList>newBuilder() 79 .setFullMethodName("google.cloud.compute.v1.Routers/AggregatedList") 80 .setHttpMethod("GET") 81 .setType(ApiMethodDescriptor.MethodType.UNARY) 82 .setRequestFormatter( 83 ProtoMessageRequestFormatter.<AggregatedListRoutersRequest>newBuilder() 84 .setPath( 85 "/compute/v1/projects/{project}/aggregated/routers", 86 request -> { 87 Map<String, String> fields = new HashMap<>(); 88 ProtoRestSerializer<AggregatedListRoutersRequest> serializer = 89 ProtoRestSerializer.create(); 90 serializer.putPathParam(fields, "project", request.getProject()); 91 return fields; 92 }) 93 .setQueryParamsExtractor( 94 request -> { 95 Map<String, List<String>> fields = new HashMap<>(); 96 ProtoRestSerializer<AggregatedListRoutersRequest> serializer = 97 ProtoRestSerializer.create(); 98 if (request.hasFilter()) { 99 serializer.putQueryParam(fields, "filter", request.getFilter()); 100 } 101 if (request.hasIncludeAllScopes()) { 102 serializer.putQueryParam( 103 fields, "includeAllScopes", request.getIncludeAllScopes()); 104 } 105 if (request.hasMaxResults()) { 106 serializer.putQueryParam( 107 fields, "maxResults", request.getMaxResults()); 108 } 109 if (request.hasOrderBy()) { 110 serializer.putQueryParam(fields, "orderBy", request.getOrderBy()); 111 } 112 if (request.hasPageToken()) { 113 serializer.putQueryParam(fields, "pageToken", request.getPageToken()); 114 } 115 if (request.hasReturnPartialSuccess()) { 116 serializer.putQueryParam( 117 fields, 118 "returnPartialSuccess", 119 request.getReturnPartialSuccess()); 120 } 121 return fields; 122 }) 123 .setRequestBodyExtractor(request -> null) 124 .build()) 125 .setResponseParser( 126 ProtoMessageResponseParser.<RouterAggregatedList>newBuilder() 127 .setDefaultInstance(RouterAggregatedList.getDefaultInstance()) 128 .setDefaultTypeRegistry(typeRegistry) 129 .build()) 130 .build(); 131 132 private static final ApiMethodDescriptor<DeleteRouterRequest, Operation> deleteMethodDescriptor = 133 ApiMethodDescriptor.<DeleteRouterRequest, Operation>newBuilder() 134 .setFullMethodName("google.cloud.compute.v1.Routers/Delete") 135 .setHttpMethod("DELETE") 136 .setType(ApiMethodDescriptor.MethodType.UNARY) 137 .setRequestFormatter( 138 ProtoMessageRequestFormatter.<DeleteRouterRequest>newBuilder() 139 .setPath( 140 "/compute/v1/projects/{project}/regions/{region}/routers/{router}", 141 request -> { 142 Map<String, String> fields = new HashMap<>(); 143 ProtoRestSerializer<DeleteRouterRequest> serializer = 144 ProtoRestSerializer.create(); 145 serializer.putPathParam(fields, "project", request.getProject()); 146 serializer.putPathParam(fields, "region", request.getRegion()); 147 serializer.putPathParam(fields, "router", request.getRouter()); 148 return fields; 149 }) 150 .setQueryParamsExtractor( 151 request -> { 152 Map<String, List<String>> fields = new HashMap<>(); 153 ProtoRestSerializer<DeleteRouterRequest> serializer = 154 ProtoRestSerializer.create(); 155 if (request.hasRequestId()) { 156 serializer.putQueryParam(fields, "requestId", request.getRequestId()); 157 } 158 return fields; 159 }) 160 .setRequestBodyExtractor(request -> null) 161 .build()) 162 .setResponseParser( 163 ProtoMessageResponseParser.<Operation>newBuilder() 164 .setDefaultInstance(Operation.getDefaultInstance()) 165 .setDefaultTypeRegistry(typeRegistry) 166 .build()) 167 .setOperationSnapshotFactory( 168 (DeleteRouterRequest request, Operation response) -> { 169 StringBuilder opName = new StringBuilder(response.getName()); 170 opName.append(":").append(request.getProject()); 171 opName.append(":").append(request.getRegion()); 172 return HttpJsonOperationSnapshot.newBuilder() 173 .setName(opName.toString()) 174 .setMetadata(response) 175 .setDone(Status.DONE.equals(response.getStatus())) 176 .setResponse(response) 177 .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage()) 178 .build(); 179 }) 180 .build(); 181 182 private static final ApiMethodDescriptor<GetRouterRequest, Router> getMethodDescriptor = 183 ApiMethodDescriptor.<GetRouterRequest, Router>newBuilder() 184 .setFullMethodName("google.cloud.compute.v1.Routers/Get") 185 .setHttpMethod("GET") 186 .setType(ApiMethodDescriptor.MethodType.UNARY) 187 .setRequestFormatter( 188 ProtoMessageRequestFormatter.<GetRouterRequest>newBuilder() 189 .setPath( 190 "/compute/v1/projects/{project}/regions/{region}/routers/{router}", 191 request -> { 192 Map<String, String> fields = new HashMap<>(); 193 ProtoRestSerializer<GetRouterRequest> serializer = 194 ProtoRestSerializer.create(); 195 serializer.putPathParam(fields, "project", request.getProject()); 196 serializer.putPathParam(fields, "region", request.getRegion()); 197 serializer.putPathParam(fields, "router", request.getRouter()); 198 return fields; 199 }) 200 .setQueryParamsExtractor( 201 request -> { 202 Map<String, List<String>> fields = new HashMap<>(); 203 ProtoRestSerializer<GetRouterRequest> serializer = 204 ProtoRestSerializer.create(); 205 return fields; 206 }) 207 .setRequestBodyExtractor(request -> null) 208 .build()) 209 .setResponseParser( 210 ProtoMessageResponseParser.<Router>newBuilder() 211 .setDefaultInstance(Router.getDefaultInstance()) 212 .setDefaultTypeRegistry(typeRegistry) 213 .build()) 214 .build(); 215 216 private static final ApiMethodDescriptor< 217 GetNatMappingInfoRoutersRequest, VmEndpointNatMappingsList> 218 getNatMappingInfoMethodDescriptor = 219 ApiMethodDescriptor 220 .<GetNatMappingInfoRoutersRequest, VmEndpointNatMappingsList>newBuilder() 221 .setFullMethodName("google.cloud.compute.v1.Routers/GetNatMappingInfo") 222 .setHttpMethod("GET") 223 .setType(ApiMethodDescriptor.MethodType.UNARY) 224 .setRequestFormatter( 225 ProtoMessageRequestFormatter.<GetNatMappingInfoRoutersRequest>newBuilder() 226 .setPath( 227 "/compute/v1/projects/{project}/regions/{region}/routers/{router}/getNatMappingInfo", 228 request -> { 229 Map<String, String> fields = new HashMap<>(); 230 ProtoRestSerializer<GetNatMappingInfoRoutersRequest> serializer = 231 ProtoRestSerializer.create(); 232 serializer.putPathParam(fields, "project", request.getProject()); 233 serializer.putPathParam(fields, "region", request.getRegion()); 234 serializer.putPathParam(fields, "router", request.getRouter()); 235 return fields; 236 }) 237 .setQueryParamsExtractor( 238 request -> { 239 Map<String, List<String>> fields = new HashMap<>(); 240 ProtoRestSerializer<GetNatMappingInfoRoutersRequest> serializer = 241 ProtoRestSerializer.create(); 242 if (request.hasFilter()) { 243 serializer.putQueryParam(fields, "filter", request.getFilter()); 244 } 245 if (request.hasMaxResults()) { 246 serializer.putQueryParam( 247 fields, "maxResults", request.getMaxResults()); 248 } 249 if (request.hasOrderBy()) { 250 serializer.putQueryParam(fields, "orderBy", request.getOrderBy()); 251 } 252 if (request.hasPageToken()) { 253 serializer.putQueryParam(fields, "pageToken", request.getPageToken()); 254 } 255 if (request.hasReturnPartialSuccess()) { 256 serializer.putQueryParam( 257 fields, 258 "returnPartialSuccess", 259 request.getReturnPartialSuccess()); 260 } 261 return fields; 262 }) 263 .setRequestBodyExtractor(request -> null) 264 .build()) 265 .setResponseParser( 266 ProtoMessageResponseParser.<VmEndpointNatMappingsList>newBuilder() 267 .setDefaultInstance(VmEndpointNatMappingsList.getDefaultInstance()) 268 .setDefaultTypeRegistry(typeRegistry) 269 .build()) 270 .build(); 271 272 private static final ApiMethodDescriptor<GetRouterStatusRouterRequest, RouterStatusResponse> 273 getRouterStatusMethodDescriptor = 274 ApiMethodDescriptor.<GetRouterStatusRouterRequest, RouterStatusResponse>newBuilder() 275 .setFullMethodName("google.cloud.compute.v1.Routers/GetRouterStatus") 276 .setHttpMethod("GET") 277 .setType(ApiMethodDescriptor.MethodType.UNARY) 278 .setRequestFormatter( 279 ProtoMessageRequestFormatter.<GetRouterStatusRouterRequest>newBuilder() 280 .setPath( 281 "/compute/v1/projects/{project}/regions/{region}/routers/{router}/getRouterStatus", 282 request -> { 283 Map<String, String> fields = new HashMap<>(); 284 ProtoRestSerializer<GetRouterStatusRouterRequest> serializer = 285 ProtoRestSerializer.create(); 286 serializer.putPathParam(fields, "project", request.getProject()); 287 serializer.putPathParam(fields, "region", request.getRegion()); 288 serializer.putPathParam(fields, "router", request.getRouter()); 289 return fields; 290 }) 291 .setQueryParamsExtractor( 292 request -> { 293 Map<String, List<String>> fields = new HashMap<>(); 294 ProtoRestSerializer<GetRouterStatusRouterRequest> serializer = 295 ProtoRestSerializer.create(); 296 return fields; 297 }) 298 .setRequestBodyExtractor(request -> null) 299 .build()) 300 .setResponseParser( 301 ProtoMessageResponseParser.<RouterStatusResponse>newBuilder() 302 .setDefaultInstance(RouterStatusResponse.getDefaultInstance()) 303 .setDefaultTypeRegistry(typeRegistry) 304 .build()) 305 .build(); 306 307 private static final ApiMethodDescriptor<InsertRouterRequest, Operation> insertMethodDescriptor = 308 ApiMethodDescriptor.<InsertRouterRequest, Operation>newBuilder() 309 .setFullMethodName("google.cloud.compute.v1.Routers/Insert") 310 .setHttpMethod("POST") 311 .setType(ApiMethodDescriptor.MethodType.UNARY) 312 .setRequestFormatter( 313 ProtoMessageRequestFormatter.<InsertRouterRequest>newBuilder() 314 .setPath( 315 "/compute/v1/projects/{project}/regions/{region}/routers", 316 request -> { 317 Map<String, String> fields = new HashMap<>(); 318 ProtoRestSerializer<InsertRouterRequest> serializer = 319 ProtoRestSerializer.create(); 320 serializer.putPathParam(fields, "project", request.getProject()); 321 serializer.putPathParam(fields, "region", request.getRegion()); 322 return fields; 323 }) 324 .setQueryParamsExtractor( 325 request -> { 326 Map<String, List<String>> fields = new HashMap<>(); 327 ProtoRestSerializer<InsertRouterRequest> serializer = 328 ProtoRestSerializer.create(); 329 if (request.hasRequestId()) { 330 serializer.putQueryParam(fields, "requestId", request.getRequestId()); 331 } 332 return fields; 333 }) 334 .setRequestBodyExtractor( 335 request -> 336 ProtoRestSerializer.create() 337 .toBody("routerResource", request.getRouterResource(), false)) 338 .build()) 339 .setResponseParser( 340 ProtoMessageResponseParser.<Operation>newBuilder() 341 .setDefaultInstance(Operation.getDefaultInstance()) 342 .setDefaultTypeRegistry(typeRegistry) 343 .build()) 344 .setOperationSnapshotFactory( 345 (InsertRouterRequest request, Operation response) -> { 346 StringBuilder opName = new StringBuilder(response.getName()); 347 opName.append(":").append(request.getProject()); 348 opName.append(":").append(request.getRegion()); 349 return HttpJsonOperationSnapshot.newBuilder() 350 .setName(opName.toString()) 351 .setMetadata(response) 352 .setDone(Status.DONE.equals(response.getStatus())) 353 .setResponse(response) 354 .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage()) 355 .build(); 356 }) 357 .build(); 358 359 private static final ApiMethodDescriptor<ListRoutersRequest, RouterList> listMethodDescriptor = 360 ApiMethodDescriptor.<ListRoutersRequest, RouterList>newBuilder() 361 .setFullMethodName("google.cloud.compute.v1.Routers/List") 362 .setHttpMethod("GET") 363 .setType(ApiMethodDescriptor.MethodType.UNARY) 364 .setRequestFormatter( 365 ProtoMessageRequestFormatter.<ListRoutersRequest>newBuilder() 366 .setPath( 367 "/compute/v1/projects/{project}/regions/{region}/routers", 368 request -> { 369 Map<String, String> fields = new HashMap<>(); 370 ProtoRestSerializer<ListRoutersRequest> serializer = 371 ProtoRestSerializer.create(); 372 serializer.putPathParam(fields, "project", request.getProject()); 373 serializer.putPathParam(fields, "region", request.getRegion()); 374 return fields; 375 }) 376 .setQueryParamsExtractor( 377 request -> { 378 Map<String, List<String>> fields = new HashMap<>(); 379 ProtoRestSerializer<ListRoutersRequest> serializer = 380 ProtoRestSerializer.create(); 381 if (request.hasFilter()) { 382 serializer.putQueryParam(fields, "filter", request.getFilter()); 383 } 384 if (request.hasMaxResults()) { 385 serializer.putQueryParam(fields, "maxResults", request.getMaxResults()); 386 } 387 if (request.hasOrderBy()) { 388 serializer.putQueryParam(fields, "orderBy", request.getOrderBy()); 389 } 390 if (request.hasPageToken()) { 391 serializer.putQueryParam(fields, "pageToken", request.getPageToken()); 392 } 393 if (request.hasReturnPartialSuccess()) { 394 serializer.putQueryParam( 395 fields, "returnPartialSuccess", request.getReturnPartialSuccess()); 396 } 397 return fields; 398 }) 399 .setRequestBodyExtractor(request -> null) 400 .build()) 401 .setResponseParser( 402 ProtoMessageResponseParser.<RouterList>newBuilder() 403 .setDefaultInstance(RouterList.getDefaultInstance()) 404 .setDefaultTypeRegistry(typeRegistry) 405 .build()) 406 .build(); 407 408 private static final ApiMethodDescriptor<PatchRouterRequest, Operation> patchMethodDescriptor = 409 ApiMethodDescriptor.<PatchRouterRequest, Operation>newBuilder() 410 .setFullMethodName("google.cloud.compute.v1.Routers/Patch") 411 .setHttpMethod("PATCH") 412 .setType(ApiMethodDescriptor.MethodType.UNARY) 413 .setRequestFormatter( 414 ProtoMessageRequestFormatter.<PatchRouterRequest>newBuilder() 415 .setPath( 416 "/compute/v1/projects/{project}/regions/{region}/routers/{router}", 417 request -> { 418 Map<String, String> fields = new HashMap<>(); 419 ProtoRestSerializer<PatchRouterRequest> serializer = 420 ProtoRestSerializer.create(); 421 serializer.putPathParam(fields, "project", request.getProject()); 422 serializer.putPathParam(fields, "region", request.getRegion()); 423 serializer.putPathParam(fields, "router", request.getRouter()); 424 return fields; 425 }) 426 .setQueryParamsExtractor( 427 request -> { 428 Map<String, List<String>> fields = new HashMap<>(); 429 ProtoRestSerializer<PatchRouterRequest> serializer = 430 ProtoRestSerializer.create(); 431 if (request.hasRequestId()) { 432 serializer.putQueryParam(fields, "requestId", request.getRequestId()); 433 } 434 return fields; 435 }) 436 .setRequestBodyExtractor( 437 request -> 438 ProtoRestSerializer.create() 439 .toBody("routerResource", request.getRouterResource(), false)) 440 .build()) 441 .setResponseParser( 442 ProtoMessageResponseParser.<Operation>newBuilder() 443 .setDefaultInstance(Operation.getDefaultInstance()) 444 .setDefaultTypeRegistry(typeRegistry) 445 .build()) 446 .setOperationSnapshotFactory( 447 (PatchRouterRequest request, Operation response) -> { 448 StringBuilder opName = new StringBuilder(response.getName()); 449 opName.append(":").append(request.getProject()); 450 opName.append(":").append(request.getRegion()); 451 return HttpJsonOperationSnapshot.newBuilder() 452 .setName(opName.toString()) 453 .setMetadata(response) 454 .setDone(Status.DONE.equals(response.getStatus())) 455 .setResponse(response) 456 .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage()) 457 .build(); 458 }) 459 .build(); 460 461 private static final ApiMethodDescriptor<PreviewRouterRequest, RoutersPreviewResponse> 462 previewMethodDescriptor = 463 ApiMethodDescriptor.<PreviewRouterRequest, RoutersPreviewResponse>newBuilder() 464 .setFullMethodName("google.cloud.compute.v1.Routers/Preview") 465 .setHttpMethod("POST") 466 .setType(ApiMethodDescriptor.MethodType.UNARY) 467 .setRequestFormatter( 468 ProtoMessageRequestFormatter.<PreviewRouterRequest>newBuilder() 469 .setPath( 470 "/compute/v1/projects/{project}/regions/{region}/routers/{router}/preview", 471 request -> { 472 Map<String, String> fields = new HashMap<>(); 473 ProtoRestSerializer<PreviewRouterRequest> serializer = 474 ProtoRestSerializer.create(); 475 serializer.putPathParam(fields, "project", request.getProject()); 476 serializer.putPathParam(fields, "region", request.getRegion()); 477 serializer.putPathParam(fields, "router", request.getRouter()); 478 return fields; 479 }) 480 .setQueryParamsExtractor( 481 request -> { 482 Map<String, List<String>> fields = new HashMap<>(); 483 ProtoRestSerializer<PreviewRouterRequest> serializer = 484 ProtoRestSerializer.create(); 485 return fields; 486 }) 487 .setRequestBodyExtractor( 488 request -> 489 ProtoRestSerializer.create() 490 .toBody("routerResource", request.getRouterResource(), false)) 491 .build()) 492 .setResponseParser( 493 ProtoMessageResponseParser.<RoutersPreviewResponse>newBuilder() 494 .setDefaultInstance(RoutersPreviewResponse.getDefaultInstance()) 495 .setDefaultTypeRegistry(typeRegistry) 496 .build()) 497 .build(); 498 499 private static final ApiMethodDescriptor<UpdateRouterRequest, Operation> updateMethodDescriptor = 500 ApiMethodDescriptor.<UpdateRouterRequest, Operation>newBuilder() 501 .setFullMethodName("google.cloud.compute.v1.Routers/Update") 502 .setHttpMethod("PUT") 503 .setType(ApiMethodDescriptor.MethodType.UNARY) 504 .setRequestFormatter( 505 ProtoMessageRequestFormatter.<UpdateRouterRequest>newBuilder() 506 .setPath( 507 "/compute/v1/projects/{project}/regions/{region}/routers/{router}", 508 request -> { 509 Map<String, String> fields = new HashMap<>(); 510 ProtoRestSerializer<UpdateRouterRequest> serializer = 511 ProtoRestSerializer.create(); 512 serializer.putPathParam(fields, "project", request.getProject()); 513 serializer.putPathParam(fields, "region", request.getRegion()); 514 serializer.putPathParam(fields, "router", request.getRouter()); 515 return fields; 516 }) 517 .setQueryParamsExtractor( 518 request -> { 519 Map<String, List<String>> fields = new HashMap<>(); 520 ProtoRestSerializer<UpdateRouterRequest> serializer = 521 ProtoRestSerializer.create(); 522 if (request.hasRequestId()) { 523 serializer.putQueryParam(fields, "requestId", request.getRequestId()); 524 } 525 return fields; 526 }) 527 .setRequestBodyExtractor( 528 request -> 529 ProtoRestSerializer.create() 530 .toBody("routerResource", request.getRouterResource(), false)) 531 .build()) 532 .setResponseParser( 533 ProtoMessageResponseParser.<Operation>newBuilder() 534 .setDefaultInstance(Operation.getDefaultInstance()) 535 .setDefaultTypeRegistry(typeRegistry) 536 .build()) 537 .setOperationSnapshotFactory( 538 (UpdateRouterRequest request, Operation response) -> { 539 StringBuilder opName = new StringBuilder(response.getName()); 540 opName.append(":").append(request.getProject()); 541 opName.append(":").append(request.getRegion()); 542 return HttpJsonOperationSnapshot.newBuilder() 543 .setName(opName.toString()) 544 .setMetadata(response) 545 .setDone(Status.DONE.equals(response.getStatus())) 546 .setResponse(response) 547 .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage()) 548 .build(); 549 }) 550 .build(); 551 552 private final UnaryCallable<AggregatedListRoutersRequest, RouterAggregatedList> 553 aggregatedListCallable; 554 private final UnaryCallable<AggregatedListRoutersRequest, AggregatedListPagedResponse> 555 aggregatedListPagedCallable; 556 private final UnaryCallable<DeleteRouterRequest, Operation> deleteCallable; 557 private final OperationCallable<DeleteRouterRequest, Operation, Operation> 558 deleteOperationCallable; 559 private final UnaryCallable<GetRouterRequest, Router> getCallable; 560 private final UnaryCallable<GetNatMappingInfoRoutersRequest, VmEndpointNatMappingsList> 561 getNatMappingInfoCallable; 562 private final UnaryCallable<GetNatMappingInfoRoutersRequest, GetNatMappingInfoPagedResponse> 563 getNatMappingInfoPagedCallable; 564 private final UnaryCallable<GetRouterStatusRouterRequest, RouterStatusResponse> 565 getRouterStatusCallable; 566 private final UnaryCallable<InsertRouterRequest, Operation> insertCallable; 567 private final OperationCallable<InsertRouterRequest, Operation, Operation> 568 insertOperationCallable; 569 private final UnaryCallable<ListRoutersRequest, RouterList> listCallable; 570 private final UnaryCallable<ListRoutersRequest, ListPagedResponse> listPagedCallable; 571 private final UnaryCallable<PatchRouterRequest, Operation> patchCallable; 572 private final OperationCallable<PatchRouterRequest, Operation, Operation> patchOperationCallable; 573 private final UnaryCallable<PreviewRouterRequest, RoutersPreviewResponse> previewCallable; 574 private final UnaryCallable<UpdateRouterRequest, Operation> updateCallable; 575 private final OperationCallable<UpdateRouterRequest, Operation, Operation> 576 updateOperationCallable; 577 578 private final BackgroundResource backgroundResources; 579 private final HttpJsonRegionOperationsStub httpJsonOperationsStub; 580 private final HttpJsonStubCallableFactory callableFactory; 581 create(RoutersStubSettings settings)582 public static final HttpJsonRoutersStub create(RoutersStubSettings settings) throws IOException { 583 return new HttpJsonRoutersStub(settings, ClientContext.create(settings)); 584 } 585 create(ClientContext clientContext)586 public static final HttpJsonRoutersStub create(ClientContext clientContext) throws IOException { 587 return new HttpJsonRoutersStub(RoutersStubSettings.newBuilder().build(), clientContext); 588 } 589 create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)590 public static final HttpJsonRoutersStub create( 591 ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { 592 return new HttpJsonRoutersStub( 593 RoutersStubSettings.newBuilder().build(), clientContext, callableFactory); 594 } 595 596 /** 597 * Constructs an instance of HttpJsonRoutersStub, using the given settings. This is protected so 598 * that it is easy to make a subclass, but otherwise, the static factory methods should be 599 * preferred. 600 */ HttpJsonRoutersStub(RoutersStubSettings settings, ClientContext clientContext)601 protected HttpJsonRoutersStub(RoutersStubSettings settings, ClientContext clientContext) 602 throws IOException { 603 this(settings, clientContext, new HttpJsonRoutersCallableFactory()); 604 } 605 606 /** 607 * Constructs an instance of HttpJsonRoutersStub, using the given settings. This is protected so 608 * that it is easy to make a subclass, but otherwise, the static factory methods should be 609 * preferred. 610 */ HttpJsonRoutersStub( RoutersStubSettings settings, ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)611 protected HttpJsonRoutersStub( 612 RoutersStubSettings settings, 613 ClientContext clientContext, 614 HttpJsonStubCallableFactory callableFactory) 615 throws IOException { 616 this.callableFactory = callableFactory; 617 this.httpJsonOperationsStub = 618 HttpJsonRegionOperationsStub.create(clientContext, callableFactory); 619 620 HttpJsonCallSettings<AggregatedListRoutersRequest, RouterAggregatedList> 621 aggregatedListTransportSettings = 622 HttpJsonCallSettings.<AggregatedListRoutersRequest, RouterAggregatedList>newBuilder() 623 .setMethodDescriptor(aggregatedListMethodDescriptor) 624 .setTypeRegistry(typeRegistry) 625 .build(); 626 HttpJsonCallSettings<DeleteRouterRequest, Operation> deleteTransportSettings = 627 HttpJsonCallSettings.<DeleteRouterRequest, Operation>newBuilder() 628 .setMethodDescriptor(deleteMethodDescriptor) 629 .setTypeRegistry(typeRegistry) 630 .build(); 631 HttpJsonCallSettings<GetRouterRequest, Router> getTransportSettings = 632 HttpJsonCallSettings.<GetRouterRequest, Router>newBuilder() 633 .setMethodDescriptor(getMethodDescriptor) 634 .setTypeRegistry(typeRegistry) 635 .build(); 636 HttpJsonCallSettings<GetNatMappingInfoRoutersRequest, VmEndpointNatMappingsList> 637 getNatMappingInfoTransportSettings = 638 HttpJsonCallSettings 639 .<GetNatMappingInfoRoutersRequest, VmEndpointNatMappingsList>newBuilder() 640 .setMethodDescriptor(getNatMappingInfoMethodDescriptor) 641 .setTypeRegistry(typeRegistry) 642 .build(); 643 HttpJsonCallSettings<GetRouterStatusRouterRequest, RouterStatusResponse> 644 getRouterStatusTransportSettings = 645 HttpJsonCallSettings.<GetRouterStatusRouterRequest, RouterStatusResponse>newBuilder() 646 .setMethodDescriptor(getRouterStatusMethodDescriptor) 647 .setTypeRegistry(typeRegistry) 648 .build(); 649 HttpJsonCallSettings<InsertRouterRequest, Operation> insertTransportSettings = 650 HttpJsonCallSettings.<InsertRouterRequest, Operation>newBuilder() 651 .setMethodDescriptor(insertMethodDescriptor) 652 .setTypeRegistry(typeRegistry) 653 .build(); 654 HttpJsonCallSettings<ListRoutersRequest, RouterList> listTransportSettings = 655 HttpJsonCallSettings.<ListRoutersRequest, RouterList>newBuilder() 656 .setMethodDescriptor(listMethodDescriptor) 657 .setTypeRegistry(typeRegistry) 658 .build(); 659 HttpJsonCallSettings<PatchRouterRequest, Operation> patchTransportSettings = 660 HttpJsonCallSettings.<PatchRouterRequest, Operation>newBuilder() 661 .setMethodDescriptor(patchMethodDescriptor) 662 .setTypeRegistry(typeRegistry) 663 .build(); 664 HttpJsonCallSettings<PreviewRouterRequest, RoutersPreviewResponse> previewTransportSettings = 665 HttpJsonCallSettings.<PreviewRouterRequest, RoutersPreviewResponse>newBuilder() 666 .setMethodDescriptor(previewMethodDescriptor) 667 .setTypeRegistry(typeRegistry) 668 .build(); 669 HttpJsonCallSettings<UpdateRouterRequest, Operation> updateTransportSettings = 670 HttpJsonCallSettings.<UpdateRouterRequest, Operation>newBuilder() 671 .setMethodDescriptor(updateMethodDescriptor) 672 .setTypeRegistry(typeRegistry) 673 .build(); 674 675 this.aggregatedListCallable = 676 callableFactory.createUnaryCallable( 677 aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext); 678 this.aggregatedListPagedCallable = 679 callableFactory.createPagedCallable( 680 aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext); 681 this.deleteCallable = 682 callableFactory.createUnaryCallable( 683 deleteTransportSettings, settings.deleteSettings(), clientContext); 684 this.deleteOperationCallable = 685 callableFactory.createOperationCallable( 686 deleteTransportSettings, 687 settings.deleteOperationSettings(), 688 clientContext, 689 httpJsonOperationsStub); 690 this.getCallable = 691 callableFactory.createUnaryCallable( 692 getTransportSettings, settings.getSettings(), clientContext); 693 this.getNatMappingInfoCallable = 694 callableFactory.createUnaryCallable( 695 getNatMappingInfoTransportSettings, 696 settings.getNatMappingInfoSettings(), 697 clientContext); 698 this.getNatMappingInfoPagedCallable = 699 callableFactory.createPagedCallable( 700 getNatMappingInfoTransportSettings, 701 settings.getNatMappingInfoSettings(), 702 clientContext); 703 this.getRouterStatusCallable = 704 callableFactory.createUnaryCallable( 705 getRouterStatusTransportSettings, settings.getRouterStatusSettings(), clientContext); 706 this.insertCallable = 707 callableFactory.createUnaryCallable( 708 insertTransportSettings, settings.insertSettings(), clientContext); 709 this.insertOperationCallable = 710 callableFactory.createOperationCallable( 711 insertTransportSettings, 712 settings.insertOperationSettings(), 713 clientContext, 714 httpJsonOperationsStub); 715 this.listCallable = 716 callableFactory.createUnaryCallable( 717 listTransportSettings, settings.listSettings(), clientContext); 718 this.listPagedCallable = 719 callableFactory.createPagedCallable( 720 listTransportSettings, settings.listSettings(), clientContext); 721 this.patchCallable = 722 callableFactory.createUnaryCallable( 723 patchTransportSettings, settings.patchSettings(), clientContext); 724 this.patchOperationCallable = 725 callableFactory.createOperationCallable( 726 patchTransportSettings, 727 settings.patchOperationSettings(), 728 clientContext, 729 httpJsonOperationsStub); 730 this.previewCallable = 731 callableFactory.createUnaryCallable( 732 previewTransportSettings, settings.previewSettings(), clientContext); 733 this.updateCallable = 734 callableFactory.createUnaryCallable( 735 updateTransportSettings, settings.updateSettings(), clientContext); 736 this.updateOperationCallable = 737 callableFactory.createOperationCallable( 738 updateTransportSettings, 739 settings.updateOperationSettings(), 740 clientContext, 741 httpJsonOperationsStub); 742 743 this.backgroundResources = 744 new BackgroundResourceAggregation(clientContext.getBackgroundResources()); 745 } 746 747 @InternalApi getMethodDescriptors()748 public static List<ApiMethodDescriptor> getMethodDescriptors() { 749 List<ApiMethodDescriptor> methodDescriptors = new ArrayList<>(); 750 methodDescriptors.add(aggregatedListMethodDescriptor); 751 methodDescriptors.add(deleteMethodDescriptor); 752 methodDescriptors.add(getMethodDescriptor); 753 methodDescriptors.add(getNatMappingInfoMethodDescriptor); 754 methodDescriptors.add(getRouterStatusMethodDescriptor); 755 methodDescriptors.add(insertMethodDescriptor); 756 methodDescriptors.add(listMethodDescriptor); 757 methodDescriptors.add(patchMethodDescriptor); 758 methodDescriptors.add(previewMethodDescriptor); 759 methodDescriptors.add(updateMethodDescriptor); 760 return methodDescriptors; 761 } 762 763 @Override 764 public UnaryCallable<AggregatedListRoutersRequest, RouterAggregatedList> aggregatedListCallable()765 aggregatedListCallable() { 766 return aggregatedListCallable; 767 } 768 769 @Override 770 public UnaryCallable<AggregatedListRoutersRequest, AggregatedListPagedResponse> aggregatedListPagedCallable()771 aggregatedListPagedCallable() { 772 return aggregatedListPagedCallable; 773 } 774 775 @Override deleteCallable()776 public UnaryCallable<DeleteRouterRequest, Operation> deleteCallable() { 777 return deleteCallable; 778 } 779 780 @Override deleteOperationCallable()781 public OperationCallable<DeleteRouterRequest, Operation, Operation> deleteOperationCallable() { 782 return deleteOperationCallable; 783 } 784 785 @Override getCallable()786 public UnaryCallable<GetRouterRequest, Router> getCallable() { 787 return getCallable; 788 } 789 790 @Override 791 public UnaryCallable<GetNatMappingInfoRoutersRequest, VmEndpointNatMappingsList> getNatMappingInfoCallable()792 getNatMappingInfoCallable() { 793 return getNatMappingInfoCallable; 794 } 795 796 @Override 797 public UnaryCallable<GetNatMappingInfoRoutersRequest, GetNatMappingInfoPagedResponse> getNatMappingInfoPagedCallable()798 getNatMappingInfoPagedCallable() { 799 return getNatMappingInfoPagedCallable; 800 } 801 802 @Override 803 public UnaryCallable<GetRouterStatusRouterRequest, RouterStatusResponse> getRouterStatusCallable()804 getRouterStatusCallable() { 805 return getRouterStatusCallable; 806 } 807 808 @Override insertCallable()809 public UnaryCallable<InsertRouterRequest, Operation> insertCallable() { 810 return insertCallable; 811 } 812 813 @Override insertOperationCallable()814 public OperationCallable<InsertRouterRequest, Operation, Operation> insertOperationCallable() { 815 return insertOperationCallable; 816 } 817 818 @Override listCallable()819 public UnaryCallable<ListRoutersRequest, RouterList> listCallable() { 820 return listCallable; 821 } 822 823 @Override listPagedCallable()824 public UnaryCallable<ListRoutersRequest, ListPagedResponse> listPagedCallable() { 825 return listPagedCallable; 826 } 827 828 @Override patchCallable()829 public UnaryCallable<PatchRouterRequest, Operation> patchCallable() { 830 return patchCallable; 831 } 832 833 @Override patchOperationCallable()834 public OperationCallable<PatchRouterRequest, Operation, Operation> patchOperationCallable() { 835 return patchOperationCallable; 836 } 837 838 @Override previewCallable()839 public UnaryCallable<PreviewRouterRequest, RoutersPreviewResponse> previewCallable() { 840 return previewCallable; 841 } 842 843 @Override updateCallable()844 public UnaryCallable<UpdateRouterRequest, Operation> updateCallable() { 845 return updateCallable; 846 } 847 848 @Override updateOperationCallable()849 public OperationCallable<UpdateRouterRequest, Operation, Operation> updateOperationCallable() { 850 return updateOperationCallable; 851 } 852 853 @Override close()854 public final void close() { 855 try { 856 backgroundResources.close(); 857 } catch (RuntimeException e) { 858 throw e; 859 } catch (Exception e) { 860 throw new IllegalStateException("Failed to close resource", e); 861 } 862 } 863 864 @Override shutdown()865 public void shutdown() { 866 backgroundResources.shutdown(); 867 } 868 869 @Override isShutdown()870 public boolean isShutdown() { 871 return backgroundResources.isShutdown(); 872 } 873 874 @Override isTerminated()875 public boolean isTerminated() { 876 return backgroundResources.isTerminated(); 877 } 878 879 @Override shutdownNow()880 public void shutdownNow() { 881 backgroundResources.shutdownNow(); 882 } 883 884 @Override awaitTermination(long duration, TimeUnit unit)885 public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { 886 return backgroundResources.awaitTermination(duration, unit); 887 } 888 } 889