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