From c7d18514b23865a34f360fd954a76e3bd150a16a Mon Sep 17 00:00:00 2001 From: Garrett Jones Date: Fri, 3 Mar 2017 10:18:05 -0800 Subject: [PATCH 1/3] GAX rename: RpcFuture -> ApiFuture --- .../spi/v1beta1/ErrorGroupServiceClient.java | 4 +- .../spi/v1beta1/ErrorStatsServiceClient.java | 6 +-- .../v1beta1/ReportErrorsServiceClient.java | 2 +- .../CreateTopicAndPublishMessages.java | 8 ++-- .../pubsub/snippets/PublisherSnippets.java | 26 ++++++------- .../pubsub/snippets/SubscriberSnippets.java | 6 +-- .../pubsub/snippets/ITPubSubSnippets.java | 32 ++++++++-------- .../spi/v1/LanguageServiceClient.java | 8 ++-- .../cloud/logging/spi/DefaultLoggingRpc.java | 8 ++-- .../logging/spi/v2/ConfigServiceV2Client.java | 10 ++--- .../spi/v2/LoggingServiceV2Client.java | 10 ++--- .../spi/v2/MetricsServiceV2Client.java | 10 ++--- .../monitoring/spi/v3/GroupServiceClient.java | 12 +++--- .../spi/v3/MetricServiceClient.java | 16 ++++---- .../cloud/pubsub/deprecated/Message.java | 2 +- .../deprecated/spi/DefaultPubSubRpc.java | 23 +++++++----- .../google/cloud/pubsub/spi/v1/Publisher.java | 20 +++++----- .../cloud/pubsub/spi/v1/PublisherClient.java | 18 ++++----- .../cloud/pubsub/spi/v1/SubscriberClient.java | 22 +++++------ .../pubsub/spi/v1/PublisherImplTest.java | 37 +++++++++---------- .../speech/spi/v1beta1/SpeechClient.java | 4 +- .../trace/spi/v1/TraceServiceClient.java | 6 +-- .../vision/spi/v1/ImageAnnotatorClient.java | 2 +- 23 files changed, 148 insertions(+), 144 deletions(-) diff --git a/google-cloud-errorreporting/src/main/java/com/google/cloud/errorreporting/spi/v1beta1/ErrorGroupServiceClient.java b/google-cloud-errorreporting/src/main/java/com/google/cloud/errorreporting/spi/v1beta1/ErrorGroupServiceClient.java index b3cd09d3f082..3bdb67a567c6 100644 --- a/google-cloud-errorreporting/src/main/java/com/google/cloud/errorreporting/spi/v1beta1/ErrorGroupServiceClient.java +++ b/google-cloud-errorreporting/src/main/java/com/google/cloud/errorreporting/spi/v1beta1/ErrorGroupServiceClient.java @@ -214,7 +214,7 @@ private final ErrorGroup getGroup(GetGroupRequest request) { * GetGroupRequest request = GetGroupRequest.newBuilder() * .setGroupNameWithGroupName(groupName) * .build(); - * RpcFuture<ErrorGroup> future = errorGroupServiceClient.getGroupCallable().futureCall(request); + * ApiFuture<ErrorGroup> future = errorGroupServiceClient.getGroupCallable().futureCall(request); * // Do something * ErrorGroup response = future.get(); * } @@ -281,7 +281,7 @@ private final ErrorGroup updateGroup(UpdateGroupRequest request) { * UpdateGroupRequest request = UpdateGroupRequest.newBuilder() * .setGroup(group) * .build(); - * RpcFuture<ErrorGroup> future = errorGroupServiceClient.updateGroupCallable().futureCall(request); + * ApiFuture<ErrorGroup> future = errorGroupServiceClient.updateGroupCallable().futureCall(request); * // Do something * ErrorGroup response = future.get(); * } diff --git a/google-cloud-errorreporting/src/main/java/com/google/cloud/errorreporting/spi/v1beta1/ErrorStatsServiceClient.java b/google-cloud-errorreporting/src/main/java/com/google/cloud/errorreporting/spi/v1beta1/ErrorStatsServiceClient.java index 3e3f27a25e7d..013fdd430213 100644 --- a/google-cloud-errorreporting/src/main/java/com/google/cloud/errorreporting/spi/v1beta1/ErrorStatsServiceClient.java +++ b/google-cloud-errorreporting/src/main/java/com/google/cloud/errorreporting/spi/v1beta1/ErrorStatsServiceClient.java @@ -251,7 +251,7 @@ public final ListGroupStatsPagedResponse listGroupStats(ListGroupStatsRequest re * .setProjectNameWithProjectName(projectName) * .setTimeRange(timeRange) * .build(); - * RpcFuture<ListGroupStatsPagedResponse> future = errorStatsServiceClient.listGroupStatsPagedCallable().futureCall(request); + * ApiFuture<ListGroupStatsPagedResponse> future = errorStatsServiceClient.listGroupStatsPagedCallable().futureCall(request); * // Do something * for (ErrorGroupStats element : future.get().iterateAllElements()) { * // doThingsWith(element); @@ -370,7 +370,7 @@ public final ListEventsPagedResponse listEvents(ListEventsRequest request) { * .setProjectNameWithProjectName(projectName) * .setGroupId(groupId) * .build(); - * RpcFuture<ListEventsPagedResponse> future = errorStatsServiceClient.listEventsPagedCallable().futureCall(request); + * ApiFuture<ListEventsPagedResponse> future = errorStatsServiceClient.listEventsPagedCallable().futureCall(request); * // Do something * for (ErrorEvent element : future.get().iterateAllElements()) { * // doThingsWith(element); @@ -475,7 +475,7 @@ private final DeleteEventsResponse deleteEvents(DeleteEventsRequest request) { * DeleteEventsRequest request = DeleteEventsRequest.newBuilder() * .setProjectNameWithProjectName(projectName) * .build(); - * RpcFuture<DeleteEventsResponse> future = errorStatsServiceClient.deleteEventsCallable().futureCall(request); + * ApiFuture<DeleteEventsResponse> future = errorStatsServiceClient.deleteEventsCallable().futureCall(request); * // Do something * DeleteEventsResponse response = future.get(); * } diff --git a/google-cloud-errorreporting/src/main/java/com/google/cloud/errorreporting/spi/v1beta1/ReportErrorsServiceClient.java b/google-cloud-errorreporting/src/main/java/com/google/cloud/errorreporting/spi/v1beta1/ReportErrorsServiceClient.java index a09feee03742..1ac1a0baac5c 100644 --- a/google-cloud-errorreporting/src/main/java/com/google/cloud/errorreporting/spi/v1beta1/ReportErrorsServiceClient.java +++ b/google-cloud-errorreporting/src/main/java/com/google/cloud/errorreporting/spi/v1beta1/ReportErrorsServiceClient.java @@ -241,7 +241,7 @@ public final ReportErrorEventResponse reportErrorEvent(ReportErrorEventRequest r * .setProjectNameWithProjectName(projectName) * .setEvent(event) * .build(); - * RpcFuture<ReportErrorEventResponse> future = reportErrorsServiceClient.reportErrorEventCallable().futureCall(request); + * ApiFuture<ReportErrorEventResponse> future = reportErrorsServiceClient.reportErrorEventCallable().futureCall(request); * // Do something * ReportErrorEventResponse response = future.get(); * } diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/CreateTopicAndPublishMessages.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/CreateTopicAndPublishMessages.java index af2e672490b1..43c55005a7be 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/CreateTopicAndPublishMessages.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/CreateTopicAndPublishMessages.java @@ -16,7 +16,7 @@ package com.google.cloud.examples.pubsub.snippets; -import com.google.api.gax.core.RpcFuture; +import com.google.api.gax.core.ApiFuture; import com.google.cloud.pubsub.spi.v1.Publisher; import com.google.cloud.pubsub.spi.v1.PublisherClient; import com.google.protobuf.ByteString; @@ -41,14 +41,14 @@ public static void main(String... args) throws Exception { try { publisher = Publisher.newBuilder(topic).build(); List messages = Arrays.asList("first message", "second message"); - List> messageIds = new ArrayList<>(); + List> messageIds = new ArrayList<>(); for (String message : messages) { ByteString data = ByteString.copyFromUtf8(message); PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(data).build(); - RpcFuture messageIdFuture = publisher.publish(pubsubMessage); + ApiFuture messageIdFuture = publisher.publish(pubsubMessage); messageIds.add(messageIdFuture); } - for (RpcFuture messageId : messageIds) { + for (ApiFuture messageId : messageIds) { System.out.println("published with message ID: " + messageId.get()); } } finally { diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/PublisherSnippets.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/PublisherSnippets.java index 77d26eb1da35..f7d25e2728b0 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/PublisherSnippets.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/PublisherSnippets.java @@ -22,8 +22,9 @@ package com.google.cloud.examples.pubsub.snippets; -import com.google.api.gax.core.RpcFuture; -import com.google.api.gax.core.RpcFutureCallback; +import com.google.api.gax.core.ApiFuture; +import com.google.api.gax.core.ApiFutureCallback; +import com.google.api.gax.core.ApiFutures; import com.google.cloud.pubsub.spi.v1.Publisher; import com.google.protobuf.ByteString; import com.google.pubsub.v1.PubsubMessage; @@ -40,21 +41,20 @@ public PublisherSnippets(Publisher publisher) { /** Example of publishing a message. */ // [TARGET publish(PubsubMessage)] // [VARIABLE "my_message"] - public RpcFuture publish(String message) { + public ApiFuture publish(String message) { // [START publish] ByteString data = ByteString.copyFromUtf8(message); PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(data).build(); - RpcFuture messageIdFuture = publisher.publish(pubsubMessage); - messageIdFuture.addCallback( - new RpcFutureCallback() { - public void onSuccess(String messageId) { - System.out.println("published with message id: " + messageId); - } + ApiFuture messageIdFuture = publisher.publish(pubsubMessage); + ApiFutures.addCallback(messageIdFuture, new ApiFutureCallback() { + public void onSuccess(String messageId) { + System.out.println("published with message id: " + messageId); + } - public void onFailure(Throwable t) { - System.out.println("failed to publish: " + t); - } - }); + public void onFailure(Throwable t) { + System.out.println("failed to publish: " + t); + } + }); // [END publish] return messageIdFuture; } diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriberSnippets.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriberSnippets.java index 167e1bb11fa1..d2340d2a0834 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriberSnippets.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriberSnippets.java @@ -22,7 +22,7 @@ package com.google.cloud.examples.pubsub.snippets; -import com.google.api.gax.core.RpcFuture; +import com.google.api.gax.core.ApiFuture; import com.google.cloud.pubsub.spi.v1.MessageReceiver; import com.google.cloud.pubsub.spi.v1.Subscriber; import com.google.pubsub.v1.SubscriptionName; @@ -33,13 +33,13 @@ public class SubscriberSnippets { private final SubscriptionName subscription; private final MessageReceiver receiver; - private final RpcFuture done; + private final ApiFuture done; private final Executor executor; public SubscriberSnippets( SubscriptionName subscription, MessageReceiver receiver, - RpcFuture done, + ApiFuture done, Executor executor) { this.subscription = subscription; this.receiver = receiver; diff --git a/google-cloud-examples/src/test/java/com/google/cloud/examples/pubsub/snippets/ITPubSubSnippets.java b/google-cloud-examples/src/test/java/com/google/cloud/examples/pubsub/snippets/ITPubSubSnippets.java index 1bf5a2bed2f9..e6663440a5f3 100644 --- a/google-cloud-examples/src/test/java/com/google/cloud/examples/pubsub/snippets/ITPubSubSnippets.java +++ b/google-cloud-examples/src/test/java/com/google/cloud/examples/pubsub/snippets/ITPubSubSnippets.java @@ -21,8 +21,9 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import com.google.api.gax.core.RpcFutureCallback; -import com.google.api.gax.core.SettableRpcFuture; +import com.google.api.gax.core.ApiFutureCallback; +import com.google.api.gax.core.ApiFutures; +import com.google.api.gax.core.SettableApiFuture; import com.google.cloud.Identity; import com.google.cloud.Page; import com.google.cloud.Policy; @@ -306,19 +307,18 @@ private void testPublisherSubscriberHelper( try { publisher = Publisher.newBuilder(topicName).build(); PublisherSnippets snippets = new PublisherSnippets(publisher); - final SettableRpcFuture done = new SettableRpcFuture<>(); - snippets - .publish(messageToPublish) - .addCallback( - new RpcFutureCallback() { - public void onSuccess(String messageId) { - done.set(null); - } + final SettableApiFuture done = SettableApiFuture.create(); + ApiFutures.addCallback( + snippets.publish(messageToPublish), + new ApiFutureCallback() { + public void onSuccess(String messageId) { + done.set(null); + } - public void onFailure(Throwable t) { - done.setException(t); - } - }); + public void onFailure(Throwable t) { + done.setException(t); + } + }); done.get(); } finally { if (publisher != null) { @@ -327,8 +327,8 @@ public void onFailure(Throwable t) { } final BlockingQueue queue = new ArrayBlockingQueue<>(1); - final SettableRpcFuture done = new SettableRpcFuture<>(); - final SettableRpcFuture received = new SettableRpcFuture<>(); + final SettableApiFuture done = SettableApiFuture.create(); + final SettableApiFuture received = SettableApiFuture.create(); SubscriberSnippets snippets = new SubscriberSnippets( subscriptionName, diff --git a/google-cloud-language/src/main/java/com/google/cloud/language/spi/v1/LanguageServiceClient.java b/google-cloud-language/src/main/java/com/google/cloud/language/spi/v1/LanguageServiceClient.java index c2881e01239c..d36a394e2fc1 100644 --- a/google-cloud-language/src/main/java/com/google/cloud/language/spi/v1/LanguageServiceClient.java +++ b/google-cloud-language/src/main/java/com/google/cloud/language/spi/v1/LanguageServiceClient.java @@ -225,7 +225,7 @@ private final AnalyzeSentimentResponse analyzeSentiment(AnalyzeSentimentRequest * AnalyzeSentimentRequest request = AnalyzeSentimentRequest.newBuilder() * .setDocument(document) * .build(); - * RpcFuture<AnalyzeSentimentResponse> future = languageServiceClient.analyzeSentimentCallable().futureCall(request); + * ApiFuture<AnalyzeSentimentResponse> future = languageServiceClient.analyzeSentimentCallable().futureCall(request); * // Do something * AnalyzeSentimentResponse response = future.get(); * } @@ -307,7 +307,7 @@ public final AnalyzeEntitiesResponse analyzeEntities(AnalyzeEntitiesRequest requ * .setDocument(document) * .setEncodingType(encodingType) * .build(); - * RpcFuture<AnalyzeEntitiesResponse> future = languageServiceClient.analyzeEntitiesCallable().futureCall(request); + * ApiFuture<AnalyzeEntitiesResponse> future = languageServiceClient.analyzeEntitiesCallable().futureCall(request); * // Do something * AnalyzeEntitiesResponse response = future.get(); * } @@ -388,7 +388,7 @@ public final AnalyzeSyntaxResponse analyzeSyntax(AnalyzeSyntaxRequest request) { * .setDocument(document) * .setEncodingType(encodingType) * .build(); - * RpcFuture<AnalyzeSyntaxResponse> future = languageServiceClient.analyzeSyntaxCallable().futureCall(request); + * ApiFuture<AnalyzeSyntaxResponse> future = languageServiceClient.analyzeSyntaxCallable().futureCall(request); * // Do something * AnalyzeSyntaxResponse response = future.get(); * } @@ -476,7 +476,7 @@ public final AnnotateTextResponse annotateText(AnnotateTextRequest request) { * .setFeatures(features) * .setEncodingType(encodingType) * .build(); - * RpcFuture<AnnotateTextResponse> future = languageServiceClient.annotateTextCallable().futureCall(request); + * ApiFuture<AnnotateTextResponse> future = languageServiceClient.annotateTextCallable().futureCall(request); * // Do something * AnnotateTextResponse response = future.get(); * } diff --git a/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/DefaultLoggingRpc.java b/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/DefaultLoggingRpc.java index a58588071a6c..e44f56ff19dc 100644 --- a/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/DefaultLoggingRpc.java +++ b/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/DefaultLoggingRpc.java @@ -16,8 +16,9 @@ package com.google.cloud.logging.spi; +import com.google.api.gax.core.ApiFuture; +import com.google.api.gax.core.ApiFutures; import com.google.api.gax.core.Function; -import com.google.api.gax.core.RpcFuture; import com.google.api.gax.grpc.ApiException; import com.google.api.gax.grpc.ChannelProvider; import com.google.api.gax.grpc.ExecutorProvider; @@ -147,14 +148,15 @@ public DefaultLoggingRpc(LoggingOptions options) throws IOException { } private static Future translate( - RpcFuture from, final boolean idempotent, Code... returnNullOn) { + ApiFuture from, final boolean idempotent, Code... returnNullOn) { final Set returnNullOnSet; if (returnNullOn.length > 0) { returnNullOnSet = EnumSet.of(returnNullOn[0], returnNullOn); } else { returnNullOnSet = Collections.emptySet(); } - return from.catching( + return ApiFutures.catching( + from, ApiException.class, new Function() { @Override diff --git a/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/ConfigServiceV2Client.java b/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/ConfigServiceV2Client.java index 3dbf95c8192c..74cd8453d761 100644 --- a/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/ConfigServiceV2Client.java +++ b/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/ConfigServiceV2Client.java @@ -231,7 +231,7 @@ public final ListSinksPagedResponse listSinks(ListSinksRequest request) { * ListSinksRequest request = ListSinksRequest.newBuilder() * .setParentWithParentNameOneof(parent) * .build(); - * RpcFuture<ListSinksPagedResponse> future = configServiceV2Client.listSinksPagedCallable().futureCall(request); + * ApiFuture<ListSinksPagedResponse> future = configServiceV2Client.listSinksPagedCallable().futureCall(request); * // Do something * for (LogSink element : future.get().iterateAllElements()) { * // doThingsWith(element); @@ -335,7 +335,7 @@ private final LogSink getSink(GetSinkRequest request) { * GetSinkRequest request = GetSinkRequest.newBuilder() * .setSinkNameWithSinkNameOneof(sinkName) * .build(); - * RpcFuture<LogSink> future = configServiceV2Client.getSinkCallable().futureCall(request); + * ApiFuture<LogSink> future = configServiceV2Client.getSinkCallable().futureCall(request); * // Do something * LogSink response = future.get(); * } @@ -421,7 +421,7 @@ public final LogSink createSink(CreateSinkRequest request) { * .setParentWithParentNameOneof(parent) * .setSink(sink) * .build(); - * RpcFuture<LogSink> future = configServiceV2Client.createSinkCallable().futureCall(request); + * ApiFuture<LogSink> future = configServiceV2Client.createSinkCallable().futureCall(request); * // Do something * LogSink response = future.get(); * } @@ -515,7 +515,7 @@ public final LogSink updateSink(UpdateSinkRequest request) { * .setSinkNameWithSinkNameOneof(sinkName) * .setSink(sink) * .build(); - * RpcFuture<LogSink> future = configServiceV2Client.updateSinkCallable().futureCall(request); + * ApiFuture<LogSink> future = configServiceV2Client.updateSinkCallable().futureCall(request); * // Do something * LogSink response = future.get(); * } @@ -591,7 +591,7 @@ private final void deleteSink(DeleteSinkRequest request) { * DeleteSinkRequest request = DeleteSinkRequest.newBuilder() * .setSinkNameWithSinkNameOneof(sinkName) * .build(); - * RpcFuture<Void> future = configServiceV2Client.deleteSinkCallable().futureCall(request); + * ApiFuture<Void> future = configServiceV2Client.deleteSinkCallable().futureCall(request); * // Do something * future.get(); * } diff --git a/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/LoggingServiceV2Client.java b/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/LoggingServiceV2Client.java index 432996cfbfde..3a416c4d8867 100644 --- a/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/LoggingServiceV2Client.java +++ b/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/LoggingServiceV2Client.java @@ -256,7 +256,7 @@ private final void deleteLog(DeleteLogRequest request) { * DeleteLogRequest request = DeleteLogRequest.newBuilder() * .setLogNameWithLogNameOneof(logName) * .build(); - * RpcFuture<Void> future = loggingServiceV2Client.deleteLogCallable().futureCall(request); + * ApiFuture<Void> future = loggingServiceV2Client.deleteLogCallable().futureCall(request); * // Do something * future.get(); * } @@ -356,7 +356,7 @@ public final WriteLogEntriesResponse writeLogEntries(WriteLogEntriesRequest requ * WriteLogEntriesRequest request = WriteLogEntriesRequest.newBuilder() * .addAllEntries(entries) * .build(); - * RpcFuture<WriteLogEntriesResponse> future = loggingServiceV2Client.writeLogEntriesCallable().futureCall(request); + * ApiFuture<WriteLogEntriesResponse> future = loggingServiceV2Client.writeLogEntriesCallable().futureCall(request); * // Do something * WriteLogEntriesResponse response = future.get(); * } @@ -452,7 +452,7 @@ public final ListLogEntriesPagedResponse listLogEntries(ListLogEntriesRequest re * ListLogEntriesRequest request = ListLogEntriesRequest.newBuilder() * .addAllResourceNames(resourceNames) * .build(); - * RpcFuture<ListLogEntriesPagedResponse> future = loggingServiceV2Client.listLogEntriesPagedCallable().futureCall(request); + * ApiFuture<ListLogEntriesPagedResponse> future = loggingServiceV2Client.listLogEntriesPagedCallable().futureCall(request); * // Do something * for (LogEntry element : future.get().iterateAllElements()) { * // doThingsWith(element); @@ -530,7 +530,7 @@ public final ListMonitoredResourceDescriptorsPagedResponse listMonitoredResource *

    * try (LoggingServiceV2Client loggingServiceV2Client = LoggingServiceV2Client.create()) {
    *   ListMonitoredResourceDescriptorsRequest request = ListMonitoredResourceDescriptorsRequest.newBuilder().build();
-   *   RpcFuture<ListMonitoredResourceDescriptorsPagedResponse> future = loggingServiceV2Client.listMonitoredResourceDescriptorsPagedCallable().futureCall(request);
+   *   ApiFuture<ListMonitoredResourceDescriptorsPagedResponse> future = loggingServiceV2Client.listMonitoredResourceDescriptorsPagedCallable().futureCall(request);
    *   // Do something
    *   for (MonitoredResourceDescriptor element : future.get().iterateAllElements()) {
    *     // doThingsWith(element);
@@ -636,7 +636,7 @@ public final ListLogsPagedResponse listLogs(ListLogsRequest request) {
    *   ListLogsRequest request = ListLogsRequest.newBuilder()
    *     .setParentWithParentNameOneof(parent)
    *     .build();
-   *   RpcFuture<ListLogsPagedResponse> future = loggingServiceV2Client.listLogsPagedCallable().futureCall(request);
+   *   ApiFuture<ListLogsPagedResponse> future = loggingServiceV2Client.listLogsPagedCallable().futureCall(request);
    *   // Do something
    *   for (String element : future.get().iterateAllElements()) {
    *     // doThingsWith(element);
diff --git a/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/MetricsServiceV2Client.java b/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/MetricsServiceV2Client.java
index 84936f18b7ad..bf3e14df1039 100644
--- a/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/MetricsServiceV2Client.java
+++ b/google-cloud-logging/src/main/java/com/google/cloud/logging/spi/v2/MetricsServiceV2Client.java
@@ -233,7 +233,7 @@ public final ListLogMetricsPagedResponse listLogMetrics(ListLogMetricsRequest re
    *   ListLogMetricsRequest request = ListLogMetricsRequest.newBuilder()
    *     .setParentWithParentNameOneof(parent)
    *     .build();
-   *   RpcFuture<ListLogMetricsPagedResponse> future = metricsServiceV2Client.listLogMetricsPagedCallable().futureCall(request);
+   *   ApiFuture<ListLogMetricsPagedResponse> future = metricsServiceV2Client.listLogMetricsPagedCallable().futureCall(request);
    *   // Do something
    *   for (LogMetric element : future.get().iterateAllElements()) {
    *     // doThingsWith(element);
@@ -337,7 +337,7 @@ private final LogMetric getLogMetric(GetLogMetricRequest request) {
    *   GetLogMetricRequest request = GetLogMetricRequest.newBuilder()
    *     .setMetricNameWithMetricNameOneof(metricName)
    *     .build();
-   *   RpcFuture<LogMetric> future = metricsServiceV2Client.getLogMetricCallable().futureCall(request);
+   *   ApiFuture<LogMetric> future = metricsServiceV2Client.getLogMetricCallable().futureCall(request);
    *   // Do something
    *   LogMetric response = future.get();
    * }
@@ -416,7 +416,7 @@ public final LogMetric createLogMetric(CreateLogMetricRequest request) {
    *     .setParentWithParentNameOneof(parent)
    *     .setMetric(metric)
    *     .build();
-   *   RpcFuture<LogMetric> future = metricsServiceV2Client.createLogMetricCallable().futureCall(request);
+   *   ApiFuture<LogMetric> future = metricsServiceV2Client.createLogMetricCallable().futureCall(request);
    *   // Do something
    *   LogMetric response = future.get();
    * }
@@ -497,7 +497,7 @@ public final LogMetric updateLogMetric(UpdateLogMetricRequest request) {
    *     .setMetricNameWithMetricNameOneof(metricName)
    *     .setMetric(metric)
    *     .build();
-   *   RpcFuture<LogMetric> future = metricsServiceV2Client.updateLogMetricCallable().futureCall(request);
+   *   ApiFuture<LogMetric> future = metricsServiceV2Client.updateLogMetricCallable().futureCall(request);
    *   // Do something
    *   LogMetric response = future.get();
    * }
@@ -566,7 +566,7 @@ private final void deleteLogMetric(DeleteLogMetricRequest request) {
    *   DeleteLogMetricRequest request = DeleteLogMetricRequest.newBuilder()
    *     .setMetricNameWithMetricNameOneof(metricName)
    *     .build();
-   *   RpcFuture<Void> future = metricsServiceV2Client.deleteLogMetricCallable().futureCall(request);
+   *   ApiFuture<Void> future = metricsServiceV2Client.deleteLogMetricCallable().futureCall(request);
    *   // Do something
    *   future.get();
    * }
diff --git a/google-cloud-monitoring/src/main/java/com/google/cloud/monitoring/spi/v3/GroupServiceClient.java b/google-cloud-monitoring/src/main/java/com/google/cloud/monitoring/spi/v3/GroupServiceClient.java
index 0c1522424120..b024c9e8cdf3 100644
--- a/google-cloud-monitoring/src/main/java/com/google/cloud/monitoring/spi/v3/GroupServiceClient.java
+++ b/google-cloud-monitoring/src/main/java/com/google/cloud/monitoring/spi/v3/GroupServiceClient.java
@@ -226,7 +226,7 @@ public final ListGroupsPagedResponse listGroups(ListGroupsRequest request) {
    *   ListGroupsRequest request = ListGroupsRequest.newBuilder()
    *     .setNameWithProjectName(name)
    *     .build();
-   *   RpcFuture<ListGroupsPagedResponse> future = groupServiceClient.listGroupsPagedCallable().futureCall(request);
+   *   ApiFuture<ListGroupsPagedResponse> future = groupServiceClient.listGroupsPagedCallable().futureCall(request);
    *   // Do something
    *   for (Group element : future.get().iterateAllElements()) {
    *     // doThingsWith(element);
@@ -327,7 +327,7 @@ private final Group getGroup(GetGroupRequest request) {
    *   GetGroupRequest request = GetGroupRequest.newBuilder()
    *     .setNameWithGroupName(name)
    *     .build();
-   *   RpcFuture<Group> future = groupServiceClient.getGroupCallable().futureCall(request);
+   *   ApiFuture<Group> future = groupServiceClient.getGroupCallable().futureCall(request);
    *   // Do something
    *   Group response = future.get();
    * }
@@ -403,7 +403,7 @@ public final Group createGroup(CreateGroupRequest request) {
    *     .setNameWithProjectName(name)
    *     .setGroup(group)
    *     .build();
-   *   RpcFuture<Group> future = groupServiceClient.createGroupCallable().futureCall(request);
+   *   ApiFuture<Group> future = groupServiceClient.createGroupCallable().futureCall(request);
    *   // Do something
    *   Group response = future.get();
    * }
@@ -471,7 +471,7 @@ public final Group updateGroup(UpdateGroupRequest request) {
    *   UpdateGroupRequest request = UpdateGroupRequest.newBuilder()
    *     .setGroup(group)
    *     .build();
-   *   RpcFuture<Group> future = groupServiceClient.updateGroupCallable().futureCall(request);
+   *   ApiFuture<Group> future = groupServiceClient.updateGroupCallable().futureCall(request);
    *   // Do something
    *   Group response = future.get();
    * }
@@ -539,7 +539,7 @@ private final void deleteGroup(DeleteGroupRequest request) {
    *   DeleteGroupRequest request = DeleteGroupRequest.newBuilder()
    *     .setNameWithGroupName(name)
    *     .build();
-   *   RpcFuture<Void> future = groupServiceClient.deleteGroupCallable().futureCall(request);
+   *   ApiFuture<Void> future = groupServiceClient.deleteGroupCallable().futureCall(request);
    *   // Do something
    *   future.get();
    * }
@@ -611,7 +611,7 @@ public final ListGroupMembersPagedResponse listGroupMembers(ListGroupMembersRequ
    *   ListGroupMembersRequest request = ListGroupMembersRequest.newBuilder()
    *     .setNameWithGroupName(name)
    *     .build();
-   *   RpcFuture<ListGroupMembersPagedResponse> future = groupServiceClient.listGroupMembersPagedCallable().futureCall(request);
+   *   ApiFuture<ListGroupMembersPagedResponse> future = groupServiceClient.listGroupMembersPagedCallable().futureCall(request);
    *   // Do something
    *   for (MonitoredResource element : future.get().iterateAllElements()) {
    *     // doThingsWith(element);
diff --git a/google-cloud-monitoring/src/main/java/com/google/cloud/monitoring/spi/v3/MetricServiceClient.java b/google-cloud-monitoring/src/main/java/com/google/cloud/monitoring/spi/v3/MetricServiceClient.java
index 8efd1fa6f671..c52a521ed660 100644
--- a/google-cloud-monitoring/src/main/java/com/google/cloud/monitoring/spi/v3/MetricServiceClient.java
+++ b/google-cloud-monitoring/src/main/java/com/google/cloud/monitoring/spi/v3/MetricServiceClient.java
@@ -281,7 +281,7 @@ public final ListMonitoredResourceDescriptorsPagedResponse listMonitoredResource
    *   ListMonitoredResourceDescriptorsRequest request = ListMonitoredResourceDescriptorsRequest.newBuilder()
    *     .setNameWithProjectName(name)
    *     .build();
-   *   RpcFuture<ListMonitoredResourceDescriptorsPagedResponse> future = metricServiceClient.listMonitoredResourceDescriptorsPagedCallable().futureCall(request);
+   *   ApiFuture<ListMonitoredResourceDescriptorsPagedResponse> future = metricServiceClient.listMonitoredResourceDescriptorsPagedCallable().futureCall(request);
    *   // Do something
    *   for (MonitoredResourceDescriptor element : future.get().iterateAllElements()) {
    *     // doThingsWith(element);
@@ -396,7 +396,7 @@ private final MonitoredResourceDescriptor getMonitoredResourceDescriptor(
    *   GetMonitoredResourceDescriptorRequest request = GetMonitoredResourceDescriptorRequest.newBuilder()
    *     .setNameWithMonitoredResourceDescriptorName(name)
    *     .build();
-   *   RpcFuture<MonitoredResourceDescriptor> future = metricServiceClient.getMonitoredResourceDescriptorCallable().futureCall(request);
+   *   ApiFuture<MonitoredResourceDescriptor> future = metricServiceClient.getMonitoredResourceDescriptorCallable().futureCall(request);
    *   // Do something
    *   MonitoredResourceDescriptor response = future.get();
    * }
@@ -473,7 +473,7 @@ public final ListMetricDescriptorsPagedResponse listMetricDescriptors(
    *   ListMetricDescriptorsRequest request = ListMetricDescriptorsRequest.newBuilder()
    *     .setNameWithProjectName(name)
    *     .build();
-   *   RpcFuture<ListMetricDescriptorsPagedResponse> future = metricServiceClient.listMetricDescriptorsPagedCallable().futureCall(request);
+   *   ApiFuture<ListMetricDescriptorsPagedResponse> future = metricServiceClient.listMetricDescriptorsPagedCallable().futureCall(request);
    *   // Do something
    *   for (MetricDescriptor element : future.get().iterateAllElements()) {
    *     // doThingsWith(element);
@@ -579,7 +579,7 @@ private final MetricDescriptor getMetricDescriptor(GetMetricDescriptorRequest re
    *   GetMetricDescriptorRequest request = GetMetricDescriptorRequest.newBuilder()
    *     .setNameWithMetricDescriptorName(name)
    *     .build();
-   *   RpcFuture<MetricDescriptor> future = metricServiceClient.getMetricDescriptorCallable().futureCall(request);
+   *   ApiFuture<MetricDescriptor> future = metricServiceClient.getMetricDescriptorCallable().futureCall(request);
    *   // Do something
    *   MetricDescriptor response = future.get();
    * }
@@ -662,7 +662,7 @@ public final MetricDescriptor createMetricDescriptor(CreateMetricDescriptorReque
    *     .setNameWithProjectName(name)
    *     .setMetricDescriptor(metricDescriptor)
    *     .build();
-   *   RpcFuture<MetricDescriptor> future = metricServiceClient.createMetricDescriptorCallable().futureCall(request);
+   *   ApiFuture<MetricDescriptor> future = metricServiceClient.createMetricDescriptorCallable().futureCall(request);
    *   // Do something
    *   MetricDescriptor response = future.get();
    * }
@@ -736,7 +736,7 @@ private final void deleteMetricDescriptor(DeleteMetricDescriptorRequest request)
    *   DeleteMetricDescriptorRequest request = DeleteMetricDescriptorRequest.newBuilder()
    *     .setNameWithMetricDescriptorName(name)
    *     .build();
-   *   RpcFuture<Void> future = metricServiceClient.deleteMetricDescriptorCallable().futureCall(request);
+   *   ApiFuture<Void> future = metricServiceClient.deleteMetricDescriptorCallable().futureCall(request);
    *   // Do something
    *   future.get();
    * }
@@ -841,7 +841,7 @@ public final ListTimeSeriesPagedResponse listTimeSeries(ListTimeSeriesRequest re
    *     .setInterval(interval)
    *     .setView(view)
    *     .build();
-   *   RpcFuture<ListTimeSeriesPagedResponse> future = metricServiceClient.listTimeSeriesPagedCallable().futureCall(request);
+   *   ApiFuture<ListTimeSeriesPagedResponse> future = metricServiceClient.listTimeSeriesPagedCallable().futureCall(request);
    *   // Do something
    *   for (TimeSeries element : future.get().iterateAllElements()) {
    *     // doThingsWith(element);
@@ -969,7 +969,7 @@ public final void createTimeSeries(CreateTimeSeriesRequest request) {
    *     .setNameWithProjectName(name)
    *     .addAllTimeSeries(timeSeries)
    *     .build();
-   *   RpcFuture<Void> future = metricServiceClient.createTimeSeriesCallable().futureCall(request);
+   *   ApiFuture<Void> future = metricServiceClient.createTimeSeriesCallable().futureCall(request);
    *   // Do something
    *   future.get();
    * }
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/deprecated/Message.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/deprecated/Message.java
index a4e0e7fc4755..a03e70e57217 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/deprecated/Message.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/deprecated/Message.java
@@ -75,7 +75,7 @@ private static final class InternalByteArray extends ByteArray {
     }
 
     @Override
-    protected ByteString getByteString() {
+    public ByteString getByteString() {
       return super.getByteString();
     }
   }
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/deprecated/spi/DefaultPubSubRpc.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/deprecated/spi/DefaultPubSubRpc.java
index 3239bce3c149..f2f05e8ded00 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/deprecated/spi/DefaultPubSubRpc.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/deprecated/spi/DefaultPubSubRpc.java
@@ -16,10 +16,11 @@
 
 package com.google.cloud.pubsub.deprecated.spi;
 
-import com.google.api.gax.core.ForwardingRpcFuture;
+import com.google.api.gax.core.ForwardingApiFuture;
 import com.google.api.gax.core.Function;
-import com.google.api.gax.core.RpcFuture;
-import com.google.api.gax.core.RpcFutureCallback;
+import com.google.api.gax.core.ApiFuture;
+import com.google.api.gax.core.ApiFutureCallback;
+import com.google.api.gax.core.ApiFutures;
 import com.google.api.gax.grpc.ApiException;
 import com.google.api.gax.grpc.ChannelProvider;
 import com.google.api.gax.grpc.ExecutorProvider;
@@ -106,16 +107,17 @@ protected ChannelProvider getChannelProvider() {
     }
   }
 
-  private static final class PullFutureImpl extends ForwardingRpcFuture
+  private static final class PullFutureImpl extends ForwardingApiFuture
       implements PullFuture {
-    PullFutureImpl(RpcFuture delegate) {
+    PullFutureImpl(ApiFuture delegate) {
       super(delegate);
     }
 
     @Override
     public void addCallback(final PullCallback callback) {
-      addCallback(
-          new RpcFutureCallback() {
+      ApiFutures.addCallback(
+          this,
+          new ApiFutureCallback() {
             @Override
             public void onSuccess(PullResponse response) {
               callback.success(response);
@@ -173,13 +175,14 @@ public DefaultPubSubRpc(PubSubOptions options) throws IOException {
     }
   }
 
-  private static  RpcFuture translate(
-      RpcFuture from, final boolean idempotent, int... returnNullOn) {
+  private static  ApiFuture translate(
+      ApiFuture from, final boolean idempotent, int... returnNullOn) {
     final Set returnNullOnSet = Sets.newHashSetWithExpectedSize(returnNullOn.length);
     for (int value : returnNullOn) {
       returnNullOnSet.add(value);
     }
-    return from.catching(
+    return ApiFutures.catching(
+        from,
         ApiException.class,
         new Function() {
           @Override
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/Publisher.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/Publisher.java
index 6acd1f1e749b..11dd87a27f5f 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/Publisher.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/Publisher.java
@@ -16,17 +16,17 @@
 
 package com.google.cloud.pubsub.spi.v1;
 
+import com.google.api.gax.core.ApiFuture;
+import com.google.api.gax.core.ApiFutureCallback;
+import com.google.api.gax.core.ApiFutures;
 import com.google.api.gax.core.Function;
 import com.google.api.gax.core.RetrySettings;
-import com.google.api.gax.core.RpcFuture;
-import com.google.api.gax.core.RpcFutureCallback;
 import com.google.api.gax.grpc.BundlingSettings;
 import com.google.api.gax.grpc.ChannelProvider;
 import com.google.api.gax.grpc.ExecutorProvider;
 import com.google.api.gax.grpc.FlowControlSettings;
 import com.google.api.gax.grpc.FlowController;
 import com.google.api.gax.grpc.InstantiatingExecutorProvider;
-import com.google.api.gax.grpc.RpcFutures;
 import com.google.auth.oauth2.GoogleCredentials;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
@@ -182,8 +182,8 @@ public TopicName getTopicName() {
    * String message = "my_message";
    * ByteString data = ByteString.copyFromUtf8(message);
    * PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(data).build();
-   * RpcFuture messageIdFuture = publisher.publish(pubsubMessage);
-   * messageIdFuture.addCallback(new RpcFutureCallback() {
+   * ApiFuture messageIdFuture = publisher.publish(pubsubMessage);
+   * messageIdFuture.addCallback(new ApiFutureCallback() {
    *   public void onSuccess(String messageId) {
    *     System.out.println("published with message id: " + messageId);
    *   }
@@ -197,7 +197,7 @@ public TopicName getTopicName() {
    * @param message the message to publish.
    * @return the message ID wrapped in a future.
    */
-  public RpcFuture publish(PubsubMessage message) {
+  public ApiFuture publish(PubsubMessage message) {
     if (shutdown.get()) {
       throw new IllegalStateException("Cannot publish on a shut-down publisher.");
     }
@@ -206,7 +206,7 @@ public RpcFuture publish(PubsubMessage message) {
     try {
       flowController.reserve(1, messageSize);
     } catch (FlowController.FlowControlException e) {
-      return RpcFutures.immediateFailedFuture(e);
+      return ApiFutures.immediateFailedFuture(e);
     }
     OutstandingBundle bundleToSend = null;
     SettableFuture publishResult = SettableFuture.create();
@@ -282,12 +282,12 @@ public void run() {
   }
 
   private static class ListenableFutureDelegate extends SimpleForwardingListenableFuture
-      implements RpcFuture {
+      implements ApiFuture {
     ListenableFutureDelegate(ListenableFuture delegate) {
       super(delegate);
     }
 
-    public void addCallback(final RpcFutureCallback callback) {
+    public void addCallback(final ApiFutureCallback callback) {
       Futures.addCallback(
           this,
           new FutureCallback() {
@@ -303,7 +303,7 @@ public void onSuccess(V v) {
           });
     }
 
-    public  RpcFuture catching(
+    public  ApiFuture catching(
         Class exceptionType, final Function callback) {
       return new ListenableFutureDelegate(
           Futures.catching(
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/PublisherClient.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/PublisherClient.java
index 0f1f2254b43e..2dba10c7115a 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/PublisherClient.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/PublisherClient.java
@@ -265,7 +265,7 @@ private final Topic createTopic(Topic request) {
    *   Topic request = Topic.newBuilder()
    *     .setNameWithTopicName(name)
    *     .build();
-   *   RpcFuture<Topic> future = publisherClient.createTopicCallable().futureCall(request);
+   *   ApiFuture<Topic> future = publisherClient.createTopicCallable().futureCall(request);
    *   // Do something
    *   Topic response = future.get();
    * }
@@ -360,7 +360,7 @@ public final PublishResponse publish(PublishRequest request) {
    *     .setTopicWithTopicName(topic)
    *     .addAllMessages(messages)
    *     .build();
-   *   RpcFuture<PublishResponse> future = publisherClient.publishCallable().futureCall(request);
+   *   ApiFuture<PublishResponse> future = publisherClient.publishCallable().futureCall(request);
    *   // Do something
    *   PublishResponse response = future.get();
    * }
@@ -428,7 +428,7 @@ private final Topic getTopic(GetTopicRequest request) {
    *   GetTopicRequest request = GetTopicRequest.newBuilder()
    *     .setTopicWithTopicName(topic)
    *     .build();
-   *   RpcFuture<Topic> future = publisherClient.getTopicCallable().futureCall(request);
+   *   ApiFuture<Topic> future = publisherClient.getTopicCallable().futureCall(request);
    *   // Do something
    *   Topic response = future.get();
    * }
@@ -500,7 +500,7 @@ public final ListTopicsPagedResponse listTopics(ListTopicsRequest request) {
    *   ListTopicsRequest request = ListTopicsRequest.newBuilder()
    *     .setProjectWithProjectName(project)
    *     .build();
-   *   RpcFuture<ListTopicsPagedResponse> future = publisherClient.listTopicsPagedCallable().futureCall(request);
+   *   ApiFuture<ListTopicsPagedResponse> future = publisherClient.listTopicsPagedCallable().futureCall(request);
    *   // Do something
    *   for (Topic element : future.get().iterateAllElements()) {
    *     // doThingsWith(element);
@@ -606,7 +606,7 @@ public final ListTopicSubscriptionsPagedResponse listTopicSubscriptions(
    *   ListTopicSubscriptionsRequest request = ListTopicSubscriptionsRequest.newBuilder()
    *     .setTopicWithTopicName(topic)
    *     .build();
-   *   RpcFuture<ListTopicSubscriptionsPagedResponse> future = publisherClient.listTopicSubscriptionsPagedCallable().futureCall(request);
+   *   ApiFuture<ListTopicSubscriptionsPagedResponse> future = publisherClient.listTopicSubscriptionsPagedCallable().futureCall(request);
    *   // Do something
    *   for (SubscriptionName element : future.get().iterateAllAsSubscriptionName()) {
    *     // doThingsWith(element);
@@ -718,7 +718,7 @@ private final void deleteTopic(DeleteTopicRequest request) {
    *   DeleteTopicRequest request = DeleteTopicRequest.newBuilder()
    *     .setTopicWithTopicName(topic)
    *     .build();
-   *   RpcFuture<Void> future = publisherClient.deleteTopicCallable().futureCall(request);
+   *   ApiFuture<Void> future = publisherClient.deleteTopicCallable().futureCall(request);
    *   // Do something
    *   future.get();
    * }
@@ -796,7 +796,7 @@ public final Policy setIamPolicy(SetIamPolicyRequest request) {
    *     .setResource(formattedResource)
    *     .setPolicy(policy)
    *     .build();
-   *   RpcFuture<Policy> future = publisherClient.setIamPolicyCallable().futureCall(request);
+   *   ApiFuture<Policy> future = publisherClient.setIamPolicyCallable().futureCall(request);
    *   // Do something
    *   Policy response = future.get();
    * }
@@ -868,7 +868,7 @@ private final Policy getIamPolicy(GetIamPolicyRequest request) {
    *   GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
    *     .setResource(formattedResource)
    *     .build();
-   *   RpcFuture<Policy> future = publisherClient.getIamPolicyCallable().futureCall(request);
+   *   ApiFuture<Policy> future = publisherClient.getIamPolicyCallable().futureCall(request);
    *   // Do something
    *   Policy response = future.get();
    * }
@@ -953,7 +953,7 @@ public final TestIamPermissionsResponse testIamPermissions(TestIamPermissionsReq
    *     .setResource(formattedResource)
    *     .addAllPermissions(permissions)
    *     .build();
-   *   RpcFuture<TestIamPermissionsResponse> future = publisherClient.testIamPermissionsCallable().futureCall(request);
+   *   ApiFuture<TestIamPermissionsResponse> future = publisherClient.testIamPermissionsCallable().futureCall(request);
    *   // Do something
    *   TestIamPermissionsResponse response = future.get();
    * }
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/SubscriberClient.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/SubscriberClient.java
index 27e889e9ca0d..3a0883e85b7f 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/SubscriberClient.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/SubscriberClient.java
@@ -328,7 +328,7 @@ public final Subscription createSubscription(Subscription request) {
    *     .setNameWithSubscriptionName(name)
    *     .setTopicWithTopicName(topic)
    *     .build();
-   *   RpcFuture<Subscription> future = subscriberClient.createSubscriptionCallable().futureCall(request);
+   *   ApiFuture<Subscription> future = subscriberClient.createSubscriptionCallable().futureCall(request);
    *   // Do something
    *   Subscription response = future.get();
    * }
@@ -399,7 +399,7 @@ private final Subscription getSubscription(GetSubscriptionRequest request) {
    *   GetSubscriptionRequest request = GetSubscriptionRequest.newBuilder()
    *     .setSubscriptionWithSubscriptionName(subscription)
    *     .build();
-   *   RpcFuture<Subscription> future = subscriberClient.getSubscriptionCallable().futureCall(request);
+   *   ApiFuture<Subscription> future = subscriberClient.getSubscriptionCallable().futureCall(request);
    *   // Do something
    *   Subscription response = future.get();
    * }
@@ -471,7 +471,7 @@ public final ListSubscriptionsPagedResponse listSubscriptions(ListSubscriptionsR
    *   ListSubscriptionsRequest request = ListSubscriptionsRequest.newBuilder()
    *     .setProjectWithProjectName(project)
    *     .build();
-   *   RpcFuture<ListSubscriptionsPagedResponse> future = subscriberClient.listSubscriptionsPagedCallable().futureCall(request);
+   *   ApiFuture<ListSubscriptionsPagedResponse> future = subscriberClient.listSubscriptionsPagedCallable().futureCall(request);
    *   // Do something
    *   for (Subscription element : future.get().iterateAllElements()) {
    *     // doThingsWith(element);
@@ -586,7 +586,7 @@ private final void deleteSubscription(DeleteSubscriptionRequest request) {
    *   DeleteSubscriptionRequest request = DeleteSubscriptionRequest.newBuilder()
    *     .setSubscriptionWithSubscriptionName(subscription)
    *     .build();
-   *   RpcFuture<Void> future = subscriberClient.deleteSubscriptionCallable().futureCall(request);
+   *   ApiFuture<Void> future = subscriberClient.deleteSubscriptionCallable().futureCall(request);
    *   // Do something
    *   future.get();
    * }
@@ -685,7 +685,7 @@ public final void modifyAckDeadline(ModifyAckDeadlineRequest request) {
    *     .addAllAckIds(ackIds)
    *     .setAckDeadlineSeconds(ackDeadlineSeconds)
    *     .build();
-   *   RpcFuture<Void> future = subscriberClient.modifyAckDeadlineCallable().futureCall(request);
+   *   ApiFuture<Void> future = subscriberClient.modifyAckDeadlineCallable().futureCall(request);
    *   // Do something
    *   future.get();
    * }
@@ -776,7 +776,7 @@ public final void acknowledge(AcknowledgeRequest request) {
    *     .setSubscriptionWithSubscriptionName(subscription)
    *     .addAllAckIds(ackIds)
    *     .build();
-   *   RpcFuture<Void> future = subscriberClient.acknowledgeCallable().futureCall(request);
+   *   ApiFuture<Void> future = subscriberClient.acknowledgeCallable().futureCall(request);
    *   // Do something
    *   future.get();
    * }
@@ -869,7 +869,7 @@ public final PullResponse pull(PullRequest request) {
    *     .setSubscriptionWithSubscriptionName(subscription)
    *     .setMaxMessages(maxMessages)
    *     .build();
-   *   RpcFuture<PullResponse> future = subscriberClient.pullCallable().futureCall(request);
+   *   ApiFuture<PullResponse> future = subscriberClient.pullCallable().futureCall(request);
    *   // Do something
    *   PullResponse response = future.get();
    * }
@@ -1018,7 +1018,7 @@ public final void modifyPushConfig(ModifyPushConfigRequest request) {
    *     .setSubscriptionWithSubscriptionName(subscription)
    *     .setPushConfig(pushConfig)
    *     .build();
-   *   RpcFuture<Void> future = subscriberClient.modifyPushConfigCallable().futureCall(request);
+   *   ApiFuture<Void> future = subscriberClient.modifyPushConfigCallable().futureCall(request);
    *   // Do something
    *   future.get();
    * }
@@ -1096,7 +1096,7 @@ public final Policy setIamPolicy(SetIamPolicyRequest request) {
    *     .setResource(formattedResource)
    *     .setPolicy(policy)
    *     .build();
-   *   RpcFuture<Policy> future = subscriberClient.setIamPolicyCallable().futureCall(request);
+   *   ApiFuture<Policy> future = subscriberClient.setIamPolicyCallable().futureCall(request);
    *   // Do something
    *   Policy response = future.get();
    * }
@@ -1168,7 +1168,7 @@ private final Policy getIamPolicy(GetIamPolicyRequest request) {
    *   GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
    *     .setResource(formattedResource)
    *     .build();
-   *   RpcFuture<Policy> future = subscriberClient.getIamPolicyCallable().futureCall(request);
+   *   ApiFuture<Policy> future = subscriberClient.getIamPolicyCallable().futureCall(request);
    *   // Do something
    *   Policy response = future.get();
    * }
@@ -1253,7 +1253,7 @@ public final TestIamPermissionsResponse testIamPermissions(TestIamPermissionsReq
    *     .setResource(formattedResource)
    *     .addAllPermissions(permissions)
    *     .build();
-   *   RpcFuture<TestIamPermissionsResponse> future = subscriberClient.testIamPermissionsCallable().futureCall(request);
+   *   ApiFuture<TestIamPermissionsResponse> future = subscriberClient.testIamPermissionsCallable().futureCall(request);
    *   // Do something
    *   TestIamPermissionsResponse response = future.get();
    * }
diff --git a/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/spi/v1/PublisherImplTest.java b/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/spi/v1/PublisherImplTest.java
index d078c496f475..c4c919fc04dd 100644
--- a/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/spi/v1/PublisherImplTest.java
+++ b/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/spi/v1/PublisherImplTest.java
@@ -23,8 +23,8 @@
 import static org.mockito.Mockito.atLeast;
 import static org.mockito.Mockito.times;
 
-import com.google.api.gax.core.RpcFuture;
 import com.google.api.gax.grpc.BundlingSettings;
+import com.google.api.gax.core.ApiFuture;
 import com.google.api.gax.grpc.ChannelProvider;
 import com.google.api.gax.grpc.ExecutorProvider;
 import com.google.api.gax.grpc.FixedExecutorProvider;
@@ -56,7 +56,6 @@
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 
-/** Tests for {@link PublisherImpl}. */
 @RunWith(JUnit4.class)
 public class PublisherImplTest {
 
@@ -136,8 +135,8 @@ public void testPublishByDuration() throws Exception {
     testPublisherServiceImpl.addPublishResponse(
         PublishResponse.newBuilder().addMessageIds("1").addMessageIds("2"));
 
-    RpcFuture publishFuture1 = sendTestMessage(publisher, "A");
-    RpcFuture publishFuture2 = sendTestMessage(publisher, "B");
+    ApiFuture publishFuture1 = sendTestMessage(publisher, "A");
+    ApiFuture publishFuture2 = sendTestMessage(publisher, "B");
 
     assertFalse(publishFuture1.isDone());
     assertFalse(publishFuture2.isDone());
@@ -169,9 +168,9 @@ public void testPublishByNumBundledMessages() throws Exception {
         .addPublishResponse(PublishResponse.newBuilder().addMessageIds("1").addMessageIds("2"))
         .addPublishResponse(PublishResponse.newBuilder().addMessageIds("3").addMessageIds("4"));
 
-    RpcFuture publishFuture1 = sendTestMessage(publisher, "A");
-    RpcFuture publishFuture2 = sendTestMessage(publisher, "B");
-    RpcFuture publishFuture3 = sendTestMessage(publisher, "C");
+    ApiFuture publishFuture1 = sendTestMessage(publisher, "A");
+    ApiFuture publishFuture2 = sendTestMessage(publisher, "B");
+    ApiFuture publishFuture3 = sendTestMessage(publisher, "C");
 
     // Note we are not advancing time but message should still get published
 
@@ -180,7 +179,7 @@ public void testPublishByNumBundledMessages() throws Exception {
 
     assertFalse(publishFuture3.isDone());
 
-    RpcFuture publishFuture4 =
+    ApiFuture publishFuture4 =
         publisher.publish(PubsubMessage.newBuilder().setData(ByteString.copyFromUtf8("D")).build());
 
     assertEquals("3", publishFuture3.get());
@@ -209,9 +208,9 @@ public void testSinglePublishByNumBytes() throws Exception {
         .addPublishResponse(PublishResponse.newBuilder().addMessageIds("1").addMessageIds("2"))
         .addPublishResponse(PublishResponse.newBuilder().addMessageIds("3").addMessageIds("4"));
 
-    RpcFuture publishFuture1 = sendTestMessage(publisher, "A");
-    RpcFuture publishFuture2 = sendTestMessage(publisher, "B");
-    RpcFuture publishFuture3 = sendTestMessage(publisher, "C");
+    ApiFuture publishFuture1 = sendTestMessage(publisher, "A");
+    ApiFuture publishFuture2 = sendTestMessage(publisher, "B");
+    ApiFuture publishFuture3 = sendTestMessage(publisher, "C");
 
     // Note we are not advancing time but message should still get published
 
@@ -219,7 +218,7 @@ public void testSinglePublishByNumBytes() throws Exception {
     assertEquals("2", publishFuture2.get());
     assertFalse(publishFuture3.isDone());
 
-    RpcFuture publishFuture4 = sendTestMessage(publisher, "D");
+    ApiFuture publishFuture4 = sendTestMessage(publisher, "D");
     assertEquals("3", publishFuture3.get());
     assertEquals("4", publishFuture4.get());
 
@@ -245,18 +244,18 @@ public void testPublishMixedSizeAndDuration() throws Exception {
         PublishResponse.newBuilder().addMessageIds("1").addMessageIds("2"));
     testPublisherServiceImpl.addPublishResponse(PublishResponse.newBuilder().addMessageIds("3"));
 
-    RpcFuture publishFuture1 = sendTestMessage(publisher, "A");
+    ApiFuture publishFuture1 = sendTestMessage(publisher, "A");
 
     fakeExecutor.advanceTime(Duration.standardSeconds(2));
     assertFalse(publishFuture1.isDone());
 
-    RpcFuture publishFuture2 = sendTestMessage(publisher, "B");
+    ApiFuture publishFuture2 = sendTestMessage(publisher, "B");
 
     // Publishing triggered by bundle size
     assertEquals("1", publishFuture1.get());
     assertEquals("2", publishFuture2.get());
 
-    RpcFuture publishFuture3 = sendTestMessage(publisher, "C");
+    ApiFuture publishFuture3 = sendTestMessage(publisher, "C");
 
     assertFalse(publishFuture3.isDone());
 
@@ -272,7 +271,7 @@ public void testPublishMixedSizeAndDuration() throws Exception {
     publisher.shutdown();
   }
 
-  private RpcFuture sendTestMessage(Publisher publisher, String data) {
+  private ApiFuture sendTestMessage(Publisher publisher, String data) {
     return publisher.publish(
         PubsubMessage.newBuilder().setData(ByteString.copyFromUtf8(data)).build());
   }
@@ -293,7 +292,7 @@ public void testPublishFailureRetries() throws Exception {
     testPublisherServiceImpl.addPublishError(new Throwable("Transiently failing"));
     testPublisherServiceImpl.addPublishResponse(PublishResponse.newBuilder().addMessageIds("1"));
 
-    RpcFuture publishFuture1 = sendTestMessage(publisher, "A");
+    ApiFuture publishFuture1 = sendTestMessage(publisher, "A");
 
     assertEquals("1", publishFuture1.get());
 
@@ -323,7 +322,7 @@ public void testPublishFailureRetries_exceededsRetryDuration() throws Exception
     for (int i = 0; i < 11; ++i) {
       testPublisherServiceImpl.addPublishError(new FakeException());
     }
-    RpcFuture publishFuture1 = sendTestMessage(publisher, "A");
+    ApiFuture publishFuture1 = sendTestMessage(publisher, "A");
 
     try {
       publishFuture1.get();
@@ -357,7 +356,7 @@ public void testPublishFailureRetries_nonRetryableFailsImmediately() throws Exce
             .build(); // To demonstrate that reaching duration will trigger publish
 
     testPublisherServiceImpl.addPublishError(new StatusException(Status.INVALID_ARGUMENT));
-    RpcFuture publishFuture1 = sendTestMessage(publisher, "A");
+    ApiFuture publishFuture1 = sendTestMessage(publisher, "A");
 
     try {
       publishFuture1.get();
diff --git a/google-cloud-speech/src/main/java/com/google/cloud/speech/spi/v1beta1/SpeechClient.java b/google-cloud-speech/src/main/java/com/google/cloud/speech/spi/v1beta1/SpeechClient.java
index 4cc2e21a9583..1c66cf54bd27 100644
--- a/google-cloud-speech/src/main/java/com/google/cloud/speech/spi/v1beta1/SpeechClient.java
+++ b/google-cloud-speech/src/main/java/com/google/cloud/speech/spi/v1beta1/SpeechClient.java
@@ -292,7 +292,7 @@ public final SyncRecognizeResponse syncRecognize(SyncRecognizeRequest request) {
    *     .setConfig(config)
    *     .setAudio(audio)
    *     .build();
-   *   RpcFuture<SyncRecognizeResponse> future = speechClient.syncRecognizeCallable().futureCall(request);
+   *   ApiFuture<SyncRecognizeResponse> future = speechClient.syncRecognizeCallable().futureCall(request);
    *   // Do something
    *   SyncRecognizeResponse response = future.get();
    * }
@@ -434,7 +434,7 @@ public final OperationFuture asyncRecognizeAsync(
    *     .setConfig(config)
    *     .setAudio(audio)
    *     .build();
-   *   RpcFuture<Operation> future = speechClient.asyncRecognizeCallable().futureCall(request);
+   *   ApiFuture<Operation> future = speechClient.asyncRecognizeCallable().futureCall(request);
    *   // Do something
    *   Operation response = future.get();
    * }
diff --git a/google-cloud-trace/src/main/java/com/google/cloud/trace/spi/v1/TraceServiceClient.java b/google-cloud-trace/src/main/java/com/google/cloud/trace/spi/v1/TraceServiceClient.java
index bee9e8f4e2ef..a829e434920a 100644
--- a/google-cloud-trace/src/main/java/com/google/cloud/trace/spi/v1/TraceServiceClient.java
+++ b/google-cloud-trace/src/main/java/com/google/cloud/trace/spi/v1/TraceServiceClient.java
@@ -237,7 +237,7 @@ public final void patchTraces(PatchTracesRequest request) {
    *     .setProjectId(projectId)
    *     .setTraces(traces)
    *     .build();
-   *   RpcFuture<Void> future = traceServiceClient.patchTracesCallable().futureCall(request);
+   *   ApiFuture<Void> future = traceServiceClient.patchTracesCallable().futureCall(request);
    *   // Do something
    *   future.get();
    * }
@@ -311,7 +311,7 @@ private final Trace getTrace(GetTraceRequest request) {
    *     .setProjectId(projectId)
    *     .setTraceId(traceId)
    *     .build();
-   *   RpcFuture<Trace> future = traceServiceClient.getTraceCallable().futureCall(request);
+   *   ApiFuture<Trace> future = traceServiceClient.getTraceCallable().futureCall(request);
    *   // Do something
    *   Trace response = future.get();
    * }
@@ -381,7 +381,7 @@ public final ListTracesPagedResponse listTraces(ListTracesRequest request) {
    *   ListTracesRequest request = ListTracesRequest.newBuilder()
    *     .setProjectId(projectId)
    *     .build();
-   *   RpcFuture<ListTracesPagedResponse> future = traceServiceClient.listTracesPagedCallable().futureCall(request);
+   *   ApiFuture<ListTracesPagedResponse> future = traceServiceClient.listTracesPagedCallable().futureCall(request);
    *   // Do something
    *   for (Trace element : future.get().iterateAllElements()) {
    *     // doThingsWith(element);
diff --git a/google-cloud-vision/src/main/java/com/google/cloud/vision/spi/v1/ImageAnnotatorClient.java b/google-cloud-vision/src/main/java/com/google/cloud/vision/spi/v1/ImageAnnotatorClient.java
index 40643843e0fb..d7772f67ddf9 100644
--- a/google-cloud-vision/src/main/java/com/google/cloud/vision/spi/v1/ImageAnnotatorClient.java
+++ b/google-cloud-vision/src/main/java/com/google/cloud/vision/spi/v1/ImageAnnotatorClient.java
@@ -208,7 +208,7 @@ private final BatchAnnotateImagesResponse batchAnnotateImages(
    *   BatchAnnotateImagesRequest request = BatchAnnotateImagesRequest.newBuilder()
    *     .addAllRequests(requests)
    *     .build();
-   *   RpcFuture<BatchAnnotateImagesResponse> future = imageAnnotatorClient.batchAnnotateImagesCallable().futureCall(request);
+   *   ApiFuture<BatchAnnotateImagesResponse> future = imageAnnotatorClient.batchAnnotateImagesCallable().futureCall(request);
    *   // Do something
    *   BatchAnnotateImagesResponse response = future.get();
    * }

From d63ba688d290b0bf9faf9141ac7821ab3e3a162b Mon Sep 17 00:00:00 2001
From: Garrett Jones 
Date: Mon, 6 Mar 2017 15:37:19 -0800
Subject: [PATCH 2/3] PR fixes

---
 google-cloud-pubsub/README.md                                 | 4 ++--
 .../main/java/com/google/cloud/pubsub/deprecated/Message.java | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/google-cloud-pubsub/README.md b/google-cloud-pubsub/README.md
index 000c429ddf7d..3b09ff16401f 100644
--- a/google-cloud-pubsub/README.md
+++ b/google-cloud-pubsub/README.md
@@ -111,7 +111,7 @@ try (PublisherClient publisherClient = PublisherClient.create()) {
 With Pub/Sub you can publish messages to a topic. Add the following import at the top of your file:
 
 ```java
-import com.google.api.gax.core.RpcFuture;
+import com.google.api.gax.core.ApiFuture;
 import com.google.cloud.pubsub.spi.v1.Publisher;
 import com.google.protobuf.ByteString;
 import com.google.pubsub.v1.PubsubMessage;
@@ -124,7 +124,7 @@ try {
   publisher = Publisher.newBuilder(topic).build();
   ByteString data = ByteString.copyFromUtf8("my-message");
   PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(data).build();
-  RpcFuture messageIdFuture = publisher.publish(pubsubMessage);
+  ApiFuture messageIdFuture = publisher.publish(pubsubMessage);
 } finally {
   if (publisher != null) {
     publisher.shutdown();
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/deprecated/Message.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/deprecated/Message.java
index a03e70e57217..a4e0e7fc4755 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/deprecated/Message.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/deprecated/Message.java
@@ -75,7 +75,7 @@ private static final class InternalByteArray extends ByteArray {
     }
 
     @Override
-    public ByteString getByteString() {
+    protected ByteString getByteString() {
       return super.getByteString();
     }
   }

From 767ede91589b8fb2827d8bab7be52ad3dce46ebe Mon Sep 17 00:00:00 2001
From: Garrett Jones 
Date: Mon, 6 Mar 2017 16:37:06 -0800
Subject: [PATCH 3/3] Updating GAX dependency

---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 9aaaa518aece..871da038417e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -92,7 +92,7 @@
     github
     0.6.0
     1.0.3
-    0.1.4
+    0.2.0
     0.1.5
     0.9.4-alpha-SNAPSHOT
     0.9.4-beta-SNAPSHOT