diff --git a/gapic-generator-java/pom.xml b/gapic-generator-java/pom.xml index 43422afe3e..0764fc8cea 100644 --- a/gapic-generator-java/pom.xml +++ b/gapic-generator-java/pom.xml @@ -14,7 +14,7 @@ true UTF-8 - 44d6bef0ca6db8bba3fb324c8186e694bcc4829c + 9fcfbea0aa5b50fa22e190faceb073d74504172b 1.8 1.8 diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientClassComposer.java index 0bd67e1663..913ffd0f5c 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientClassComposer.java @@ -1898,12 +1898,15 @@ private static void updateGapicMetadata( serviceClientProtoBuilder.putRpcs(rpcName, methodList); } - metadataBuilder = - metadataBuilder.putServices( - service.name(), - GapicMetadata.ServiceForTransport.newBuilder() - .putClients("grpc", serviceClientProtoBuilder.build()) - .build()); + GapicMetadata.ServiceForTransport.Builder grpcServiceClient = + GapicMetadata.ServiceForTransport.newBuilder() + .putClients("grpc", serviceClientProtoBuilder.build()); + + if (service.hasApiVersion()) { + grpcServiceClient.setApiVersion(service.apiVersion()); + } + + metadataBuilder = metadataBuilder.putServices(service.name(), grpcServiceClient.build()); context.updateGapicMetadata(metadataBuilder.build()); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/SubscriberClientTest.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/SubscriberClientTest.golden index d9a1215708..b0ffbf3c02 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/SubscriberClientTest.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/SubscriberClientTest.golden @@ -17,6 +17,7 @@ import com.google.api.gax.rpc.StatusCode; import com.google.common.collect.Lists; import com.google.protobuf.AbstractMessage; import com.google.protobuf.Empty; +import com.google.protobuf.FieldMask; import google.cloud.ProjectName; import io.grpc.StatusRuntimeException; import java.io.IOException; @@ -79,6 +80,8 @@ public class SubscriberClientTest { .setName(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString()) .setTopic(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString()) .setPushConfig(PushConfig.newBuilder().build()) + .setBigqueryConfig(BigQueryConfig.newBuilder().build()) + .setCloudStorageConfig(CloudStorageConfig.newBuilder().build()) .setAckDeadlineSeconds(2135351438) .setRetainAckedMessages(true) .putAllLabels(new HashMap()) @@ -89,6 +92,10 @@ public class SubscriberClientTest { .setRetryPolicy(RetryPolicy.newBuilder().build()) .setDetached(true) .setEnableExactlyOnceDelivery(true) + .setAnalyticsHubSubscriptionInfo( + Subscription.AnalyticsHubSubscriptionInfo.newBuilder().build()) + .addAllMessageTransforms(new ArrayList()) + .putAllTags(new HashMap()) .build(); mockSubscriber.addResponse(expectedResponse); @@ -139,6 +146,8 @@ public class SubscriberClientTest { .setName(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString()) .setTopic(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString()) .setPushConfig(PushConfig.newBuilder().build()) + .setBigqueryConfig(BigQueryConfig.newBuilder().build()) + .setCloudStorageConfig(CloudStorageConfig.newBuilder().build()) .setAckDeadlineSeconds(2135351438) .setRetainAckedMessages(true) .putAllLabels(new HashMap()) @@ -149,6 +158,10 @@ public class SubscriberClientTest { .setRetryPolicy(RetryPolicy.newBuilder().build()) .setDetached(true) .setEnableExactlyOnceDelivery(true) + .setAnalyticsHubSubscriptionInfo( + Subscription.AnalyticsHubSubscriptionInfo.newBuilder().build()) + .addAllMessageTransforms(new ArrayList()) + .putAllTags(new HashMap()) .build(); mockSubscriber.addResponse(expectedResponse); @@ -199,6 +212,8 @@ public class SubscriberClientTest { .setName(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString()) .setTopic(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString()) .setPushConfig(PushConfig.newBuilder().build()) + .setBigqueryConfig(BigQueryConfig.newBuilder().build()) + .setCloudStorageConfig(CloudStorageConfig.newBuilder().build()) .setAckDeadlineSeconds(2135351438) .setRetainAckedMessages(true) .putAllLabels(new HashMap()) @@ -209,6 +224,10 @@ public class SubscriberClientTest { .setRetryPolicy(RetryPolicy.newBuilder().build()) .setDetached(true) .setEnableExactlyOnceDelivery(true) + .setAnalyticsHubSubscriptionInfo( + Subscription.AnalyticsHubSubscriptionInfo.newBuilder().build()) + .addAllMessageTransforms(new ArrayList()) + .putAllTags(new HashMap()) .build(); mockSubscriber.addResponse(expectedResponse); @@ -259,6 +278,8 @@ public class SubscriberClientTest { .setName(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString()) .setTopic(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString()) .setPushConfig(PushConfig.newBuilder().build()) + .setBigqueryConfig(BigQueryConfig.newBuilder().build()) + .setCloudStorageConfig(CloudStorageConfig.newBuilder().build()) .setAckDeadlineSeconds(2135351438) .setRetainAckedMessages(true) .putAllLabels(new HashMap()) @@ -269,6 +290,10 @@ public class SubscriberClientTest { .setRetryPolicy(RetryPolicy.newBuilder().build()) .setDetached(true) .setEnableExactlyOnceDelivery(true) + .setAnalyticsHubSubscriptionInfo( + Subscription.AnalyticsHubSubscriptionInfo.newBuilder().build()) + .addAllMessageTransforms(new ArrayList()) + .putAllTags(new HashMap()) .build(); mockSubscriber.addResponse(expectedResponse); @@ -319,6 +344,8 @@ public class SubscriberClientTest { .setName(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString()) .setTopic(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString()) .setPushConfig(PushConfig.newBuilder().build()) + .setBigqueryConfig(BigQueryConfig.newBuilder().build()) + .setCloudStorageConfig(CloudStorageConfig.newBuilder().build()) .setAckDeadlineSeconds(2135351438) .setRetainAckedMessages(true) .putAllLabels(new HashMap()) @@ -329,6 +356,10 @@ public class SubscriberClientTest { .setRetryPolicy(RetryPolicy.newBuilder().build()) .setDetached(true) .setEnableExactlyOnceDelivery(true) + .setAnalyticsHubSubscriptionInfo( + Subscription.AnalyticsHubSubscriptionInfo.newBuilder().build()) + .addAllMessageTransforms(new ArrayList()) + .putAllTags(new HashMap()) .build(); mockSubscriber.addResponse(expectedResponse); @@ -369,6 +400,8 @@ public class SubscriberClientTest { .setName(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString()) .setTopic(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString()) .setPushConfig(PushConfig.newBuilder().build()) + .setBigqueryConfig(BigQueryConfig.newBuilder().build()) + .setCloudStorageConfig(CloudStorageConfig.newBuilder().build()) .setAckDeadlineSeconds(2135351438) .setRetainAckedMessages(true) .putAllLabels(new HashMap()) @@ -379,6 +412,10 @@ public class SubscriberClientTest { .setRetryPolicy(RetryPolicy.newBuilder().build()) .setDetached(true) .setEnableExactlyOnceDelivery(true) + .setAnalyticsHubSubscriptionInfo( + Subscription.AnalyticsHubSubscriptionInfo.newBuilder().build()) + .addAllMessageTransforms(new ArrayList()) + .putAllTags(new HashMap()) .build(); mockSubscriber.addResponse(expectedResponse); @@ -419,6 +456,8 @@ public class SubscriberClientTest { .setName(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString()) .setTopic(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString()) .setPushConfig(PushConfig.newBuilder().build()) + .setBigqueryConfig(BigQueryConfig.newBuilder().build()) + .setCloudStorageConfig(CloudStorageConfig.newBuilder().build()) .setAckDeadlineSeconds(2135351438) .setRetainAckedMessages(true) .putAllLabels(new HashMap()) @@ -429,23 +468,25 @@ public class SubscriberClientTest { .setRetryPolicy(RetryPolicy.newBuilder().build()) .setDetached(true) .setEnableExactlyOnceDelivery(true) + .setAnalyticsHubSubscriptionInfo( + Subscription.AnalyticsHubSubscriptionInfo.newBuilder().build()) + .addAllMessageTransforms(new ArrayList()) + .putAllTags(new HashMap()) .build(); mockSubscriber.addResponse(expectedResponse); - UpdateSubscriptionRequest request = - UpdateSubscriptionRequest.newBuilder() - .setSubscription(Subscription.newBuilder().build()) - .build(); + Subscription subscription = Subscription.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); - Subscription actualResponse = client.updateSubscription(request); + Subscription actualResponse = client.updateSubscription(subscription, updateMask); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockSubscriber.getRequests(); Assert.assertEquals(1, actualRequests.size()); UpdateSubscriptionRequest actualRequest = ((UpdateSubscriptionRequest) actualRequests.get(0)); - Assert.assertEquals(request.getSubscription(), actualRequest.getSubscription()); - Assert.assertEquals(request.getUpdateMask(), actualRequest.getUpdateMask()); + Assert.assertEquals(subscription, actualRequest.getSubscription()); + Assert.assertEquals(updateMask, actualRequest.getUpdateMask()); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -458,11 +499,9 @@ public class SubscriberClientTest { mockSubscriber.addException(exception); try { - UpdateSubscriptionRequest request = - UpdateSubscriptionRequest.newBuilder() - .setSubscription(Subscription.newBuilder().build()) - .build(); - client.updateSubscription(request); + Subscription subscription = Subscription.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + client.updateSubscription(subscription, updateMask); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception. @@ -946,7 +985,7 @@ public class SubscriberClientTest { StreamingPullResponse expectedResponse = StreamingPullResponse.newBuilder() .addAllReceivedMessages(new ArrayList()) - .setAcknowlegeConfirmation( + .setAcknowledgeConfirmation( StreamingPullResponse.AcknowledgeConfirmation.newBuilder().build()) .setModifyAckDeadlineConfirmation( StreamingPullResponse.ModifyAckDeadlineConfirmation.newBuilder().build()) @@ -964,6 +1003,7 @@ public class SubscriberClientTest { .setClientId("clientId908408390") .setMaxOutstandingMessages(-1315266996) .setMaxOutstandingBytes(-2103098517) + .setProtocolVersion(-1161610703) .build(); MockStreamObserver responseObserver = new MockStreamObserver<>(); @@ -995,6 +1035,7 @@ public class SubscriberClientTest { .setClientId("clientId908408390") .setMaxOutstandingMessages(-1315266996) .setMaxOutstandingBytes(-2103098517) + .setProtocolVersion(-1161610703) .build(); MockStreamObserver responseObserver = new MockStreamObserver<>(); @@ -1440,18 +1481,18 @@ public class SubscriberClientTest { .build(); mockSubscriber.addResponse(expectedResponse); - UpdateSnapshotRequest request = - UpdateSnapshotRequest.newBuilder().setSnapshot(Snapshot.newBuilder().build()).build(); + Snapshot snapshot = Snapshot.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); - Snapshot actualResponse = client.updateSnapshot(request); + Snapshot actualResponse = client.updateSnapshot(snapshot, updateMask); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockSubscriber.getRequests(); Assert.assertEquals(1, actualRequests.size()); UpdateSnapshotRequest actualRequest = ((UpdateSnapshotRequest) actualRequests.get(0)); - Assert.assertEquals(request.getSnapshot(), actualRequest.getSnapshot()); - Assert.assertEquals(request.getUpdateMask(), actualRequest.getUpdateMask()); + Assert.assertEquals(snapshot, actualRequest.getSnapshot()); + Assert.assertEquals(updateMask, actualRequest.getUpdateMask()); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -1464,9 +1505,9 @@ public class SubscriberClientTest { mockSubscriber.addException(exception); try { - UpdateSnapshotRequest request = - UpdateSnapshotRequest.newBuilder().setSnapshot(Snapshot.newBuilder().build()).build(); - client.updateSnapshot(request); + Snapshot snapshot = Snapshot.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + client.updateSnapshot(snapshot, updateMask); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception. diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/resourcename/ResourceNameHelperClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/resourcename/ResourceNameHelperClassComposerTest.java index 7438d53b01..ecc3e682ae 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/resourcename/ResourceNameHelperClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/resourcename/ResourceNameHelperClassComposerTest.java @@ -33,6 +33,7 @@ import com.google.logging.v2.LoggingProto; import com.google.protobuf.Descriptors.FileDescriptor; import com.google.protobuf.Descriptors.ServiceDescriptor; +import com.google.protobuf.EmptyProto; import com.google.showcase.v1beta1.EchoOuterClass; import com.google.showcase.v1beta1.TestingOuterClass; import com.google.test.collisions.CollisionsOuterClass; @@ -143,6 +144,12 @@ void generateResourceNameClass_loggingOnePatternMultipleVariables() { FileDescriptor commonResourcesFileDescriptor = CommonResources.getDescriptor(); resourceNames.putAll(Parser.parseResourceNames(commonResourcesFileDescriptor)); + // Additional dependency found in LoggingService.DeleteLink LRO + // (google.longrunning.operation_info).response_type. Necessary for + // complete parsing of the descriptors. + FileDescriptor emptyFileDescriptor = EmptyProto.getDescriptor(); + messageTypes.putAll(Parser.parseMessages(emptyFileDescriptor)); + Set outputResourceNames = new HashSet<>(); Parser.parseService( serviceFileDescriptor, messageTypes, resourceNames, Optional.empty(), outputResourceNames); diff --git a/java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json b/java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json index 1ab92719fe..4d11ed39b9 100644 --- a/java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json +++ b/java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json @@ -114,7 +114,8 @@ } } } - } + }, + "apiVersion": "v1_20240408" }, "Identity": { "clients": {