From 9d9c88a78b31fec1a46c1bcc0c9b574d6df80f10 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Wed, 9 Dec 2020 13:59:04 +0900 Subject: [PATCH] Remove Obfuscated marker interface. (#2221) * Remove Obfuscated marker interface. * Drift * Update OpenTelemetrySdk.java --- .../java/io/opentelemetry/sdk/Obfuscated.java | 30 ------------------- .../opentelemetry/sdk/OpenTelemetrySdk.java | 10 +++---- 2 files changed, 5 insertions(+), 35 deletions(-) delete mode 100644 sdk/all/src/main/java/io/opentelemetry/sdk/Obfuscated.java diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/Obfuscated.java b/sdk/all/src/main/java/io/opentelemetry/sdk/Obfuscated.java deleted file mode 100644 index 4243762b70..0000000000 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/Obfuscated.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk; - -import javax.annotation.concurrent.ThreadSafe; - -/** - * This interface allows the SDK to unobfuscate an obfuscated static global provider. - * - *

Static global providers are obfuscated when they are returned from the API to prevent users - * from casting them to their SDK specific implementation. - * - *

This is important for auto-instrumentation, because if users take the static global providers - * that are returned from the API, and cast them to their SDK specific implementations, then those - * casts will fail under auto-instrumentation, because auto-instrumentation takes over the static - * global providers returned by the API and points them to it's embedded SDK. - */ -@ThreadSafe -interface Obfuscated { - - /** - * Returns the unobfuscated provider. - * - * @return the unobfuscated provider. - */ - T unobfuscate(); -} diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdk.java b/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdk.java index 4ec7eab1f5..addae908b4 100644 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdk.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdk.java @@ -271,14 +271,15 @@ public final class OpenTelemetrySdk extends DefaultOpenTelemetry { } /** - * A {@link TracerProvider} wrapper that forces users to access the SDK specific implementation - * via the SDK, instead of via the API and casting it to the SDK specific implementation. + * This class allows the SDK to unobfuscate an obfuscated static global provider. * - * @see Obfuscated + *

Static global providers are obfuscated when they are returned from the API to prevent users + * from casting them to their SDK specific implementation. For example, we do not want users to + * use patterns like {@code (TracerSdkProvider) OpenTelemetry.getGlobalTracerProvider()}. */ @ThreadSafe // Visible for testing - static class ObfuscatedTracerProvider implements TracerProvider, Obfuscated { + static class ObfuscatedTracerProvider implements TracerProvider { private final TracerProvider delegate; @@ -296,7 +297,6 @@ public final class OpenTelemetrySdk extends DefaultOpenTelemetry { return delegate.get(instrumentationName, instrumentationVersion); } - @Override public TracerProvider unobfuscate() { return delegate; }