Skip to content

Commit

Permalink
PublisherClient/SubscriberClient snippets (googleapis#1663)
Browse files Browse the repository at this point in the history
adding snippets for PublisherClient, SubscriberClient
  • Loading branch information
jabubake authored and rybosome committed Mar 9, 2017
1 parent 13fad1c commit 8663984
Show file tree
Hide file tree
Showing 8 changed files with 830 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

/*
* EDITING INSTRUCTIONS
* This file is referenced in Subscriber's javadoc. Any change to this file should be reflected in
* PubSub's javadoc.
* This file is referenced in MessageReceiver's javadoc.
* Any change to this file should be reflected in MessageReceiver's javadoc.
*/

package com.google.cloud.examples.pubsub.snippets;
Expand All @@ -28,6 +28,8 @@
import com.google.pubsub.v1.PubsubMessage;
import java.util.concurrent.BlockingQueue;

/** This class contains snippets for the {@link MessageReceiver} interface. */

public class MessageReceiverSnippets {
private final BlockingQueue<PubsubMessage> blockingQueue;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
/*
* Copyright 2017 Google Inc. All Rights Reserved.
*
* 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.examples.pubsub.snippets;

import com.google.cloud.Identity;
import com.google.cloud.Role;
import com.google.cloud.ServiceOptions;
import com.google.cloud.pubsub.spi.v1.PagedResponseWrappers.ListTopicSubscriptionsPagedResponse;
import com.google.cloud.pubsub.spi.v1.PagedResponseWrappers.ListTopicsPagedResponse;
import com.google.cloud.pubsub.spi.v1.PublisherClient;
import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import com.google.iam.v1.TestIamPermissionsResponse;
import com.google.pubsub.v1.ListTopicSubscriptionsRequest;
import com.google.pubsub.v1.ListTopicsRequest;
import com.google.pubsub.v1.ProjectName;
import com.google.pubsub.v1.Topic;
import com.google.pubsub.v1.TopicName;
import java.util.LinkedList;
import java.util.List;

/** This class contains a number of snippets for the {@link PublisherClient} interface. */
public class PublisherClientSnippets {

private final String projectId;

public PublisherClientSnippets() {
this.projectId = ServiceOptions.getDefaultProjectId();
}

public String getProjectId() {
return projectId;
}

/** Example of creating a topic. */
public Topic createTopic(String topicId) throws Exception {
try (PublisherClient publisherClient = PublisherClient.create()) {
// [START createTopic]
TopicName topicName = TopicName.create(projectId, topicId);
Topic topic = publisherClient.createTopic(topicName);
// [END createTopic]
return topic;
}
}

/** Example of listing topics. */
public ListTopicsPagedResponse listTopics() throws Exception {
try (PublisherClient publisherClient = PublisherClient.create()) {
// [START listTopics]
ListTopicsRequest listTopicsRequest =
ListTopicsRequest.newBuilder()
.setProjectWithProjectName(ProjectName.create(projectId))
.build();
ListTopicsPagedResponse response = publisherClient.listTopics(listTopicsRequest);
Iterable<Topic> topics = response.iterateAllElements();
for (Topic topic : topics) {
// do something with the topic
}
// [END listTopics]
return response;
}
}

/** Example of listing topics for a subscription. */
public ListTopicSubscriptionsPagedResponse listTopicSubscriptions(String topicId)
throws Exception {
try (PublisherClient publisherClient = PublisherClient.create()) {
// [START listTopicSubscriptions]
TopicName topicName = TopicName.create(projectId, topicId);
ListTopicSubscriptionsRequest request =
ListTopicSubscriptionsRequest.newBuilder()
.setTopicWithTopicName(topicName)
.build();
ListTopicSubscriptionsPagedResponse response =
publisherClient.listTopicSubscriptions(request);
Iterable<String> subscriptionNames = response.iterateAllElements();
for (String subscriptionName : subscriptionNames) {
// do something with the subscription name
}
// [END listTopicSubscriptions]
return response;
}
}

/** Example of deleting a topic. */
public TopicName deleteTopic(String topicId) throws Exception {
try (PublisherClient publisherClient = PublisherClient.create()) {
// [START deleteTopic]
TopicName topicName = TopicName.create(projectId, topicId);
publisherClient.deleteTopic(topicName);
// [END deleteTopic]
return topicName;
}
}

/** Example of getting a topic policy. */
public Policy getTopicPolicy(String topicId) throws Exception {
try (PublisherClient publisherClient = PublisherClient.create()) {
// [START getTopicPolicy]
TopicName topicName = TopicName.create(projectId, topicId);
Policy policy = publisherClient.getIamPolicy(topicName.toString());
if (policy == null) {
// topic iam policy was not found
}
// [END getTopicPolicy]
return policy;
}
}

/** Example of replacing a topic policy. */
public Policy replaceTopicPolicy(String topicId) throws Exception {
try (PublisherClient publisherClient = PublisherClient.create()) {
// [START replaceTopicPolicy]
String topicName = TopicName.create(projectId, topicId).toString();
Policy policy = publisherClient.getIamPolicy(topicName);
// add role -> members binding
Binding binding =
Binding.newBuilder()
.setRole(Role.viewer().toString())
.addMembers(Identity.allAuthenticatedUsers().toString())
.build();
// create updated policy
Policy updatedPolicy = Policy.newBuilder(policy).addBindings(binding).build();
updatedPolicy = publisherClient.setIamPolicy(topicName, updatedPolicy);
// [END replaceTopicPolicy]
return updatedPolicy;
}
}

/** Example of testing whether the caller has the provided permissions on a topic.
* Only viewer, editor or admin/owner can view results of pubsub.topics.get */
public TestIamPermissionsResponse testTopicPermissions(String topicId) throws Exception {
try (PublisherClient publisherClient = PublisherClient.create()) {
// [START testTopicPermissions]
List<String> permissions = new LinkedList<>();
permissions.add("pubsub.topics.get");
TopicName topicName = TopicName.create(projectId, topicId);
TestIamPermissionsResponse testedPermissions =
publisherClient.testIamPermissions(topicName.toString(), permissions);
// [END testTopicPermissions]
return testedPermissions;
}
}

/** Example of getting a topic. */
public Topic getTopic(String topicId) throws Exception {
try (PublisherClient publisherClient = PublisherClient.create()) {
// [START getTopic]
TopicName topicName = TopicName.create(projectId, topicId);
Topic topic = publisherClient.getTopic(topicName);
// [END createTopic]
return topic;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@
* limitations under the License.
*/

/*
* EDITING INSTRUCTIONS
* This file is referenced in Publisher's javadoc. Any change to this file should be reflected in
* Publisher's javadoc.
*/

package com.google.cloud.examples.pubsub.snippets;

import com.google.api.gax.core.RpcFuture;
Expand All @@ -23,39 +29,37 @@
import com.google.pubsub.v1.PubsubMessage;
import com.google.pubsub.v1.TopicName;

/** This class contains snippets for the {@link Publisher} interface. */
public class PublisherSnippets {
private final Publisher publisher;

public PublisherSnippets(Publisher publisher) {
this.publisher = publisher;
}

/**
* Example of publishing a message.
*/
/** Example of publishing a message. */
// [TARGET publish(PubsubMessage)]
// [VARIABLE "my_message"]
public RpcFuture<String> publish(String message) {
// [START publish]
ByteString data = ByteString.copyFromUtf8(message);
PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(data).build();
RpcFuture<String> messageIdFuture = publisher.publish(pubsubMessage);
messageIdFuture.addCallback(new RpcFutureCallback<String>() {
public void onSuccess(String messageId) {
System.out.println("published with message id: " + messageId);
}
messageIdFuture.addCallback(
new RpcFutureCallback<String>() {
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;
}

/**
* Example of creating a {@code Publisher}.
*/
/** Example of creating a {@code Publisher}. */
// [TARGET newBuilder(TopicName)]
// [VARIABLE "my_project"]
// [VARIABLE "my_topic"]
Expand Down
Loading

0 comments on commit 8663984

Please sign in to comment.