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