Skip to content

Commit 6c94910

Browse files
feat: introduce java.time variables and methods (#1935)
* feat: introduce `java.time` variables and methods * chore: generate libraries at Tue Nov 19 22:27:50 UTC 2024 * fix tests * remove overload for package private method * chore: generate libraries at Wed Nov 20 20:18:13 UTC 2024 --------- Co-authored-by: cloud-java-bot <cloud-java-bot@google.com>
1 parent 0a90abc commit 6c94910

File tree

10 files changed

+53
-32
lines changed

10 files changed

+53
-32
lines changed

google-cloud-firestore/src/main/java/com/google/cloud/firestore/FirestoreImpl.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616

1717
package com.google.cloud.firestore;
1818

19+
import static com.google.api.gax.util.TimeConversionUtils.toThreetenDuration;
1920
import static com.google.cloud.firestore.telemetry.TraceUtil.*;
2021

2122
import com.google.api.core.ApiClock;
2223
import com.google.api.core.ApiFuture;
2324
import com.google.api.core.NanoClock;
25+
import com.google.api.core.ObsoleteApi;
2426
import com.google.api.core.SettableApiFuture;
2527
import com.google.api.gax.rpc.ApiStreamObserver;
2628
import com.google.api.gax.rpc.BidiStreamObserver;
@@ -52,7 +54,6 @@
5254
import java.util.Random;
5355
import javax.annotation.Nonnull;
5456
import javax.annotation.Nullable;
55-
import org.threeten.bp.Duration;
5657

5758
/**
5859
* Main implementation of the Firestore client. This is the entry point for all Firestore
@@ -500,9 +501,16 @@ public FirestoreRpc getClient() {
500501
return firestoreClient;
501502
}
502503

504+
/** This method is obsolete. Use {@link #getTotalRequestTimeoutDuration()} instead. */
505+
@ObsoleteApi("Use getTotalRequestTimeoutDuration() instead")
503506
@Override
504-
public Duration getTotalRequestTimeout() {
505-
return firestoreOptions.getRetrySettings().getTotalTimeout();
507+
public org.threeten.bp.Duration getTotalRequestTimeout() {
508+
return toThreetenDuration(getTotalRequestTimeoutDuration());
509+
}
510+
511+
@Override
512+
public java.time.Duration getTotalRequestTimeoutDuration() {
513+
return firestoreOptions.getRetrySettings().getTotalTimeoutDuration();
506514
}
507515

508516
@Override

google-cloud-firestore/src/main/java/com/google/cloud/firestore/FirestoreRpcContext.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,20 @@
1616

1717
package com.google.cloud.firestore;
1818

19+
import static com.google.api.gax.util.TimeConversionUtils.toJavaTimeDuration;
20+
1921
import com.google.api.core.ApiClock;
2022
import com.google.api.core.ApiFuture;
2123
import com.google.api.core.InternalApi;
2224
import com.google.api.core.InternalExtensionOnly;
25+
import com.google.api.core.ObsoleteApi;
2326
import com.google.api.gax.rpc.BidiStreamObserver;
2427
import com.google.api.gax.rpc.BidiStreamingCallable;
2528
import com.google.api.gax.rpc.ClientStream;
2629
import com.google.api.gax.rpc.ResponseObserver;
2730
import com.google.api.gax.rpc.ServerStreamingCallable;
2831
import com.google.api.gax.rpc.UnaryCallable;
2932
import com.google.cloud.firestore.spi.v1.FirestoreRpc;
30-
import org.threeten.bp.Duration;
3133

3234
@InternalApi
3335
@InternalExtensionOnly
@@ -41,7 +43,13 @@ interface FirestoreRpcContext<FS extends Firestore> {
4143

4244
FirestoreRpc getClient();
4345

44-
Duration getTotalRequestTimeout();
46+
/** This method is obsolete. Use {@link #getTotalRequestTimeoutDuration()} instead. */
47+
@ObsoleteApi("Use getTotalRequestTimeoutDuration() instead")
48+
org.threeten.bp.Duration getTotalRequestTimeout();
49+
50+
default java.time.Duration getTotalRequestTimeoutDuration() {
51+
return toJavaTimeDuration(getTotalRequestTimeout());
52+
}
4553

4654
ApiClock getClock();
4755

google-cloud-firestore/src/main/java/com/google/cloud/firestore/StreamableQuery.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@
3939
import com.google.firestore.v1.RunQueryResponse;
4040
import com.google.protobuf.ByteString;
4141
import io.grpc.Status;
42+
import java.time.Duration;
4243
import java.util.ArrayList;
4344
import java.util.Collections;
4445
import java.util.List;
4546
import java.util.Set;
4647
import java.util.concurrent.atomic.AtomicReference;
4748
import javax.annotation.Nonnull;
4849
import javax.annotation.Nullable;
49-
import org.threeten.bp.Duration;
5050

5151
/**
5252
* Represents a query whose results can be streamed. If the stream fails with a retryable error,
@@ -452,7 +452,7 @@ boolean shouldRetryQuery(
452452
}
453453

454454
Duration duration = Duration.ofNanos(rpcContext.getClock().nanoTime() - startTimeNanos);
455-
return duration.compareTo(rpcContext.getTotalRequestTimeout()) < 0;
455+
return duration.compareTo(rpcContext.getTotalRequestTimeoutDuration()) < 0;
456456
}
457457

458458
/** Verifies whether the given exception is retryable based on the RunQuery configuration. */

google-cloud-firestore/src/main/java/com/google/cloud/firestore/telemetry/CompositeApiTracer.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@
1616

1717
package com.google.cloud.firestore.telemetry;
1818

19+
import static com.google.api.gax.util.TimeConversionUtils.toJavaTimeDuration;
20+
1921
import com.google.api.gax.tracing.ApiTracer;
2022
import com.google.api.gax.tracing.BaseApiTracer;
2123
import com.google.common.collect.ImmutableList;
2224
import java.util.ArrayList;
2325
import java.util.List;
2426
import java.util.stream.Collectors;
25-
import org.threeten.bp.Duration;
2627

2728
/** Combines multiple {@link ApiTracer}s into a single {@link ApiTracer}. */
2829
class CompositeApiTracer extends BaseApiTracer {
@@ -83,8 +84,8 @@ public void attemptCancelled() {
8384
}
8485

8586
@Override
86-
public void attemptFailed(Throwable error, Duration delay) {
87-
children.forEach(child -> child.attemptFailed(error, delay));
87+
public void attemptFailed(Throwable error, org.threeten.bp.Duration delay) {
88+
attemptFailedDuration(error, toJavaTimeDuration(delay));
8889
}
8990

9091
@Override

google-cloud-firestore/src/main/java/com/google/cloud/firestore/telemetry/EnabledTraceUtil.java

+10-6
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public ApiFunction<ManagedChannelBuilder, ManagedChannelBuilder> getChannelConfi
9999
// ends in `s` to indicate seconds and is preceded by the number of seconds, with nanoseconds
100100
// expressed as fractional
101101
// seconds.
102-
String durationString(org.threeten.bp.Duration duration) {
102+
String durationString(java.time.Duration duration) {
103103
int nanos = duration.getNano();
104104
long seconds = duration.getSeconds();
105105
int numLeadingZeros = 9;
@@ -330,10 +330,12 @@ private SpanBuilder addSettingsAttributesToCurrentSpan(SpanBuilder spanBuilder)
330330
Attributes.builder()
331331
.put(
332332
ATTRIBUTE_SERVICE_PREFIX + "settings.retry_settings.initial_retry_delay",
333-
durationString(firestoreOptions.getRetrySettings().getInitialRetryDelay()))
333+
durationString(
334+
firestoreOptions.getRetrySettings().getInitialRetryDelayDuration()))
334335
.put(
335336
ATTRIBUTE_SERVICE_PREFIX + "settings.retry_settings.max_retry_delay",
336-
durationString(firestoreOptions.getRetrySettings().getMaxRetryDelay()))
337+
durationString(
338+
firestoreOptions.getRetrySettings().getMaxRetryDelayDuration()))
337339
.put(
338340
ATTRIBUTE_SERVICE_PREFIX + "settings.retry_settings.retry_delay_multiplier",
339341
String.valueOf(firestoreOptions.getRetrySettings().getRetryDelayMultiplier()))
@@ -342,16 +344,18 @@ private SpanBuilder addSettingsAttributesToCurrentSpan(SpanBuilder spanBuilder)
342344
String.valueOf(firestoreOptions.getRetrySettings().getMaxAttempts()))
343345
.put(
344346
ATTRIBUTE_SERVICE_PREFIX + "settings.retry_settings.initial_rpc_timeout",
345-
durationString(firestoreOptions.getRetrySettings().getInitialRpcTimeout()))
347+
durationString(
348+
firestoreOptions.getRetrySettings().getInitialRpcTimeoutDuration()))
346349
.put(
347350
ATTRIBUTE_SERVICE_PREFIX + "settings.retry_settings.max_rpc_timeout",
348-
durationString(firestoreOptions.getRetrySettings().getMaxRpcTimeout()))
351+
durationString(
352+
firestoreOptions.getRetrySettings().getMaxRpcTimeoutDuration()))
349353
.put(
350354
ATTRIBUTE_SERVICE_PREFIX + "settings.retry_settings.rpc_timeout_multiplier",
351355
String.valueOf(firestoreOptions.getRetrySettings().getRpcTimeoutMultiplier()))
352356
.put(
353357
ATTRIBUTE_SERVICE_PREFIX + "settings.retry_settings.total_timeout",
354-
durationString(firestoreOptions.getRetrySettings().getTotalTimeout()))
358+
durationString(firestoreOptions.getRetrySettings().getTotalTimeoutDuration()))
355359
.build());
356360
}
357361

google-cloud-firestore/src/test/java/com/google/cloud/firestore/LocalFirestoreHelper.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
import java.nio.charset.StandardCharsets;
7272
import java.text.ParseException;
7373
import java.text.SimpleDateFormat;
74+
import java.time.Duration;
7475
import java.time.Instant;
7576
import java.util.ArrayList;
7677
import java.util.Arrays;
@@ -88,14 +89,13 @@
8889
import org.mockito.ArgumentMatchers;
8990
import org.mockito.stubbing.Answer;
9091
import org.mockito.stubbing.Stubber;
91-
import org.threeten.bp.Duration;
9292

9393
public final class LocalFirestoreHelper {
9494

9595
protected static RetrySettings IMMEDIATE_RETRY_SETTINGS =
9696
RetrySettings.newBuilder()
97-
.setInitialRetryDelay(Duration.ZERO)
98-
.setMaxRetryDelay(Duration.ZERO)
97+
.setInitialRetryDelayDuration(Duration.ZERO)
98+
.setMaxRetryDelayDuration(Duration.ZERO)
9999
.setRetryDelayMultiplier(1)
100100
.setJittered(false)
101101
.build();

google-cloud-firestore/src/test/java/com/google/cloud/firestore/QueryCountTest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import com.google.firestore.v1.RunAggregationQueryResponse;
4242
import com.google.firestore.v1.StructuredQuery;
4343
import io.grpc.Status;
44+
import java.time.Duration;
4445
import java.util.concurrent.ExecutionException;
4546
import java.util.concurrent.TimeUnit;
4647
import org.junit.Before;
@@ -50,7 +51,6 @@
5051
import org.mockito.Captor;
5152
import org.mockito.Spy;
5253
import org.mockito.junit.MockitoJUnitRunner;
53-
import org.threeten.bp.Duration;
5454

5555
@RunWith(MockitoJUnitRunner.class)
5656
public class QueryCountTest {
@@ -70,7 +70,7 @@ public class QueryCountTest {
7070

7171
@Before
7272
public void before() {
73-
doReturn(Duration.ZERO).when(firestoreMock).getTotalRequestTimeout();
73+
doReturn(Duration.ZERO).when(firestoreMock).getTotalRequestTimeoutDuration();
7474
query = firestoreMock.collection(COLLECTION_ID);
7575
}
7676

@@ -230,7 +230,7 @@ public void shouldNotRetryIfExceptionIsFirestoreExceptionWithNonRetryableStatus(
230230
public void
231231
shouldRetryIfExceptionIsFirestoreExceptionWithRetryableStatusWithInfiniteTimeoutWindow()
232232
throws Exception {
233-
doReturn(Duration.ZERO).when(firestoreMock).getTotalRequestTimeout();
233+
doReturn(Duration.ZERO).when(firestoreMock).getTotalRequestTimeoutDuration();
234234
doAnswer(countQueryResponse(new FirestoreException("reason", Status.INTERNAL)))
235235
.doAnswer(countQueryResponse(42))
236236
.when(firestoreMock)
@@ -245,7 +245,7 @@ public void shouldNotRetryIfExceptionIsFirestoreExceptionWithNonRetryableStatus(
245245
@Test
246246
public void shouldRetryIfExceptionIsFirestoreExceptionWithRetryableStatusWithinTimeoutWindow()
247247
throws Exception {
248-
doReturn(Duration.ofDays(999)).when(firestoreMock).getTotalRequestTimeout();
248+
doReturn(Duration.ofDays(999)).when(firestoreMock).getTotalRequestTimeoutDuration();
249249
doAnswer(countQueryResponse(new FirestoreException("reason", Status.INTERNAL)))
250250
.doAnswer(countQueryResponse(42))
251251
.when(firestoreMock)
@@ -267,7 +267,7 @@ public void shouldRetryIfExceptionIsFirestoreExceptionWithRetryableStatusWithinT
267267
.doReturn(TimeUnit.SECONDS.toNanos(30))
268268
.when(clockMock)
269269
.nanoTime();
270-
doReturn(Duration.ofSeconds(5)).when(firestoreMock).getTotalRequestTimeout();
270+
doReturn(Duration.ofSeconds(5)).when(firestoreMock).getTotalRequestTimeoutDuration();
271271
doAnswer(countQueryResponse(new FirestoreException("reason", Status.INTERNAL)))
272272
.doAnswer(countQueryResponse(42))
273273
.when(firestoreMock)

google-cloud-firestore/src/test/java/com/google/cloud/firestore/QueryTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
import io.grpc.Status;
6868
import java.lang.reflect.Method;
6969
import java.lang.reflect.Proxy;
70+
import java.time.Duration;
7071
import java.util.ArrayList;
7172
import java.util.Arrays;
7273
import java.util.Collections;
@@ -82,7 +83,6 @@
8283
import org.mockito.Mockito;
8384
import org.mockito.Spy;
8485
import org.mockito.junit.MockitoJUnitRunner;
85-
import org.threeten.bp.Duration;
8686

8787
@RunWith(MockitoJUnitRunner.class)
8888
public class QueryTest {
@@ -123,7 +123,7 @@ public long millisTime() {
123123
public void before() {
124124
clock = new MockClock();
125125
doReturn(clock).when(firestoreMock).getClock();
126-
doReturn(Duration.ZERO).when(firestoreMock).getTotalRequestTimeout();
126+
doReturn(Duration.ZERO).when(firestoreMock).getTotalRequestTimeoutDuration();
127127

128128
query = firestoreMock.collection(COLLECTION_ID);
129129
}
@@ -1130,7 +1130,7 @@ public void retriesWithoutTimeout() throws Exception {
11301130

11311131
@Test
11321132
public void doesNotRetryWithTimeout() {
1133-
doReturn(Duration.ofMinutes(1)).when(firestoreMock).getTotalRequestTimeout();
1133+
doReturn(Duration.ofMinutes(1)).when(firestoreMock).getTotalRequestTimeoutDuration();
11341134

11351135
doAnswer(
11361136
invocation -> {

google-cloud-firestore/src/test/java/com/google/cloud/firestore/it/ITSystemTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
import io.grpc.Status;
8585
import io.grpc.Status.Code;
8686
import io.grpc.StatusRuntimeException;
87+
import java.time.Duration;
8788
import java.util.ArrayList;
8889
import java.util.Arrays;
8990
import java.util.Collections;
@@ -106,7 +107,6 @@
106107
import org.junit.rules.TestName;
107108
import org.junit.runner.RunWith;
108109
import org.junit.runners.JUnit4;
109-
import org.threeten.bp.Duration;
110110

111111
@RunWith(JUnit4.class)
112112
public class ITSystemTest extends ITBaseTest {
@@ -2281,9 +2281,9 @@ public void testEnforcesTimeouts() {
22812281
FirestoreOptions.newBuilder()
22822282
.setRetrySettings(
22832283
RetrySettings.newBuilder()
2284-
.setMaxRpcTimeout(Duration.ofMillis(1))
2285-
.setTotalTimeout(Duration.ofMillis(1))
2286-
.setInitialRpcTimeout(Duration.ofMillis(1))
2284+
.setMaxRpcTimeoutDuration(Duration.ofMillis(1))
2285+
.setTotalTimeoutDuration(Duration.ofMillis(1))
2286+
.setInitialRpcTimeoutDuration(Duration.ofMillis(1))
22872287
.build())
22882288
.build();
22892289
firestore = firestoreOptions.getService();

google-cloud-firestore/src/test/java/com/google/cloud/firestore/telemetry/EnabledTraceUtilTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
import io.opentelemetry.api.GlobalOpenTelemetry;
2323
import io.opentelemetry.api.trace.TracerProvider;
2424
import io.opentelemetry.sdk.OpenTelemetrySdk;
25+
import java.time.Duration;
2526
import org.junit.Before;
2627
import org.junit.Test;
27-
import org.threeten.bp.Duration;
2828

2929
public class EnabledTraceUtilTest {
3030
@Before

0 commit comments

Comments
 (0)