Skip to content

Commit 37afb33

Browse files
authored
Split global functionality into a separate class (open-telemetry#2233) (open-telemetry#2239)
This ensure clear separation of functionality. This PR does not change any functionality, it just restructures the code to separate global functionality from the Default implementation. Also helps to ensure that Global initialization does not happen by mistake when working only with the default implementation. Also it helps with methods like `OpenTelemetry.get()` and `OpenTelemetry.set()` to understand they are interacting with global instance Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
1 parent 25bf879 commit 37afb33

5 files changed

Lines changed: 17 additions & 6 deletions

File tree

api/all/src/main/java/io/opentelemetry/api/DefaultOpenTelemetry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ public static DefaultOpenTelemetryBuilder builder() {
2828

2929
private final TracerProvider tracerProvider;
3030
private final MeterProvider meterProvider;
31-
3231
private volatile ContextPropagators propagators;
3332

3433
@Override
34+
@Deprecated
3535
public void setPropagators(ContextPropagators propagators) {
3636
this.propagators = propagators;
3737
}

api/all/src/main/java/io/opentelemetry/api/GlobalOpenTelemetry.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,10 @@ public static ContextPropagators getPropagators() {
158158

159159
/**
160160
* Sets the globally registered {@link ContextPropagators} for remote propagation of a context.
161+
*
162+
* @deprecated this will be removed soon, create a new instance if necessary.
161163
*/
164+
@Deprecated
162165
public static void setPropagators(ContextPropagators propagators) {
163166
requireNonNull(propagators, "propagators");
164167
get().setPropagators(propagators);

api/all/src/main/java/io/opentelemetry/api/OpenTelemetry.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
package io.opentelemetry.api;
77

8-
import static java.util.Objects.requireNonNull;
9-
108
import io.opentelemetry.api.metrics.Meter;
119
import io.opentelemetry.api.metrics.MeterProvider;
1210
import io.opentelemetry.api.trace.Tracer;
@@ -15,6 +13,7 @@
1513
import io.opentelemetry.spi.OpenTelemetryFactory;
1614
import io.opentelemetry.spi.metrics.MeterProviderFactory;
1715
import io.opentelemetry.spi.trace.TracerProviderFactory;
16+
import java.util.Objects;
1817

1918
/**
2019
* The entrypoint to telemetry functionality for tracing, metrics and baggage.
@@ -130,15 +129,20 @@ static ContextPropagators getGlobalPropagators() {
130129
/**
131130
* Sets the globally registered {@link ContextPropagators} for remote propagation of a context.
132131
*
133-
* @deprecated use {@link GlobalOpenTelemetry#setPropagators(ContextPropagators)}
132+
* @deprecated this will be removed soon, create a new instance if necessary.
134133
*/
135134
@Deprecated
136135
static void setGlobalPropagators(ContextPropagators propagators) {
137-
requireNonNull(propagators, "propagators");
136+
Objects.requireNonNull(propagators, "propagators");
138137
get().setPropagators(propagators);
139138
}
140139

141-
/** Sets the propagators that this instance should contain. */
140+
/**
141+
* Sets the propagators that this instance should contain.
142+
*
143+
* @deprecated this will be removed soon, create a new instance if necessary.
144+
*/
145+
@Deprecated
142146
void setPropagators(ContextPropagators propagators);
143147

144148
/** Returns the {@link TracerProvider} for this {@link OpenTelemetry}. */

api/all/src/test/java/io/opentelemetry/api/OpenTelemetryTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,13 +173,15 @@ void testMeterNotFound() {
173173
}
174174

175175
@Test
176+
@SuppressWarnings("deprecation") // tested deprecated code
176177
void testGlobalPropagatorsSet() {
177178
ContextPropagators propagators = ContextPropagators.noop();
178179
GlobalOpenTelemetry.setPropagators(propagators);
179180
assertThat(GlobalOpenTelemetry.getPropagators()).isEqualTo(propagators);
180181
}
181182

182183
@Test
184+
@SuppressWarnings("deprecation") // tested deprecated code
183185
void testPropagatorsSet() {
184186
ContextPropagators propagators = ContextPropagators.noop();
185187
OpenTelemetry instance = DefaultOpenTelemetry.builder().build();
@@ -237,6 +239,7 @@ void independentNonGlobalPropagators() {
237239
}
238240

239241
@Test
242+
@SuppressWarnings("deprecation") // tested deprecated code
240243
void testPropagatorsSetNull() {
241244
assertThrows(NullPointerException.class, () -> GlobalOpenTelemetry.setPropagators(null));
242245
}

integration-tests/tracecontext/src/main/java/io/opentelemetry/Application.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import spark.Route;
3030
import spark.Spark;
3131

32+
@SuppressWarnings("deprecation") // using deprecated code in tests
3233
public class Application {
3334
private static final Logger logger = Logger.getLogger(Application.class.getName());
3435
private static final OpenTelemetry openTelemetry;

0 commit comments

Comments
 (0)