Skip to content

Commit c3e86da

Browse files
committed
obfuscate sdk config provider
1 parent 215f832 commit c3e86da

File tree

2 files changed

+43
-6
lines changed

2 files changed

+43
-6
lines changed

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdkBuilder.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.opentelemetry.context.propagation.ContextPropagators;
1111
import io.opentelemetry.sdk.OpenTelemetrySdk;
1212
import io.opentelemetry.sdk.OpenTelemetrySdkBuilder;
13+
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
1314
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
1415
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
1516
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
@@ -19,14 +20,15 @@
1920
import java.io.Closeable;
2021
import java.util.Objects;
2122
import java.util.function.Consumer;
23+
import javax.annotation.Nullable;
2224

2325
/** A new interface for creating OpenTelemetrySdk that supports {@link ConfigProvider}. */
2426
public final class ExtendedOpenTelemetrySdkBuilder {
2527
private final SdkTracerProviderBuilder tracerProviderBuilder = SdkTracerProvider.builder();
2628
private final SdkMeterProviderBuilder meterProviderBuilder = SdkMeterProvider.builder();
2729
private final SdkLoggerProviderBuilder loggerProviderBuilder = SdkLoggerProvider.builder();
2830
private ContextPropagators propagators = ContextPropagators.noop();
29-
private ConfigProvider configProvider = ConfigProvider.noop();
31+
@Nullable private SdkConfigProvider configProvider;
3032
private Consumer<Closeable> closeableConsumer =
3133
closeable -> {
3234
// Default no-op closeable consumer
@@ -39,7 +41,7 @@ public ExtendedOpenTelemetrySdkBuilder setPropagators(ContextPropagators propaga
3941
}
4042

4143
/** Sets the {@link ConfigProvider} to use. */
42-
public ExtendedOpenTelemetrySdkBuilder setConfigProvider(ConfigProvider configProvider) {
44+
public ExtendedOpenTelemetrySdkBuilder setConfigProvider(SdkConfigProvider configProvider) {
4345
this.configProvider = Objects.requireNonNull(configProvider, "configProvider must not be null");
4446
return this;
4547
}

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ObfuscatedExtendedOpenTelemetrySdk.java

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package io.opentelemetry.sdk.extension.incubator;
77

88
import io.opentelemetry.api.incubator.config.ConfigProvider;
9+
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
910
import io.opentelemetry.api.logs.LoggerBuilder;
1011
import io.opentelemetry.api.logs.LoggerProvider;
1112
import io.opentelemetry.api.metrics.MeterBuilder;
@@ -15,6 +16,7 @@
1516
import io.opentelemetry.api.trace.TracerProvider;
1617
import io.opentelemetry.context.propagation.ContextPropagators;
1718
import io.opentelemetry.sdk.common.CompletableResultCode;
19+
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
1820
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
1921
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
2022
import io.opentelemetry.sdk.trace.SdkTracerProvider;
@@ -23,6 +25,7 @@
2325
import java.util.concurrent.TimeUnit;
2426
import java.util.concurrent.atomic.AtomicBoolean;
2527
import java.util.logging.Logger;
28+
import javax.annotation.Nullable;
2629
import javax.annotation.concurrent.ThreadSafe;
2730

2831
/** The SDK implementation of {@link ExtendedOpenTelemetrySdk}. */
@@ -34,16 +37,16 @@ final class ObfuscatedExtendedOpenTelemetrySdk implements ExtendedOpenTelemetryS
3437
private final ObfuscatedTracerProvider tracerProvider;
3538
private final ObfuscatedMeterProvider meterProvider;
3639
private final ObfuscatedLoggerProvider loggerProvider;
37-
private final ConfigProvider configProvider;
40+
private final ObfuscatedConfigProvider configProvider;
3841
private final ContextPropagators propagators;
3942

4043
ObfuscatedExtendedOpenTelemetrySdk(
41-
ConfigProvider configProvider,
44+
@Nullable SdkConfigProvider configProvider,
4245
SdkTracerProvider tracerProvider,
4346
SdkMeterProvider meterProvider,
4447
SdkLoggerProvider loggerProvider,
4548
ContextPropagators propagators) {
46-
this.configProvider = configProvider;
49+
this.configProvider = new ObfuscatedConfigProvider(configProvider);
4750
this.tracerProvider = new ObfuscatedTracerProvider(tracerProvider);
4851
this.meterProvider = new ObfuscatedMeterProvider(meterProvider);
4952
this.loggerProvider = new ObfuscatedLoggerProvider(loggerProvider);
@@ -97,7 +100,7 @@ public ContextPropagators getPropagators() {
97100
public String toString() {
98101
return "ExtendedOpenTelemetrySdk{"
99102
+ "configProvider="
100-
+ configProvider
103+
+ configProvider.unobfuscate()
101104
+ ", tracerProvider="
102105
+ tracerProvider.unobfuscate()
103106
+ ", meterProvider="
@@ -199,4 +202,36 @@ public SdkLoggerProvider unobfuscate() {
199202
return delegate;
200203
}
201204
}
205+
206+
/**
207+
* This class allows the SDK to unobfuscate an obfuscated static global provider.
208+
*
209+
* <p>Static global providers are obfuscated when they are returned from the API to prevent users
210+
* from casting them to their SDK specific implementation. For example, we do not want users to
211+
* use patterns like {@code (SdkMeterProvider) openTelemetry.getMeterProvider()}.
212+
*/
213+
@ThreadSafe
214+
// Visible for testing
215+
static class ObfuscatedConfigProvider implements ConfigProvider {
216+
217+
@Nullable private final SdkConfigProvider delegate;
218+
219+
ObfuscatedConfigProvider(@Nullable SdkConfigProvider delegate) {
220+
this.delegate = delegate;
221+
}
222+
223+
@Override
224+
@Nullable
225+
public DeclarativeConfigProperties getInstrumentationConfig() {
226+
if (delegate == null) {
227+
return null;
228+
}
229+
return delegate.getInstrumentationConfig();
230+
}
231+
232+
@Nullable
233+
public SdkConfigProvider unobfuscate() {
234+
return delegate;
235+
}
236+
}
202237
}

0 commit comments

Comments
 (0)