Skip to content

Commit baf30ee

Browse files
feat: introduce java.time methods and variables (#2826)
* feat: introduce `java.time` methods and variables * improve DurationDuration method name * adjust naming
1 parent ca13691 commit baf30ee

File tree

8 files changed

+60
-42
lines changed

8 files changed

+60
-42
lines changed

google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageImpl.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,7 @@ final class GrpcStorageImpl extends BaseService<StorageOptions>
189189
public void close() throws Exception {
190190
try (StorageClient s = storageClient) {
191191
s.shutdownNow();
192-
org.threeten.bp.Duration terminationAwaitDuration =
193-
getOptions().getTerminationAwaitDuration();
192+
java.time.Duration terminationAwaitDuration = getOptions().getTerminationAwaitDuration();
194193
s.awaitTermination(terminationAwaitDuration.toMillis(), TimeUnit.MILLISECONDS);
195194
}
196195
}

google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java

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

1717
package com.google.cloud.storage;
1818

19+
import static com.google.api.gax.util.TimeConversionUtils.toJavaTimeDuration;
20+
import static com.google.api.gax.util.TimeConversionUtils.toThreetenDuration;
1921
import static com.google.common.base.Preconditions.checkArgument;
2022
import static java.util.Objects.requireNonNull;
2123

2224
import com.google.api.core.ApiClock;
2325
import com.google.api.core.BetaApi;
2426
import com.google.api.core.InternalApi;
27+
import com.google.api.core.ObsoleteApi;
2528
import com.google.api.gax.core.CredentialsProvider;
2629
import com.google.api.gax.core.FixedCredentialsProvider;
2730
import com.google.api.gax.core.NoCredentialsProvider;
@@ -97,7 +100,6 @@
97100
import java.util.Objects;
98101
import java.util.Set;
99102
import org.checkerframework.checker.nullness.qual.NonNull;
100-
import org.threeten.bp.Duration;
101103

102104
/** @since 2.14.0 */
103105
@TransportCompatibility(Transport.GRPC)
@@ -110,7 +112,7 @@ public final class GrpcStorageOptions extends StorageOptions
110112
private static final String DEFAULT_HOST = "https://storage.googleapis.com";
111113

112114
private final GrpcRetryAlgorithmManager retryAlgorithmManager;
113-
private final Duration terminationAwaitDuration;
115+
private final java.time.Duration terminationAwaitDuration;
114116
private final boolean attemptDirectPath;
115117
private final boolean enableGrpcClientMetrics;
116118

@@ -126,7 +128,8 @@ private GrpcStorageOptions(Builder builder, GrpcStorageDefaults serviceDefaults)
126128
builder.storageRetryStrategy, serviceDefaults.getStorageRetryStrategy()));
127129
this.terminationAwaitDuration =
128130
MoreObjects.firstNonNull(
129-
builder.terminationAwaitDuration, serviceDefaults.getTerminationAwaitDuration());
131+
builder.terminationAwaitDuration,
132+
serviceDefaults.getTerminationAwaitDurationJavaTime());
130133
this.attemptDirectPath = builder.attemptDirectPath;
131134
this.enableGrpcClientMetrics = builder.enableGrpcClientMetrics;
132135
this.grpcClientMetricsManuallyEnabled = builder.grpcMetricsManuallyEnabled;
@@ -145,7 +148,7 @@ GrpcRetryAlgorithmManager getRetryAlgorithmManager() {
145148
}
146149

147150
@InternalApi
148-
Duration getTerminationAwaitDuration() {
151+
java.time.Duration getTerminationAwaitDuration() {
149152
return terminationAwaitDuration;
150153
}
151154

@@ -314,17 +317,17 @@ private Tuple<StorageSettings, Opts<UserProject>> resolveSettingsAndOpts() throw
314317
// seconds.
315318
// To allow read streams to have longer lifespans, crank up their timeouts, instead rely
316319
// on idleTimeout below.
317-
.setLogicalTimeout(Duration.ofDays(28))
320+
.setLogicalTimeout(java.time.Duration.ofDays(28))
318321
.build();
319-
Duration totalTimeout = baseRetrySettings.getTotalTimeout();
322+
java.time.Duration totalTimeout = baseRetrySettings.getTotalTimeoutDuration();
320323
Set<Code> startResumableWriteRetryableCodes =
321324
builder.startResumableWriteSettings().getRetryableCodes();
322325

323326
// retries for unary methods are generally handled at a different level, except
324327
// StartResumableWrite
325328
builder.applyToAllUnaryMethods(
326329
input -> {
327-
input.setSimpleTimeoutNoRetries(totalTimeout);
330+
input.setSimpleTimeoutNoRetriesDuration(totalTimeout);
328331
return null;
329332
});
330333

@@ -342,7 +345,7 @@ private Tuple<StorageSettings, Opts<UserProject>> resolveSettingsAndOpts() throw
342345
// for reads, the stream can be held open for a long time in order to read all bytes,
343346
// this is totally valid. instead we want to monitor if the stream is doing work and if not
344347
// timeout.
345-
.setIdleTimeout(totalTimeout);
348+
.setIdleTimeoutDuration(totalTimeout);
346349
return Tuple.of(builder.build(), defaultOpts);
347350
}
348351

@@ -412,7 +415,7 @@ protected boolean shouldRefreshService(Storage cachedService) {
412415
public static final class Builder extends StorageOptions.Builder {
413416

414417
private StorageRetryStrategy storageRetryStrategy;
415-
private Duration terminationAwaitDuration;
418+
private java.time.Duration terminationAwaitDuration;
416419
private boolean attemptDirectPath = GrpcStorageDefaults.INSTANCE.isAttemptDirectPath();
417420
private boolean enableGrpcClientMetrics =
418421
GrpcStorageDefaults.INSTANCE.isEnableGrpcClientMetrics();
@@ -436,6 +439,15 @@ public static final class Builder extends StorageOptions.Builder {
436439
this.blobWriteSessionConfig = gso.blobWriteSessionConfig;
437440
}
438441

442+
/**
443+
* This method is obsolete. Use {@link #setTerminationAwaitJavaTimeDuration(java.time.Duration)}
444+
* instead.
445+
*/
446+
@ObsoleteApi("Use setTerminationAwaitJavaTimeDuration(java.time.Duration) instead")
447+
public Builder setTerminationAwaitDuration(org.threeten.bp.Duration terminationAwaitDuration) {
448+
return setTerminationAwaitJavaTimeDuration(toJavaTimeDuration(terminationAwaitDuration));
449+
}
450+
439451
/**
440452
* Set the maximum duration in which to await termination of any outstanding requests when
441453
* calling {@link Storage#close()}
@@ -444,7 +456,8 @@ public static final class Builder extends StorageOptions.Builder {
444456
* @return the builder
445457
* @since 2.14.0
446458
*/
447-
public Builder setTerminationAwaitDuration(Duration terminationAwaitDuration) {
459+
public Builder setTerminationAwaitJavaTimeDuration(
460+
java.time.Duration terminationAwaitDuration) {
448461
this.terminationAwaitDuration =
449462
requireNonNull(terminationAwaitDuration, "terminationAwaitDuration must be non null");
450463
return this;
@@ -652,9 +665,15 @@ public StorageRetryStrategy getStorageRetryStrategy() {
652665
return StorageRetryStrategy.getDefaultStorageRetryStrategy();
653666
}
654667

668+
/** This method is obsolete. Use {@link #getTerminationAwaitDurationJavaTime()} instead. */
669+
@ObsoleteApi("Use getTerminationAwaitDurationJavaTime() instead")
670+
public org.threeten.bp.Duration getTerminationAwaitDuration() {
671+
return toThreetenDuration(getTerminationAwaitDurationJavaTime());
672+
}
673+
655674
/** @since 2.14.0 */
656-
public Duration getTerminationAwaitDuration() {
657-
return Duration.ofMinutes(1);
675+
public java.time.Duration getTerminationAwaitDurationJavaTime() {
676+
return java.time.Duration.ofMinutes(1);
658677
}
659678

660679
/** @since 2.14.0 */

google-cloud-storage/src/main/java/com/google/cloud/storage/testing/RemoteStorageHelper.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.google.common.base.Strings;
3333
import java.io.IOException;
3434
import java.io.InputStream;
35+
import java.time.Duration;
3536
import java.util.ArrayList;
3637
import java.util.List;
3738
import java.util.UUID;
@@ -44,7 +45,6 @@
4445
import java.util.concurrent.TimeoutException;
4546
import java.util.logging.Level;
4647
import java.util.logging.Logger;
47-
import org.threeten.bp.Duration;
4848

4949
/**
5050
* Utility to create a remote storage configuration for testing. Storage options can be obtained via
@@ -233,13 +233,13 @@ public static RemoteStorageHelper create() throws StorageHelperException {
233233
private static RetrySettings retrySettings() {
234234
return RetrySettings.newBuilder()
235235
.setMaxAttempts(10)
236-
.setMaxRetryDelay(Duration.ofMillis(30000L))
237-
.setTotalTimeout(Duration.ofMillis(120000L))
238-
.setInitialRetryDelay(Duration.ofMillis(250L))
236+
.setMaxRetryDelayDuration(Duration.ofMillis(30000L))
237+
.setTotalTimeoutDuration(Duration.ofMillis(120000L))
238+
.setInitialRetryDelayDuration(Duration.ofMillis(250L))
239239
.setRetryDelayMultiplier(1.0)
240-
.setInitialRpcTimeout(Duration.ofMillis(120000L))
240+
.setInitialRpcTimeoutDuration(Duration.ofMillis(120000L))
241241
.setRpcTimeoutMultiplier(1.0)
242-
.setMaxRpcTimeout(Duration.ofMillis(120000L))
242+
.setMaxRpcTimeoutDuration(Duration.ofMillis(120000L))
243243
.build();
244244
}
245245

google-cloud-storage/src/test/java/com/google/cloud/storage/ITGapicReadTimeoutTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@
3636
import io.grpc.Status.Code;
3737
import io.grpc.stub.StreamObserver;
3838
import java.io.IOException;
39+
import java.time.Duration;
3940
import java.util.Iterator;
4041
import java.util.concurrent.TimeUnit;
4142
import org.junit.Test;
42-
import org.threeten.bp.Duration;
4343

4444
/**
4545
* ReadObject leverages gRPC ServerStream to read a stream of ReadObjectResponse messages spanning
@@ -48,7 +48,7 @@
4848
* #getTotalTimeout()}, gax will interrupt the stream with a DEADLINE_EXCEEDED error.
4949
*
5050
* <p>Instead of relying on total stream timeout, we rely on idleTimeout for the stream via {@link
51-
* com.google.api.gax.rpc.ServerStreamingCallSettings.Builder#setIdleTimeout(Duration)}.
51+
* com.google.api.gax.rpc.ServerStreamingCallSettings.Builder#setIdleTimeoutDuration(Duration)}.
5252
*
5353
* <p>These tests force specific timeout scenarios to happen against an in-process grpc server to
5454
* ensure our configuration of the StorageClient properly translates to the behavior we want.
@@ -117,7 +117,7 @@ public void readObject(
117117
.setRetrySettings(
118118
RetrySettings.newBuilder()
119119
.setMaxAttempts(3)
120-
.setTotalTimeout(Duration.ofMillis(totalTimeoutMillis))
120+
.setTotalTimeoutDuration(Duration.ofMillis(totalTimeoutMillis))
121121
.build())
122122
.build()
123123
.getStorageSettings();
@@ -196,7 +196,7 @@ public void readObject(
196196
.setRetrySettings(
197197
RetrySettings.newBuilder()
198198
.setMaxAttempts(3)
199-
.setTotalTimeout(Duration.ofMillis(totalTimeoutMillis))
199+
.setTotalTimeoutDuration(Duration.ofMillis(totalTimeoutMillis))
200200
.build())
201201
.build()
202202
.getStorageSettings();

google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITBlobWriteChannelTest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,16 @@
5555
import java.io.ByteArrayOutputStream;
5656
import java.io.IOException;
5757
import java.nio.ByteBuffer;
58+
import java.time.Clock;
59+
import java.time.Instant;
60+
import java.time.ZoneId;
61+
import java.time.ZoneOffset;
62+
import java.time.format.DateTimeFormatter;
5863
import java.util.Arrays;
5964
import java.util.Optional;
6065
import java.util.logging.Logger;
6166
import org.junit.Test;
6267
import org.junit.runner.RunWith;
63-
import org.threeten.bp.Clock;
64-
import org.threeten.bp.Instant;
65-
import org.threeten.bp.ZoneId;
66-
import org.threeten.bp.ZoneOffset;
67-
import org.threeten.bp.format.DateTimeFormatter;
6868

6969
@RunWith(StorageITRunner.class)
7070
@SingleBackend(Backend.TEST_BENCH)

google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITHmacTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@
3232
import com.google.cloud.storage.it.runner.annotations.Backend;
3333
import com.google.cloud.storage.it.runner.annotations.CrossRun;
3434
import com.google.cloud.storage.it.runner.annotations.Inject;
35+
import java.time.Duration;
36+
import java.time.Instant;
3537
import java.util.stream.StreamSupport;
3638
import org.junit.Test;
3739
import org.junit.runner.RunWith;
38-
import org.threeten.bp.Duration;
39-
import org.threeten.bp.Instant;
4040

4141
@RunWith(StorageITRunner.class)
4242
@CrossRun(

google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/TestBench.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,14 @@
5353
import java.nio.charset.StandardCharsets;
5454
import java.nio.file.Files;
5555
import java.nio.file.Path;
56+
import java.time.Duration;
5657
import java.util.List;
5758
import java.util.Optional;
5859
import java.util.concurrent.TimeUnit;
5960
import java.util.logging.Level;
6061
import java.util.logging.Logger;
6162
import java.util.regex.Matcher;
6263
import java.util.regex.Pattern;
63-
import org.threeten.bp.Duration;
6464

6565
/**
6666
* A {@link ManagedLifecycle} which integrates with the <a target="_blank"
@@ -260,10 +260,10 @@ public void start() {
260260
runWithRetries(
261261
TestBench.this::listRetryTests,
262262
RetrySettings.newBuilder()
263-
.setTotalTimeout(Duration.ofSeconds(30))
264-
.setInitialRetryDelay(Duration.ofMillis(500))
263+
.setTotalTimeoutDuration(Duration.ofSeconds(30))
264+
.setInitialRetryDelayDuration(Duration.ofMillis(500))
265265
.setRetryDelayMultiplier(1.5)
266-
.setMaxRetryDelay(Duration.ofSeconds(5))
266+
.setMaxRetryDelayDuration(Duration.ofSeconds(5))
267267
.build(),
268268
new BasicResultRetryAlgorithm<List<RetryTestResource>>() {
269269
@Override
@@ -335,10 +335,10 @@ public void stop() {
335335
throw new NotShutdownException();
336336
},
337337
RetrySettings.newBuilder()
338-
.setTotalTimeout(Duration.ofSeconds(30))
339-
.setInitialRetryDelay(Duration.ofMillis(500))
338+
.setTotalTimeoutDuration(Duration.ofSeconds(30))
339+
.setInitialRetryDelayDuration(Duration.ofMillis(500))
340340
.setRetryDelayMultiplier(1.5)
341-
.setMaxRetryDelay(Duration.ofSeconds(5))
341+
.setMaxRetryDelayDuration(Duration.ofSeconds(5))
342342
.build(),
343343
new BasicResultRetryAlgorithm<List<?>>() {
344344
@Override

google-cloud-storage/src/test/java/com/google/cloud/storage/testing/RemoteStorageHelperTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.google.common.collect.ImmutableList;
3535
import java.io.ByteArrayInputStream;
3636
import java.io.InputStream;
37+
import java.time.Duration;
3738
import java.util.ArrayList;
3839
import java.util.Collections;
3940
import java.util.List;
@@ -43,7 +44,6 @@
4344
import org.junit.Before;
4445
import org.junit.Test;
4546
import org.mockito.Mockito;
46-
import org.threeten.bp.Duration;
4747

4848
public class RemoteStorageHelperTest {
4949

@@ -273,8 +273,8 @@ public void testCreateFromStream() {
273273
assertEquals(60000, ((HttpTransportOptions) options.getTransportOptions()).getConnectTimeout());
274274
assertEquals(60000, ((HttpTransportOptions) options.getTransportOptions()).getReadTimeout());
275275
assertEquals(10, options.getRetrySettings().getMaxAttempts());
276-
assertEquals(Duration.ofMillis(30000), options.getRetrySettings().getMaxRetryDelay());
277-
assertEquals(Duration.ofMillis(120000), options.getRetrySettings().getTotalTimeout());
278-
assertEquals(Duration.ofMillis(250), options.getRetrySettings().getInitialRetryDelay());
276+
assertEquals(Duration.ofMillis(30000), options.getRetrySettings().getMaxRetryDelayDuration());
277+
assertEquals(Duration.ofMillis(120000), options.getRetrySettings().getTotalTimeoutDuration());
278+
assertEquals(Duration.ofMillis(250), options.getRetrySettings().getInitialRetryDelayDuration());
279279
}
280280
}

0 commit comments

Comments
 (0)