Skip to content

Commit fdc808c

Browse files
committed
pr review
1 parent d223ebe commit fdc808c

File tree

5 files changed

+59
-54
lines changed

5 files changed

+59
-54
lines changed

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

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.api.internal.ConfigUtil;
99
import io.opentelemetry.api.internal.GuardedBy;
1010
import io.opentelemetry.api.internal.IncubatingUtil;
11+
import io.opentelemetry.api.logs.LoggerProvider;
1112
import io.opentelemetry.api.metrics.Meter;
1213
import io.opentelemetry.api.metrics.MeterBuilder;
1314
import io.opentelemetry.api.metrics.MeterProvider;
@@ -21,6 +22,7 @@
2122
import java.util.logging.Level;
2223
import java.util.logging.Logger;
2324
import javax.annotation.Nullable;
25+
import javax.annotation.concurrent.ThreadSafe;
2426

2527
/**
2628
* A global singleton for the entrypoint to telemetry functionality for tracing, metrics and
@@ -111,7 +113,7 @@ public static void set(OpenTelemetry openTelemetry) {
111113
+ "instead. Previous invocation set to cause of this exception.",
112114
setGlobalCaller);
113115
}
114-
globalOpenTelemetry = IncubatingUtil.obfuscatedOpenTelemetry(openTelemetry);
116+
globalOpenTelemetry = obfuscatedOpenTelemetry(openTelemetry);
115117
setGlobalCaller = new Throwable();
116118
}
117119
}
@@ -260,8 +262,7 @@ private static OpenTelemetry maybeAutoConfigureAndSetGlobal() {
260262
Object autoConfiguredSdk = initialize.invoke(null);
261263
Method getOpenTelemetrySdk =
262264
openTelemetrySdkAutoConfiguration.getMethod("getOpenTelemetrySdk");
263-
return IncubatingUtil.obfuscatedOpenTelemetry(
264-
(OpenTelemetry) getOpenTelemetrySdk.invoke(autoConfiguredSdk));
265+
return obfuscatedOpenTelemetry((OpenTelemetry) getOpenTelemetrySdk.invoke(autoConfiguredSdk));
265266
} catch (NoSuchMethodException | IllegalAccessException e) {
266267
throw new IllegalStateException(
267268
"AutoConfiguredOpenTelemetrySdk detected on classpath "
@@ -275,4 +276,52 @@ private static OpenTelemetry maybeAutoConfigureAndSetGlobal() {
275276
return null;
276277
}
277278
}
279+
280+
private static OpenTelemetry obfuscatedOpenTelemetry(OpenTelemetry openTelemetry) {
281+
OpenTelemetry incubating = IncubatingUtil.obfuscatedOpenTelemetryIfIncubating(openTelemetry);
282+
if (incubating != null) {
283+
return incubating;
284+
}
285+
return new ObfuscatedOpenTelemetry(openTelemetry);
286+
}
287+
288+
/**
289+
* Static global instances are obfuscated when they are returned from the API to prevent users
290+
* from casting them to their SDK-specific implementation. For example, we do not want users to
291+
* use patterns like {@code (OpenTelemetrySdk) GlobalOpenTelemetry.get()}.
292+
*/
293+
@ThreadSafe
294+
static class ObfuscatedOpenTelemetry implements OpenTelemetry {
295+
296+
private final OpenTelemetry delegate;
297+
298+
ObfuscatedOpenTelemetry(OpenTelemetry delegate) {
299+
this.delegate = delegate;
300+
}
301+
302+
@Override
303+
public TracerProvider getTracerProvider() {
304+
return delegate.getTracerProvider();
305+
}
306+
307+
@Override
308+
public MeterProvider getMeterProvider() {
309+
return delegate.getMeterProvider();
310+
}
311+
312+
@Override
313+
public LoggerProvider getLogsBridge() {
314+
return delegate.getLogsBridge();
315+
}
316+
317+
@Override
318+
public ContextPropagators getPropagators() {
319+
return delegate.getPropagators();
320+
}
321+
322+
@Override
323+
public TracerBuilder tracerBuilder(String instrumentationScopeName) {
324+
return delegate.tracerBuilder(instrumentationScopeName);
325+
}
326+
}
278327
}

api/all/src/main/java/io/opentelemetry/api/internal/IncubatingUtil.java

Lines changed: 4 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,8 @@
66
package io.opentelemetry.api.internal;
77

88
import io.opentelemetry.api.OpenTelemetry;
9-
import io.opentelemetry.api.logs.LoggerProvider;
10-
import io.opentelemetry.api.metrics.MeterProvider;
11-
import io.opentelemetry.api.trace.TracerBuilder;
12-
import io.opentelemetry.api.trace.TracerProvider;
13-
import io.opentelemetry.context.propagation.ContextPropagators;
149
import java.lang.reflect.Method;
15-
import javax.annotation.concurrent.ThreadSafe;
10+
import javax.annotation.Nullable;
1611

1712
/**
1813
* Incubating utilities.
@@ -34,7 +29,8 @@ public static <T> T incubatingApiIfAvailable(T stableApi, String incubatingClass
3429
}
3530
}
3631

37-
public static OpenTelemetry obfuscatedOpenTelemetry(OpenTelemetry openTelemetry) {
32+
@Nullable
33+
public static OpenTelemetry obfuscatedOpenTelemetryIfIncubating(OpenTelemetry openTelemetry) {
3834
try {
3935
Class<?> extendedClass =
4036
Class.forName("io.opentelemetry.api.incubator.ExtendedOpenTelemetry");
@@ -50,46 +46,6 @@ public static OpenTelemetry obfuscatedOpenTelemetry(OpenTelemetry openTelemetry)
5046
} catch (Exception e) {
5147
// incubator not available
5248
}
53-
return new ObfuscatedOpenTelemetry(openTelemetry);
54-
}
55-
56-
/**
57-
* Static global instances are obfuscated when they are returned from the API to prevent users
58-
* from casting them to their SDK-specific implementation. For example, we do not want users to
59-
* use patterns like {@code (OpenTelemetrySdk) GlobalOpenTelemetry.get()}.
60-
*/
61-
@ThreadSafe
62-
static class ObfuscatedOpenTelemetry implements OpenTelemetry {
63-
64-
private final OpenTelemetry delegate;
65-
66-
ObfuscatedOpenTelemetry(OpenTelemetry delegate) {
67-
this.delegate = delegate;
68-
}
69-
70-
@Override
71-
public TracerProvider getTracerProvider() {
72-
return delegate.getTracerProvider();
73-
}
74-
75-
@Override
76-
public MeterProvider getMeterProvider() {
77-
return delegate.getMeterProvider();
78-
}
79-
80-
@Override
81-
public LoggerProvider getLogsBridge() {
82-
return delegate.getLogsBridge();
83-
}
84-
85-
@Override
86-
public ContextPropagators getPropagators() {
87-
return delegate.getPropagators();
88-
}
89-
90-
@Override
91-
public TracerBuilder tracerBuilder(String instrumentationScopeName) {
92-
return delegate.tracerBuilder(instrumentationScopeName);
93-
}
49+
return null;
9450
}
9551
}

api/incubator/src/main/java/io/opentelemetry/api/incubator/internal/ObfuscatedExtendedOpenTelemetry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public final class ObfuscatedExtendedOpenTelemetry implements ExtendedOpenTeleme
3030

3131
/**
3232
* This constructor is called via reflection from {@link
33-
* io.opentelemetry.api.internal.IncubatingUtil#obfuscatedOpenTelemetry(OpenTelemetry)}.
33+
* io.opentelemetry.api.internal.IncubatingUtil#obfuscatedOpenTelemetryIfIncubating(OpenTelemetry)}.
3434
*/
3535
public ObfuscatedExtendedOpenTelemetry(ExtendedOpenTelemetry delegate) {
3636
this.delegate = delegate;

sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -758,7 +758,7 @@ void globalOpenTelemetryLock() throws InterruptedException, ExecutionException,
758758
private static OpenTelemetry unobfuscate(OpenTelemetry openTelemetry) {
759759
try {
760760
Field delegateField =
761-
Class.forName("io.opentelemetry.api.internal.IncubatingUtil$ObfuscatedOpenTelemetry")
761+
Class.forName("io.opentelemetry.api.GlobalOpenTelemetry$ObfuscatedOpenTelemetry")
762762
.getDeclaredField("delegate");
763763
delegateField.setAccessible(true);
764764
Object delegate = delegateField.get(openTelemetry);

sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ void globalOpenTelemetry_AutoConfigureEnabled() {
9191
private static OpenTelemetry unobfuscate(OpenTelemetry openTelemetry) {
9292
try {
9393
Field delegateField =
94-
Class.forName("io.opentelemetry.api.internal.IncubatingUtil$ObfuscatedOpenTelemetry")
94+
Class.forName("io.opentelemetry.api.GlobalOpenTelemetry$ObfuscatedOpenTelemetry")
9595
.getDeclaredField("delegate");
9696
delegateField.setAccessible(true);
9797
Object delegate = delegateField.get(openTelemetry);

0 commit comments

Comments
 (0)