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": {