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