• 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.InterconnectsClient.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.DeleteInterconnectRequest;
36 import com.google.cloud.compute.v1.GetDiagnosticsInterconnectRequest;
37 import com.google.cloud.compute.v1.GetInterconnectRequest;
38 import com.google.cloud.compute.v1.InsertInterconnectRequest;
39 import com.google.cloud.compute.v1.Interconnect;
40 import com.google.cloud.compute.v1.InterconnectList;
41 import com.google.cloud.compute.v1.InterconnectsGetDiagnosticsResponse;
42 import com.google.cloud.compute.v1.ListInterconnectsRequest;
43 import com.google.cloud.compute.v1.Operation;
44 import com.google.cloud.compute.v1.Operation.Status;
45 import com.google.cloud.compute.v1.PatchInterconnectRequest;
46 import com.google.cloud.compute.v1.SetLabelsInterconnectRequest;
47 import com.google.protobuf.TypeRegistry;
48 import java.io.IOException;
49 import java.util.ArrayList;
50 import java.util.HashMap;
51 import java.util.List;
52 import java.util.Map;
53 import java.util.concurrent.TimeUnit;
54 import javax.annotation.Generated;
55 
56 // AUTO-GENERATED DOCUMENTATION AND CLASS.
57 /**
58  * REST stub implementation for the Interconnects service API.
59  *
60  * <p>This class is for advanced usage and reflects the underlying API directly.
61  */
62 @Generated("by gapic-generator-java")
63 @BetaApi
64 public class HttpJsonInterconnectsStub extends InterconnectsStub {
65   private static final TypeRegistry typeRegistry =
66       TypeRegistry.newBuilder().add(Operation.getDescriptor()).build();
67 
68   private static final ApiMethodDescriptor<DeleteInterconnectRequest, Operation>
69       deleteMethodDescriptor =
70           ApiMethodDescriptor.<DeleteInterconnectRequest, Operation>newBuilder()
71               .setFullMethodName("google.cloud.compute.v1.Interconnects/Delete")
72               .setHttpMethod("DELETE")
73               .setType(ApiMethodDescriptor.MethodType.UNARY)
74               .setRequestFormatter(
75                   ProtoMessageRequestFormatter.<DeleteInterconnectRequest>newBuilder()
76                       .setPath(
77                           "/compute/v1/projects/{project}/global/interconnects/{interconnect}",
78                           request -> {
79                             Map<String, String> fields = new HashMap<>();
80                             ProtoRestSerializer<DeleteInterconnectRequest> serializer =
81                                 ProtoRestSerializer.create();
82                             serializer.putPathParam(
83                                 fields, "interconnect", request.getInterconnect());
84                             serializer.putPathParam(fields, "project", request.getProject());
85                             return fields;
86                           })
87                       .setQueryParamsExtractor(
88                           request -> {
89                             Map<String, List<String>> fields = new HashMap<>();
90                             ProtoRestSerializer<DeleteInterconnectRequest> serializer =
91                                 ProtoRestSerializer.create();
92                             if (request.hasRequestId()) {
93                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
94                             }
95                             return fields;
96                           })
97                       .setRequestBodyExtractor(request -> null)
98                       .build())
99               .setResponseParser(
100                   ProtoMessageResponseParser.<Operation>newBuilder()
101                       .setDefaultInstance(Operation.getDefaultInstance())
102                       .setDefaultTypeRegistry(typeRegistry)
103                       .build())
104               .setOperationSnapshotFactory(
105                   (DeleteInterconnectRequest request, Operation response) -> {
106                     StringBuilder opName = new StringBuilder(response.getName());
107                     opName.append(":").append(request.getProject());
108                     return HttpJsonOperationSnapshot.newBuilder()
109                         .setName(opName.toString())
110                         .setMetadata(response)
111                         .setDone(Status.DONE.equals(response.getStatus()))
112                         .setResponse(response)
113                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
114                         .build();
115                   })
116               .build();
117 
118   private static final ApiMethodDescriptor<GetInterconnectRequest, Interconnect>
119       getMethodDescriptor =
120           ApiMethodDescriptor.<GetInterconnectRequest, Interconnect>newBuilder()
121               .setFullMethodName("google.cloud.compute.v1.Interconnects/Get")
122               .setHttpMethod("GET")
123               .setType(ApiMethodDescriptor.MethodType.UNARY)
124               .setRequestFormatter(
125                   ProtoMessageRequestFormatter.<GetInterconnectRequest>newBuilder()
126                       .setPath(
127                           "/compute/v1/projects/{project}/global/interconnects/{interconnect}",
128                           request -> {
129                             Map<String, String> fields = new HashMap<>();
130                             ProtoRestSerializer<GetInterconnectRequest> serializer =
131                                 ProtoRestSerializer.create();
132                             serializer.putPathParam(
133                                 fields, "interconnect", request.getInterconnect());
134                             serializer.putPathParam(fields, "project", request.getProject());
135                             return fields;
136                           })
137                       .setQueryParamsExtractor(
138                           request -> {
139                             Map<String, List<String>> fields = new HashMap<>();
140                             ProtoRestSerializer<GetInterconnectRequest> serializer =
141                                 ProtoRestSerializer.create();
142                             return fields;
143                           })
144                       .setRequestBodyExtractor(request -> null)
145                       .build())
146               .setResponseParser(
147                   ProtoMessageResponseParser.<Interconnect>newBuilder()
148                       .setDefaultInstance(Interconnect.getDefaultInstance())
149                       .setDefaultTypeRegistry(typeRegistry)
150                       .build())
151               .build();
152 
153   private static final ApiMethodDescriptor<
154           GetDiagnosticsInterconnectRequest, InterconnectsGetDiagnosticsResponse>
155       getDiagnosticsMethodDescriptor =
156           ApiMethodDescriptor
157               .<GetDiagnosticsInterconnectRequest, InterconnectsGetDiagnosticsResponse>newBuilder()
158               .setFullMethodName("google.cloud.compute.v1.Interconnects/GetDiagnostics")
159               .setHttpMethod("GET")
160               .setType(ApiMethodDescriptor.MethodType.UNARY)
161               .setRequestFormatter(
162                   ProtoMessageRequestFormatter.<GetDiagnosticsInterconnectRequest>newBuilder()
163                       .setPath(
164                           "/compute/v1/projects/{project}/global/interconnects/{interconnect}/getDiagnostics",
165                           request -> {
166                             Map<String, String> fields = new HashMap<>();
167                             ProtoRestSerializer<GetDiagnosticsInterconnectRequest> serializer =
168                                 ProtoRestSerializer.create();
169                             serializer.putPathParam(
170                                 fields, "interconnect", request.getInterconnect());
171                             serializer.putPathParam(fields, "project", request.getProject());
172                             return fields;
173                           })
174                       .setQueryParamsExtractor(
175                           request -> {
176                             Map<String, List<String>> fields = new HashMap<>();
177                             ProtoRestSerializer<GetDiagnosticsInterconnectRequest> serializer =
178                                 ProtoRestSerializer.create();
179                             return fields;
180                           })
181                       .setRequestBodyExtractor(request -> null)
182                       .build())
183               .setResponseParser(
184                   ProtoMessageResponseParser.<InterconnectsGetDiagnosticsResponse>newBuilder()
185                       .setDefaultInstance(InterconnectsGetDiagnosticsResponse.getDefaultInstance())
186                       .setDefaultTypeRegistry(typeRegistry)
187                       .build())
188               .build();
189 
190   private static final ApiMethodDescriptor<InsertInterconnectRequest, Operation>
191       insertMethodDescriptor =
192           ApiMethodDescriptor.<InsertInterconnectRequest, Operation>newBuilder()
193               .setFullMethodName("google.cloud.compute.v1.Interconnects/Insert")
194               .setHttpMethod("POST")
195               .setType(ApiMethodDescriptor.MethodType.UNARY)
196               .setRequestFormatter(
197                   ProtoMessageRequestFormatter.<InsertInterconnectRequest>newBuilder()
198                       .setPath(
199                           "/compute/v1/projects/{project}/global/interconnects",
200                           request -> {
201                             Map<String, String> fields = new HashMap<>();
202                             ProtoRestSerializer<InsertInterconnectRequest> serializer =
203                                 ProtoRestSerializer.create();
204                             serializer.putPathParam(fields, "project", request.getProject());
205                             return fields;
206                           })
207                       .setQueryParamsExtractor(
208                           request -> {
209                             Map<String, List<String>> fields = new HashMap<>();
210                             ProtoRestSerializer<InsertInterconnectRequest> serializer =
211                                 ProtoRestSerializer.create();
212                             if (request.hasRequestId()) {
213                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
214                             }
215                             return fields;
216                           })
217                       .setRequestBodyExtractor(
218                           request ->
219                               ProtoRestSerializer.create()
220                                   .toBody(
221                                       "interconnectResource",
222                                       request.getInterconnectResource(),
223                                       false))
224                       .build())
225               .setResponseParser(
226                   ProtoMessageResponseParser.<Operation>newBuilder()
227                       .setDefaultInstance(Operation.getDefaultInstance())
228                       .setDefaultTypeRegistry(typeRegistry)
229                       .build())
230               .setOperationSnapshotFactory(
231                   (InsertInterconnectRequest request, Operation response) -> {
232                     StringBuilder opName = new StringBuilder(response.getName());
233                     opName.append(":").append(request.getProject());
234                     return HttpJsonOperationSnapshot.newBuilder()
235                         .setName(opName.toString())
236                         .setMetadata(response)
237                         .setDone(Status.DONE.equals(response.getStatus()))
238                         .setResponse(response)
239                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
240                         .build();
241                   })
242               .build();
243 
244   private static final ApiMethodDescriptor<ListInterconnectsRequest, InterconnectList>
245       listMethodDescriptor =
246           ApiMethodDescriptor.<ListInterconnectsRequest, InterconnectList>newBuilder()
247               .setFullMethodName("google.cloud.compute.v1.Interconnects/List")
248               .setHttpMethod("GET")
249               .setType(ApiMethodDescriptor.MethodType.UNARY)
250               .setRequestFormatter(
251                   ProtoMessageRequestFormatter.<ListInterconnectsRequest>newBuilder()
252                       .setPath(
253                           "/compute/v1/projects/{project}/global/interconnects",
254                           request -> {
255                             Map<String, String> fields = new HashMap<>();
256                             ProtoRestSerializer<ListInterconnectsRequest> serializer =
257                                 ProtoRestSerializer.create();
258                             serializer.putPathParam(fields, "project", request.getProject());
259                             return fields;
260                           })
261                       .setQueryParamsExtractor(
262                           request -> {
263                             Map<String, List<String>> fields = new HashMap<>();
264                             ProtoRestSerializer<ListInterconnectsRequest> serializer =
265                                 ProtoRestSerializer.create();
266                             if (request.hasFilter()) {
267                               serializer.putQueryParam(fields, "filter", request.getFilter());
268                             }
269                             if (request.hasMaxResults()) {
270                               serializer.putQueryParam(
271                                   fields, "maxResults", request.getMaxResults());
272                             }
273                             if (request.hasOrderBy()) {
274                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
275                             }
276                             if (request.hasPageToken()) {
277                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
278                             }
279                             if (request.hasReturnPartialSuccess()) {
280                               serializer.putQueryParam(
281                                   fields,
282                                   "returnPartialSuccess",
283                                   request.getReturnPartialSuccess());
284                             }
285                             return fields;
286                           })
287                       .setRequestBodyExtractor(request -> null)
288                       .build())
289               .setResponseParser(
290                   ProtoMessageResponseParser.<InterconnectList>newBuilder()
291                       .setDefaultInstance(InterconnectList.getDefaultInstance())
292                       .setDefaultTypeRegistry(typeRegistry)
293                       .build())
294               .build();
295 
296   private static final ApiMethodDescriptor<PatchInterconnectRequest, Operation>
297       patchMethodDescriptor =
298           ApiMethodDescriptor.<PatchInterconnectRequest, Operation>newBuilder()
299               .setFullMethodName("google.cloud.compute.v1.Interconnects/Patch")
300               .setHttpMethod("PATCH")
301               .setType(ApiMethodDescriptor.MethodType.UNARY)
302               .setRequestFormatter(
303                   ProtoMessageRequestFormatter.<PatchInterconnectRequest>newBuilder()
304                       .setPath(
305                           "/compute/v1/projects/{project}/global/interconnects/{interconnect}",
306                           request -> {
307                             Map<String, String> fields = new HashMap<>();
308                             ProtoRestSerializer<PatchInterconnectRequest> serializer =
309                                 ProtoRestSerializer.create();
310                             serializer.putPathParam(
311                                 fields, "interconnect", request.getInterconnect());
312                             serializer.putPathParam(fields, "project", request.getProject());
313                             return fields;
314                           })
315                       .setQueryParamsExtractor(
316                           request -> {
317                             Map<String, List<String>> fields = new HashMap<>();
318                             ProtoRestSerializer<PatchInterconnectRequest> serializer =
319                                 ProtoRestSerializer.create();
320                             if (request.hasRequestId()) {
321                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
322                             }
323                             return fields;
324                           })
325                       .setRequestBodyExtractor(
326                           request ->
327                               ProtoRestSerializer.create()
328                                   .toBody(
329                                       "interconnectResource",
330                                       request.getInterconnectResource(),
331                                       false))
332                       .build())
333               .setResponseParser(
334                   ProtoMessageResponseParser.<Operation>newBuilder()
335                       .setDefaultInstance(Operation.getDefaultInstance())
336                       .setDefaultTypeRegistry(typeRegistry)
337                       .build())
338               .setOperationSnapshotFactory(
339                   (PatchInterconnectRequest request, Operation response) -> {
340                     StringBuilder opName = new StringBuilder(response.getName());
341                     opName.append(":").append(request.getProject());
342                     return HttpJsonOperationSnapshot.newBuilder()
343                         .setName(opName.toString())
344                         .setMetadata(response)
345                         .setDone(Status.DONE.equals(response.getStatus()))
346                         .setResponse(response)
347                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
348                         .build();
349                   })
350               .build();
351 
352   private static final ApiMethodDescriptor<SetLabelsInterconnectRequest, Operation>
353       setLabelsMethodDescriptor =
354           ApiMethodDescriptor.<SetLabelsInterconnectRequest, Operation>newBuilder()
355               .setFullMethodName("google.cloud.compute.v1.Interconnects/SetLabels")
356               .setHttpMethod("POST")
357               .setType(ApiMethodDescriptor.MethodType.UNARY)
358               .setRequestFormatter(
359                   ProtoMessageRequestFormatter.<SetLabelsInterconnectRequest>newBuilder()
360                       .setPath(
361                           "/compute/v1/projects/{project}/global/interconnects/{resource}/setLabels",
362                           request -> {
363                             Map<String, String> fields = new HashMap<>();
364                             ProtoRestSerializer<SetLabelsInterconnectRequest> serializer =
365                                 ProtoRestSerializer.create();
366                             serializer.putPathParam(fields, "project", request.getProject());
367                             serializer.putPathParam(fields, "resource", request.getResource());
368                             return fields;
369                           })
370                       .setQueryParamsExtractor(
371                           request -> {
372                             Map<String, List<String>> fields = new HashMap<>();
373                             ProtoRestSerializer<SetLabelsInterconnectRequest> serializer =
374                                 ProtoRestSerializer.create();
375                             return fields;
376                           })
377                       .setRequestBodyExtractor(
378                           request ->
379                               ProtoRestSerializer.create()
380                                   .toBody(
381                                       "globalSetLabelsRequestResource",
382                                       request.getGlobalSetLabelsRequestResource(),
383                                       false))
384                       .build())
385               .setResponseParser(
386                   ProtoMessageResponseParser.<Operation>newBuilder()
387                       .setDefaultInstance(Operation.getDefaultInstance())
388                       .setDefaultTypeRegistry(typeRegistry)
389                       .build())
390               .setOperationSnapshotFactory(
391                   (SetLabelsInterconnectRequest request, Operation response) -> {
392                     StringBuilder opName = new StringBuilder(response.getName());
393                     opName.append(":").append(request.getProject());
394                     return HttpJsonOperationSnapshot.newBuilder()
395                         .setName(opName.toString())
396                         .setMetadata(response)
397                         .setDone(Status.DONE.equals(response.getStatus()))
398                         .setResponse(response)
399                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
400                         .build();
401                   })
402               .build();
403 
404   private final UnaryCallable<DeleteInterconnectRequest, Operation> deleteCallable;
405   private final OperationCallable<DeleteInterconnectRequest, Operation, Operation>
406       deleteOperationCallable;
407   private final UnaryCallable<GetInterconnectRequest, Interconnect> getCallable;
408   private final UnaryCallable<
409           GetDiagnosticsInterconnectRequest, InterconnectsGetDiagnosticsResponse>
410       getDiagnosticsCallable;
411   private final UnaryCallable<InsertInterconnectRequest, Operation> insertCallable;
412   private final OperationCallable<InsertInterconnectRequest, Operation, Operation>
413       insertOperationCallable;
414   private final UnaryCallable<ListInterconnectsRequest, InterconnectList> listCallable;
415   private final UnaryCallable<ListInterconnectsRequest, ListPagedResponse> listPagedCallable;
416   private final UnaryCallable<PatchInterconnectRequest, Operation> patchCallable;
417   private final OperationCallable<PatchInterconnectRequest, Operation, Operation>
418       patchOperationCallable;
419   private final UnaryCallable<SetLabelsInterconnectRequest, Operation> setLabelsCallable;
420   private final OperationCallable<SetLabelsInterconnectRequest, Operation, Operation>
421       setLabelsOperationCallable;
422 
423   private final BackgroundResource backgroundResources;
424   private final HttpJsonGlobalOperationsStub httpJsonOperationsStub;
425   private final HttpJsonStubCallableFactory callableFactory;
426 
create(InterconnectsStubSettings settings)427   public static final HttpJsonInterconnectsStub create(InterconnectsStubSettings settings)
428       throws IOException {
429     return new HttpJsonInterconnectsStub(settings, ClientContext.create(settings));
430   }
431 
create(ClientContext clientContext)432   public static final HttpJsonInterconnectsStub create(ClientContext clientContext)
433       throws IOException {
434     return new HttpJsonInterconnectsStub(
435         InterconnectsStubSettings.newBuilder().build(), clientContext);
436   }
437 
create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)438   public static final HttpJsonInterconnectsStub create(
439       ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException {
440     return new HttpJsonInterconnectsStub(
441         InterconnectsStubSettings.newBuilder().build(), clientContext, callableFactory);
442   }
443 
444   /**
445    * Constructs an instance of HttpJsonInterconnectsStub, using the given settings. This is
446    * protected so that it is easy to make a subclass, but otherwise, the static factory methods
447    * should be preferred.
448    */
HttpJsonInterconnectsStub( InterconnectsStubSettings settings, ClientContext clientContext)449   protected HttpJsonInterconnectsStub(
450       InterconnectsStubSettings settings, ClientContext clientContext) throws IOException {
451     this(settings, clientContext, new HttpJsonInterconnectsCallableFactory());
452   }
453 
454   /**
455    * Constructs an instance of HttpJsonInterconnectsStub, using the given settings. This is
456    * protected so that it is easy to make a subclass, but otherwise, the static factory methods
457    * should be preferred.
458    */
HttpJsonInterconnectsStub( InterconnectsStubSettings settings, ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)459   protected HttpJsonInterconnectsStub(
460       InterconnectsStubSettings settings,
461       ClientContext clientContext,
462       HttpJsonStubCallableFactory callableFactory)
463       throws IOException {
464     this.callableFactory = callableFactory;
465     this.httpJsonOperationsStub =
466         HttpJsonGlobalOperationsStub.create(clientContext, callableFactory);
467 
468     HttpJsonCallSettings<DeleteInterconnectRequest, Operation> deleteTransportSettings =
469         HttpJsonCallSettings.<DeleteInterconnectRequest, Operation>newBuilder()
470             .setMethodDescriptor(deleteMethodDescriptor)
471             .setTypeRegistry(typeRegistry)
472             .build();
473     HttpJsonCallSettings<GetInterconnectRequest, Interconnect> getTransportSettings =
474         HttpJsonCallSettings.<GetInterconnectRequest, Interconnect>newBuilder()
475             .setMethodDescriptor(getMethodDescriptor)
476             .setTypeRegistry(typeRegistry)
477             .build();
478     HttpJsonCallSettings<GetDiagnosticsInterconnectRequest, InterconnectsGetDiagnosticsResponse>
479         getDiagnosticsTransportSettings =
480             HttpJsonCallSettings
481                 .<GetDiagnosticsInterconnectRequest, InterconnectsGetDiagnosticsResponse>
482                     newBuilder()
483                 .setMethodDescriptor(getDiagnosticsMethodDescriptor)
484                 .setTypeRegistry(typeRegistry)
485                 .build();
486     HttpJsonCallSettings<InsertInterconnectRequest, Operation> insertTransportSettings =
487         HttpJsonCallSettings.<InsertInterconnectRequest, Operation>newBuilder()
488             .setMethodDescriptor(insertMethodDescriptor)
489             .setTypeRegistry(typeRegistry)
490             .build();
491     HttpJsonCallSettings<ListInterconnectsRequest, InterconnectList> listTransportSettings =
492         HttpJsonCallSettings.<ListInterconnectsRequest, InterconnectList>newBuilder()
493             .setMethodDescriptor(listMethodDescriptor)
494             .setTypeRegistry(typeRegistry)
495             .build();
496     HttpJsonCallSettings<PatchInterconnectRequest, Operation> patchTransportSettings =
497         HttpJsonCallSettings.<PatchInterconnectRequest, Operation>newBuilder()
498             .setMethodDescriptor(patchMethodDescriptor)
499             .setTypeRegistry(typeRegistry)
500             .build();
501     HttpJsonCallSettings<SetLabelsInterconnectRequest, Operation> setLabelsTransportSettings =
502         HttpJsonCallSettings.<SetLabelsInterconnectRequest, Operation>newBuilder()
503             .setMethodDescriptor(setLabelsMethodDescriptor)
504             .setTypeRegistry(typeRegistry)
505             .build();
506 
507     this.deleteCallable =
508         callableFactory.createUnaryCallable(
509             deleteTransportSettings, settings.deleteSettings(), clientContext);
510     this.deleteOperationCallable =
511         callableFactory.createOperationCallable(
512             deleteTransportSettings,
513             settings.deleteOperationSettings(),
514             clientContext,
515             httpJsonOperationsStub);
516     this.getCallable =
517         callableFactory.createUnaryCallable(
518             getTransportSettings, settings.getSettings(), clientContext);
519     this.getDiagnosticsCallable =
520         callableFactory.createUnaryCallable(
521             getDiagnosticsTransportSettings, settings.getDiagnosticsSettings(), clientContext);
522     this.insertCallable =
523         callableFactory.createUnaryCallable(
524             insertTransportSettings, settings.insertSettings(), clientContext);
525     this.insertOperationCallable =
526         callableFactory.createOperationCallable(
527             insertTransportSettings,
528             settings.insertOperationSettings(),
529             clientContext,
530             httpJsonOperationsStub);
531     this.listCallable =
532         callableFactory.createUnaryCallable(
533             listTransportSettings, settings.listSettings(), clientContext);
534     this.listPagedCallable =
535         callableFactory.createPagedCallable(
536             listTransportSettings, settings.listSettings(), clientContext);
537     this.patchCallable =
538         callableFactory.createUnaryCallable(
539             patchTransportSettings, settings.patchSettings(), clientContext);
540     this.patchOperationCallable =
541         callableFactory.createOperationCallable(
542             patchTransportSettings,
543             settings.patchOperationSettings(),
544             clientContext,
545             httpJsonOperationsStub);
546     this.setLabelsCallable =
547         callableFactory.createUnaryCallable(
548             setLabelsTransportSettings, settings.setLabelsSettings(), clientContext);
549     this.setLabelsOperationCallable =
550         callableFactory.createOperationCallable(
551             setLabelsTransportSettings,
552             settings.setLabelsOperationSettings(),
553             clientContext,
554             httpJsonOperationsStub);
555 
556     this.backgroundResources =
557         new BackgroundResourceAggregation(clientContext.getBackgroundResources());
558   }
559 
560   @InternalApi
getMethodDescriptors()561   public static List<ApiMethodDescriptor> getMethodDescriptors() {
562     List<ApiMethodDescriptor> methodDescriptors = new ArrayList<>();
563     methodDescriptors.add(deleteMethodDescriptor);
564     methodDescriptors.add(getMethodDescriptor);
565     methodDescriptors.add(getDiagnosticsMethodDescriptor);
566     methodDescriptors.add(insertMethodDescriptor);
567     methodDescriptors.add(listMethodDescriptor);
568     methodDescriptors.add(patchMethodDescriptor);
569     methodDescriptors.add(setLabelsMethodDescriptor);
570     return methodDescriptors;
571   }
572 
573   @Override
deleteCallable()574   public UnaryCallable<DeleteInterconnectRequest, Operation> deleteCallable() {
575     return deleteCallable;
576   }
577 
578   @Override
579   public OperationCallable<DeleteInterconnectRequest, Operation, Operation>
deleteOperationCallable()580       deleteOperationCallable() {
581     return deleteOperationCallable;
582   }
583 
584   @Override
getCallable()585   public UnaryCallable<GetInterconnectRequest, Interconnect> getCallable() {
586     return getCallable;
587   }
588 
589   @Override
590   public UnaryCallable<GetDiagnosticsInterconnectRequest, InterconnectsGetDiagnosticsResponse>
getDiagnosticsCallable()591       getDiagnosticsCallable() {
592     return getDiagnosticsCallable;
593   }
594 
595   @Override
insertCallable()596   public UnaryCallable<InsertInterconnectRequest, Operation> insertCallable() {
597     return insertCallable;
598   }
599 
600   @Override
601   public OperationCallable<InsertInterconnectRequest, Operation, Operation>
insertOperationCallable()602       insertOperationCallable() {
603     return insertOperationCallable;
604   }
605 
606   @Override
listCallable()607   public UnaryCallable<ListInterconnectsRequest, InterconnectList> listCallable() {
608     return listCallable;
609   }
610 
611   @Override
listPagedCallable()612   public UnaryCallable<ListInterconnectsRequest, ListPagedResponse> listPagedCallable() {
613     return listPagedCallable;
614   }
615 
616   @Override
patchCallable()617   public UnaryCallable<PatchInterconnectRequest, Operation> patchCallable() {
618     return patchCallable;
619   }
620 
621   @Override
622   public OperationCallable<PatchInterconnectRequest, Operation, Operation>
patchOperationCallable()623       patchOperationCallable() {
624     return patchOperationCallable;
625   }
626 
627   @Override
setLabelsCallable()628   public UnaryCallable<SetLabelsInterconnectRequest, Operation> setLabelsCallable() {
629     return setLabelsCallable;
630   }
631 
632   @Override
633   public OperationCallable<SetLabelsInterconnectRequest, Operation, Operation>
setLabelsOperationCallable()634       setLabelsOperationCallable() {
635     return setLabelsOperationCallable;
636   }
637 
638   @Override
close()639   public final void close() {
640     try {
641       backgroundResources.close();
642     } catch (RuntimeException e) {
643       throw e;
644     } catch (Exception e) {
645       throw new IllegalStateException("Failed to close resource", e);
646     }
647   }
648 
649   @Override
shutdown()650   public void shutdown() {
651     backgroundResources.shutdown();
652   }
653 
654   @Override
isShutdown()655   public boolean isShutdown() {
656     return backgroundResources.isShutdown();
657   }
658 
659   @Override
isTerminated()660   public boolean isTerminated() {
661     return backgroundResources.isTerminated();
662   }
663 
664   @Override
shutdownNow()665   public void shutdownNow() {
666     backgroundResources.shutdownNow();
667   }
668 
669   @Override
awaitTermination(long duration, TimeUnit unit)670   public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
671     return backgroundResources.awaitTermination(duration, unit);
672   }
673 }
674