diff --git a/java-service-management/google-cloud-service-management/pom.xml b/java-service-management/google-cloud-service-management/pom.xml index acd6362d6263..9cfc6e209f87 100644 --- a/java-service-management/google-cloud-service-management/pom.xml +++ b/java-service-management/google-cloud-service-management/pom.xml @@ -58,6 +58,10 @@ com.google.api gax-grpc + + com.google.api + gax-httpjson + org.threeten threetenbp @@ -77,12 +81,24 @@ test + + com.google.api + gax + testlib + test + com.google.api gax-grpc testlib test + + com.google.api + gax-httpjson + testlib + test + diff --git a/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/ServiceManagerClient.java b/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/ServiceManagerClient.java index 0d13aa7b385a..0e9a97ec064e 100644 --- a/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/ServiceManagerClient.java +++ b/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/ServiceManagerClient.java @@ -20,6 +20,7 @@ import com.google.api.core.ApiFuture; import com.google.api.core.ApiFutures; import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.httpjson.longrunning.OperationsClient; import com.google.api.gax.longrunning.OperationFuture; import com.google.api.gax.paging.AbstractFixedSizeCollection; import com.google.api.gax.paging.AbstractPage; @@ -54,7 +55,6 @@ import com.google.cloud.api.servicemanagement.v1.stub.ServiceManagerStubSettings; import com.google.common.util.concurrent.MoreExecutors; import com.google.longrunning.Operation; -import com.google.longrunning.OperationsClient; import com.google.protobuf.Any; import com.google.protobuf.Empty; import java.io.IOException; @@ -127,13 +127,28 @@ * ServiceManagerClient serviceManagerClient = ServiceManagerClient.create(serviceManagerSettings); * } * + *

To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over + * the wire: + * + *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
+ * ServiceManagerSettings serviceManagerSettings =
+ *     ServiceManagerSettings.newBuilder()
+ *         .setTransportChannelProvider(
+ *             ServiceManagerSettings.defaultHttpJsonTransportProviderBuilder().build())
+ *         .build();
+ * ServiceManagerClient serviceManagerClient = ServiceManagerClient.create(serviceManagerSettings);
+ * }
+ * *

Please refer to the GitHub repository's samples for more quickstart code snippets. */ @Generated("by gapic-generator-java") public class ServiceManagerClient implements BackgroundResource { private final ServiceManagerSettings settings; private final ServiceManagerStub stub; - private final OperationsClient operationsClient; + private final OperationsClient httpJsonOperationsClient; + private final com.google.longrunning.OperationsClient operationsClient; /** Constructs an instance of ServiceManagerClient with default settings. */ public static final ServiceManagerClient create() throws IOException { @@ -165,13 +180,17 @@ public static final ServiceManagerClient create(ServiceManagerStub stub) { protected ServiceManagerClient(ServiceManagerSettings settings) throws IOException { this.settings = settings; this.stub = ((ServiceManagerStubSettings) settings.getStubSettings()).createStub(); - this.operationsClient = OperationsClient.create(this.stub.getOperationsStub()); + this.operationsClient = + com.google.longrunning.OperationsClient.create(this.stub.getOperationsStub()); + this.httpJsonOperationsClient = OperationsClient.create(this.stub.getHttpJsonOperationsStub()); } protected ServiceManagerClient(ServiceManagerStub stub) { this.settings = null; this.stub = stub; - this.operationsClient = OperationsClient.create(this.stub.getOperationsStub()); + this.operationsClient = + com.google.longrunning.OperationsClient.create(this.stub.getOperationsStub()); + this.httpJsonOperationsClient = OperationsClient.create(this.stub.getHttpJsonOperationsStub()); } public final ServiceManagerSettings getSettings() { @@ -186,10 +205,18 @@ public ServiceManagerStub getStub() { * Returns the OperationsClient that can be used to query the status of a long-running operation * returned by another API method call. */ - public final OperationsClient getOperationsClient() { + public final com.google.longrunning.OperationsClient getOperationsClient() { return operationsClient; } + /** + * Returns the OperationsClient that can be used to query the status of a long-running operation + * returned by another API method call. + */ + public final OperationsClient getHttpJsonOperationsClient() { + return httpJsonOperationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD. /** * Lists managed services. @@ -316,7 +343,7 @@ public final ListServicesPagedResponse listServices(ListServicesRequest request) * .build(); * while (true) { * ListServicesResponse response = serviceManagerClient.listServicesCallable().call(request); - * for (ManagedService element : response.getResponsesList()) { + * for (ManagedService element : response.getServicesList()) { * // doThingsWith(element); * } * String nextPageToken = response.getNextPageToken(); @@ -873,7 +900,7 @@ public final ListServiceConfigsPagedResponse listServiceConfigs( * while (true) { * ListServiceConfigsResponse response = * serviceManagerClient.listServiceConfigsCallable().call(request); - * for (Service element : response.getResponsesList()) { + * for (Service element : response.getServiceConfigsList()) { * // doThingsWith(element); * } * String nextPageToken = response.getNextPageToken(); @@ -1364,7 +1391,7 @@ public final ListServiceRolloutsPagedResponse listServiceRollouts( * while (true) { * ListServiceRolloutsResponse response = * serviceManagerClient.listServiceRolloutsCallable().call(request); - * for (Rollout element : response.getResponsesList()) { + * for (Rollout element : response.getRolloutsList()) { * // doThingsWith(element); * } * String nextPageToken = response.getNextPageToken(); diff --git a/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/ServiceManagerSettings.java b/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/ServiceManagerSettings.java index ee1ba819b27a..c009a40c03ad 100644 --- a/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/ServiceManagerSettings.java +++ b/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/ServiceManagerSettings.java @@ -26,6 +26,7 @@ import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; @@ -227,11 +228,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde return ServiceManagerStubSettings.defaultCredentialsProviderBuilder(); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return ServiceManagerStubSettings.defaultGrpcTransportProviderBuilder(); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return ServiceManagerStubSettings.defaultHttpJsonTransportProviderBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return ServiceManagerStubSettings.defaultTransportChannelProvider(); } @@ -241,11 +249,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil return ServiceManagerStubSettings.defaultApiClientHeaderProviderBuilder(); } - /** Returns a new builder for this class. */ + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + @BetaApi + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -283,6 +297,11 @@ private static Builder createDefault() { return new Builder(ServiceManagerStubSettings.newBuilder()); } + @BetaApi + private static Builder createHttpJsonDefault() { + return new Builder(ServiceManagerStubSettings.newHttpJsonBuilder()); + } + public ServiceManagerStubSettings.Builder getStubSettingsBuilder() { return ((ServiceManagerStubSettings.Builder) getStubSettings()); } diff --git a/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/HttpJsonServiceManagerCallableFactory.java b/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/HttpJsonServiceManagerCallableFactory.java new file mode 100644 index 000000000000..60ba1a89d7bd --- /dev/null +++ b/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/HttpJsonServiceManagerCallableFactory.java @@ -0,0 +1,105 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.api.servicemanagement.v1.stub; + +import com.google.api.core.BetaApi; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonCallableFactory; +import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.longrunning.stub.OperationsStub; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallSettings; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST callable factory implementation for the ServiceManager service API. + * + *

This class is for advanced usage. + */ +@Generated("by gapic-generator-java") +@BetaApi +public class HttpJsonServiceManagerCallableFactory + implements HttpJsonStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + HttpJsonCallSettings httpJsonCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createUnaryCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + HttpJsonCallSettings httpJsonCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createPagedCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + HttpJsonCallSettings httpJsonCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createBatchingCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + @Override + public + OperationCallable createOperationCallable( + HttpJsonCallSettings httpJsonCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + UnaryCallable innerCallable = + HttpJsonCallableFactory.createBaseUnaryCallable( + httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext); + HttpJsonOperationSnapshotCallable initialCallable = + new HttpJsonOperationSnapshotCallable( + innerCallable, + httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory()); + return HttpJsonCallableFactory.createOperationCallable( + callSettings, clientContext, operationsStub.longRunningClient(), initialCallable); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + HttpJsonCallSettings httpJsonCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createServerStreamingCallable( + httpJsonCallSettings, callSettings, clientContext); + } +} diff --git a/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/HttpJsonServiceManagerStub.java b/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/HttpJsonServiceManagerStub.java new file mode 100644 index 000000000000..c8f788874303 --- /dev/null +++ b/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/HttpJsonServiceManagerStub.java @@ -0,0 +1,1002 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.api.servicemanagement.v1.stub; + +import static com.google.cloud.api.servicemanagement.v1.ServiceManagerClient.ListServiceConfigsPagedResponse; +import static com.google.cloud.api.servicemanagement.v1.ServiceManagerClient.ListServiceRolloutsPagedResponse; +import static com.google.cloud.api.servicemanagement.v1.ServiceManagerClient.ListServicesPagedResponse; + +import com.google.api.Service; +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonOperationSnapshot; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; +import com.google.api.gax.httpjson.ProtoMessageResponseParser; +import com.google.api.gax.httpjson.ProtoRestSerializer; +import com.google.api.gax.httpjson.longrunning.stub.HttpJsonOperationsStub; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.api.servicemanagement.v1.CreateServiceConfigRequest; +import com.google.api.servicemanagement.v1.CreateServiceRequest; +import com.google.api.servicemanagement.v1.CreateServiceRolloutRequest; +import com.google.api.servicemanagement.v1.DeleteServiceRequest; +import com.google.api.servicemanagement.v1.GenerateConfigReportRequest; +import com.google.api.servicemanagement.v1.GenerateConfigReportResponse; +import com.google.api.servicemanagement.v1.GetServiceConfigRequest; +import com.google.api.servicemanagement.v1.GetServiceRequest; +import com.google.api.servicemanagement.v1.GetServiceRolloutRequest; +import com.google.api.servicemanagement.v1.ListServiceConfigsRequest; +import com.google.api.servicemanagement.v1.ListServiceConfigsResponse; +import com.google.api.servicemanagement.v1.ListServiceRolloutsRequest; +import com.google.api.servicemanagement.v1.ListServiceRolloutsResponse; +import com.google.api.servicemanagement.v1.ListServicesRequest; +import com.google.api.servicemanagement.v1.ListServicesResponse; +import com.google.api.servicemanagement.v1.ManagedService; +import com.google.api.servicemanagement.v1.OperationMetadata; +import com.google.api.servicemanagement.v1.Rollout; +import com.google.api.servicemanagement.v1.SubmitConfigSourceRequest; +import com.google.api.servicemanagement.v1.SubmitConfigSourceResponse; +import com.google.api.servicemanagement.v1.UndeleteServiceRequest; +import com.google.api.servicemanagement.v1.UndeleteServiceResponse; +import com.google.longrunning.Operation; +import com.google.protobuf.Empty; +import com.google.protobuf.TypeRegistry; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST stub implementation for the ServiceManager service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@Generated("by gapic-generator-java") +@BetaApi +public class HttpJsonServiceManagerStub extends ServiceManagerStub { + private static final TypeRegistry typeRegistry = + TypeRegistry.newBuilder() + .add(Empty.getDescriptor()) + .add(Rollout.getDescriptor()) + .add(OperationMetadata.getDescriptor()) + .add(UndeleteServiceResponse.getDescriptor()) + .add(SubmitConfigSourceResponse.getDescriptor()) + .add(ManagedService.getDescriptor()) + .build(); + + private static final ApiMethodDescriptor + listServicesMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.api.servicemanagement.v1.ServiceManager/ListServices") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "consumerId", request.getConsumerId()); + serializer.putQueryParam(fields, "pageSize", request.getPageSize()); + serializer.putQueryParam(fields, "pageToken", request.getPageToken()); + serializer.putQueryParam( + fields, "producerProjectId", request.getProducerProjectId()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(ListServicesResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + getServiceMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.api.servicemanagement.v1.ServiceManager/GetService") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services/{serviceName}", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam( + fields, "serviceName", request.getServiceName()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(ManagedService.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + createServiceMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.api.servicemanagement.v1.ServiceManager/CreateService") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create().toBody("service", request.getService())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Operation.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .setOperationSnapshotFactory( + (CreateServiceRequest request, Operation response) -> + HttpJsonOperationSnapshot.create(response)) + .build(); + + private static final ApiMethodDescriptor + deleteServiceMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.api.servicemanagement.v1.ServiceManager/DeleteService") + .setHttpMethod("DELETE") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services/{serviceName}", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam( + fields, "serviceName", request.getServiceName()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Operation.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .setOperationSnapshotFactory( + (DeleteServiceRequest request, Operation response) -> + HttpJsonOperationSnapshot.create(response)) + .build(); + + private static final ApiMethodDescriptor + undeleteServiceMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.api.servicemanagement.v1.ServiceManager/UndeleteService") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services/{serviceName}:undelete", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam( + fields, "serviceName", request.getServiceName()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Operation.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .setOperationSnapshotFactory( + (UndeleteServiceRequest request, Operation response) -> + HttpJsonOperationSnapshot.create(response)) + .build(); + + private static final ApiMethodDescriptor + listServiceConfigsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName( + "google.api.servicemanagement.v1.ServiceManager/ListServiceConfigs") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services/{serviceName}/configs", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam( + fields, "serviceName", request.getServiceName()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "pageSize", request.getPageSize()); + serializer.putQueryParam(fields, "pageToken", request.getPageToken()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(ListServiceConfigsResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + getServiceConfigMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.api.servicemanagement.v1.ServiceManager/GetServiceConfig") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services/{serviceName}/configs/{configId}", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "configId", request.getConfigId()); + serializer.putPathParam( + fields, "serviceName", request.getServiceName()); + return fields; + }) + .setAdditionalPaths("/v1/services/{serviceName}/config") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "view", request.getView()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Service.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + createServiceConfigMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName( + "google.api.servicemanagement.v1.ServiceManager/CreateServiceConfig") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services/{serviceName}/configs", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam( + fields, "serviceName", request.getServiceName()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("serviceConfig", request.getServiceConfig())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Service.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + submitConfigSourceMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName( + "google.api.servicemanagement.v1.ServiceManager/SubmitConfigSource") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services/{serviceName}/configs:submit", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam( + fields, "serviceName", request.getServiceName()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearServiceName().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Operation.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .setOperationSnapshotFactory( + (SubmitConfigSourceRequest request, Operation response) -> + HttpJsonOperationSnapshot.create(response)) + .build(); + + private static final ApiMethodDescriptor + listServiceRolloutsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName( + "google.api.servicemanagement.v1.ServiceManager/ListServiceRollouts") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services/{serviceName}/rollouts", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam( + fields, "serviceName", request.getServiceName()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "filter", request.getFilter()); + serializer.putQueryParam(fields, "pageSize", request.getPageSize()); + serializer.putQueryParam(fields, "pageToken", request.getPageToken()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(ListServiceRolloutsResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + getServiceRolloutMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.api.servicemanagement.v1.ServiceManager/GetServiceRollout") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services/{serviceName}/rollouts/{rolloutId}", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "rolloutId", request.getRolloutId()); + serializer.putPathParam( + fields, "serviceName", request.getServiceName()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Rollout.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + createServiceRolloutMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName( + "google.api.servicemanagement.v1.ServiceManager/CreateServiceRollout") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services/{serviceName}/rollouts", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam( + fields, "serviceName", request.getServiceName()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create().toBody("rollout", request.getRollout())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Operation.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .setOperationSnapshotFactory( + (CreateServiceRolloutRequest request, Operation response) -> + HttpJsonOperationSnapshot.create(response)) + .build(); + + private static final ApiMethodDescriptor< + GenerateConfigReportRequest, GenerateConfigReportResponse> + generateConfigReportMethodDescriptor = + ApiMethodDescriptor + .newBuilder() + .setFullMethodName( + "google.api.servicemanagement.v1.ServiceManager/GenerateConfigReport") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/services:generateConfigReport", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create().toBody("*", request.toBuilder().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(GenerateConfigReportResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable listServicesCallable; + private final UnaryCallable + listServicesPagedCallable; + private final UnaryCallable getServiceCallable; + private final UnaryCallable createServiceCallable; + private final OperationCallable + createServiceOperationCallable; + private final UnaryCallable deleteServiceCallable; + private final OperationCallable + deleteServiceOperationCallable; + private final UnaryCallable undeleteServiceCallable; + private final OperationCallable< + UndeleteServiceRequest, UndeleteServiceResponse, OperationMetadata> + undeleteServiceOperationCallable; + private final UnaryCallable + listServiceConfigsCallable; + private final UnaryCallable + listServiceConfigsPagedCallable; + private final UnaryCallable getServiceConfigCallable; + private final UnaryCallable createServiceConfigCallable; + private final UnaryCallable submitConfigSourceCallable; + private final OperationCallable< + SubmitConfigSourceRequest, SubmitConfigSourceResponse, OperationMetadata> + submitConfigSourceOperationCallable; + private final UnaryCallable + listServiceRolloutsCallable; + private final UnaryCallable + listServiceRolloutsPagedCallable; + private final UnaryCallable getServiceRolloutCallable; + private final UnaryCallable createServiceRolloutCallable; + private final OperationCallable + createServiceRolloutOperationCallable; + private final UnaryCallable + generateConfigReportCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonOperationsStub httpJsonOperationsStub; + private final HttpJsonStubCallableFactory callableFactory; + + public static final HttpJsonServiceManagerStub create(ServiceManagerStubSettings settings) + throws IOException { + return new HttpJsonServiceManagerStub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonServiceManagerStub create(ClientContext clientContext) + throws IOException { + return new HttpJsonServiceManagerStub( + ServiceManagerStubSettings.newHttpJsonBuilder().build(), clientContext); + } + + public static final HttpJsonServiceManagerStub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonServiceManagerStub( + ServiceManagerStubSettings.newHttpJsonBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of HttpJsonServiceManagerStub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonServiceManagerStub( + ServiceManagerStubSettings settings, ClientContext clientContext) throws IOException { + this(settings, clientContext, new HttpJsonServiceManagerCallableFactory()); + } + + /** + * Constructs an instance of HttpJsonServiceManagerStub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonServiceManagerStub( + ServiceManagerStubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + this.httpJsonOperationsStub = + HttpJsonOperationsStub.create(clientContext, callableFactory, typeRegistry); + + HttpJsonCallSettings listServicesTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(listServicesMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings getServiceTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(getServiceMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings createServiceTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(createServiceMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings deleteServiceTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(deleteServiceMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings undeleteServiceTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(undeleteServiceMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + listServiceConfigsTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(listServiceConfigsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings getServiceConfigTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(getServiceConfigMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings createServiceConfigTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(createServiceConfigMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings submitConfigSourceTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(submitConfigSourceMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + listServiceRolloutsTransportSettings = + HttpJsonCallSettings + .newBuilder() + .setMethodDescriptor(listServiceRolloutsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings getServiceRolloutTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(getServiceRolloutMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + createServiceRolloutTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(createServiceRolloutMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + generateConfigReportTransportSettings = + HttpJsonCallSettings + .newBuilder() + .setMethodDescriptor(generateConfigReportMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + + this.listServicesCallable = + callableFactory.createUnaryCallable( + listServicesTransportSettings, settings.listServicesSettings(), clientContext); + this.listServicesPagedCallable = + callableFactory.createPagedCallable( + listServicesTransportSettings, settings.listServicesSettings(), clientContext); + this.getServiceCallable = + callableFactory.createUnaryCallable( + getServiceTransportSettings, settings.getServiceSettings(), clientContext); + this.createServiceCallable = + callableFactory.createUnaryCallable( + createServiceTransportSettings, settings.createServiceSettings(), clientContext); + this.createServiceOperationCallable = + callableFactory.createOperationCallable( + createServiceTransportSettings, + settings.createServiceOperationSettings(), + clientContext, + httpJsonOperationsStub); + this.deleteServiceCallable = + callableFactory.createUnaryCallable( + deleteServiceTransportSettings, settings.deleteServiceSettings(), clientContext); + this.deleteServiceOperationCallable = + callableFactory.createOperationCallable( + deleteServiceTransportSettings, + settings.deleteServiceOperationSettings(), + clientContext, + httpJsonOperationsStub); + this.undeleteServiceCallable = + callableFactory.createUnaryCallable( + undeleteServiceTransportSettings, settings.undeleteServiceSettings(), clientContext); + this.undeleteServiceOperationCallable = + callableFactory.createOperationCallable( + undeleteServiceTransportSettings, + settings.undeleteServiceOperationSettings(), + clientContext, + httpJsonOperationsStub); + this.listServiceConfigsCallable = + callableFactory.createUnaryCallable( + listServiceConfigsTransportSettings, + settings.listServiceConfigsSettings(), + clientContext); + this.listServiceConfigsPagedCallable = + callableFactory.createPagedCallable( + listServiceConfigsTransportSettings, + settings.listServiceConfigsSettings(), + clientContext); + this.getServiceConfigCallable = + callableFactory.createUnaryCallable( + getServiceConfigTransportSettings, settings.getServiceConfigSettings(), clientContext); + this.createServiceConfigCallable = + callableFactory.createUnaryCallable( + createServiceConfigTransportSettings, + settings.createServiceConfigSettings(), + clientContext); + this.submitConfigSourceCallable = + callableFactory.createUnaryCallable( + submitConfigSourceTransportSettings, + settings.submitConfigSourceSettings(), + clientContext); + this.submitConfigSourceOperationCallable = + callableFactory.createOperationCallable( + submitConfigSourceTransportSettings, + settings.submitConfigSourceOperationSettings(), + clientContext, + httpJsonOperationsStub); + this.listServiceRolloutsCallable = + callableFactory.createUnaryCallable( + listServiceRolloutsTransportSettings, + settings.listServiceRolloutsSettings(), + clientContext); + this.listServiceRolloutsPagedCallable = + callableFactory.createPagedCallable( + listServiceRolloutsTransportSettings, + settings.listServiceRolloutsSettings(), + clientContext); + this.getServiceRolloutCallable = + callableFactory.createUnaryCallable( + getServiceRolloutTransportSettings, + settings.getServiceRolloutSettings(), + clientContext); + this.createServiceRolloutCallable = + callableFactory.createUnaryCallable( + createServiceRolloutTransportSettings, + settings.createServiceRolloutSettings(), + clientContext); + this.createServiceRolloutOperationCallable = + callableFactory.createOperationCallable( + createServiceRolloutTransportSettings, + settings.createServiceRolloutOperationSettings(), + clientContext, + httpJsonOperationsStub); + this.generateConfigReportCallable = + callableFactory.createUnaryCallable( + generateConfigReportTransportSettings, + settings.generateConfigReportSettings(), + clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(listServicesMethodDescriptor); + methodDescriptors.add(getServiceMethodDescriptor); + methodDescriptors.add(createServiceMethodDescriptor); + methodDescriptors.add(deleteServiceMethodDescriptor); + methodDescriptors.add(undeleteServiceMethodDescriptor); + methodDescriptors.add(listServiceConfigsMethodDescriptor); + methodDescriptors.add(getServiceConfigMethodDescriptor); + methodDescriptors.add(createServiceConfigMethodDescriptor); + methodDescriptors.add(submitConfigSourceMethodDescriptor); + methodDescriptors.add(listServiceRolloutsMethodDescriptor); + methodDescriptors.add(getServiceRolloutMethodDescriptor); + methodDescriptors.add(createServiceRolloutMethodDescriptor); + methodDescriptors.add(generateConfigReportMethodDescriptor); + return methodDescriptors; + } + + public HttpJsonOperationsStub getHttpJsonOperationsStub() { + return httpJsonOperationsStub; + } + + @Override + public UnaryCallable listServicesCallable() { + return listServicesCallable; + } + + @Override + public UnaryCallable listServicesPagedCallable() { + return listServicesPagedCallable; + } + + @Override + public UnaryCallable getServiceCallable() { + return getServiceCallable; + } + + @Override + public UnaryCallable createServiceCallable() { + return createServiceCallable; + } + + @Override + public OperationCallable + createServiceOperationCallable() { + return createServiceOperationCallable; + } + + @Override + public UnaryCallable deleteServiceCallable() { + return deleteServiceCallable; + } + + @Override + public OperationCallable + deleteServiceOperationCallable() { + return deleteServiceOperationCallable; + } + + @Override + public UnaryCallable undeleteServiceCallable() { + return undeleteServiceCallable; + } + + @Override + public OperationCallable + undeleteServiceOperationCallable() { + return undeleteServiceOperationCallable; + } + + @Override + public UnaryCallable + listServiceConfigsCallable() { + return listServiceConfigsCallable; + } + + @Override + public UnaryCallable + listServiceConfigsPagedCallable() { + return listServiceConfigsPagedCallable; + } + + @Override + public UnaryCallable getServiceConfigCallable() { + return getServiceConfigCallable; + } + + @Override + public UnaryCallable createServiceConfigCallable() { + return createServiceConfigCallable; + } + + @Override + public UnaryCallable submitConfigSourceCallable() { + return submitConfigSourceCallable; + } + + @Override + public OperationCallable + submitConfigSourceOperationCallable() { + return submitConfigSourceOperationCallable; + } + + @Override + public UnaryCallable + listServiceRolloutsCallable() { + return listServiceRolloutsCallable; + } + + @Override + public UnaryCallable + listServiceRolloutsPagedCallable() { + return listServiceRolloutsPagedCallable; + } + + @Override + public UnaryCallable getServiceRolloutCallable() { + return getServiceRolloutCallable; + } + + @Override + public UnaryCallable createServiceRolloutCallable() { + return createServiceRolloutCallable; + } + + @Override + public OperationCallable + createServiceRolloutOperationCallable() { + return createServiceRolloutOperationCallable; + } + + @Override + public UnaryCallable + generateConfigReportCallable() { + return generateConfigReportCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/ServiceManagerStub.java b/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/ServiceManagerStub.java index f930581c0d3b..97debe6c2687 100644 --- a/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/ServiceManagerStub.java +++ b/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/ServiceManagerStub.java @@ -61,7 +61,11 @@ public abstract class ServiceManagerStub implements BackgroundResource { public OperationsStub getOperationsStub() { - throw new UnsupportedOperationException("Not implemented: getOperationsStub()"); + return null; + } + + public com.google.api.gax.httpjson.longrunning.stub.OperationsStub getHttpJsonOperationsStub() { + return null; } public UnaryCallable listServicesPagedCallable() { diff --git a/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/ServiceManagerStubSettings.java b/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/ServiceManagerStubSettings.java index 9e6727fdda7d..6589cd500624 100644 --- a/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/ServiceManagerStubSettings.java +++ b/java-service-management/google-cloud-service-management/src/main/java/com/google/cloud/api/servicemanagement/v1/stub/ServiceManagerStubSettings.java @@ -31,6 +31,9 @@ import com.google.api.gax.grpc.GrpcTransportChannel; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; import com.google.api.gax.grpc.ProtoOperationTransformers; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.HttpJsonTransportChannel; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.longrunning.OperationSnapshot; import com.google.api.gax.longrunning.OperationTimedPollAlgorithm; import com.google.api.gax.retrying.RetrySettings; @@ -444,6 +447,11 @@ public ServiceManagerStub createStub() throws IOException { .equals(GrpcTransportChannel.getGrpcTransportName())) { return GrpcServiceManagerStub.create(this); } + if (getTransportChannelProvider() + .getTransportName() + .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { + return HttpJsonServiceManagerStub.create(this); + } throw new UnsupportedOperationException( String.format( "Transport not supported: %s", getTransportChannelProvider().getTransportName())); @@ -476,18 +484,25 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde .setUseJwtAccessWithScope(true); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return InstantiatingGrpcChannelProvider.newBuilder() .setMaxInboundMessageSize(Integer.MAX_VALUE); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return InstantiatingHttpJsonChannelProvider.newBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return defaultGrpcTransportProviderBuilder().build(); } @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") - public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { return ApiClientHeaderProvider.newBuilder() .setGeneratedLibToken( "gapic", GaxProperties.getLibraryVersion(ServiceManagerStubSettings.class)) @@ -495,11 +510,30 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); } - /** Returns a new builder for this class. */ + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken( + "gapic", GaxProperties.getLibraryVersion(ServiceManagerStubSettings.class)) + .setTransportToken( + GaxHttpJsonProperties.getHttpJsonTokenName(), + GaxHttpJsonProperties.getHttpJsonVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return ServiceManagerStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -707,6 +741,19 @@ private static Builder createDefault() { return initDefaults(builder); } + private static Builder createHttpJsonDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + private static Builder initDefaults(Builder builder) { builder .listServicesSettings() diff --git a/java-service-management/google-cloud-service-management/src/test/java/com/google/cloud/api/servicemanagement/v1/ServiceManagerClientHttpJsonTest.java b/java-service-management/google-cloud-service-management/src/test/java/com/google/cloud/api/servicemanagement/v1/ServiceManagerClientHttpJsonTest.java new file mode 100644 index 000000000000..1f8abc45f08c --- /dev/null +++ b/java-service-management/google-cloud-service-management/src/test/java/com/google/cloud/api/servicemanagement/v1/ServiceManagerClientHttpJsonTest.java @@ -0,0 +1,812 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.api.servicemanagement.v1; + +import static com.google.cloud.api.servicemanagement.v1.ServiceManagerClient.ListServiceConfigsPagedResponse; +import static com.google.cloud.api.servicemanagement.v1.ServiceManagerClient.ListServiceRolloutsPagedResponse; +import static com.google.cloud.api.servicemanagement.v1.ServiceManagerClient.ListServicesPagedResponse; + +import com.google.api.Authentication; +import com.google.api.Backend; +import com.google.api.Billing; +import com.google.api.Context; +import com.google.api.Control; +import com.google.api.Documentation; +import com.google.api.Endpoint; +import com.google.api.Http; +import com.google.api.LogDescriptor; +import com.google.api.Logging; +import com.google.api.MetricDescriptor; +import com.google.api.MonitoredResourceDescriptor; +import com.google.api.Monitoring; +import com.google.api.Quota; +import com.google.api.Service; +import com.google.api.SourceInfo; +import com.google.api.SystemParameters; +import com.google.api.Usage; +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.testing.MockHttpService; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiException; +import com.google.api.gax.rpc.ApiExceptionFactory; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.testing.FakeStatusCode; +import com.google.api.servicemanagement.v1.ChangeReport; +import com.google.api.servicemanagement.v1.ConfigSource; +import com.google.api.servicemanagement.v1.Diagnostic; +import com.google.api.servicemanagement.v1.GenerateConfigReportResponse; +import com.google.api.servicemanagement.v1.GetServiceConfigRequest; +import com.google.api.servicemanagement.v1.ListServiceConfigsResponse; +import com.google.api.servicemanagement.v1.ListServiceRolloutsResponse; +import com.google.api.servicemanagement.v1.ListServicesResponse; +import com.google.api.servicemanagement.v1.ManagedService; +import com.google.api.servicemanagement.v1.Rollout; +import com.google.api.servicemanagement.v1.SubmitConfigSourceResponse; +import com.google.api.servicemanagement.v1.UndeleteServiceResponse; +import com.google.cloud.api.servicemanagement.v1.stub.HttpJsonServiceManagerStub; +import com.google.common.collect.Lists; +import com.google.longrunning.Operation; +import com.google.protobuf.Any; +import com.google.protobuf.Api; +import com.google.protobuf.Empty; +import com.google.protobuf.Enum; +import com.google.protobuf.Timestamp; +import com.google.protobuf.Type; +import com.google.protobuf.UInt32Value; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.ExecutionException; +import javax.annotation.Generated; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated("by gapic-generator-java") +public class ServiceManagerClientHttpJsonTest { + private static MockHttpService mockService; + private static ServiceManagerClient client; + + @BeforeClass + public static void startStaticServer() throws IOException { + mockService = + new MockHttpService( + HttpJsonServiceManagerStub.getMethodDescriptors(), + ServiceManagerSettings.getDefaultEndpoint()); + ServiceManagerSettings settings = + ServiceManagerSettings.newHttpJsonBuilder() + .setTransportChannelProvider( + ServiceManagerSettings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport(mockService) + .build()) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = ServiceManagerClient.create(settings); + } + + @AfterClass + public static void stopServer() { + client.close(); + } + + @Before + public void setUp() {} + + @After + public void tearDown() throws Exception { + mockService.reset(); + } + + @Test + public void listServicesTest() throws Exception { + ManagedService responsesElement = ManagedService.newBuilder().build(); + ListServicesResponse expectedResponse = + ListServicesResponse.newBuilder() + .setNextPageToken("") + .addAllServices(Arrays.asList(responsesElement)) + .build(); + mockService.addResponse(expectedResponse); + + String producerProjectId = "producerProjectId-1297373534"; + String consumerId = "consumerId-166238287"; + + ListServicesPagedResponse pagedListResponse = + client.listServices(producerProjectId, consumerId); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getServicesList().get(0), resources.get(0)); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void listServicesExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String producerProjectId = "producerProjectId-1297373534"; + String consumerId = "consumerId-166238287"; + client.listServices(producerProjectId, consumerId); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getServiceTest() throws Exception { + ManagedService expectedResponse = + ManagedService.newBuilder() + .setServiceName("serviceName-1928572192") + .setProducerProjectId("producerProjectId-1297373534") + .build(); + mockService.addResponse(expectedResponse); + + String serviceName = "serviceName-4234"; + + ManagedService actualResponse = client.getService(serviceName); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void getServiceExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String serviceName = "serviceName-4234"; + client.getService(serviceName); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createServiceTest() throws Exception { + ManagedService expectedResponse = + ManagedService.newBuilder() + .setServiceName("serviceName-1928572192") + .setProducerProjectId("producerProjectId-1297373534") + .build(); + Operation resultOperation = + Operation.newBuilder() + .setName("createServiceTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockService.addResponse(resultOperation); + + ManagedService service = ManagedService.newBuilder().build(); + + ManagedService actualResponse = client.createServiceAsync(service).get(); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void createServiceExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + ManagedService service = ManagedService.newBuilder().build(); + client.createServiceAsync(service).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + } + } + + @Test + public void deleteServiceTest() throws Exception { + Empty expectedResponse = Empty.newBuilder().build(); + Operation resultOperation = + Operation.newBuilder() + .setName("deleteServiceTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockService.addResponse(resultOperation); + + String serviceName = "serviceName-4234"; + + client.deleteServiceAsync(serviceName).get(); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void deleteServiceExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String serviceName = "serviceName-4234"; + client.deleteServiceAsync(serviceName).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + } + } + + @Test + public void undeleteServiceTest() throws Exception { + UndeleteServiceResponse expectedResponse = + UndeleteServiceResponse.newBuilder() + .setService(ManagedService.newBuilder().build()) + .build(); + Operation resultOperation = + Operation.newBuilder() + .setName("undeleteServiceTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockService.addResponse(resultOperation); + + String serviceName = "serviceName-4234"; + + UndeleteServiceResponse actualResponse = client.undeleteServiceAsync(serviceName).get(); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void undeleteServiceExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String serviceName = "serviceName-4234"; + client.undeleteServiceAsync(serviceName).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + } + } + + @Test + public void listServiceConfigsTest() throws Exception { + Service responsesElement = Service.newBuilder().build(); + ListServiceConfigsResponse expectedResponse = + ListServiceConfigsResponse.newBuilder() + .setNextPageToken("") + .addAllServiceConfigs(Arrays.asList(responsesElement)) + .build(); + mockService.addResponse(expectedResponse); + + String serviceName = "serviceName-4234"; + + ListServiceConfigsPagedResponse pagedListResponse = client.listServiceConfigs(serviceName); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getServiceConfigsList().get(0), resources.get(0)); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void listServiceConfigsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String serviceName = "serviceName-4234"; + client.listServiceConfigs(serviceName); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getServiceConfigTest() throws Exception { + Service expectedResponse = + Service.newBuilder() + .setName("name3373707") + .setTitle("title110371416") + .setProducerProjectId("producerProjectId-1297373534") + .setId("id3355") + .addAllApis(new ArrayList()) + .addAllTypes(new ArrayList()) + .addAllEnums(new ArrayList()) + .setDocumentation(Documentation.newBuilder().build()) + .setBackend(Backend.newBuilder().build()) + .setHttp(Http.newBuilder().build()) + .setQuota(Quota.newBuilder().build()) + .setAuthentication(Authentication.newBuilder().build()) + .setContext(Context.newBuilder().build()) + .setUsage(Usage.newBuilder().build()) + .addAllEndpoints(new ArrayList()) + .setControl(Control.newBuilder().build()) + .addAllLogs(new ArrayList()) + .addAllMetrics(new ArrayList()) + .addAllMonitoredResources(new ArrayList()) + .setBilling(Billing.newBuilder().build()) + .setLogging(Logging.newBuilder().build()) + .setMonitoring(Monitoring.newBuilder().build()) + .setSystemParameters(SystemParameters.newBuilder().build()) + .setSourceInfo(SourceInfo.newBuilder().build()) + .setConfigVersion(UInt32Value.newBuilder().build()) + .build(); + mockService.addResponse(expectedResponse); + + String serviceName = "serviceName-4234"; + String configId = "configId-1859"; + GetServiceConfigRequest.ConfigView view = GetServiceConfigRequest.ConfigView.forNumber(0); + + Service actualResponse = client.getServiceConfig(serviceName, configId, view); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void getServiceConfigExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String serviceName = "serviceName-4234"; + String configId = "configId-1859"; + GetServiceConfigRequest.ConfigView view = GetServiceConfigRequest.ConfigView.forNumber(0); + client.getServiceConfig(serviceName, configId, view); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createServiceConfigTest() throws Exception { + Service expectedResponse = + Service.newBuilder() + .setName("name3373707") + .setTitle("title110371416") + .setProducerProjectId("producerProjectId-1297373534") + .setId("id3355") + .addAllApis(new ArrayList()) + .addAllTypes(new ArrayList()) + .addAllEnums(new ArrayList()) + .setDocumentation(Documentation.newBuilder().build()) + .setBackend(Backend.newBuilder().build()) + .setHttp(Http.newBuilder().build()) + .setQuota(Quota.newBuilder().build()) + .setAuthentication(Authentication.newBuilder().build()) + .setContext(Context.newBuilder().build()) + .setUsage(Usage.newBuilder().build()) + .addAllEndpoints(new ArrayList()) + .setControl(Control.newBuilder().build()) + .addAllLogs(new ArrayList()) + .addAllMetrics(new ArrayList()) + .addAllMonitoredResources(new ArrayList()) + .setBilling(Billing.newBuilder().build()) + .setLogging(Logging.newBuilder().build()) + .setMonitoring(Monitoring.newBuilder().build()) + .setSystemParameters(SystemParameters.newBuilder().build()) + .setSourceInfo(SourceInfo.newBuilder().build()) + .setConfigVersion(UInt32Value.newBuilder().build()) + .build(); + mockService.addResponse(expectedResponse); + + String serviceName = "serviceName-4234"; + Service serviceConfig = Service.newBuilder().build(); + + Service actualResponse = client.createServiceConfig(serviceName, serviceConfig); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void createServiceConfigExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String serviceName = "serviceName-4234"; + Service serviceConfig = Service.newBuilder().build(); + client.createServiceConfig(serviceName, serviceConfig); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void submitConfigSourceTest() throws Exception { + SubmitConfigSourceResponse expectedResponse = + SubmitConfigSourceResponse.newBuilder() + .setServiceConfig(Service.newBuilder().build()) + .build(); + Operation resultOperation = + Operation.newBuilder() + .setName("submitConfigSourceTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockService.addResponse(resultOperation); + + String serviceName = "serviceName-4234"; + ConfigSource configSource = ConfigSource.newBuilder().build(); + boolean validateOnly = true; + + SubmitConfigSourceResponse actualResponse = + client.submitConfigSourceAsync(serviceName, configSource, validateOnly).get(); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void submitConfigSourceExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String serviceName = "serviceName-4234"; + ConfigSource configSource = ConfigSource.newBuilder().build(); + boolean validateOnly = true; + client.submitConfigSourceAsync(serviceName, configSource, validateOnly).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + } + } + + @Test + public void listServiceRolloutsTest() throws Exception { + Rollout responsesElement = Rollout.newBuilder().build(); + ListServiceRolloutsResponse expectedResponse = + ListServiceRolloutsResponse.newBuilder() + .setNextPageToken("") + .addAllRollouts(Arrays.asList(responsesElement)) + .build(); + mockService.addResponse(expectedResponse); + + String serviceName = "serviceName-4234"; + String filter = "filter-1274492040"; + + ListServiceRolloutsPagedResponse pagedListResponse = + client.listServiceRollouts(serviceName, filter); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getRolloutsList().get(0), resources.get(0)); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void listServiceRolloutsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String serviceName = "serviceName-4234"; + String filter = "filter-1274492040"; + client.listServiceRollouts(serviceName, filter); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getServiceRolloutTest() throws Exception { + Rollout expectedResponse = + Rollout.newBuilder() + .setRolloutId("rolloutId551248556") + .setCreateTime(Timestamp.newBuilder().build()) + .setCreatedBy("createdBy598371679") + .setServiceName("serviceName-1928572192") + .build(); + mockService.addResponse(expectedResponse); + + String serviceName = "serviceName-4234"; + String rolloutId = "rolloutId-3906"; + + Rollout actualResponse = client.getServiceRollout(serviceName, rolloutId); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void getServiceRolloutExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String serviceName = "serviceName-4234"; + String rolloutId = "rolloutId-3906"; + client.getServiceRollout(serviceName, rolloutId); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createServiceRolloutTest() throws Exception { + Rollout expectedResponse = + Rollout.newBuilder() + .setRolloutId("rolloutId551248556") + .setCreateTime(Timestamp.newBuilder().build()) + .setCreatedBy("createdBy598371679") + .setServiceName("serviceName-1928572192") + .build(); + Operation resultOperation = + Operation.newBuilder() + .setName("createServiceRolloutTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockService.addResponse(resultOperation); + + String serviceName = "serviceName-4234"; + Rollout rollout = Rollout.newBuilder().build(); + + Rollout actualResponse = client.createServiceRolloutAsync(serviceName, rollout).get(); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void createServiceRolloutExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String serviceName = "serviceName-4234"; + Rollout rollout = Rollout.newBuilder().build(); + client.createServiceRolloutAsync(serviceName, rollout).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + } + } + + @Test + public void generateConfigReportTest() throws Exception { + GenerateConfigReportResponse expectedResponse = + GenerateConfigReportResponse.newBuilder() + .setServiceName("serviceName-1928572192") + .setId("id3355") + .addAllChangeReports(new ArrayList()) + .addAllDiagnostics(new ArrayList()) + .build(); + mockService.addResponse(expectedResponse); + + Any newConfig = Any.newBuilder().build(); + Any oldConfig = Any.newBuilder().build(); + + GenerateConfigReportResponse actualResponse = client.generateConfigReport(newConfig, oldConfig); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void generateConfigReportExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + Any newConfig = Any.newBuilder().build(); + Any oldConfig = Any.newBuilder().build(); + client.generateConfigReport(newConfig, oldConfig); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +}