From 89fcc8848cc7d421e8dde9b7dca28a6940d8386f Mon Sep 17 00:00:00 2001 From: dpcollins-google <40498610+dpcollins-google@users.noreply.github.com> Date: Fri, 10 Apr 2020 17:13:48 -0400 Subject: [PATCH 1/4] feat: add interfaces for cloud pubsub publishers and subscribers (#134) --- .../com/google/cloud/pubsub/v1/Publisher.java | 3 +- .../cloud/pubsub/v1/PublisherInterface.java | 53 +++++++++++++++++++ .../google/cloud/pubsub/v1/Subscriber.java | 2 +- .../cloud/pubsub/v1/SubscriberInterface.java | 26 +++++++++ 4 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/PublisherInterface.java create mode 100644 google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriberInterface.java diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java index 659d84bb6..282df369f 100644 --- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java +++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java @@ -85,7 +85,7 @@ *

{@link Publisher} will use the credentials set on the channel, which uses application default * credentials through {@link GoogleCredentials#getApplicationDefault} by default. */ -public class Publisher { +public class Publisher implements PublisherInterface { private static final Logger logger = Logger.getLogger(Publisher.class.getName()); private final String topicName; @@ -226,6 +226,7 @@ public String getTopicNameString() { * @param message the message to publish. * @return the message ID wrapped in a future. */ + @Override public ApiFuture publish(PubsubMessage message) { Preconditions.checkState(!shutdown.get(), "Cannot publish on a shut-down publisher."); diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/PublisherInterface.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/PublisherInterface.java new file mode 100644 index 000000000..80a465053 --- /dev/null +++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/PublisherInterface.java @@ -0,0 +1,53 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.pubsub.v1; + +import com.google.api.core.ApiFuture; +import com.google.pubsub.v1.PubsubMessage; + +/** + * An interface for a Cloud Pub/Sub publisher. + */ +public interface PublisherInterface { + /** + * Schedules the publishing of a message. The future will be returned with the message ID on + * success or an exception on failure. + * + *

Example of publishing a message. + * + *

{@code
+   * String message = "my_message";
+   * ByteString data = ByteString.copyFromUtf8(message);
+   * PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(data).build();
+   * 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);
+   *   }
+   * }, MoreExecutors.directExecutor());
+   * }
+ * + * @param message the message to publish. + * @return the message ID wrapped in a future. + */ + ApiFuture publish(PubsubMessage message); +} diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java index 8baaf2472..0054408ee 100644 --- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java +++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java @@ -90,7 +90,7 @@ * href="https://github.com/google/guava/wiki/ServiceExplained">Guava documentation for more * details. */ -public class Subscriber extends AbstractApiService { +public class Subscriber extends AbstractApiService implements SubscriberInterface { private static final int THREADS_PER_CHANNEL = 5; private static final int MAX_INBOUND_MESSAGE_SIZE = 20 * 1024 * 1024; // 20MB API maximum message size. diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriberInterface.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriberInterface.java new file mode 100644 index 000000000..e97e9141f --- /dev/null +++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriberInterface.java @@ -0,0 +1,26 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.pubsub.v1; + +import com.google.api.core.ApiService; + +/** + * The core interface for a Cloud Pub/Sub subscriber, consisting only of + * ApiService methods. + */ +public interface SubscriberInterface extends ApiService {} From d8239bdc080d0ef595bac90451485b1d3d50f266 Mon Sep 17 00:00:00 2001 From: Tianzi Cai Date: Fri, 10 Apr 2020 14:17:44 -0700 Subject: [PATCH 2/4] docs: update libraries-bom (#140) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ca3d245d7..77d0d1786 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ If you are using Maven with a BOM, add this to your pom.xml file: com.google.cloud libraries-bom - 2.9.0 + 4.4.1 pom import From 2080f657817c1f1c517ed33cdb003dbaba9757cb Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2020 19:34:51 +0000 Subject: [PATCH 3/4] chore: release 1.104.2-SNAPSHOT (#142) :robot: I have created a release \*beep\* \*boop\* --- ### Updating meta-information for bleeding-edge SNAPSHOT release. --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). --- google-cloud-pubsub-bom/pom.xml | 8 ++++---- google-cloud-pubsub/pom.xml | 4 ++-- grpc-google-cloud-pubsub-v1/pom.xml | 4 ++-- pom.xml | 8 ++++---- proto-google-cloud-pubsub-v1/pom.xml | 4 ++-- versions.txt | 6 +++--- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/google-cloud-pubsub-bom/pom.xml b/google-cloud-pubsub-bom/pom.xml index 49f3b4443..f889a7d9f 100644 --- a/google-cloud-pubsub-bom/pom.xml +++ b/google-cloud-pubsub-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-pubsub-bom - 1.104.1 + 1.104.2-SNAPSHOT pom com.google.cloud @@ -64,17 +64,17 @@ com.google.api.grpc proto-google-cloud-pubsub-v1 - 1.86.1 + 1.86.2-SNAPSHOT com.google.api.grpc grpc-google-cloud-pubsub-v1 - 1.86.1 + 1.86.2-SNAPSHOT com.google.cloud google-cloud-pubsub - 1.104.1 + 1.104.2-SNAPSHOT diff --git a/google-cloud-pubsub/pom.xml b/google-cloud-pubsub/pom.xml index 468fe5361..c755bb5e5 100644 --- a/google-cloud-pubsub/pom.xml +++ b/google-cloud-pubsub/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-pubsub - 1.104.1 + 1.104.2-SNAPSHOT jar Google Cloud Pub/Sub https://github.com/googleapis/java-pubsub @@ -11,7 +11,7 @@ com.google.cloud google-cloud-pubsub-parent - 1.104.1 + 1.104.2-SNAPSHOT google-cloud-pubsub diff --git a/grpc-google-cloud-pubsub-v1/pom.xml b/grpc-google-cloud-pubsub-v1/pom.xml index d48d9a57f..4fbe7585c 100644 --- a/grpc-google-cloud-pubsub-v1/pom.xml +++ b/grpc-google-cloud-pubsub-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-pubsub-v1 - 1.86.1 + 1.86.2-SNAPSHOT grpc-google-cloud-pubsub-v1 GRPC library for grpc-google-cloud-pubsub-v1 com.google.cloud google-cloud-pubsub-parent - 1.104.1 + 1.104.2-SNAPSHOT diff --git a/pom.xml b/pom.xml index f8e1fe796..590873622 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-pubsub-parent pom - 1.104.1 + 1.104.2-SNAPSHOT Google Cloud Pub/Sub Parent https://github.com/googleapis/java-pubsub @@ -86,17 +86,17 @@ com.google.api.grpc proto-google-cloud-pubsub-v1 - 1.86.1 + 1.86.2-SNAPSHOT com.google.api.grpc grpc-google-cloud-pubsub-v1 - 1.86.1 + 1.86.2-SNAPSHOT com.google.cloud google-cloud-pubsub - 1.104.1 + 1.104.2-SNAPSHOT diff --git a/proto-google-cloud-pubsub-v1/pom.xml b/proto-google-cloud-pubsub-v1/pom.xml index ce640eee3..eab94e5e4 100644 --- a/proto-google-cloud-pubsub-v1/pom.xml +++ b/proto-google-cloud-pubsub-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-pubsub-v1 - 1.86.1 + 1.86.2-SNAPSHOT proto-google-cloud-pubsub-v1 PROTO library for proto-google-cloud-pubsub-v1 com.google.cloud google-cloud-pubsub-parent - 1.104.1 + 1.104.2-SNAPSHOT diff --git a/versions.txt b/versions.txt index 7c7fd663b..014167f12 100644 --- a/versions.txt +++ b/versions.txt @@ -1,6 +1,6 @@ # Format: # module:released-version:current-version -proto-google-cloud-pubsub-v1:1.86.1:1.86.1 -grpc-google-cloud-pubsub-v1:1.86.1:1.86.1 -google-cloud-pubsub:1.104.1:1.104.1 \ No newline at end of file +proto-google-cloud-pubsub-v1:1.86.1:1.86.2-SNAPSHOT +grpc-google-cloud-pubsub-v1:1.86.1:1.86.2-SNAPSHOT +google-cloud-pubsub:1.104.1:1.104.2-SNAPSHOT \ No newline at end of file From 344f5eb6d03fe8113414121f610051a37fba8164 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 14 Apr 2020 12:14:16 -0700 Subject: [PATCH 4/4] chore: release 1.105.0 (#144) * updated CHANGELOG.md [ci skip] * updated README.md [ci skip] * updated versions.txt [ci skip] * updated google-cloud-pubsub-bom/pom.xml [ci skip] * updated google-cloud-pubsub/pom.xml [ci skip] * updated grpc-google-cloud-pubsub-v1/pom.xml [ci skip] * updated pom.xml [ci skip] * updated proto-google-cloud-pubsub-v1/pom.xml [ci skip] Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- CHANGELOG.md | 12 ++++++++++++ README.md | 6 +++--- google-cloud-pubsub-bom/pom.xml | 8 ++++---- google-cloud-pubsub/pom.xml | 4 ++-- grpc-google-cloud-pubsub-v1/pom.xml | 4 ++-- pom.xml | 8 ++++---- proto-google-cloud-pubsub-v1/pom.xml | 4 ++-- versions.txt | 6 +++--- 8 files changed, 32 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3919efb3d..e574a0bcb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [1.105.0](https://www.github.com/googleapis/java-pubsub/compare/v1.104.1...v1.105.0) (2020-04-13) + + +### Features + +* add interfaces for cloud pubsub publishers and subscribers ([#134](https://www.github.com/googleapis/java-pubsub/issues/134)) ([89fcc88](https://www.github.com/googleapis/java-pubsub/commit/89fcc8848cc7d421e8dde9b7dca28a6940d8386f)) + + +### Documentation + +* update libraries-bom ([#140](https://www.github.com/googleapis/java-pubsub/issues/140)) ([d8239bd](https://www.github.com/googleapis/java-pubsub/commit/d8239bdc080d0ef595bac90451485b1d3d50f266)) + ### [1.104.1](https://www.github.com/googleapis/java-pubsub/compare/v1.104.0...v1.104.1) (2020-04-08) diff --git a/README.md b/README.md index 77d0d1786..213395c8f 100644 --- a/README.md +++ b/README.md @@ -37,16 +37,16 @@ If you are using Maven without a BOM, add this to your pom.xml file com.google.cloud google-cloud-pubsub - 1.104.1 + 1.105.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-pubsub:1.104.1' +compile 'com.google.cloud:google-cloud-pubsub:1.105.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-pubsub" % "1.104.1" +libraryDependencies += "com.google.cloud" % "google-cloud-pubsub" % "1.105.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-pubsub-bom/pom.xml b/google-cloud-pubsub-bom/pom.xml index f889a7d9f..64cfa6741 100644 --- a/google-cloud-pubsub-bom/pom.xml +++ b/google-cloud-pubsub-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-pubsub-bom - 1.104.2-SNAPSHOT + 1.105.0 pom com.google.cloud @@ -64,17 +64,17 @@ com.google.api.grpc proto-google-cloud-pubsub-v1 - 1.86.2-SNAPSHOT + 1.87.0 com.google.api.grpc grpc-google-cloud-pubsub-v1 - 1.86.2-SNAPSHOT + 1.87.0 com.google.cloud google-cloud-pubsub - 1.104.2-SNAPSHOT + 1.105.0 diff --git a/google-cloud-pubsub/pom.xml b/google-cloud-pubsub/pom.xml index c755bb5e5..f65484e94 100644 --- a/google-cloud-pubsub/pom.xml +++ b/google-cloud-pubsub/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-pubsub - 1.104.2-SNAPSHOT + 1.105.0 jar Google Cloud Pub/Sub https://github.com/googleapis/java-pubsub @@ -11,7 +11,7 @@ com.google.cloud google-cloud-pubsub-parent - 1.104.2-SNAPSHOT + 1.105.0 google-cloud-pubsub diff --git a/grpc-google-cloud-pubsub-v1/pom.xml b/grpc-google-cloud-pubsub-v1/pom.xml index 4fbe7585c..792f4909c 100644 --- a/grpc-google-cloud-pubsub-v1/pom.xml +++ b/grpc-google-cloud-pubsub-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-pubsub-v1 - 1.86.2-SNAPSHOT + 1.87.0 grpc-google-cloud-pubsub-v1 GRPC library for grpc-google-cloud-pubsub-v1 com.google.cloud google-cloud-pubsub-parent - 1.104.2-SNAPSHOT + 1.105.0 diff --git a/pom.xml b/pom.xml index 590873622..ef335aa83 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-pubsub-parent pom - 1.104.2-SNAPSHOT + 1.105.0 Google Cloud Pub/Sub Parent https://github.com/googleapis/java-pubsub @@ -86,17 +86,17 @@ com.google.api.grpc proto-google-cloud-pubsub-v1 - 1.86.2-SNAPSHOT + 1.87.0 com.google.api.grpc grpc-google-cloud-pubsub-v1 - 1.86.2-SNAPSHOT + 1.87.0 com.google.cloud google-cloud-pubsub - 1.104.2-SNAPSHOT + 1.105.0 diff --git a/proto-google-cloud-pubsub-v1/pom.xml b/proto-google-cloud-pubsub-v1/pom.xml index eab94e5e4..5ae9f7e17 100644 --- a/proto-google-cloud-pubsub-v1/pom.xml +++ b/proto-google-cloud-pubsub-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-pubsub-v1 - 1.86.2-SNAPSHOT + 1.87.0 proto-google-cloud-pubsub-v1 PROTO library for proto-google-cloud-pubsub-v1 com.google.cloud google-cloud-pubsub-parent - 1.104.2-SNAPSHOT + 1.105.0 diff --git a/versions.txt b/versions.txt index 014167f12..ffd681970 100644 --- a/versions.txt +++ b/versions.txt @@ -1,6 +1,6 @@ # Format: # module:released-version:current-version -proto-google-cloud-pubsub-v1:1.86.1:1.86.2-SNAPSHOT -grpc-google-cloud-pubsub-v1:1.86.1:1.86.2-SNAPSHOT -google-cloud-pubsub:1.104.1:1.104.2-SNAPSHOT \ No newline at end of file +proto-google-cloud-pubsub-v1:1.87.0:1.87.0 +grpc-google-cloud-pubsub-v1:1.87.0:1.87.0 +google-cloud-pubsub:1.105.0:1.105.0 \ No newline at end of file