Skip to content

Commit 16957b0

Browse files
authored
return Name objects instead of plain String (#1562)
* return Name objects instead of plain String
1 parent 10bedac commit 16957b0

File tree

6 files changed

+55
-68
lines changed

6 files changed

+55
-68
lines changed

google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/CreateSubscriptionAndPullMessages.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.google.common.util.concurrent.Futures;
2323
import com.google.common.util.concurrent.ListenableFuture;
2424
import com.google.common.util.concurrent.MoreExecutors;
25-
import com.google.common.util.concurrent.Service;
2625
import com.google.pubsub.v1.PubsubMessage;
2726
import com.google.pubsub.v1.PushConfig;
2827
import com.google.pubsub.v1.SubscriptionName;
@@ -52,7 +51,7 @@ public ListenableFuture<MessageReceiver.AckReply> receiveMessage(PubsubMessage m
5251
};
5352
Subscriber subscriber = null;
5453
try {
55-
subscriber = Subscriber.Builder.newBuilder(subscription, receiver).build();
54+
subscriber = Subscriber.newBuilder(subscription, receiver).build();
5655
subscriber.addListener(
5756
new Subscriber.SubscriberListener() {
5857
@Override

google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/CreateTopicAndPublishMessages.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public static void main(String... args) throws Exception {
4040

4141
Publisher publisher = null;
4242
try {
43-
publisher = Publisher.Builder.newBuilder(topic).build();
43+
publisher = Publisher.newBuilder(topic).build();
4444
List<String> messages = Arrays.asList("first message", "second message");
4545
List<ListenableFuture<String>> messageIds = new ArrayList<>();
4646
for (String message : messages) {

google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/Publisher.java

+16-14
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
*
8484
* <pre><code>
8585
* Publisher publisher =
86-
* Publisher.Builder.newBuilder(MY_TOPIC)
86+
* Publisher.newBuilder(MY_TOPIC)
8787
* .setMaxBundleDuration(new Duration(10 * 1000))
8888
* .build();
8989
* List&lt;ListenableFuture&lt;String&gt;&gt; results = new ArrayList&lt;&gt;();
@@ -122,7 +122,8 @@ public static long getApiMaxRequestBytes() {
122122

123123
private static final Logger logger = LoggerFactory.getLogger(Publisher.class);
124124

125-
private final String topic;
125+
private final TopicName topicName;
126+
private final String cachedTopicNameString;
126127

127128
private final BundlingSettings bundlingSettings;
128129
private final RetrySettings retrySettings;
@@ -149,7 +150,8 @@ public static long getApiMaxRequestBytes() {
149150
private ScheduledFuture<?> currentAlarmFuture;
150151

151152
private Publisher(Builder builder) throws IOException {
152-
topic = builder.topic;
153+
topicName = builder.topicName;
154+
cachedTopicNameString = topicName.toString();
153155

154156
this.bundlingSettings = builder.bundlingSettings;
155157
this.retrySettings = builder.retrySettings;
@@ -198,8 +200,8 @@ public void close() throws IOException {
198200
}
199201

200202
/** Topic which the publisher publishes to. */
201-
public String getTopic() {
202-
return topic;
203+
public TopicName getTopicName() {
204+
return topicName;
203205
}
204206

205207
/**
@@ -333,7 +335,7 @@ private void publishAllOutstanding() {
333335

334336
private void publishOutstandingBundle(final OutstandingBundle outstandingBundle) {
335337
PublishRequest.Builder publishRequest = PublishRequest.newBuilder();
336-
publishRequest.setTopic(topic);
338+
publishRequest.setTopic(cachedTopicNameString);
337339
for (OutstandingPublish outstandingPublish : outstandingBundle.outstandingPublishes) {
338340
publishRequest.addMessages(outstandingPublish.message);
339341
}
@@ -528,6 +530,11 @@ interface LongRandom {
528530
long nextLong(long least, long bound);
529531
}
530532

533+
/** Constructs a new {@link Builder} using the given topic. */
534+
public static Builder newBuilder(TopicName topicName) {
535+
return new Builder(topicName);
536+
}
537+
531538
/** A builder of {@link Publisher}s. */
532539
public static final class Builder {
533540
static final Duration MIN_TOTAL_TIMEOUT = new Duration(10 * 1000); // 10 seconds
@@ -569,7 +576,7 @@ public long nextLong(long least, long bound) {
569576
.setExecutorThreadCount(THREADS_PER_CPU * Runtime.getRuntime().availableProcessors())
570577
.build();
571578

572-
String topic;
579+
TopicName topicName;
573580

574581
// Bundling options
575582
BundlingSettings bundlingSettings = DEFAULT_BUNDLING_SETTINGS;
@@ -588,13 +595,8 @@ public long nextLong(long least, long bound) {
588595

589596
ExecutorProvider executorProvider = DEFAULT_EXECUTOR_PROVIDER;
590597

591-
/** Constructs a new {@link Builder} using the given topic. */
592-
public static Builder newBuilder(TopicName topic) {
593-
return new Builder(topic.toString());
594-
}
595-
596-
Builder(String topic) {
597-
this.topic = Preconditions.checkNotNull(topic);
598+
private Builder(TopicName topic) {
599+
this.topicName = Preconditions.checkNotNull(topic);
598600
}
599601

600602
/**

google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/spi/v1/Subscriber.java

+30-43
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@
3232
import com.google.common.util.concurrent.Service;
3333
import com.google.pubsub.v1.SubscriptionName;
3434
import io.grpc.ManagedChannelBuilder;
35-
import java.util.concurrent.Executor;
36-
import java.util.concurrent.TimeoutException;
3735
import io.grpc.Status;
3836
import io.grpc.StatusRuntimeException;
3937
import io.grpc.netty.GrpcSslContexts;
@@ -43,9 +41,11 @@
4341
import java.util.ArrayList;
4442
import java.util.List;
4543
import java.util.concurrent.CountDownLatch;
44+
import java.util.concurrent.Executor;
4645
import java.util.concurrent.ScheduledExecutorService;
4746
import java.util.concurrent.ScheduledFuture;
4847
import java.util.concurrent.TimeUnit;
48+
import java.util.concurrent.TimeoutException;
4949
import org.joda.time.Duration;
5050
import org.slf4j.Logger;
5151
import org.slf4j.LoggerFactory;
@@ -88,7 +88,7 @@
8888
* }
8989
*
9090
* Subscriber subscriber =
91-
* Subscriber.Builder.newBuilder(MY_SUBSCRIPTION, receiver)
91+
* Subscriber.newBuilder(MY_SUBSCRIPTION, receiver)
9292
* .setMaxBundleAcks(100)
9393
* .build();
9494
*
@@ -123,19 +123,33 @@ private Subscriber(Builder builder) throws IOException {
123123
impl = new SubscriberImpl(builder);
124124
}
125125

126+
/**
127+
* Constructs a new {@link Builder}.
128+
*
129+
* <p>Once {@link #build()} is called a gRPC stub will be created for use of the {@link
130+
* Subscriber}.
131+
*
132+
* @param subscription Cloud Pub/Sub subscription to bind the subscriber to
133+
* @param receiver an implementation of {@link MessageReceiver} used to process the received
134+
* messages
135+
*/
136+
public static Builder newBuilder(SubscriptionName subscription, MessageReceiver receiver) {
137+
return new Builder(subscription, receiver);
138+
}
139+
126140
/** Subscription which the subscriber is subscribed to. */
127-
public String getSubscription() {
128-
return impl.getSubscription();
141+
public SubscriptionName getSubscriptionName() {
142+
return impl.subscriptionName;
129143
}
130144

131145
/** Acknowledgement expiration padding. See {@link Builder.setAckExpirationPadding}. */
132146
public Duration getAckExpirationPadding() {
133-
return impl.getAckExpirationPadding();
147+
return impl.ackExpirationPadding;
134148
}
135149

136150
/** The flow control settings the Subscriber is configured with. */
137151
public FlowController.Settings getFlowControlSettings() {
138-
return impl.getFlowControlSettings();
152+
return impl.flowControlSettings;
139153
}
140154

141155
public void addListener(final SubscriberListener listener, Executor executor) {
@@ -249,7 +263,8 @@ public void terminated(State from) {}
249263
private static class SubscriberImpl extends AbstractService {
250264
private static final Logger logger = LoggerFactory.getLogger(Subscriber.class);
251265

252-
private final String subscription;
266+
private final SubscriptionName subscriptionName;
267+
private final String cachedSubscriptionNameString;
253268
private final FlowController.Settings flowControlSettings;
254269
private final Duration ackExpirationPadding;
255270
private final ScheduledExecutorService executor;
@@ -270,7 +285,8 @@ private static class SubscriberImpl extends AbstractService {
270285
private SubscriberImpl(Builder builder) throws IOException {
271286
receiver = builder.receiver;
272287
flowControlSettings = builder.flowControlSettings;
273-
subscription = builder.subscription;
288+
subscriptionName = builder.subscriptionName;
289+
cachedSubscriptionNameString = subscriptionName.toString();
274290
ackExpirationPadding = builder.ackExpirationPadding;
275291
streamAckDeadlineSeconds =
276292
Math.max(
@@ -340,7 +356,7 @@ private void startStreamingConnections() {
340356
for (int i = 0; i < numChannels; i++) {
341357
streamingSubscriberConnections.add(
342358
new StreamingSubscriberConnection(
343-
subscription,
359+
cachedSubscriptionNameString,
344360
credentials,
345361
receiver,
346362
ackExpirationPadding,
@@ -412,7 +428,7 @@ private void startPollingConnections() {
412428
for (int i = 0; i < numChannels; i++) {
413429
pollingSubscriberConnections.add(
414430
new PollingSubscriberConnection(
415-
subscription,
431+
cachedSubscriptionNameString,
416432
credentials,
417433
receiver,
418434
ackExpirationPadding,
@@ -496,21 +512,6 @@ public void run() {
496512
throw new IllegalStateException(e);
497513
}
498514
}
499-
500-
/** Subscription which the subscriber is subscribed to. */
501-
public String getSubscription() {
502-
return subscription;
503-
}
504-
505-
/** Acknowledgement expiration padding. See {@link Builder.setAckExpirationPadding}. */
506-
public Duration getAckExpirationPadding() {
507-
return ackExpirationPadding;
508-
}
509-
510-
/** The flow control settings the Subscriber is configured with. */
511-
public FlowController.Settings getFlowControlSettings() {
512-
return flowControlSettings;
513-
}
514515
}
515516

516517
/** Builder of {@link Subscriber Subscribers}. */
@@ -526,7 +527,7 @@ public static final class Builder {
526527
* Runtime.getRuntime().availableProcessors())
527528
.build();
528529

529-
String subscription;
530+
SubscriptionName subscriptionName;
530531
Optional<Credentials> credentials = Optional.absent();
531532
MessageReceiver receiver;
532533

@@ -539,22 +540,8 @@ public static final class Builder {
539540
Optional.absent();
540541
Optional<Clock> clock = Optional.absent();
541542

542-
/**
543-
* Constructs a new {@link Builder}.
544-
*
545-
* <p>Once {@link #build()} is called a gRPC stub will be created for use of the {@link
546-
* Subscriber}.
547-
*
548-
* @param subscription Cloud Pub/Sub subscription to bind the subscriber to
549-
* @param receiver an implementation of {@link MessageReceiver} used to process the received
550-
* messages
551-
*/
552-
public static Builder newBuilder(SubscriptionName subscription, MessageReceiver receiver) {
553-
return new Builder(subscription.toString(), receiver);
554-
}
555-
556-
Builder(String subscription, MessageReceiver receiver) {
557-
this.subscription = subscription;
543+
Builder(SubscriptionName subscriptionName, MessageReceiver receiver) {
544+
this.subscriptionName = subscriptionName;
558545
this.receiver = receiver;
559546
}
560547

google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/spi/v1/PublisherImplTest.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ public void testPublishFailureRetries_nonRetryableFailsImmediately() throws Exce
352352
public void testPublisherGetters() throws Exception {
353353
FakeCredentials credentials = new FakeCredentials();
354354

355-
Publisher.Builder builder = Publisher.Builder.newBuilder(TEST_TOPIC);
355+
Publisher.Builder builder = Publisher.newBuilder(TEST_TOPIC);
356356
builder.setChannelBuilder(testChannelBuilder);
357357
builder.setCredentials(credentials);
358358
builder.setExecutorProvider(SINGLE_THREAD_EXECUTOR);
@@ -370,7 +370,7 @@ public void testPublisherGetters() throws Exception {
370370
.build());
371371
Publisher publisher = builder.build();
372372

373-
assertEquals(TEST_TOPIC.toString(), publisher.getTopic());
373+
assertEquals(TEST_TOPIC, publisher.getTopicName());
374374
assertEquals(10, (long) publisher.getBundlingSettings().getRequestByteThreshold());
375375
assertEquals(new Duration(11), publisher.getBundlingSettings().getDelayThreshold());
376376
assertEquals(12, (long) publisher.getBundlingSettings().getElementCountThreshold());
@@ -384,8 +384,8 @@ public void testPublisherGetters() throws Exception {
384384

385385
@Test
386386
public void testBuilderParametersAndDefaults() {
387-
Publisher.Builder builder = Publisher.Builder.newBuilder(TEST_TOPIC);
388-
assertEquals(TEST_TOPIC.toString(), builder.topic);
387+
Publisher.Builder builder = Publisher.newBuilder(TEST_TOPIC);
388+
assertEquals(TEST_TOPIC, builder.topicName);
389389
assertEquals(Optional.absent(), builder.channelBuilder);
390390
assertEquals(Publisher.Builder.DEFAULT_EXECUTOR_PROVIDER, builder.executorProvider);
391391
assertFalse(builder.failOnFlowControlLimits);
@@ -404,7 +404,7 @@ public void testBuilderParametersAndDefaults() {
404404

405405
@Test
406406
public void testBuilderInvalidArguments() {
407-
Publisher.Builder builder = Publisher.Builder.newBuilder(TEST_TOPIC);
407+
Publisher.Builder builder = Publisher.newBuilder(TEST_TOPIC);
408408

409409
try {
410410
builder.setChannelBuilder(null);
@@ -601,7 +601,7 @@ public void testBuilderInvalidArguments() {
601601
}
602602

603603
private Builder getTestPublisherBuilder() {
604-
return Publisher.Builder.newBuilder(TEST_TOPIC)
604+
return Publisher.newBuilder(TEST_TOPIC)
605605
.setCredentials(testCredentials)
606606
.setExecutorProvider(FixedExecutorProvider.create(fakeExecutor))
607607
.setChannelBuilder(testChannelBuilder)

google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/spi/v1/SubscriberImplTest.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import com.google.common.base.Preconditions;
3030
import com.google.common.collect.ImmutableList;
3131
import com.google.common.util.concurrent.ListenableFuture;
32-
import com.google.common.util.concurrent.Service.State;
3332
import com.google.common.util.concurrent.SettableFuture;
3433
import com.google.pubsub.v1.PubsubMessage;
3534
import com.google.pubsub.v1.PullResponse;
@@ -467,7 +466,7 @@ private void sendMessages(Iterable<String> ackIds) throws InterruptedException {
467466
}
468467

469468
private Builder getTestSubscriberBuilder(MessageReceiver receiver) {
470-
return Subscriber.Builder.newBuilder(TEST_SUBSCRIPTION, receiver)
469+
return Subscriber.newBuilder(TEST_SUBSCRIPTION, receiver)
471470
.setExecutorProvider(FixedExecutorProvider.create(fakeExecutor))
472471
.setCredentials(testCredentials)
473472
.setChannelBuilder(testChannelBuilder)

0 commit comments

Comments
 (0)