Skip to content

Commit 7edfd9c

Browse files
feat: introduce java.time variables and methods (#2271)
* feat: introduce `java.time` variables and methods * ignore package private public interface changes
1 parent a5f70a9 commit 7edfd9c

11 files changed

+145
-80
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!-- see http://www.mojohaus.org/clirr-maven-plugin/examples/ignored-differences.html -->
33
<differences>
4+
<difference>
5+
<differenceType>7005</differenceType>
6+
<!--Ignore changes in this class because it's package private-->
7+
<className>com/google/cloud/pubsub/v1/MessageDispatcher$Builder</className>
8+
<method>*(org.threeten.bp.Duration)</method>
9+
<to>*(java.time.Duration)</to>
10+
</difference>
11+
<difference>
12+
<differenceType>7005</differenceType>
13+
<!--Ignore changes in this class because it's package private-->
14+
<className>com/google/cloud/pubsub/v1/StreamingSubscriberConnection$Builder</className>
15+
<method>*(org.threeten.bp.Duration)</method>
16+
<to>*(java.time.Duration)</to>
17+
</difference>
418
</differences>

google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/MessageDispatcher.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
import com.google.common.util.concurrent.MoreExecutors;
2929
import com.google.pubsub.v1.PubsubMessage;
3030
import com.google.pubsub.v1.ReceivedMessage;
31+
import java.time.Duration;
32+
import java.time.Instant;
33+
import java.time.temporal.ChronoUnit;
3134
import java.util.ArrayList;
3235
import java.util.HashMap;
3336
import java.util.Iterator;
@@ -48,9 +51,6 @@
4851
import java.util.concurrent.locks.ReentrantLock;
4952
import java.util.logging.Level;
5053
import java.util.logging.Logger;
51-
import org.threeten.bp.Duration;
52-
import org.threeten.bp.Instant;
53-
import org.threeten.bp.temporal.ChronoUnit;
5454

5555
/**
5656
* Dispatches messages to a message receiver while handling the messages acking and lease

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

+10-10
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import io.opentelemetry.api.trace.Span;
5858
import io.opentelemetry.api.trace.Tracer;
5959
import java.io.IOException;
60+
import java.time.Duration;
6061
import java.util.ArrayList;
6162
import java.util.HashMap;
6263
import java.util.Iterator;
@@ -73,7 +74,6 @@
7374
import java.util.concurrent.locks.ReentrantLock;
7475
import java.util.logging.Level;
7576
import java.util.logging.Logger;
76-
import org.threeten.bp.Duration;
7777

7878
/**
7979
* A Cloud Pub/Sub <a href="https://cloud.google.com/pubsub/docs/publisher">publisher</a>, that is
@@ -198,7 +198,7 @@ private Publisher(Builder builder) throws IOException {
198198
// key?
199199
retrySettingsBuilder
200200
.setMaxAttempts(Integer.MAX_VALUE)
201-
.setTotalTimeout(Duration.ofNanos(Long.MAX_VALUE));
201+
.setTotalTimeoutDuration(Duration.ofNanos(Long.MAX_VALUE));
202202
}
203203

204204
PublisherStubSettings.Builder stubSettings =
@@ -740,7 +740,7 @@ public static final class Builder {
740740
private static final double DEFAULT_MULTIPLIER = 4;
741741
static final BatchingSettings DEFAULT_BATCHING_SETTINGS =
742742
BatchingSettings.newBuilder()
743-
.setDelayThreshold(DEFAULT_DELAY_THRESHOLD)
743+
.setDelayThresholdDuration(DEFAULT_DELAY_THRESHOLD)
744744
.setRequestByteThreshold(DEFAULT_REQUEST_BYTES_THRESHOLD)
745745
.setElementCountThreshold(DEFAULT_ELEMENT_COUNT_THRESHOLD)
746746
.setFlowControlSettings(
@@ -750,13 +750,13 @@ public static final class Builder {
750750
.build();
751751
static final RetrySettings DEFAULT_RETRY_SETTINGS =
752752
RetrySettings.newBuilder()
753-
.setTotalTimeout(DEFAULT_TOTAL_TIMEOUT)
754-
.setInitialRetryDelay(DEFAULT_INITIAL_RETRY_DELAY)
753+
.setTotalTimeoutDuration(DEFAULT_TOTAL_TIMEOUT)
754+
.setInitialRetryDelayDuration(DEFAULT_INITIAL_RETRY_DELAY)
755755
.setRetryDelayMultiplier(DEFAULT_MULTIPLIER)
756-
.setMaxRetryDelay(DEFAULT_MAX_RETRY_DELAY)
757-
.setInitialRpcTimeout(DEFAULT_INITIAL_RPC_TIMEOUT)
756+
.setMaxRetryDelayDuration(DEFAULT_MAX_RETRY_DELAY)
757+
.setInitialRpcTimeoutDuration(DEFAULT_INITIAL_RPC_TIMEOUT)
758758
.setRpcTimeoutMultiplier(DEFAULT_MULTIPLIER)
759-
.setMaxRpcTimeout(DEFAULT_MAX_RPC_TIMEOUT)
759+
.setMaxRpcTimeoutDuration(DEFAULT_MAX_RPC_TIMEOUT)
760760
.build();
761761
static final boolean DEFAULT_ENABLE_MESSAGE_ORDERING = false;
762762
private static final int THREADS_PER_CPU = 5;
@@ -876,9 +876,9 @@ public Builder setBatchingSettings(BatchingSettings batchingSettings) {
876876
/** Configures the Publisher's retry parameters. */
877877
public Builder setRetrySettings(RetrySettings retrySettings) {
878878
Preconditions.checkArgument(
879-
retrySettings.getTotalTimeout().compareTo(MIN_TOTAL_TIMEOUT) >= 0);
879+
retrySettings.getTotalTimeoutDuration().compareTo(MIN_TOTAL_TIMEOUT) >= 0);
880880
Preconditions.checkArgument(
881-
retrySettings.getInitialRpcTimeout().compareTo(MIN_RPC_TIMEOUT) >= 0);
881+
retrySettings.getInitialRpcTimeoutDuration().compareTo(MIN_RPC_TIMEOUT) >= 0);
882882
this.retrySettings = retrySettings;
883883
return this;
884884
}

google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/StreamingSubscriberConnection.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import io.grpc.Status;
5252
import io.grpc.protobuf.StatusProto;
5353
import io.opentelemetry.api.trace.Span;
54+
import java.time.Duration;
5455
import java.util.ArrayList;
5556
import java.util.Collections;
5657
import java.util.HashMap;
@@ -68,7 +69,6 @@
6869
import java.util.logging.Level;
6970
import java.util.logging.Logger;
7071
import javax.annotation.Nullable;
71-
import org.threeten.bp.Duration;
7272

7373
/** Implementation of {@link AckProcessor} based on Cloud Pub/Sub streaming pull. */
7474
final class StreamingSubscriberConnection extends AbstractApiService implements AckProcessor {

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

+67-21
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616

1717
package com.google.cloud.pubsub.v1;
1818

19+
import static com.google.api.gax.util.TimeConversionUtils.toJavaTimeDuration;
20+
1921
import com.google.api.core.AbstractApiService;
2022
import com.google.api.core.ApiClock;
2123
import com.google.api.core.ApiService;
2224
import com.google.api.core.BetaApi;
2325
import com.google.api.core.CurrentMillisClock;
2426
import com.google.api.core.InternalApi;
27+
import com.google.api.core.ObsoleteApi;
2528
import com.google.api.gax.batching.FlowControlSettings;
2629
import com.google.api.gax.batching.FlowController;
2730
import com.google.api.gax.batching.FlowController.LimitExceededBehavior;
@@ -55,7 +58,6 @@
5558
import java.util.logging.Level;
5659
import java.util.logging.Logger;
5760
import javax.annotation.Nullable;
58-
import org.threeten.bp.Duration;
5961

6062
/**
6163
* A Cloud Pub/Sub <a href="https://cloud.google.com/pubsub/docs/subscriber">subscriber</a> that is
@@ -98,24 +100,37 @@ public class Subscriber extends AbstractApiService implements SubscriberInterfac
98100
private static final int MAX_INBOUND_METADATA_SIZE =
99101
4 * 1024 * 1024; // 4MB API maximum metadata size
100102

101-
@InternalApi static final Duration DEFAULT_MAX_ACK_EXTENSION_PERIOD = Duration.ofMinutes(60);
103+
@InternalApi
104+
static final java.time.Duration DEFAULT_MAX_ACK_EXTENSION_PERIOD =
105+
java.time.Duration.ofMinutes(60);
102106

103107
@InternalApi
104-
static final Duration DEFAULT_MIN_ACK_DEADLINE_EXTENSION_EXACTLY_ONCE_DELIVERY =
105-
Duration.ofMinutes(1);
108+
static final java.time.Duration DEFAULT_MIN_ACK_DEADLINE_EXTENSION_EXACTLY_ONCE_DELIVERY =
109+
java.time.Duration.ofMinutes(1);
106110

107-
@InternalApi static final Duration DEFAULT_MIN_ACK_DEADLINE_EXTENSION = Duration.ofMinutes(0);
108-
@InternalApi static final Duration DEFAULT_MAX_ACK_DEADLINE_EXTENSION = Duration.ofSeconds(0);
111+
@InternalApi
112+
static final java.time.Duration DEFAULT_MIN_ACK_DEADLINE_EXTENSION =
113+
java.time.Duration.ofMinutes(0);
109114

110-
@InternalApi static final Duration MIN_STREAM_ACK_DEADLINE = Duration.ofSeconds(10);
111-
@InternalApi static final Duration MAX_STREAM_ACK_DEADLINE = Duration.ofSeconds(600);
115+
@InternalApi
116+
static final java.time.Duration DEFAULT_MAX_ACK_DEADLINE_EXTENSION =
117+
java.time.Duration.ofSeconds(0);
112118

113-
@InternalApi static final Duration STREAM_ACK_DEADLINE_DEFAULT = Duration.ofSeconds(60);
119+
@InternalApi
120+
static final java.time.Duration MIN_STREAM_ACK_DEADLINE = java.time.Duration.ofSeconds(10);
114121

115122
@InternalApi
116-
static final Duration STREAM_ACK_DEADLINE_EXACTLY_ONCE_DELIVERY_DEFAULT = Duration.ofSeconds(60);
123+
static final java.time.Duration MAX_STREAM_ACK_DEADLINE = java.time.Duration.ofSeconds(600);
117124

118-
@InternalApi static final Duration ACK_EXPIRATION_PADDING_DEFAULT = Duration.ofSeconds(5);
125+
@InternalApi
126+
static final java.time.Duration STREAM_ACK_DEADLINE_DEFAULT = java.time.Duration.ofSeconds(60);
127+
128+
@InternalApi
129+
static final java.time.Duration STREAM_ACK_DEADLINE_EXACTLY_ONCE_DELIVERY_DEFAULT =
130+
java.time.Duration.ofSeconds(60);
131+
132+
@InternalApi
133+
static final java.time.Duration ACK_EXPIRATION_PADDING_DEFAULT = java.time.Duration.ofSeconds(5);
119134

120135
private static final Logger logger = Logger.getLogger(Subscriber.class.getName());
121136

@@ -124,10 +139,10 @@ public class Subscriber extends AbstractApiService implements SubscriberInterfac
124139
private final String subscriptionName;
125140
private final FlowControlSettings flowControlSettings;
126141
private final boolean useLegacyFlowControl;
127-
private final Duration maxAckExtensionPeriod;
128-
private final Duration maxDurationPerAckExtension;
142+
private final java.time.Duration maxAckExtensionPeriod;
143+
private final java.time.Duration maxDurationPerAckExtension;
129144
private final boolean maxDurationPerAckExtensionDefaultUsed;
130-
private final Duration minDurationPerAckExtension;
145+
private final java.time.Duration minDurationPerAckExtension;
131146
private final boolean minDurationPerAckExtensionDefaultUsed;
132147

133148
// The ExecutorProvider used to generate executors for processing messages.
@@ -490,10 +505,10 @@ public static final class Builder {
490505
private MessageReceiver receiver;
491506
private MessageReceiverWithAckResponse receiverWithAckResponse;
492507

493-
private Duration maxAckExtensionPeriod = DEFAULT_MAX_ACK_EXTENSION_PERIOD;
494-
private Duration minDurationPerAckExtension = DEFAULT_MIN_ACK_DEADLINE_EXTENSION;
508+
private java.time.Duration maxAckExtensionPeriod = DEFAULT_MAX_ACK_EXTENSION_PERIOD;
509+
private java.time.Duration minDurationPerAckExtension = DEFAULT_MIN_ACK_DEADLINE_EXTENSION;
495510
private boolean minDurationPerAckExtensionDefaultUsed = true;
496-
private Duration maxDurationPerAckExtension = DEFAULT_MAX_ACK_DEADLINE_EXTENSION;
511+
private java.time.Duration maxDurationPerAckExtension = DEFAULT_MAX_ACK_DEADLINE_EXTENSION;
497512
private boolean maxDurationPerAckExtensionDefaultUsed = true;
498513

499514
private boolean useLegacyFlowControl = false;
@@ -505,7 +520,7 @@ public static final class Builder {
505520
SubscriptionAdminSettings.defaultGrpcTransportProviderBuilder()
506521
.setMaxInboundMessageSize(MAX_INBOUND_MESSAGE_SIZE)
507522
.setMaxInboundMetadataSize(MAX_INBOUND_METADATA_SIZE)
508-
.setKeepAliveTime(Duration.ofMinutes(5))
523+
.setKeepAliveTimeDuration(java.time.Duration.ofMinutes(5))
509524
.build();
510525
private HeaderProvider headerProvider = new NoHeaderProvider();
511526
private CredentialsProvider credentialsProvider =
@@ -596,6 +611,15 @@ public Builder setUseLegacyFlowControl(boolean value) {
596611
return this;
597612
}
598613

614+
/**
615+
* This method is obsolete. Use {@link #setMaxAckExtensionPeriodDuration(java.time.Duration)}
616+
* instead.
617+
*/
618+
@ObsoleteApi("Use setMaxAckExtensionPeriodDuration(java.time.Duration) instead")
619+
public Builder setMaxAckExtensionPeriod(org.threeten.bp.Duration maxAckExtensionPeriod) {
620+
return setMaxAckExtensionPeriodDuration(toJavaTimeDuration(maxAckExtensionPeriod));
621+
}
622+
599623
/**
600624
* Set the maximum period a message ack deadline will be extended. Defaults to one hour.
601625
*
@@ -605,12 +629,22 @@ public Builder setUseLegacyFlowControl(boolean value) {
605629
*
606630
* <p>A zero duration effectively disables auto deadline extensions.
607631
*/
608-
public Builder setMaxAckExtensionPeriod(Duration maxAckExtensionPeriod) {
632+
public Builder setMaxAckExtensionPeriodDuration(java.time.Duration maxAckExtensionPeriod) {
609633
Preconditions.checkArgument(maxAckExtensionPeriod.toMillis() >= 0);
610634
this.maxAckExtensionPeriod = maxAckExtensionPeriod;
611635
return this;
612636
}
613637

638+
/**
639+
* This method is obsolete. Use {@link
640+
* #setMaxDurationPerAckExtensionDuration(java.time.Duration)} instead.
641+
*/
642+
@ObsoleteApi("Use setMaxDurationPerAckExtensionDuration(java.time.Duration) instead")
643+
public Builder setMaxDurationPerAckExtension(
644+
org.threeten.bp.Duration maxDurationPerAckExtension) {
645+
return setMaxDurationPerAckExtensionDuration(toJavaTimeDuration(maxDurationPerAckExtension));
646+
}
647+
614648
/**
615649
* Set the upper bound for a single mod ack extention period.
616650
*
@@ -621,7 +655,8 @@ public Builder setMaxAckExtensionPeriod(Duration maxAckExtensionPeriod) {
621655
*
622656
* <p>MaxDurationPerAckExtension configuration can be disabled by specifying a zero duration.
623657
*/
624-
public Builder setMaxDurationPerAckExtension(Duration maxDurationPerAckExtension) {
658+
public Builder setMaxDurationPerAckExtensionDuration(
659+
java.time.Duration maxDurationPerAckExtension) {
625660
// If a non-default min is set, make sure min is less than max
626661
Preconditions.checkArgument(
627662
maxDurationPerAckExtension.toMillis() >= 0
@@ -633,6 +668,16 @@ public Builder setMaxDurationPerAckExtension(Duration maxDurationPerAckExtension
633668
return this;
634669
}
635670

671+
/**
672+
* This method is obsolete. Use {@link
673+
* #setMinDurationPerAckExtensionDuration(java.time.Duration)} instead.
674+
*/
675+
@ObsoleteApi("Use setMinDurationPerAckExtensionDuration(java.time.Duration) instead")
676+
public Builder setMinDurationPerAckExtension(
677+
org.threeten.bp.Duration minDurationPerAckExtension) {
678+
return setMinDurationPerAckExtensionDuration(toJavaTimeDuration(minDurationPerAckExtension));
679+
}
680+
636681
/**
637682
* Set the lower bound for a single mod ack extention period.
638683
*
@@ -643,7 +688,8 @@ public Builder setMaxDurationPerAckExtension(Duration maxDurationPerAckExtension
643688
*
644689
* <p>MinDurationPerAckExtension configuration can be disabled by specifying a zero duration.
645690
*/
646-
public Builder setMinDurationPerAckExtension(Duration minDurationPerAckExtension) {
691+
public Builder setMinDurationPerAckExtensionDuration(
692+
java.time.Duration minDurationPerAckExtension) {
647693
// If a non-default max is set, make sure min is less than max
648694
Preconditions.checkArgument(
649695
minDurationPerAckExtension.toMillis() >= 0

google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/FakePublisherServiceImpl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121
import com.google.pubsub.v1.PublishResponse;
2222
import com.google.pubsub.v1.PublisherGrpc.PublisherImplBase;
2323
import io.grpc.stub.StreamObserver;
24+
import java.time.Duration;
2425
import java.util.ArrayList;
2526
import java.util.List;
2627
import java.util.concurrent.LinkedBlockingQueue;
2728
import java.util.concurrent.ScheduledExecutorService;
2829
import java.util.concurrent.TimeUnit;
2930
import java.util.concurrent.atomic.AtomicInteger;
30-
import org.threeten.bp.Duration;
3131

3232
/**
3333
* A fake implementation of {@link PublisherImplBase}, that can be used to test clients of a Cloud

google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/FakeScheduledExecutorService.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import com.google.common.primitives.Ints;
2020
import com.google.common.util.concurrent.SettableFuture;
21+
import java.time.Duration;
22+
import java.time.Instant;
2123
import java.util.ArrayList;
2224
import java.util.Deque;
2325
import java.util.LinkedList;
@@ -32,8 +34,6 @@
3234
import java.util.concurrent.TimeUnit;
3335
import java.util.concurrent.TimeoutException;
3436
import java.util.concurrent.atomic.AtomicBoolean;
35-
import org.threeten.bp.Duration;
36-
import org.threeten.bp.Instant;
3737

3838
/**
3939
* Fake implementation of {@link ScheduledExecutorService} that allows tests control the reference

google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/MessageDispatcherTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@
2626
import com.google.protobuf.ByteString;
2727
import com.google.pubsub.v1.PubsubMessage;
2828
import com.google.pubsub.v1.ReceivedMessage;
29+
import java.time.Duration;
2930
import java.util.*;
3031
import java.util.concurrent.*;
3132
import org.junit.Before;
3233
import org.junit.Test;
3334
import org.mockito.invocation.InvocationOnMock;
3435
import org.mockito.stubbing.Answer;
35-
import org.threeten.bp.Duration;
3636

3737
public class MessageDispatcherTest {
3838
private static final ByteString MESSAGE_DATA = ByteString.copyFromUtf8("message-data");

0 commit comments

Comments
 (0)