• 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.RoutesClient.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.DeleteRouteRequest;
36 import com.google.cloud.compute.v1.GetRouteRequest;
37 import com.google.cloud.compute.v1.InsertRouteRequest;
38 import com.google.cloud.compute.v1.ListRoutesRequest;
39 import com.google.cloud.compute.v1.Operation;
40 import com.google.cloud.compute.v1.Operation.Status;
41 import com.google.cloud.compute.v1.Route;
42 import com.google.cloud.compute.v1.RouteList;
43 import com.google.protobuf.TypeRegistry;
44 import java.io.IOException;
45 import java.util.ArrayList;
46 import java.util.HashMap;
47 import java.util.List;
48 import java.util.Map;
49 import java.util.concurrent.TimeUnit;
50 import javax.annotation.Generated;
51 
52 // AUTO-GENERATED DOCUMENTATION AND CLASS.
53 /**
54  * REST stub implementation for the Routes service API.
55  *
56  * <p>This class is for advanced usage and reflects the underlying API directly.
57  */
58 @Generated("by gapic-generator-java")
59 @BetaApi
60 public class HttpJsonRoutesStub extends RoutesStub {
61   private static final TypeRegistry typeRegistry =
62       TypeRegistry.newBuilder().add(Operation.getDescriptor()).build();
63 
64   private static final ApiMethodDescriptor<DeleteRouteRequest, Operation> deleteMethodDescriptor =
65       ApiMethodDescriptor.<DeleteRouteRequest, Operation>newBuilder()
66           .setFullMethodName("google.cloud.compute.v1.Routes/Delete")
67           .setHttpMethod("DELETE")
68           .setType(ApiMethodDescriptor.MethodType.UNARY)
69           .setRequestFormatter(
70               ProtoMessageRequestFormatter.<DeleteRouteRequest>newBuilder()
71                   .setPath(
72                       "/compute/v1/projects/{project}/global/routes/{route}",
73                       request -> {
74                         Map<String, String> fields = new HashMap<>();
75                         ProtoRestSerializer<DeleteRouteRequest> serializer =
76                             ProtoRestSerializer.create();
77                         serializer.putPathParam(fields, "project", request.getProject());
78                         serializer.putPathParam(fields, "route", request.getRoute());
79                         return fields;
80                       })
81                   .setQueryParamsExtractor(
82                       request -> {
83                         Map<String, List<String>> fields = new HashMap<>();
84                         ProtoRestSerializer<DeleteRouteRequest> serializer =
85                             ProtoRestSerializer.create();
86                         if (request.hasRequestId()) {
87                           serializer.putQueryParam(fields, "requestId", request.getRequestId());
88                         }
89                         return fields;
90                       })
91                   .setRequestBodyExtractor(request -> null)
92                   .build())
93           .setResponseParser(
94               ProtoMessageResponseParser.<Operation>newBuilder()
95                   .setDefaultInstance(Operation.getDefaultInstance())
96                   .setDefaultTypeRegistry(typeRegistry)
97                   .build())
98           .setOperationSnapshotFactory(
99               (DeleteRouteRequest request, Operation response) -> {
100                 StringBuilder opName = new StringBuilder(response.getName());
101                 opName.append(":").append(request.getProject());
102                 return HttpJsonOperationSnapshot.newBuilder()
103                     .setName(opName.toString())
104                     .setMetadata(response)
105                     .setDone(Status.DONE.equals(response.getStatus()))
106                     .setResponse(response)
107                     .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
108                     .build();
109               })
110           .build();
111 
112   private static final ApiMethodDescriptor<GetRouteRequest, Route> getMethodDescriptor =
113       ApiMethodDescriptor.<GetRouteRequest, Route>newBuilder()
114           .setFullMethodName("google.cloud.compute.v1.Routes/Get")
115           .setHttpMethod("GET")
116           .setType(ApiMethodDescriptor.MethodType.UNARY)
117           .setRequestFormatter(
118               ProtoMessageRequestFormatter.<GetRouteRequest>newBuilder()
119                   .setPath(
120                       "/compute/v1/projects/{project}/global/routes/{route}",
121                       request -> {
122                         Map<String, String> fields = new HashMap<>();
123                         ProtoRestSerializer<GetRouteRequest> serializer =
124                             ProtoRestSerializer.create();
125                         serializer.putPathParam(fields, "project", request.getProject());
126                         serializer.putPathParam(fields, "route", request.getRoute());
127                         return fields;
128                       })
129                   .setQueryParamsExtractor(
130                       request -> {
131                         Map<String, List<String>> fields = new HashMap<>();
132                         ProtoRestSerializer<GetRouteRequest> serializer =
133                             ProtoRestSerializer.create();
134                         return fields;
135                       })
136                   .setRequestBodyExtractor(request -> null)
137                   .build())
138           .setResponseParser(
139               ProtoMessageResponseParser.<Route>newBuilder()
140                   .setDefaultInstance(Route.getDefaultInstance())
141                   .setDefaultTypeRegistry(typeRegistry)
142                   .build())
143           .build();
144 
145   private static final ApiMethodDescriptor<InsertRouteRequest, Operation> insertMethodDescriptor =
146       ApiMethodDescriptor.<InsertRouteRequest, Operation>newBuilder()
147           .setFullMethodName("google.cloud.compute.v1.Routes/Insert")
148           .setHttpMethod("POST")
149           .setType(ApiMethodDescriptor.MethodType.UNARY)
150           .setRequestFormatter(
151               ProtoMessageRequestFormatter.<InsertRouteRequest>newBuilder()
152                   .setPath(
153                       "/compute/v1/projects/{project}/global/routes",
154                       request -> {
155                         Map<String, String> fields = new HashMap<>();
156                         ProtoRestSerializer<InsertRouteRequest> serializer =
157                             ProtoRestSerializer.create();
158                         serializer.putPathParam(fields, "project", request.getProject());
159                         return fields;
160                       })
161                   .setQueryParamsExtractor(
162                       request -> {
163                         Map<String, List<String>> fields = new HashMap<>();
164                         ProtoRestSerializer<InsertRouteRequest> serializer =
165                             ProtoRestSerializer.create();
166                         if (request.hasRequestId()) {
167                           serializer.putQueryParam(fields, "requestId", request.getRequestId());
168                         }
169                         return fields;
170                       })
171                   .setRequestBodyExtractor(
172                       request ->
173                           ProtoRestSerializer.create()
174                               .toBody("routeResource", request.getRouteResource(), false))
175                   .build())
176           .setResponseParser(
177               ProtoMessageResponseParser.<Operation>newBuilder()
178                   .setDefaultInstance(Operation.getDefaultInstance())
179                   .setDefaultTypeRegistry(typeRegistry)
180                   .build())
181           .setOperationSnapshotFactory(
182               (InsertRouteRequest request, Operation response) -> {
183                 StringBuilder opName = new StringBuilder(response.getName());
184                 opName.append(":").append(request.getProject());
185                 return HttpJsonOperationSnapshot.newBuilder()
186                     .setName(opName.toString())
187                     .setMetadata(response)
188                     .setDone(Status.DONE.equals(response.getStatus()))
189                     .setResponse(response)
190                     .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
191                     .build();
192               })
193           .build();
194 
195   private static final ApiMethodDescriptor<ListRoutesRequest, RouteList> listMethodDescriptor =
196       ApiMethodDescriptor.<ListRoutesRequest, RouteList>newBuilder()
197           .setFullMethodName("google.cloud.compute.v1.Routes/List")
198           .setHttpMethod("GET")
199           .setType(ApiMethodDescriptor.MethodType.UNARY)
200           .setRequestFormatter(
201               ProtoMessageRequestFormatter.<ListRoutesRequest>newBuilder()
202                   .setPath(
203                       "/compute/v1/projects/{project}/global/routes",
204                       request -> {
205                         Map<String, String> fields = new HashMap<>();
206                         ProtoRestSerializer<ListRoutesRequest> serializer =
207                             ProtoRestSerializer.create();
208                         serializer.putPathParam(fields, "project", request.getProject());
209                         return fields;
210                       })
211                   .setQueryParamsExtractor(
212                       request -> {
213                         Map<String, List<String>> fields = new HashMap<>();
214                         ProtoRestSerializer<ListRoutesRequest> serializer =
215                             ProtoRestSerializer.create();
216                         if (request.hasFilter()) {
217                           serializer.putQueryParam(fields, "filter", request.getFilter());
218                         }
219                         if (request.hasMaxResults()) {
220                           serializer.putQueryParam(fields, "maxResults", request.getMaxResults());
221                         }
222                         if (request.hasOrderBy()) {
223                           serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
224                         }
225                         if (request.hasPageToken()) {
226                           serializer.putQueryParam(fields, "pageToken", request.getPageToken());
227                         }
228                         if (request.hasReturnPartialSuccess()) {
229                           serializer.putQueryParam(
230                               fields, "returnPartialSuccess", request.getReturnPartialSuccess());
231                         }
232                         return fields;
233                       })
234                   .setRequestBodyExtractor(request -> null)
235                   .build())
236           .setResponseParser(
237               ProtoMessageResponseParser.<RouteList>newBuilder()
238                   .setDefaultInstance(RouteList.getDefaultInstance())
239                   .setDefaultTypeRegistry(typeRegistry)
240                   .build())
241           .build();
242 
243   private final UnaryCallable<DeleteRouteRequest, Operation> deleteCallable;
244   private final OperationCallable<DeleteRouteRequest, Operation, Operation> deleteOperationCallable;
245   private final UnaryCallable<GetRouteRequest, Route> getCallable;
246   private final UnaryCallable<InsertRouteRequest, Operation> insertCallable;
247   private final OperationCallable<InsertRouteRequest, Operation, Operation> insertOperationCallable;
248   private final UnaryCallable<ListRoutesRequest, RouteList> listCallable;
249   private final UnaryCallable<ListRoutesRequest, ListPagedResponse> listPagedCallable;
250 
251   private final BackgroundResource backgroundResources;
252   private final HttpJsonGlobalOperationsStub httpJsonOperationsStub;
253   private final HttpJsonStubCallableFactory callableFactory;
254 
create(RoutesStubSettings settings)255   public static final HttpJsonRoutesStub create(RoutesStubSettings settings) throws IOException {
256     return new HttpJsonRoutesStub(settings, ClientContext.create(settings));
257   }
258 
create(ClientContext clientContext)259   public static final HttpJsonRoutesStub create(ClientContext clientContext) throws IOException {
260     return new HttpJsonRoutesStub(RoutesStubSettings.newBuilder().build(), clientContext);
261   }
262 
create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)263   public static final HttpJsonRoutesStub create(
264       ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException {
265     return new HttpJsonRoutesStub(
266         RoutesStubSettings.newBuilder().build(), clientContext, callableFactory);
267   }
268 
269   /**
270    * Constructs an instance of HttpJsonRoutesStub, using the given settings. This is protected so
271    * that it is easy to make a subclass, but otherwise, the static factory methods should be
272    * preferred.
273    */
HttpJsonRoutesStub(RoutesStubSettings settings, ClientContext clientContext)274   protected HttpJsonRoutesStub(RoutesStubSettings settings, ClientContext clientContext)
275       throws IOException {
276     this(settings, clientContext, new HttpJsonRoutesCallableFactory());
277   }
278 
279   /**
280    * Constructs an instance of HttpJsonRoutesStub, using the given settings. This is protected so
281    * that it is easy to make a subclass, but otherwise, the static factory methods should be
282    * preferred.
283    */
HttpJsonRoutesStub( RoutesStubSettings settings, ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)284   protected HttpJsonRoutesStub(
285       RoutesStubSettings settings,
286       ClientContext clientContext,
287       HttpJsonStubCallableFactory callableFactory)
288       throws IOException {
289     this.callableFactory = callableFactory;
290     this.httpJsonOperationsStub =
291         HttpJsonGlobalOperationsStub.create(clientContext, callableFactory);
292 
293     HttpJsonCallSettings<DeleteRouteRequest, Operation> deleteTransportSettings =
294         HttpJsonCallSettings.<DeleteRouteRequest, Operation>newBuilder()
295             .setMethodDescriptor(deleteMethodDescriptor)
296             .setTypeRegistry(typeRegistry)
297             .build();
298     HttpJsonCallSettings<GetRouteRequest, Route> getTransportSettings =
299         HttpJsonCallSettings.<GetRouteRequest, Route>newBuilder()
300             .setMethodDescriptor(getMethodDescriptor)
301             .setTypeRegistry(typeRegistry)
302             .build();
303     HttpJsonCallSettings<InsertRouteRequest, Operation> insertTransportSettings =
304         HttpJsonCallSettings.<InsertRouteRequest, Operation>newBuilder()
305             .setMethodDescriptor(insertMethodDescriptor)
306             .setTypeRegistry(typeRegistry)
307             .build();
308     HttpJsonCallSettings<ListRoutesRequest, RouteList> listTransportSettings =
309         HttpJsonCallSettings.<ListRoutesRequest, RouteList>newBuilder()
310             .setMethodDescriptor(listMethodDescriptor)
311             .setTypeRegistry(typeRegistry)
312             .build();
313 
314     this.deleteCallable =
315         callableFactory.createUnaryCallable(
316             deleteTransportSettings, settings.deleteSettings(), clientContext);
317     this.deleteOperationCallable =
318         callableFactory.createOperationCallable(
319             deleteTransportSettings,
320             settings.deleteOperationSettings(),
321             clientContext,
322             httpJsonOperationsStub);
323     this.getCallable =
324         callableFactory.createUnaryCallable(
325             getTransportSettings, settings.getSettings(), clientContext);
326     this.insertCallable =
327         callableFactory.createUnaryCallable(
328             insertTransportSettings, settings.insertSettings(), clientContext);
329     this.insertOperationCallable =
330         callableFactory.createOperationCallable(
331             insertTransportSettings,
332             settings.insertOperationSettings(),
333             clientContext,
334             httpJsonOperationsStub);
335     this.listCallable =
336         callableFactory.createUnaryCallable(
337             listTransportSettings, settings.listSettings(), clientContext);
338     this.listPagedCallable =
339         callableFactory.createPagedCallable(
340             listTransportSettings, settings.listSettings(), clientContext);
341 
342     this.backgroundResources =
343         new BackgroundResourceAggregation(clientContext.getBackgroundResources());
344   }
345 
346   @InternalApi
getMethodDescriptors()347   public static List<ApiMethodDescriptor> getMethodDescriptors() {
348     List<ApiMethodDescriptor> methodDescriptors = new ArrayList<>();
349     methodDescriptors.add(deleteMethodDescriptor);
350     methodDescriptors.add(getMethodDescriptor);
351     methodDescriptors.add(insertMethodDescriptor);
352     methodDescriptors.add(listMethodDescriptor);
353     return methodDescriptors;
354   }
355 
356   @Override
deleteCallable()357   public UnaryCallable<DeleteRouteRequest, Operation> deleteCallable() {
358     return deleteCallable;
359   }
360 
361   @Override
deleteOperationCallable()362   public OperationCallable<DeleteRouteRequest, Operation, Operation> deleteOperationCallable() {
363     return deleteOperationCallable;
364   }
365 
366   @Override
getCallable()367   public UnaryCallable<GetRouteRequest, Route> getCallable() {
368     return getCallable;
369   }
370 
371   @Override
insertCallable()372   public UnaryCallable<InsertRouteRequest, Operation> insertCallable() {
373     return insertCallable;
374   }
375 
376   @Override
insertOperationCallable()377   public OperationCallable<InsertRouteRequest, Operation, Operation> insertOperationCallable() {
378     return insertOperationCallable;
379   }
380 
381   @Override
listCallable()382   public UnaryCallable<ListRoutesRequest, RouteList> listCallable() {
383     return listCallable;
384   }
385 
386   @Override
listPagedCallable()387   public UnaryCallable<ListRoutesRequest, ListPagedResponse> listPagedCallable() {
388     return listPagedCallable;
389   }
390 
391   @Override
close()392   public final void close() {
393     try {
394       backgroundResources.close();
395     } catch (RuntimeException e) {
396       throw e;
397     } catch (Exception e) {
398       throw new IllegalStateException("Failed to close resource", e);
399     }
400   }
401 
402   @Override
shutdown()403   public void shutdown() {
404     backgroundResources.shutdown();
405   }
406 
407   @Override
isShutdown()408   public boolean isShutdown() {
409     return backgroundResources.isShutdown();
410   }
411 
412   @Override
isTerminated()413   public boolean isTerminated() {
414     return backgroundResources.isTerminated();
415   }
416 
417   @Override
shutdownNow()418   public void shutdownNow() {
419     backgroundResources.shutdownNow();
420   }
421 
422   @Override
awaitTermination(long duration, TimeUnit unit)423   public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
424     return backgroundResources.awaitTermination(duration, unit);
425   }
426 }
427