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