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