From eb7e2125879cde012d3d793eb99cb91b214511eb Mon Sep 17 00:00:00 2001 From: Bogdan Drutu Date: Fri, 5 Feb 2021 20:30:17 -0800 Subject: [PATCH] Mark interfaces in trace/data immutable (#2729) Signed-off-by: Bogdan Drutu --- .../main/java/io/opentelemetry/sdk/trace/data/EventData.java | 3 +++ .../io/opentelemetry/sdk/trace/data/ImmutableEventData.java | 2 +- .../io/opentelemetry/sdk/trace/data/ImmutableLinkData.java | 2 +- .../main/java/io/opentelemetry/sdk/trace/data/LinkData.java | 4 +++- .../main/java/io/opentelemetry/sdk/trace/data/StatusData.java | 2 ++ 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/EventData.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/EventData.java index 58a7f0307c..a76c179d87 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/EventData.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/EventData.java @@ -7,7 +7,10 @@ package io.opentelemetry.sdk.trace.data; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.sdk.trace.SpanLimits; +import javax.annotation.concurrent.Immutable; +/** Data representation of a event. */ +@Immutable public interface EventData { /** diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableEventData.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableEventData.java index 00b69759ae..218941f432 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableEventData.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableEventData.java @@ -10,8 +10,8 @@ import io.opentelemetry.api.common.Attributes; import javax.annotation.concurrent.Immutable; /** An immutable implementation of the {@link EventData}. */ -@Immutable @AutoValue +@Immutable abstract class ImmutableEventData implements EventData { /** diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableLinkData.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableLinkData.java index 8442a46334..2b4ace61ab 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableLinkData.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableLinkData.java @@ -11,8 +11,8 @@ import io.opentelemetry.api.trace.SpanContext; import javax.annotation.concurrent.Immutable; /** An immutable implementation of {@link LinkData}. */ -@Immutable @AutoValue +@Immutable abstract class ImmutableLinkData implements LinkData { private static final Attributes DEFAULT_ATTRIBUTE_COLLECTION = Attributes.empty(); private static final int DEFAULT_ATTRIBUTE_COUNT = 0; diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/LinkData.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/LinkData.java index 16ac85300a..6c3aeb4c32 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/LinkData.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/LinkData.java @@ -8,13 +8,15 @@ package io.opentelemetry.sdk.trace.data; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.sdk.trace.SpanLimits; +import javax.annotation.concurrent.Immutable; /** - * Data representation of a Link. + * Data representation of a link. * *

Used (for example) in batching operations, where a single batch handler processes multiple * requests from different traces. Link can be also used to reference spans from the same trace. */ +@Immutable public interface LinkData { /** diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/StatusData.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/StatusData.java index b89aad8a9c..5d99c78d3b 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/StatusData.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/StatusData.java @@ -8,11 +8,13 @@ package io.opentelemetry.sdk.trace.data; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.StatusCode; import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; /** * Defines the status of a {@link Span} by providing a standard {@link StatusCode} in conjunction * with an optional descriptive message. */ +@Immutable public interface StatusData { /**