Skip to content

Commit 323eb33

Browse files
feat: introduce java.time methods (#1729)
* feat: introduce `java.time` methods * feat: introduce `java.time` methods * use add-opens to allow serialization of java.time.Duration * use add-opens in surefire only when running in jdk9+ * Revert "use add-opens in surefire only when running in jdk9+" This reverts commit 5a5abd4. * Revert "use add-opens to allow serialization of java.time.Duration" This reverts commit d1feef2.
1 parent 30963e1 commit 323eb33

File tree

6 files changed

+44
-18
lines changed

6 files changed

+44
-18
lines changed

google-cloud-logging/src/main/java/com/google/cloud/logging/HttpRequest.java

+22-6
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,18 @@
1616

1717
package com.google.cloud.logging;
1818

19+
import static com.google.api.gax.util.TimeConversionUtils.toJavaTimeDuration;
20+
import static com.google.api.gax.util.TimeConversionUtils.toThreetenDuration;
21+
1922
import com.google.api.core.ApiFunction;
23+
import com.google.api.core.ObsoleteApi;
2024
import com.google.cloud.StringEnumType;
2125
import com.google.cloud.StringEnumValue;
2226
import com.google.common.base.MoreObjects;
2327
import com.google.errorprone.annotations.CanIgnoreReturnValue;
2428
import java.io.Serializable;
29+
import java.time.Duration;
2530
import java.util.Objects;
26-
import org.threeten.bp.Duration;
2731

2832
/**
2933
* Objects of this class represent information about the (optional) HTTP request associated with a
@@ -51,7 +55,7 @@ public final class HttpRequest implements Serializable {
5155
private final boolean cacheHit;
5256
private final boolean cacheValidatedWithOriginServer;
5357
private final Long cacheFillBytes;
54-
private final Duration latency;
58+
private final java.time.Duration latency;
5559

5660
/** The HTTP request method. */
5761
public static final class RequestMethod extends StringEnumValue {
@@ -112,7 +116,7 @@ public static final class Builder {
112116
private boolean cacheHit;
113117
private boolean cacheValidatedWithOriginServer;
114118
private Long cacheFillBytes;
115-
private Duration latency;
119+
private java.time.Duration latency;
116120

117121
Builder() {}
118122

@@ -258,12 +262,18 @@ public Builder setCacheFillBytes(long cacheFillBytes) {
258262
return this;
259263
}
260264

265+
/** This method is obsolete. Use {@link #setLatencyDuration(java.time.Duration)} instead. */
266+
@ObsoleteApi("Use setLatencyDuration(java.time.Duration) instead")
267+
public Builder setLatency(org.threeten.bp.Duration latency) {
268+
return setLatencyDuration(toJavaTimeDuration(latency));
269+
}
270+
261271
/**
262272
* Sets the latency on the server, from the time the request was received until the response was
263273
* sent.
264274
*/
265275
@CanIgnoreReturnValue
266-
public Builder setLatency(Duration latency) {
276+
public Builder setLatencyDuration(java.time.Duration latency) {
267277
this.latency = latency;
268278
return this;
269279
}
@@ -393,13 +403,19 @@ public Long getCacheFillBytes() {
393403
return cacheFillBytes;
394404
}
395405

406+
/** This method is obsolete. Use {@link #getLatencyDuration()} instead. */
407+
@ObsoleteApi("Use getLatencyDuration() instead")
408+
public org.threeten.bp.Duration getLatency() {
409+
return toThreetenDuration(getLatencyDuration());
410+
}
411+
396412
/**
397413
* Returns the processing latency on the server, from the time the request was received until the
398414
* response was sent.
399415
*
400416
* @return the latency, for null if not populated.
401417
*/
402-
public Duration getLatency() {
418+
public Duration getLatencyDuration() {
403419
return latency;
404420
}
405421

@@ -561,7 +577,7 @@ static HttpRequest fromPb(com.google.logging.type.HttpRequest requestPb) {
561577
}
562578
if (requestPb.hasLatency()) {
563579
// NOTE(pongad): Don't convert to nano; large durations overflow longs!
564-
builder.setLatency(
580+
builder.setLatencyDuration(
565581
Duration.ofSeconds(
566582
requestPb.getLatency().getSeconds(), requestPb.getLatency().getNanos()));
567583
}

google-cloud-logging/src/main/java/com/google/cloud/logging/LogEntry.java

+10
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.google.logging.v2.LogEntrySourceLocation;
3535
import com.google.logging.v2.LogName;
3636
import java.io.Serializable;
37+
import java.time.Duration;
3738
import java.time.Instant;
3839
import java.util.HashMap;
3940
import java.util.Map;
@@ -612,6 +613,14 @@ public JsonElement serialize(
612613
}
613614
}
614615

616+
static final class DurationSerializer implements JsonSerializer<Duration> {
617+
@Override
618+
public JsonElement serialize(
619+
Duration src, java.lang.reflect.Type typeOfSrc, JsonSerializationContext context) {
620+
return new JsonPrimitive(src.toString());
621+
}
622+
}
623+
615624
static final class SourceLocationSerializer implements JsonSerializer<SourceLocation> {
616625
@Override
617626
public JsonElement serialize(
@@ -649,6 +658,7 @@ public StructuredLogFormatter(StringBuilder builder) {
649658
checkNotNull(builder);
650659
this.gson =
651660
new GsonBuilder()
661+
.registerTypeAdapter(Duration.class, new DurationSerializer())
652662
.registerTypeAdapter(Instant.class, new InstantSerializer())
653663
.registerTypeAdapter(SourceLocation.class, new SourceLocationSerializer())
654664
.registerTypeAdapter(HttpRequest.RequestMethod.class, new RequestMethodSerializer())

google-cloud-logging/src/main/java/com/google/cloud/logging/testing/RemoteLoggingHelper.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
import com.google.cloud.logging.LoggingOptions;
2323
import java.io.IOException;
2424
import java.io.InputStream;
25+
import java.time.Duration;
2526
import java.util.UUID;
2627
import java.util.logging.Level;
2728
import java.util.logging.Logger;
28-
import org.threeten.bp.Duration;
2929

3030
/**
3131
* Utility to create a remote logging configuration for testing. Logging options can be obtained via
@@ -101,13 +101,13 @@ public static String formatForTest(String name) {
101101

102102
private static RetrySettings retrySettings() {
103103
return RetrySettings.newBuilder()
104-
.setMaxRetryDelay(Duration.ofMillis(30000L))
105-
.setTotalTimeout(Duration.ofMillis(120000L))
106-
.setInitialRetryDelay(Duration.ofMillis(250L))
104+
.setMaxRetryDelayDuration(Duration.ofMillis(30000L))
105+
.setTotalTimeoutDuration(Duration.ofMillis(120000L))
106+
.setInitialRetryDelayDuration(Duration.ofMillis(250L))
107107
.setRetryDelayMultiplier(1.0)
108-
.setInitialRpcTimeout(Duration.ofMillis(120000L))
108+
.setInitialRpcTimeoutDuration(Duration.ofMillis(120000L))
109109
.setRpcTimeoutMultiplier(1.0)
110-
.setMaxRpcTimeout(Duration.ofMillis(120000L))
110+
.setMaxRpcTimeoutDuration(Duration.ofMillis(120000L))
111111
.build();
112112
}
113113

google-cloud-logging/src/test/java/com/google/cloud/logging/ContextTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@
2929
import io.opentelemetry.sdk.trace.SdkTracerProvider;
3030
import io.opentelemetry.sdk.trace.SpanProcessor;
3131
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
32+
import java.time.Duration;
3233
import org.junit.Test;
3334
import org.junit.runner.RunWith;
3435
import org.junit.runners.JUnit4;
35-
import org.threeten.bp.Duration;
3636

3737
@RunWith(JUnit4.class)
3838
public class ContextTest {
@@ -62,7 +62,7 @@ public class ContextTest {
6262
.setCacheHit(false)
6363
.setCacheValidatedWithOriginServer(true)
6464
.setCacheFillBytes(303L)
65-
.setLatency(Duration.ofSeconds(123, 456))
65+
.setLatencyDuration(Duration.ofSeconds(123, 456))
6666
.build();
6767
private static final HttpRequest PARTIAL_REQUEST =
6868
HttpRequest.newBuilder()

google-cloud-logging/src/test/java/com/google/cloud/logging/HttpRequestTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
import static org.junit.Assert.assertTrue;
2323

2424
import com.google.cloud.logging.HttpRequest.RequestMethod;
25+
import java.time.Duration;
2526
import org.junit.Test;
2627
import org.junit.runner.RunWith;
2728
import org.junit.runners.JUnit4;
28-
import org.threeten.bp.Duration;
2929

3030
@RunWith(JUnit4.class)
3131
public class HttpRequestTest {
@@ -59,7 +59,7 @@ public class HttpRequestTest {
5959
.setCacheHit(CACHE_HIT)
6060
.setCacheValidatedWithOriginServer(CACHE_VALIDATED_WITH_ORIGIN_SERVER)
6161
.setCacheFillBytes(CACHE_FILL_BYTES)
62-
.setLatency(Duration.ofSeconds(123, 456))
62+
.setLatencyDuration(Duration.ofSeconds(123, 456))
6363
.build();
6464

6565
@Test

google-cloud-logging/src/test/java/com/google/cloud/logging/LoggingOptionsTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727
import com.google.api.gax.batching.FlowController;
2828
import com.google.cloud.NoCredentials;
2929
import com.google.cloud.TransportOptions;
30+
import java.time.Duration;
3031
import org.junit.Test;
3132
import org.junit.runner.RunWith;
3233
import org.junit.runners.JUnit4;
33-
import org.threeten.bp.Duration;
3434

3535
@RunWith(JUnit4.class)
3636
public class LoggingOptionsTest {
@@ -90,7 +90,7 @@ private static LoggingOptions generateLoggingOptions() {
9090
.setIsEnabled(true)
9191
.setElementCountThreshold(ELEMENTS_TRESHOLD_COUNT)
9292
.setRequestByteThreshold(REQUEST_BYTE_TRESHOLD_COUNT)
93-
.setDelayThreshold(Duration.ofMillis(DURATION))
93+
.setDelayThresholdDuration(Duration.ofMillis(DURATION))
9494
.setFlowControlSettings(
9595
FlowControlSettings.newBuilder()
9696
.setMaxOutstandingElementCount(MAX_OUTSTANDING_ELEMENTS_COUNT)

0 commit comments

Comments
 (0)