diff --git a/all/src/test/java/io/opentelemetry/all/NoSharedInternalCodeTest.java b/all/src/test/java/io/opentelemetry/all/NoSharedInternalCodeTest.java index 58f276b290e..2e2137e3a9b 100644 --- a/all/src/test/java/io/opentelemetry/all/NoSharedInternalCodeTest.java +++ b/all/src/test/java/io/opentelemetry/all/NoSharedInternalCodeTest.java @@ -34,7 +34,6 @@ class NoSharedInternalCodeTest { private static final Set exemptions = Set.of( "opentelemetry-exporter-common", - "opentelemetry-exporter-logging", "opentelemetry-exporter-logging-otlp", "opentelemetry-exporter-prometheus", "opentelemetry-extension-trace-propagators", diff --git a/api/all/src/main/java/io/opentelemetry/api/config/DeclarativeConfigException.java b/api/all/src/main/java/io/opentelemetry/api/config/DeclarativeConfigException.java new file mode 100644 index 00000000000..2a9f221d59e --- /dev/null +++ b/api/all/src/main/java/io/opentelemetry/api/config/DeclarativeConfigException.java @@ -0,0 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.api.config; + +/** An exception that is thrown when errors occur with declarative configuration. */ +public class DeclarativeConfigException extends RuntimeException { + + private static final long serialVersionUID = 3036584181551130522L; + + /** Create a new configuration exception with specified {@code message} and without a cause. */ + public DeclarativeConfigException(String message) { + super(message); + } + + /** Create a new configuration exception with specified {@code message} and {@code cause}. */ + public DeclarativeConfigException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/api/all/src/main/java/io/opentelemetry/api/config/DeclarativeConfigProperties.java b/api/all/src/main/java/io/opentelemetry/api/config/DeclarativeConfigProperties.java new file mode 100644 index 00000000000..bcd17a98d9b --- /dev/null +++ b/api/all/src/main/java/io/opentelemetry/api/config/DeclarativeConfigProperties.java @@ -0,0 +1,288 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.api.config; + +import io.opentelemetry.common.ComponentLoader; +import java.util.List; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +/** + * An interface for accessing declarative configuration data. + * + *

An instance of {@link DeclarativeConfigProperties} is equivalent to a YAML mapping node. It has accessors for + * reading scalar properties, {@link #getStructured(String)} for reading children which are + * themselves mappings, and {@link #getStructuredList(String)} for reading children which are + * sequences of mappings. + */ +public interface DeclarativeConfigProperties { + + /** + * Return an empty {@link DeclarativeConfigProperties} instance. + * + *

Useful for walking the tree without checking for null. For example, to access a string key + * nested at .foo.bar.baz, call: {@code config.getStructured("foo", empty()).getStructured("bar", + * empty()).getString("baz")}. + */ + static DeclarativeConfigProperties empty() { + return EmptyDeclarativeConfigProperties.getInstance(); + } + + /** Return a map representation of the {@code declarativeConfigProperties}. */ + static Map toMap(DeclarativeConfigProperties declarativeConfigProperties) { + return DeclarativeConfigPropertyUtil.toMap(declarativeConfigProperties); + } + + /** + * Returns a {@link String} configuration property. + * + * @return null if the property has not been configured or if the property is not a valid scalar + * string + */ + @Nullable + String getString(String name); + + /** + * Returns a {@link String} configuration property. + * + * @return a {@link String} configuration property or {@code defaultValue} if a property with + * {@code name} has not been configured or is not a valid scalar string + */ + default String getString(String name, String defaultValue) { + String value = getString(name); + return value == null ? defaultValue : value; + } + + /** + * Returns a {@link Boolean} configuration property. Implementations should use the same rules as + * {@link Boolean#parseBoolean(String)} for handling the values. + * + * @return null if the property has not been configured or if the property is not a valid scalar + * boolean + */ + @Nullable + Boolean getBoolean(String name); + + /** + * Returns a {@link Boolean} configuration property. + * + * @return a {@link Boolean} configuration property or {@code defaultValue} if a property with + * {@code name} has not been configured or is not a valid scalar boolean + */ + default boolean getBoolean(String name, boolean defaultValue) { + Boolean value = getBoolean(name); + return value == null ? defaultValue : value; + } + + /** + * Returns a {@link Integer} configuration property. + * + *

If the underlying config property is {@link Long}, it is converted to {@link Integer} with + * {@link Long#intValue()} which may result in loss of precision. + * + * @return null if the property has not been configured or if the property is not a valid scalar + * integer + */ + @Nullable + Integer getInt(String name); + + /** + * Returns a {@link Integer} configuration property. + * + *

If the underlying config property is {@link Long}, it is converted to {@link Integer} with + * {@link Long#intValue()} which may result in loss of precision. + * + * @return a {@link Integer} configuration property or {@code defaultValue} if a property with + * {@code name} has not been configured or is not a valid scalar integer + */ + default int getInt(String name, int defaultValue) { + Integer value = getInt(name); + return value == null ? defaultValue : value; + } + + /** + * Returns a {@link Long} configuration property. + * + * @return null if the property has not been configured or if the property is not a valid scalar + * long + */ + @Nullable + Long getLong(String name); + + /** + * Returns a {@link Long} configuration property. + * + * @return a {@link Long} configuration property or {@code defaultValue} if a property with {@code + * name} has not been configured or is not a valid scalar long + */ + default long getLong(String name, long defaultValue) { + Long value = getLong(name); + return value == null ? defaultValue : value; + } + + /** + * Returns a {@link Double} configuration property. + * + * @return null if the property has not been configured or if the property is not a valid scalar + * double + */ + @Nullable + Double getDouble(String name); + + /** + * Returns a {@link Double} configuration property. + * + * @return a {@link Double} configuration property or {@code defaultValue} if a property with + * {@code name} has not been configured or is not a valid scalar double + */ + default double getDouble(String name, double defaultValue) { + Double value = getDouble(name); + return value == null ? defaultValue : value; + } + + /** + * Returns a {@link List} configuration property. Empty values and values which do not map to the + * {@code scalarType} will be removed. + * + * @param name the property name + * @param scalarType the scalar type, one of {@link String}, {@link Boolean}, {@link Long} or + * {@link Double} + * @return a {@link List} configuration property, or null if the property has not been configured + * or if the property is not a valid sequence of scalars + * @throws DeclarativeConfigException if {@code scalarType} is not supported + */ + @Nullable + List getScalarList(String name, Class scalarType); + + /** + * Returns a {@link List} configuration property. Empty values and values which do not map to the + * {@code scalarType} will be removed. + * + * @param name the property name + * @param scalarType the scalar type, one of {@link String}, {@link Boolean}, {@link Long} or + * {@link Double} + * @return a {@link List} configuration property or {@code defaultValue} if a property with {@code + * name} has not been configured or is not a valid sequence of scalars + */ + default List getScalarList(String name, Class scalarType, List defaultValue) { + List value = getScalarList(name, scalarType); + return value == null ? defaultValue : value; + } + + /** + * Returns whether the property with {@code name} holds a value which {@link #getString(String)} + * accepts. + * + * @return true if a property with {@code name} has been configured and is a valid scalar string, + * false otherwise, including when the property is null + */ + boolean isString(String name); + + /** + * Returns whether the property with {@code name} holds a value which {@link #getBoolean(String)} + * accepts. + * + * @return true if a property with {@code name} has been configured and is a valid scalar boolean, + * false otherwise, including when the property is null + */ + boolean isBoolean(String name); + + /** + * Returns whether the property with {@code name} holds a value which {@link #getInt(String)} + * accepts. + * + * @return true if a property with {@code name} has been configured and is a valid scalar integer, + * false otherwise, including when the property is null + */ + boolean isInt(String name); + + /** + * Returns whether the property with {@code name} holds a value which {@link #getLong(String)} + * accepts. + * + * @return true if a property with {@code name} has been configured and is a valid scalar long, + * false otherwise, including when the property is null + */ + boolean isLong(String name); + + /** + * Returns whether the property with {@code name} holds a value which {@link #getDouble(String)} + * accepts. + * + * @return true if a property with {@code name} has been configured and is a valid scalar double, + * false otherwise, including when the property is null + */ + boolean isDouble(String name); + + /** + * Returns a {@link DeclarativeConfigProperties} configuration property. + * + * @return a map-valued configuration property, or {@code null} if {@code name} has not been + * configured or is not a mapping + */ + @Nullable + DeclarativeConfigProperties getStructured(String name); + + /** + * Returns a {@link DeclarativeConfigProperties} configuration property. + * + * @return a map-valued configuration property, or {@code defaultValue} if {@code name} has not + * been configured or is not a mapping + */ + default DeclarativeConfigProperties getStructured( + String name, DeclarativeConfigProperties defaultValue) { + DeclarativeConfigProperties value = getStructured(name); + return value == null ? defaultValue : value; + } + + /** + * Returns a {@link DeclarativeConfigProperties} configuration property, or {@link #empty()} if a + * property with {@code name} has not been configured. + * + *

This is syntactic sugar for the common operation of calling {@code + * config.getStructured(name, empty())}. If you need to distinguish between a property being set + * but empty vs. not set, use {@link #getStructured(String)}. + * + * @return a map-valued configuration property, or an empty {@link DeclarativeConfigProperties} + * instance if {@code name} has not been configured or is not a mapping + */ + default DeclarativeConfigProperties get(String name) { + return getStructured(name, empty()); + } + + /** + * Returns a list of {@link DeclarativeConfigProperties} configuration property. + * + * @return a list of map-valued configuration property, or {@code null} if {@code name} has not + * been configured or is not a sequence of mappings + */ + @Nullable + List getStructuredList(String name); + + /** + * Returns a list of {@link DeclarativeConfigProperties} configuration property. + * + * @return a list of map-valued configuration property, or {@code defaultValue} if {@code name} + * has not been configured or is not a sequence of mappings + */ + default List getStructuredList( + String name, List defaultValue) { + List value = getStructuredList(name); + return value == null ? defaultValue : value; + } + + /** + * Returns a set of all configuration property keys. + * + * @return the configuration property keys + */ + Set getPropertyKeys(); + + /** Return a {@link ComponentLoader} that should be used to load SPIs. */ + ComponentLoader getComponentLoader(); +} diff --git a/api/all/src/main/java/io/opentelemetry/api/config/DeclarativeConfigPropertyUtil.java b/api/all/src/main/java/io/opentelemetry/api/config/DeclarativeConfigPropertyUtil.java new file mode 100644 index 00000000000..f736e65ac13 --- /dev/null +++ b/api/all/src/main/java/io/opentelemetry/api/config/DeclarativeConfigPropertyUtil.java @@ -0,0 +1,133 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.api.config; + +import static java.util.stream.Collectors.toList; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.function.BiFunction; +import javax.annotation.Nullable; + +final class DeclarativeConfigPropertyUtil { + + private DeclarativeConfigPropertyUtil() {} + + private static final List> + valueResolvers = + Arrays.asList( + DeclarativeConfigPropertyUtil::getString, + DeclarativeConfigPropertyUtil::getBoolean, + DeclarativeConfigPropertyUtil::getLong, + DeclarativeConfigPropertyUtil::getDouble, + DeclarativeConfigPropertyUtil::getStringList, + DeclarativeConfigPropertyUtil::getBooleanList, + DeclarativeConfigPropertyUtil::getLongList, + DeclarativeConfigPropertyUtil::getDoubleList, + DeclarativeConfigPropertyUtil::getStructuredList, + DeclarativeConfigPropertyUtil::getStructured); + + static Map toMap(DeclarativeConfigProperties declarativeConfigProperties) { + Set propertyKeys = declarativeConfigProperties.getPropertyKeys(); + Map result = new HashMap<>(propertyKeys.size()); + for (String key : declarativeConfigProperties.getPropertyKeys()) { + result.put(key, resolveValue(key, declarativeConfigProperties)); + } + return result; + } + + @Nullable + private static Object resolveValue( + String key, DeclarativeConfigProperties declarativeConfigProperties) { + for (int i = 0; i < valueResolvers.size(); i++) { + try { + Object value = valueResolvers.get(i).apply(key, declarativeConfigProperties); + if (value != null) { + return value; + } + } catch (DeclarativeConfigException e) { + // Ignore and continue + } + } + return null; + } + + @Nullable + private static Object getString( + String key, DeclarativeConfigProperties declarativeConfigProperties) { + return declarativeConfigProperties.isString(key) + ? declarativeConfigProperties.getString(key) + : null; + } + + @Nullable + private static Object getBoolean( + String key, DeclarativeConfigProperties declarativeConfigProperties) { + return declarativeConfigProperties.isBoolean(key) + ? declarativeConfigProperties.getBoolean(key) + : null; + } + + @Nullable + private static Object getLong( + String key, DeclarativeConfigProperties declarativeConfigProperties) { + return declarativeConfigProperties.isLong(key) + ? declarativeConfigProperties.getLong(key) + : null; + } + + @Nullable + private static Object getDouble( + String key, DeclarativeConfigProperties declarativeConfigProperties) { + return declarativeConfigProperties.isDouble(key) + ? declarativeConfigProperties.getDouble(key) + : null; + } + + @Nullable + private static Object getStringList( + String key, DeclarativeConfigProperties declarativeConfigProperties) { + return declarativeConfigProperties.getScalarList(key, String.class); + } + + @Nullable + private static Object getBooleanList( + String key, DeclarativeConfigProperties declarativeConfigProperties) { + return declarativeConfigProperties.getScalarList(key, Boolean.class); + } + + @Nullable + private static Object getLongList( + String key, DeclarativeConfigProperties declarativeConfigProperties) { + return declarativeConfigProperties.getScalarList(key, Long.class); + } + + @Nullable + private static Object getDoubleList( + String key, DeclarativeConfigProperties declarativeConfigProperties) { + return declarativeConfigProperties.getScalarList(key, Double.class); + } + + @Nullable + private static Object getStructuredList( + String key, DeclarativeConfigProperties declarativeConfigProperties) { + return Optional.ofNullable(declarativeConfigProperties.getStructuredList(key)) + .map(list -> list.stream().map(DeclarativeConfigPropertyUtil::toMap).collect(toList())) + .orElse(null); + } + + @Nullable + private static Object getStructured( + String key, DeclarativeConfigProperties declarativeConfigProperties) { + return Optional.ofNullable(declarativeConfigProperties.getStructured(key)) + .map(DeclarativeConfigPropertyUtil::toMap) + .orElse(null); + } +} diff --git a/api/all/src/main/java/io/opentelemetry/api/config/EmptyDeclarativeConfigProperties.java b/api/all/src/main/java/io/opentelemetry/api/config/EmptyDeclarativeConfigProperties.java new file mode 100644 index 00000000000..4f4945c3c11 --- /dev/null +++ b/api/all/src/main/java/io/opentelemetry/api/config/EmptyDeclarativeConfigProperties.java @@ -0,0 +1,110 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.api.config; + +import io.opentelemetry.common.ComponentLoader; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import javax.annotation.Nullable; + +/** Empty instance of {@link DeclarativeConfigProperties}. */ +final class EmptyDeclarativeConfigProperties implements DeclarativeConfigProperties { + + private static final EmptyDeclarativeConfigProperties INSTANCE = + new EmptyDeclarativeConfigProperties(); + private static final ComponentLoader COMPONENT_LOADER = + ComponentLoader.forClassLoader(EmptyDeclarativeConfigProperties.class.getClassLoader()); + + private EmptyDeclarativeConfigProperties() {} + + static EmptyDeclarativeConfigProperties getInstance() { + return INSTANCE; + } + + @Nullable + @Override + public String getString(String name) { + return null; + } + + @Nullable + @Override + public Boolean getBoolean(String name) { + return null; + } + + @Nullable + @Override + public Integer getInt(String name) { + return null; + } + + @Nullable + @Override + public Long getLong(String name) { + return null; + } + + @Nullable + @Override + public Double getDouble(String name) { + return null; + } + + @Nullable + @Override + public List getScalarList(String name, Class scalarType) { + return null; + } + + @Override + public boolean isString(String name) { + return false; + } + + @Override + public boolean isBoolean(String name) { + return false; + } + + @Override + public boolean isInt(String name) { + return false; + } + + @Override + public boolean isLong(String name) { + return false; + } + + @Override + public boolean isDouble(String name) { + return false; + } + + @Nullable + @Override + public DeclarativeConfigProperties getStructured(String name) { + return null; + } + + @Nullable + @Override + public List getStructuredList(String name) { + return null; + } + + @Override + public Set getPropertyKeys() { + return Collections.emptySet(); + } + + @Override + public ComponentLoader getComponentLoader() { + return COMPONENT_LOADER; + } +} diff --git a/api/all/src/main/java/io/opentelemetry/api/config/package-info.java b/api/all/src/main/java/io/opentelemetry/api/config/package-info.java new file mode 100644 index 00000000000..f80a20ca361 --- /dev/null +++ b/api/all/src/main/java/io/opentelemetry/api/config/package-info.java @@ -0,0 +1,10 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +/** API for declarative configuration. */ +@ParametersAreNonnullByDefault +package io.opentelemetry.api.config; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/api/all/src/test/java/io/opentelemetry/api/config/DeclarativeConfigPropertiesTest.java b/api/all/src/test/java/io/opentelemetry/api/config/DeclarativeConfigPropertiesTest.java new file mode 100644 index 00000000000..17c9a213e93 --- /dev/null +++ b/api/all/src/test/java/io/opentelemetry/api/config/DeclarativeConfigPropertiesTest.java @@ -0,0 +1,67 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.api.config; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Collections; +import org.junit.jupiter.api.Test; + +class DeclarativeConfigPropertiesTest { + + @Test + void empty() { + DeclarativeConfigProperties empty = DeclarativeConfigProperties.empty(); + assertThat(empty).isNotNull(); + assertThat(empty.getString("str")).isNull(); + assertThat(empty.getBoolean("bool")).isNull(); + assertThat(empty.getInt("int")).isNull(); + assertThat(empty.getLong("long")).isNull(); + assertThat(empty.getDouble("double")).isNull(); + assertThat(empty.getScalarList("list", String.class)).isNull(); + assertThat(empty.getStructured("struct")).isNull(); + assertThat(empty.getStructuredList("structList")).isNull(); + assertThat(empty.getPropertyKeys()).isEmpty(); + assertThat(empty.getComponentLoader()).isNotNull(); + + // Default methods with fallback values + assertThat(empty.getString("str", "def")).isEqualTo("def"); + assertThat(empty.getBoolean("bool", true)).isTrue(); + assertThat(empty.getInt("int", 42)).isEqualTo(42); + assertThat(empty.getLong("long", 100L)).isEqualTo(100L); + assertThat(empty.getDouble("double", 3.14)).isEqualTo(3.14); + assertThat(empty.getScalarList("list", String.class, Collections.singletonList("d"))) + .containsExactly("d"); + assertThat(empty.getStructured("struct", empty)).isSameAs(empty); + assertThat(empty.get("struct")).isNotNull(); + assertThat(empty.getStructuredList("structList", Collections.singletonList(empty))) + .containsExactly(empty); + + // Default type check methods + assertThat(empty.isString("str")).isFalse(); + assertThat(empty.isBoolean("bool")).isFalse(); + assertThat(empty.isInt("int")).isFalse(); + assertThat(empty.isLong("long")).isFalse(); + assertThat(empty.isDouble("double")).isFalse(); + } + + @Test + void toMap() { + DeclarativeConfigProperties empty = DeclarativeConfigProperties.empty(); + assertThat(DeclarativeConfigProperties.toMap(empty)).isNotNull().isEmpty(); + } + + @Test + void declarativeConfigException() { + DeclarativeConfigException ex1 = new DeclarativeConfigException("test error"); + assertThat(ex1.getMessage()).isEqualTo("test error"); + + RuntimeException cause = new RuntimeException("cause"); + DeclarativeConfigException ex2 = new DeclarativeConfigException("error with cause", cause); + assertThat(ex2.getMessage()).isEqualTo("error with cause"); + assertThat(ex2.getCause()).isSameAs(cause); + } +} diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetry.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetry.java index 74883fa2302..35730917f23 100644 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetry.java +++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetry.java @@ -6,8 +6,8 @@ package io.opentelemetry.api.incubator; import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.incubator.config.ConfigProvider; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; /** Extension to {@link OpenTelemetry} with experimental APIs. */ public interface ExtendedOpenTelemetry extends OpenTelemetry { diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/ConfigProvider.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/ConfigProvider.java index 8a5f9800869..a51b2eaea3b 100644 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/ConfigProvider.java +++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/ConfigProvider.java @@ -5,6 +5,7 @@ package io.opentelemetry.api.incubator.config; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import javax.annotation.concurrent.ThreadSafe; /** diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigException.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigException.java index 3ce49c6454d..124020b574c 100644 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigException.java +++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigException.java @@ -5,7 +5,13 @@ package io.opentelemetry.api.incubator.config; -/** An exception that is thrown when errors occur with declarative configuration. */ +/** + * An exception that is thrown when errors occur with declarative configuration. + * + * @deprecated Use {@link io.opentelemetry.api.config.DeclarativeConfigException} instead. Scheduled + * for removal after 1.68.0. + */ +@Deprecated public final class DeclarativeConfigException extends RuntimeException { private static final long serialVersionUID = 3036584181551130522L; diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigProperties.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigProperties.java index 09c69a0c490..3b64be6411f 100644 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigProperties.java +++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigProperties.java @@ -22,7 +22,11 @@ * *

This class is internal and is hence not for public use. Its APIs are unstable and can change * at any time. + * + * @deprecated Use {@link io.opentelemetry.api.config.DeclarativeConfigProperties} instead. + * Scheduled for removal after 1.68.0. */ +@Deprecated public interface DeclarativeConfigProperties { /** diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtil.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtil.java index 2fbcc17cb99..f546c72dbf2 100644 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtil.java +++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtil.java @@ -16,6 +16,7 @@ import java.util.function.BiFunction; import javax.annotation.Nullable; +@SuppressWarnings("deprecation") final class DeclarativeConfigPropertyUtil { private DeclarativeConfigPropertyUtil() {} diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/EmptyDeclarativeConfigProperties.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/EmptyDeclarativeConfigProperties.java index 012800a131b..4141f6c8e52 100644 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/EmptyDeclarativeConfigProperties.java +++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/EmptyDeclarativeConfigProperties.java @@ -12,6 +12,7 @@ import javax.annotation.Nullable; /** Empty instance of {@link DeclarativeConfigProperties}. */ +@SuppressWarnings("deprecation") final class EmptyDeclarativeConfigProperties implements DeclarativeConfigProperties { private static final EmptyDeclarativeConfigProperties INSTANCE = diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtil.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtil.java index 3003448d5c5..0cb2e31fc44 100644 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtil.java +++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtil.java @@ -6,6 +6,8 @@ package io.opentelemetry.api.incubator.config; import com.fasterxml.jackson.databind.ObjectMapper; +import io.opentelemetry.api.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import java.util.List; import java.util.Map; import java.util.function.Function; diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtilTest.java b/api/incubator/src/test/java/io/opentelemetry/api/config/DeclarativeConfigPropertyUtilTest.java similarity index 97% rename from api/incubator/src/test/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtilTest.java rename to api/incubator/src/test/java/io/opentelemetry/api/config/DeclarativeConfigPropertyUtilTest.java index ab69ba0781c..a4b3e9632cb 100644 --- a/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtilTest.java +++ b/api/incubator/src/test/java/io/opentelemetry/api/config/DeclarativeConfigPropertyUtilTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.api.incubator.config; +package io.opentelemetry.api.config; import static org.assertj.core.api.Assertions.assertThat; diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtilTest.java b/api/incubator/src/test/java/io/opentelemetry/api/config/InstrumentationConfigUtilTest.java similarity index 97% rename from api/incubator/src/test/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtilTest.java rename to api/incubator/src/test/java/io/opentelemetry/api/config/InstrumentationConfigUtilTest.java index 1c9b8340a4b..63fbb8dda80 100644 --- a/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtilTest.java +++ b/api/incubator/src/test/java/io/opentelemetry/api/config/InstrumentationConfigUtilTest.java @@ -3,11 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.api.incubator.config; +package io.opentelemetry.api.config; import static org.assertj.core.api.Assertions.assertThat; import com.google.common.collect.ImmutableMap; +import io.opentelemetry.api.incubator.config.ConfigProvider; +import io.opentelemetry.api.incubator.config.InstrumentationConfigUtil; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.DeclarativeConfiguration; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.YamlDeclarativeConfigProperties; import io.opentelemetry.sdk.internal.SdkConfigProvider; diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java b/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java index 5907cc41166..94bc73dabc1 100644 --- a/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java +++ b/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java @@ -11,8 +11,8 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.incubator.config.ConfigProvider; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.api.incubator.logs.ExtendedDefaultLoggerProvider; import io.opentelemetry.api.incubator.logs.ExtendedLogger; import io.opentelemetry.api.incubator.metrics.ExtendedDefaultMeterProvider; diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertiesTest.java b/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertiesTest.java new file mode 100644 index 00000000000..bb8abef5873 --- /dev/null +++ b/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertiesTest.java @@ -0,0 +1,146 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.api.incubator.config; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Map; +import org.junit.jupiter.api.Test; + +@SuppressWarnings("deprecation") +class DeclarativeConfigPropertiesTest { + + @Test + void empty() { + DeclarativeConfigProperties empty = DeclarativeConfigProperties.empty(); + assertThat(empty).isNotNull(); + assertThat(empty.getString("str")).isNull(); + assertThat(empty.getBoolean("bool")).isNull(); + assertThat(empty.getInt("int")).isNull(); + assertThat(empty.getLong("long")).isNull(); + assertThat(empty.getDouble("double")).isNull(); + assertThat(empty.getScalarList("list", String.class)).isNull(); + assertThat(empty.getStructured("struct")).isNull(); + assertThat(empty.getStructuredList("structList")).isNull(); + assertThat(empty.getPropertyKeys()).isEmpty(); + assertThat(empty.getComponentLoader()).isNotNull(); + + // Default methods with default values + assertThat(empty.getString("str", "def")).isEqualTo("def"); + assertThat(empty.getBoolean("bool", true)).isTrue(); + assertThat(empty.getInt("int", 42)).isEqualTo(42); + assertThat(empty.getLong("long", 100L)).isEqualTo(100L); + assertThat(empty.getDouble("double", 3.14)).isEqualTo(3.14); + assertThat(empty.getScalarList("list", String.class, Collections.singletonList("d"))) + .containsExactly("d"); + assertThat(empty.getStructured("struct", empty)).isSameAs(empty); + assertThat(empty.get("struct")).isNotNull(); + assertThat(empty.getStructuredList("structList", Collections.singletonList(empty))) + .containsExactly(empty); + + // Default type check methods + assertThat(empty.isString("str")).isFalse(); + assertThat(empty.isBoolean("bool")).isFalse(); + assertThat(empty.isInt("int")).isFalse(); + assertThat(empty.isLong("long")).isFalse(); + assertThat(empty.isDouble("double")).isFalse(); + } + + @Test + void toMap() { + DeclarativeConfigProperties empty = DeclarativeConfigProperties.empty(); + Map map = DeclarativeConfigProperties.toMap(empty); + assertThat(map).isNotNull().isEmpty(); + } + + @Test + void toMapWithValues() { + DeclarativeConfigProperties props = mock(DeclarativeConfigProperties.class); + DeclarativeConfigProperties subProps = mock(DeclarativeConfigProperties.class); + DeclarativeConfigProperties listItemProps = mock(DeclarativeConfigProperties.class); + + when(props.getScalarList(anyString(), any())).thenReturn(null); + when(props.getStructuredList(anyString())).thenReturn(null); + when(props.getStructured(anyString())).thenReturn(null); + + when(props.getPropertyKeys()) + .thenReturn( + new HashSet<>( + Arrays.asList( + "str", + "bool", + "long", + "double", + "strList", + "boolList", + "longList", + "doubleList", + "struct", + "structList", + "unknown"))); + + when(props.isString("str")).thenReturn(true); + when(props.getString("str")).thenReturn("hello"); + + when(props.isBoolean("bool")).thenReturn(true); + when(props.getBoolean("bool")).thenReturn(true); + + when(props.isLong("long")).thenReturn(true); + when(props.getLong("long")).thenReturn(123L); + + when(props.isDouble("double")).thenReturn(true); + when(props.getDouble("double")).thenReturn(45.67); + + when(props.getScalarList("strList", String.class)).thenReturn(Arrays.asList("a", "b")); + when(props.getScalarList("boolList", Boolean.class)).thenReturn(Arrays.asList(true, false)); + when(props.getScalarList("longList", Long.class)).thenReturn(Arrays.asList(1L, 2L)); + when(props.getScalarList("doubleList", Double.class)).thenReturn(Arrays.asList(1.1, 2.2)); + + when(subProps.getPropertyKeys()).thenReturn(Collections.singleton("subKey")); + when(subProps.isString("subKey")).thenReturn(true); + when(subProps.getString("subKey")).thenReturn("subVal"); + when(props.getStructured("struct")).thenReturn(subProps); + + when(listItemProps.getPropertyKeys()).thenReturn(Collections.singleton("itemKey")); + when(listItemProps.isLong("itemKey")).thenReturn(true); + when(listItemProps.getLong("itemKey")).thenReturn(999L); + when(props.getStructuredList("structList")) + .thenReturn(Collections.singletonList(listItemProps)); + + Map map = DeclarativeConfigProperties.toMap(props); + assertThat(map).containsEntry("str", "hello"); + assertThat(map).containsEntry("bool", true); + assertThat(map).containsEntry("long", 123L); + assertThat(map).containsEntry("double", 45.67); + assertThat(map).containsEntry("strList", Arrays.asList("a", "b")); + assertThat(map).containsEntry("boolList", Arrays.asList(true, false)); + assertThat(map).containsEntry("longList", Arrays.asList(1L, 2L)); + assertThat(map).containsEntry("doubleList", Arrays.asList(1.1, 2.2)); + assertThat(map).containsEntry("struct", Collections.singletonMap("subKey", "subVal")); + assertThat(map) + .containsEntry( + "structList", Collections.singletonList(Collections.singletonMap("itemKey", 999L))); + assertThat(map).containsEntry("unknown", null); + } + + @Test + void declarativeConfigException() { + DeclarativeConfigException ex1 = new DeclarativeConfigException("error message"); + assertThat(ex1.getMessage()).isEqualTo("error message"); + + RuntimeException cause = new RuntimeException("cause"); + DeclarativeConfigException ex2 = new DeclarativeConfigException("error with cause", cause); + assertThat(ex2.getMessage()).isEqualTo("error with cause"); + assertThat(ex2.getCause()).isSameAs(cause); + } +} diff --git a/api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java b/api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java index 088bb42bf20..67892d0ca58 100644 --- a/api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java +++ b/api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java @@ -11,8 +11,8 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.ImmutableMap; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.incubator.config.ConfigProvider; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.api.incubator.config.InstrumentationConfigUtil; import io.opentelemetry.internal.testing.slf4j.SuppressLogger; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.DeclarativeConfiguration; diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-api.txt b/docs/apidiffs/current_vs_latest/opentelemetry-api.txt index 0d0f8ba2b1b..1c429c4f7c7 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-api.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-api.txt @@ -1,4 +1,49 @@ Comparing source compatibility of opentelemetry-api-1.68.0-SNAPSHOT.jar against opentelemetry-api-1.67.0.jar ++++ NEW CLASS: PUBLIC(+) io.opentelemetry.api.config.DeclarativeConfigException (compatible) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.io.Serializable + +++ NEW SUPERCLASS: java.lang.RuntimeException + +++ NEW CONSTRUCTOR: PUBLIC(+) DeclarativeConfigException(java.lang.String) + +++ NEW CONSTRUCTOR: PUBLIC(+) DeclarativeConfigException(java.lang.String, java.lang.Throwable) ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.opentelemetry.api.config.DeclarativeConfigProperties (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.api.config.DeclarativeConfigProperties empty() + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.api.config.DeclarativeConfigProperties get(java.lang.String) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.Boolean getBoolean(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) boolean getBoolean(java.lang.String, boolean) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) io.opentelemetry.common.ComponentLoader getComponentLoader() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.Double getDouble(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) double getDouble(java.lang.String, double) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.Integer getInt(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) int getInt(java.lang.String, int) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.Long getLong(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) long getLong(java.lang.String, long) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.util.Set getPropertyKeys() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.util.List getScalarList(java.lang.String, java.lang.Class) + +++ NEW ANNOTATION: javax.annotation.Nullable + GENERIC TEMPLATES: +++ T:java.lang.Object + +++ NEW METHOD: PUBLIC(+) java.util.List getScalarList(java.lang.String, java.lang.Class, java.util.List) + GENERIC TEMPLATES: +++ T:java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.String getString(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getString(java.lang.String, java.lang.String) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) io.opentelemetry.api.config.DeclarativeConfigProperties getStructured(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.api.config.DeclarativeConfigProperties getStructured(java.lang.String, io.opentelemetry.api.config.DeclarativeConfigProperties) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.util.List getStructuredList(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.List getStructuredList(java.lang.String, java.util.List) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) boolean isBoolean(java.lang.String) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) boolean isDouble(java.lang.String) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) boolean isInt(java.lang.String) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) boolean isLong(java.lang.String) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) boolean isString(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) java.util.Map toMap(io.opentelemetry.api.config.DeclarativeConfigProperties) +++ NEW CLASS: PUBLIC(+) FINAL(+) io.opentelemetry.api.impl.Base16EncodingUtils (not serializable) +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. +++ NEW SUPERCLASS: java.lang.Object diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-autoconfigure-spi.txt b/docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-autoconfigure-spi.txt index fa166d14326..ea679a8b06a 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-autoconfigure-spi.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-autoconfigure-spi.txt @@ -1,2 +1,7 @@ Comparing source compatibility of opentelemetry-sdk-extension-autoconfigure-spi-1.68.0-SNAPSHOT.jar against opentelemetry-sdk-extension-autoconfigure-spi-1.67.0.jar -No changes. \ No newline at end of file ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.Object create(io.opentelemetry.api.config.DeclarativeConfigProperties) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.String getName() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.Class getType() diff --git a/exporters/common/src/main/java/io/opentelemetry/exporter/internal/IncubatingExporterBuilderUtil.java b/exporters/common/src/main/java/io/opentelemetry/exporter/internal/IncubatingExporterBuilderUtil.java index 86d2e01d1c1..8d8ec8d83a6 100644 --- a/exporters/common/src/main/java/io/opentelemetry/exporter/internal/IncubatingExporterBuilderUtil.java +++ b/exporters/common/src/main/java/io/opentelemetry/exporter/internal/IncubatingExporterBuilderUtil.java @@ -7,7 +7,7 @@ import static io.opentelemetry.sdk.metrics.Aggregation.explicitBucketHistogram; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.common.export.MemoryMode; import io.opentelemetry.sdk.metrics.Aggregation; diff --git a/exporters/logging-otlp/build.gradle.kts b/exporters/logging-otlp/build.gradle.kts index 55219c9daee..185268ea71c 100644 --- a/exporters/logging-otlp/build.gradle.kts +++ b/exporters/logging-otlp/build.gradle.kts @@ -12,7 +12,7 @@ otelJava.osgiServiceLoaderProvides.set(listOf( "io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSpanExporterProvider", "io.opentelemetry.sdk.autoconfigure.spi.metrics.ConfigurableMetricExporterProvider", "io.opentelemetry.sdk.autoconfigure.spi.logs.ConfigurableLogRecordExporterProvider", - "io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider", + "io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider", )) dependencies { diff --git a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/OutputStreamConfigUtil.java b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/OutputStreamConfigUtil.java index ed0b8a3d707..327d79ec7a8 100644 --- a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/OutputStreamConfigUtil.java +++ b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/OutputStreamConfigUtil.java @@ -5,7 +5,7 @@ package io.opentelemetry.exporter.logging.otlp.internal; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import java.io.BufferedOutputStream; import java.io.IOException; diff --git a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/logs/OtlpStdoutLogRecordExporterComponentProvider.java b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/logs/OtlpStdoutLogRecordExporterComponentProvider.java index c2a943f2f17..6786db9cef7 100644 --- a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/logs/OtlpStdoutLogRecordExporterComponentProvider.java +++ b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/logs/OtlpStdoutLogRecordExporterComponentProvider.java @@ -5,10 +5,10 @@ package io.opentelemetry.exporter.logging.otlp.internal.logs; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.exporter.internal.IncubatingExporterBuilderUtil; import io.opentelemetry.exporter.logging.otlp.internal.OutputStreamConfigUtil; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.logs.export.LogRecordExporter; /** diff --git a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/metrics/OtlpStdoutMetricExporterComponentProvider.java b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/metrics/OtlpStdoutMetricExporterComponentProvider.java index 2d62bf105f1..2f2fea5c431 100644 --- a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/metrics/OtlpStdoutMetricExporterComponentProvider.java +++ b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/metrics/OtlpStdoutMetricExporterComponentProvider.java @@ -5,10 +5,10 @@ package io.opentelemetry.exporter.logging.otlp.internal.metrics; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.exporter.internal.IncubatingExporterBuilderUtil; import io.opentelemetry.exporter.logging.otlp.internal.OutputStreamConfigUtil; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.metrics.export.MetricExporter; /** diff --git a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/traces/OtlpStdoutSpanExporterComponentProvider.java b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/traces/OtlpStdoutSpanExporterComponentProvider.java index 9d51f2b9fac..aab536cd67a 100644 --- a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/traces/OtlpStdoutSpanExporterComponentProvider.java +++ b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/traces/OtlpStdoutSpanExporterComponentProvider.java @@ -5,10 +5,10 @@ package io.opentelemetry.exporter.logging.otlp.internal.traces; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.exporter.internal.IncubatingExporterBuilderUtil; import io.opentelemetry.exporter.logging.otlp.internal.OutputStreamConfigUtil; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.trace.export.SpanExporter; /** diff --git a/exporters/logging-otlp/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/exporters/logging-otlp/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider similarity index 99% rename from exporters/logging-otlp/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider rename to exporters/logging-otlp/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider index b90ec18cc20..6fe011882dd 100644 --- a/exporters/logging-otlp/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider +++ b/exporters/logging-otlp/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider @@ -1,3 +1,4 @@ io.opentelemetry.exporter.logging.otlp.internal.logs.OtlpStdoutLogRecordExporterComponentProvider io.opentelemetry.exporter.logging.otlp.internal.metrics.OtlpStdoutMetricExporterComponentProvider io.opentelemetry.exporter.logging.otlp.internal.traces.OtlpStdoutSpanExporterComponentProvider + diff --git a/exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/AbstractOtlpStdoutExporterTest.java b/exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/AbstractOtlpStdoutExporterTest.java index b97558948d2..16668eded6c 100644 --- a/exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/AbstractOtlpStdoutExporterTest.java +++ b/exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/AbstractOtlpStdoutExporterTest.java @@ -14,10 +14,10 @@ import com.google.common.collect.ImmutableList; import io.github.netmikey.logunit.api.LogCapturer; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import io.opentelemetry.sdk.common.export.MemoryMode; import java.io.BufferedOutputStream; diff --git a/exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/OtlpStdoutMetricExporterTest.java b/exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/OtlpStdoutMetricExporterTest.java index 28b0b2e3587..455a4e67cf1 100644 --- a/exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/OtlpStdoutMetricExporterTest.java +++ b/exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/OtlpStdoutMetricExporterTest.java @@ -11,7 +11,7 @@ import static org.mockito.Mockito.when; import com.google.common.collect.ImmutableMap; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.exporter.logging.otlp.internal.metrics.OtlpStdoutMetricExporter; import io.opentelemetry.exporter.logging.otlp.internal.metrics.OtlpStdoutMetricExporterBuilder; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; diff --git a/exporters/logging/build.gradle.kts b/exporters/logging/build.gradle.kts index 206c4e25978..3fb14ff8182 100644 --- a/exporters/logging/build.gradle.kts +++ b/exporters/logging/build.gradle.kts @@ -13,7 +13,7 @@ otelJava.osgiServiceLoaderProvides.set(listOf( "io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSpanExporterProvider", "io.opentelemetry.sdk.autoconfigure.spi.metrics.ConfigurableMetricExporterProvider", "io.opentelemetry.sdk.autoconfigure.spi.logs.ConfigurableLogRecordExporterProvider", - "io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider", + "io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider", )) dependencies { diff --git a/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleLogRecordExporterComponentProvider.java b/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleLogRecordExporterComponentProvider.java index 1ff39c6de30..c8acb72be6c 100644 --- a/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleLogRecordExporterComponentProvider.java +++ b/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleLogRecordExporterComponentProvider.java @@ -5,9 +5,9 @@ package io.opentelemetry.exporter.logging.internal; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.exporter.logging.SystemOutLogRecordExporter; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.logs.export.LogRecordExporter; /** diff --git a/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleMetricExporterComponentProvider.java b/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleMetricExporterComponentProvider.java index 35599f84c14..d38eeb731d7 100644 --- a/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleMetricExporterComponentProvider.java +++ b/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleMetricExporterComponentProvider.java @@ -5,9 +5,9 @@ package io.opentelemetry.exporter.logging.internal; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.exporter.logging.LoggingMetricExporter; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.metrics.export.MetricExporter; /** diff --git a/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleSpanExporterComponentProvider.java b/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleSpanExporterComponentProvider.java index fa5de9ee948..e259c53730f 100644 --- a/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleSpanExporterComponentProvider.java +++ b/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleSpanExporterComponentProvider.java @@ -5,9 +5,9 @@ package io.opentelemetry.exporter.logging.internal; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.exporter.logging.LoggingSpanExporter; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.trace.export.SpanExporter; /** diff --git a/exporters/logging/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/exporters/logging/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider similarity index 99% rename from exporters/logging/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider rename to exporters/logging/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider index ed0c3a77f5e..a8c21edc040 100644 --- a/exporters/logging/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider +++ b/exporters/logging/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider @@ -1,3 +1,4 @@ io.opentelemetry.exporter.logging.internal.ConsoleMetricExporterComponentProvider io.opentelemetry.exporter.logging.internal.ConsoleSpanExporterComponentProvider io.opentelemetry.exporter.logging.internal.ConsoleLogRecordExporterComponentProvider + diff --git a/exporters/otlp/all/build.gradle.kts b/exporters/otlp/all/build.gradle.kts index 51ec4b90e66..d16be56b911 100644 --- a/exporters/otlp/all/build.gradle.kts +++ b/exporters/otlp/all/build.gradle.kts @@ -17,7 +17,7 @@ otelJava.osgiServiceLoaderProvides.set(listOf( "io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSpanExporterProvider", "io.opentelemetry.sdk.autoconfigure.spi.metrics.ConfigurableMetricExporterProvider", "io.opentelemetry.sdk.autoconfigure.spi.logs.ConfigurableLogRecordExporterProvider", - "io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider", + "io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider", )) base.archivesName.set("opentelemetry-exporter-otlp") diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpDeclarativeConfigUtil.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpDeclarativeConfigUtil.java index b91bfebbbc6..b45487a7420 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpDeclarativeConfigUtil.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpDeclarativeConfigUtil.java @@ -10,9 +10,9 @@ import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.readFileBytes; import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.validateEndpoint; +import io.opentelemetry.api.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.incubator.config.ConfigProvider; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.exporter.internal.IncubatingExporterBuilderUtil; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcLogRecordExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcLogRecordExporterComponentProvider.java index 3ef5a66403e..c96456ae282 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcLogRecordExporterComponentProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcLogRecordExporterComponentProvider.java @@ -7,11 +7,11 @@ import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_LOGS; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.metrics.MeterProvider; import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporter; import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporterBuilder; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.logs.export.LogRecordExporter; /** diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcMetricExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcMetricExporterComponentProvider.java index 99a5cda2856..e2c22d93be8 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcMetricExporterComponentProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcMetricExporterComponentProvider.java @@ -7,12 +7,12 @@ import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_METRICS; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.metrics.MeterProvider; import io.opentelemetry.exporter.internal.IncubatingExporterBuilderUtil; import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter; import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.metrics.export.MetricExporter; /** diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcSpanExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcSpanExporterComponentProvider.java index cec08da0eae..f25e86f3b82 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcSpanExporterComponentProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcSpanExporterComponentProvider.java @@ -7,11 +7,11 @@ import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_TRACES; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.metrics.MeterProvider; import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter; import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.trace.export.SpanExporter; /** diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpLogRecordExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpLogRecordExporterComponentProvider.java index d65d9164cb2..67d686b87f8 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpLogRecordExporterComponentProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpLogRecordExporterComponentProvider.java @@ -7,11 +7,11 @@ import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_LOGS; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.metrics.MeterProvider; import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporter; import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.logs.export.LogRecordExporter; /** diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpMetricExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpMetricExporterComponentProvider.java index 77fd486724c..768d871c7c1 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpMetricExporterComponentProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpMetricExporterComponentProvider.java @@ -7,12 +7,12 @@ import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_METRICS; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.metrics.MeterProvider; import io.opentelemetry.exporter.internal.IncubatingExporterBuilderUtil; import io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporter; import io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.metrics.export.MetricExporter; /** diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpSpanExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpSpanExporterComponentProvider.java index b4b3a85c4f7..76c9f6edd5d 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpSpanExporterComponentProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpSpanExporterComponentProvider.java @@ -7,11 +7,11 @@ import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_TRACES; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.metrics.MeterProvider; import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter; import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.trace.export.SpanExporter; /** diff --git a/exporters/otlp/all/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/exporters/otlp/all/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider similarity index 99% rename from exporters/otlp/all/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider rename to exporters/otlp/all/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider index 98dcbcd9604..1eb742e89c5 100644 --- a/exporters/otlp/all/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider +++ b/exporters/otlp/all/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider @@ -1,6 +1,7 @@ -io.opentelemetry.exporter.otlp.internal.OtlpHttpMetricExporterComponentProvider -io.opentelemetry.exporter.otlp.internal.OtlpHttpSpanExporterComponentProvider -io.opentelemetry.exporter.otlp.internal.OtlpHttpLogRecordExporterComponentProvider -io.opentelemetry.exporter.otlp.internal.OtlpGrpcMetricExporterComponentProvider io.opentelemetry.exporter.otlp.internal.OtlpGrpcSpanExporterComponentProvider +io.opentelemetry.exporter.otlp.internal.OtlpGrpcMetricExporterComponentProvider io.opentelemetry.exporter.otlp.internal.OtlpGrpcLogRecordExporterComponentProvider +io.opentelemetry.exporter.otlp.internal.OtlpHttpSpanExporterComponentProvider +io.opentelemetry.exporter.otlp.internal.OtlpHttpMetricExporterComponentProvider +io.opentelemetry.exporter.otlp.internal.OtlpHttpLogRecordExporterComponentProvider + diff --git a/exporters/prometheus/build.gradle.kts b/exporters/prometheus/build.gradle.kts index 89c51fd0378..ce3c7aa0d82 100644 --- a/exporters/prometheus/build.gradle.kts +++ b/exporters/prometheus/build.gradle.kts @@ -9,7 +9,7 @@ otelJava.requireSuppressWarningsExplanation.set(false) otelJava.osgiOptionalPackages.set(listOf("io.opentelemetry.api.incubator", "io.opentelemetry.sdk.autoconfigure.spi")) otelJava.osgiServiceLoaderProvides.set(listOf( "io.opentelemetry.sdk.autoconfigure.spi.internal.ConfigurableMetricReaderProvider", - "io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider", + "io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider", )) dependencies { diff --git a/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/internal/PrometheusComponentProvider.java b/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/internal/PrometheusComponentProvider.java index 475f90e246d..8c1b331bcd4 100644 --- a/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/internal/PrometheusComponentProvider.java +++ b/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/internal/PrometheusComponentProvider.java @@ -5,12 +5,12 @@ package io.opentelemetry.exporter.prometheus.internal; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.exporter.prometheus.PrometheusHttpServer; import io.opentelemetry.exporter.prometheus.PrometheusHttpServerBuilder; import io.opentelemetry.exporter.prometheus.TranslationStrategy; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.common.internal.IncludeExcludePredicate; import io.opentelemetry.sdk.metrics.export.MetricReader; import java.util.List; diff --git a/exporters/prometheus/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/exporters/prometheus/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider similarity index 98% rename from exporters/prometheus/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider rename to exporters/prometheus/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider index f3c72966e4b..aa27fda9217 100644 --- a/exporters/prometheus/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider +++ b/exporters/prometheus/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider @@ -1 +1,2 @@ io.opentelemetry.exporter.prometheus.internal.PrometheusComponentProvider + diff --git a/extensions/trace-propagators/build.gradle.kts b/extensions/trace-propagators/build.gradle.kts index fb60b3deaf1..921bd777e5c 100644 --- a/extensions/trace-propagators/build.gradle.kts +++ b/extensions/trace-propagators/build.gradle.kts @@ -12,7 +12,7 @@ otelJava.requireSuppressWarningsExplanation.set(false) otelJava.osgiOptionalPackages.set(listOf("io.opentelemetry.api.incubator", "io.opentelemetry.sdk.autoconfigure.spi")) otelJava.osgiServiceLoaderProvides.set(listOf( "io.opentelemetry.sdk.autoconfigure.spi.ConfigurablePropagatorProvider", - "io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider", + "io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider", )) dependencies { diff --git a/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3ComponentProvider.java b/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3ComponentProvider.java index edb6140e0f9..21c7d1300e2 100644 --- a/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3ComponentProvider.java +++ b/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3ComponentProvider.java @@ -5,10 +5,10 @@ package io.opentelemetry.extension.trace.propagation.internal; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.extension.trace.propagation.B3Propagator; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; /** * Declarative configuration SPI implementation for {@link B3Propagator} which allows enabling diff --git a/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3MultiComponentProvider.java b/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3MultiComponentProvider.java index 5db48aea428..92271dda1a0 100644 --- a/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3MultiComponentProvider.java +++ b/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3MultiComponentProvider.java @@ -5,10 +5,10 @@ package io.opentelemetry.extension.trace.propagation.internal; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.extension.trace.propagation.B3Propagator; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; /** * Declarative configuration SPI implementation for {@link B3Propagator} which allows enabling diff --git a/extensions/trace-propagators/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/extensions/trace-propagators/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider similarity index 99% rename from extensions/trace-propagators/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider rename to extensions/trace-propagators/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider index c63dcd61f48..ecc77430ed3 100644 --- a/extensions/trace-propagators/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider +++ b/extensions/trace-propagators/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider @@ -1,2 +1,3 @@ io.opentelemetry.extension.trace.propagation.internal.B3ComponentProvider io.opentelemetry.extension.trace.propagation.internal.B3MultiComponentProvider + diff --git a/integration-tests/osgi/src/testAutoconfigureDeclarativeConfig/java/io/opentelemetry/integrationtest/osgi/AutoconfigureDeclarativeConfigTest.java b/integration-tests/osgi/src/testAutoconfigureDeclarativeConfig/java/io/opentelemetry/integrationtest/osgi/AutoconfigureDeclarativeConfigTest.java index fc9e83c771b..9ceacc41f69 100644 --- a/integration-tests/osgi/src/testAutoconfigureDeclarativeConfig/java/io/opentelemetry/integrationtest/osgi/AutoconfigureDeclarativeConfigTest.java +++ b/integration-tests/osgi/src/testAutoconfigureDeclarativeConfig/java/io/opentelemetry/integrationtest/osgi/AutoconfigureDeclarativeConfigTest.java @@ -8,7 +8,7 @@ import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.common.AttributeKey; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.context.propagation.ContextPropagators; diff --git a/sdk-extensions/autoconfigure-spi/build.gradle.kts b/sdk-extensions/autoconfigure-spi/build.gradle.kts index 83680b4cf7d..e9a67c37f97 100644 --- a/sdk-extensions/autoconfigure-spi/build.gradle.kts +++ b/sdk-extensions/autoconfigure-spi/build.gradle.kts @@ -11,4 +11,5 @@ otelJava.osgiOptionalPackages.set(listOf("io.opentelemetry.api.incubator")) dependencies { api(project(":sdk:all")) compileOnly(project(":api:incubator")) + testImplementation(project(":api:incubator")) } diff --git a/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/declarativeconfig/ComponentProvider.java b/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/declarativeconfig/ComponentProvider.java new file mode 100644 index 00000000000..b7874803d06 --- /dev/null +++ b/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/declarativeconfig/ComponentProvider.java @@ -0,0 +1,57 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig; + +import io.opentelemetry.api.config.DeclarativeConfigProperties; +import io.opentelemetry.context.propagation.TextMapPropagator; +import io.opentelemetry.sdk.logs.LogRecordProcessor; +import io.opentelemetry.sdk.logs.export.LogRecordExporter; +import io.opentelemetry.sdk.metrics.export.MetricExporter; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.trace.SpanProcessor; +import io.opentelemetry.sdk.trace.export.SpanExporter; +import io.opentelemetry.sdk.trace.samplers.Sampler; + +/** + * Provides configured instances of SDK extension components. {@link ComponentProvider} allows SDK + * extension components which are not part of the core SDK to be referenced in declarative based + * configuration. + * + *

NOTE: when {@link #getType()} is {@link Resource}, the {@link #getName()} is not (currently) + * used, and {@link #create(DeclarativeConfigProperties)} is (currently) called with an empty {@link + * DeclarativeConfigProperties}. + * + *

Supported component types include: {@link SpanExporter}, {@link MetricExporter}, {@link + * LogRecordExporter}, {@link SpanProcessor}, {@link LogRecordProcessor}, {@link TextMapPropagator}, + * {@link Sampler}, {@link Resource}. + */ +public interface ComponentProvider { + + /** + * The type of SDK extension component. For example, if providing instances of a custom span + * exporter, the type would be {@link SpanExporter}. + */ + Class getType(); + + /** + * The name of the exporter, to be referenced in configuration files. For example, if providing + * instances of a custom span exporter for the "acme" protocol, the name might be "acme". + * + *

This name MUST not be the same as any other component provider name which returns components + * of the same {@link #getType() type}. In other words, {@link #getType()} and name form a + * composite key uniquely identifying the provider. + */ + String getName(); + + /** + * Configure an instance of the SDK extension component according to the {@code config}. + * + * @param config the configuration provided where the component is referenced in a configuration + * file. + * @return an instance the SDK extension component + */ + Object create(DeclarativeConfigProperties config); +} diff --git a/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/declarativeconfig/package-info.java b/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/declarativeconfig/package-info.java new file mode 100644 index 00000000000..bb65d1147b9 --- /dev/null +++ b/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/declarativeconfig/package-info.java @@ -0,0 +1,13 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * Java SPI (Service Provider Interface) for providing custom components to declarative + * configuration. + */ +@ParametersAreNonnullByDefault +package io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ComponentProvider.java b/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ComponentProvider.java index 30a544887c6..1bdbe1291b7 100644 --- a/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ComponentProvider.java +++ b/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ComponentProvider.java @@ -30,7 +30,12 @@ *

Supported component types include: {@link SpanExporter}, {@link MetricExporter}, {@link * LogRecordExporter}, {@link SpanProcessor}, {@link LogRecordProcessor}, {@link TextMapPropagator}, * {@link Sampler}, {@link Resource}. + * + * @deprecated Use {@link + * io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider} instead. + * Scheduled for removal after 1.68.0. */ +@Deprecated public interface ComponentProvider { /** @@ -56,7 +61,5 @@ public interface ComponentProvider { * file. * @return an instance the SDK extension component */ - // TODO (jack-berg): consider dynamic configuration use case before stabilizing in case that - // affects any API decisions Object create(DeclarativeConfigProperties config); } diff --git a/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ExtendedDeclarativeConfigProperties.java b/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ExtendedDeclarativeConfigProperties.java index c1c66f5103e..b48e4a0d416 100644 --- a/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ExtendedDeclarativeConfigProperties.java +++ b/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ExtendedDeclarativeConfigProperties.java @@ -5,8 +5,8 @@ package io.opentelemetry.sdk.autoconfigure.spi.internal; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.incubator.config.ConfigProvider; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; /** * Extended version of {@link DeclarativeConfigProperties} with access to {@link ConfigProvider}. diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigUtil.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigUtil.java index a15c0bb171c..32fab92b655 100644 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigUtil.java +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigUtil.java @@ -7,7 +7,7 @@ import static java.util.Objects.requireNonNull; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.DeclarativeConfigResult; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.DeclarativeConfiguration; diff --git a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java index 56653dda289..4190df36cae 100644 --- a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java +++ b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java @@ -10,7 +10,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.exporter.logging.LoggingSpanExporter; import io.opentelemetry.internal.testing.CleanupExtension; import io.opentelemetry.sdk.OpenTelemetrySdk; diff --git a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/TestResourceDetector.java b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/TestResourceDetector.java index a9c0bd22662..b20a098afa3 100644 --- a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/TestResourceDetector.java +++ b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/TestResourceDetector.java @@ -5,10 +5,10 @@ package io.opentelemetry.sdk.autoconfigure; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.autoconfigure.spi.internal.AutoConfigureListener; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import io.opentelemetry.sdk.resources.Resource; public class TestResourceDetector implements ComponentProvider, AutoConfigureListener { diff --git a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider similarity index 98% rename from sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider rename to sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider index aad133d8acf..3d7137e5568 100644 --- a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider +++ b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider @@ -1 +1,2 @@ io.opentelemetry.sdk.autoconfigure.TestResourceDetector + diff --git a/sdk-extensions/declarative-config/README.md b/sdk-extensions/declarative-config/README.md index 99ed7553c00..874f5f7bd6a 100644 --- a/sdk-extensions/declarative-config/README.md +++ b/sdk-extensions/declarative-config/README.md @@ -16,7 +16,7 @@ try (FileInputStream yamlConfigFileInputStream = new FileInputStream("/path/to/c Notes: * Environment variable substitution is supported as [defined in the spec](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/data-model.md#environment-variable-substitution) * Customization is limited to customizing the in-memory config model, or exporters. See `DeclarativeConfigurationCustomizer` SPI for details. -* Custom SDK extension components which reference the [ComponentProvider](https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ComponentProvider.java) SPI can be referenced in declarative configuration. Supported types include: +* Custom SDK extension components which reference the [ComponentProvider](https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/declarativeconfig/ComponentProvider.java) SPI can be referenced in declarative configuration. Supported types include: * `Resource` * `SpanExporter` * `MetricExporter` diff --git a/sdk-extensions/declarative-config/build.gradle.kts b/sdk-extensions/declarative-config/build.gradle.kts index 2390d633d1b..b7bcdb96223 100644 --- a/sdk-extensions/declarative-config/build.gradle.kts +++ b/sdk-extensions/declarative-config/build.gradle.kts @@ -15,7 +15,7 @@ otelJava.moduleName.set("io.opentelemetry.sdk.autoconfigure.declarativeconfig") otelJava.requireSuppressWarningsExplanation.set(false) otelJava.osgiOptionalPackages.set(listOf("io.opentelemetry.sdk.autoconfigure.spi")) otelJava.osgiServiceLoaderProvides.set(listOf( - "io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider", + "io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider", )) // declarative-config discovers customizer providers at runtime via ServiceLoader otelJava.osgiServiceLoaderRequires.set(listOf( diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/AggregationFactory.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/AggregationFactory.java index 907ddbe4dd3..be0c890f996 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/AggregationFactory.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/AggregationFactory.java @@ -5,7 +5,7 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.AggregationModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.Base2ExponentialBucketHistogramAggregationModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.ExplicitBucketHistogramAggregationModel; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/AttributeListFactory.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/AttributeListFactory.java index 8d4313b36d3..1e1a46afae6 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/AttributeListFactory.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/AttributeListFactory.java @@ -10,7 +10,7 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.AttributeNameValueModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.AttributeTypeModel; import java.util.List; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ComposableRuleBasedSamplerFactory.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ComposableRuleBasedSamplerFactory.java index 9b4f9b9a63c..f013f82f372 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ComposableRuleBasedSamplerFactory.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ComposableRuleBasedSamplerFactory.java @@ -9,7 +9,7 @@ import static java.util.stream.Collectors.toSet; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.SpanKind; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ConfigKeyValue.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ConfigKeyValue.java index 1c766d7cfda..c7793805e5d 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ConfigKeyValue.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ConfigKeyValue.java @@ -5,7 +5,7 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; /** A key value pair for a YAML mapping node. */ class ConfigKeyValue { diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigContext.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigContext.java index 5508d87f577..0e60164be3e 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigContext.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigContext.java @@ -5,13 +5,13 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; +import io.opentelemetry.api.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.incubator.config.ConfigProvider; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.api.metrics.MeterProvider; import io.opentelemetry.common.ComponentLoader; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.autoconfigure.spi.internal.AutoConfigureListener; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import io.opentelemetry.sdk.autoconfigure.spi.internal.ExtendedDeclarativeConfigProperties; import io.opentelemetry.sdk.common.InternalTelemetryVersion; import java.io.Closeable; @@ -43,6 +43,12 @@ class DeclarativeConfigContext implements ComponentLoader { @Nullable private volatile MeterProvider meterProvider; @Nullable private ConfigProvider configProvider; @Nullable private List componentProviders = null; + + @Nullable + @SuppressWarnings("deprecation") + private List + legacyComponentProviders = null; + @Nullable private DeclarativeConfigurationBuilder builder; DeclarativeConfigContext(ComponentLoader componentLoader) { @@ -139,7 +145,7 @@ private InternalTelemetryVersion getInternalTelemetryVersion() { * @throws DeclarativeConfigException if no matching providers are found, or if multiple are found * (i.e. conflict), or if {@link ComponentProvider#create(DeclarativeConfigProperties)} throws */ - @SuppressWarnings({"unchecked"}) + @SuppressWarnings({"unchecked", "deprecation"}) T loadComponent(Class type, ConfigKeyValue configKeyValue) { String name = configKeyValue.getKey(); ExtendedDeclarativeConfigProperties config = @@ -147,35 +153,62 @@ T loadComponent(Class type, ConfigKeyValue configKeyValue) { configKeyValue.getValue(), configProvider == null ? ConfigProvider.noop() : configProvider); - if (componentProviders == null) { - componentProviders = ComponentLoader.loadList(this, ComponentProvider.class); + List providers = this.componentProviders; + List legacyProviders = + this.legacyComponentProviders; + if (providers == null || legacyProviders == null) { + providers = ComponentLoader.loadList(this, ComponentProvider.class); + legacyProviders = + ComponentLoader.loadList( + this, io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider.class); + this.componentProviders = providers; + this.legacyComponentProviders = legacyProviders; } List matchedProviders = - componentProviders.stream() + providers.stream() .filter( componentProvider -> componentProvider.getType() == type && name.equals(componentProvider.getName())) .collect(Collectors.toList()); - if (matchedProviders.isEmpty()) { + List matchedLegacyProviders = + legacyProviders.stream() + .filter( + componentProvider -> + componentProvider.getType() == type && name.equals(componentProvider.getName())) + .collect(Collectors.toList()); + + int totalMatches = matchedProviders.size() + matchedLegacyProviders.size(); + if (totalMatches == 0) { throw new DeclarativeConfigException( "No component provider detected for " + type.getName() + " with name \"" + name + "\"."); } - if (matchedProviders.size() > 1) { + if (totalMatches > 1) { + List providerClassNames = new ArrayList<>(); + matchedProviders.forEach(provider -> providerClassNames.add(provider.getClass().getName())); + matchedLegacyProviders.forEach( + provider -> providerClassNames.add(provider.getClass().getName())); throw new DeclarativeConfigException( "Component provider conflict. Multiple providers detected for " + type.getName() + " with name \"" + name + "\": " - + componentProviders.stream() - .map(provider -> provider.getClass().getName()) - .collect(Collectors.joining(",", "[", "]"))); + + providerClassNames.stream().collect(Collectors.joining(",", "[", "]"))); } - // Exactly one matching component provider - ComponentProvider provider = matchedProviders.get(0); + Object component; + String providerClassName; try { - Object component = provider.create(config); + if (!matchedProviders.isEmpty()) { + ComponentProvider provider = matchedProviders.get(0); + providerClassName = provider.getClass().getName(); + component = provider.create(config); + } else { + io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider provider = + matchedLegacyProviders.get(0); + providerClassName = provider.getClass().getName(); + component = provider.create(new LegacyYamlDeclarativeConfigProperties(config)); + } if (component instanceof Closeable) { closeables.add((Closeable) component); } @@ -186,7 +219,7 @@ T loadComponent(Class type, ConfigKeyValue configKeyValue) { + " with name \"" + name + "\". Component provider " - + provider.getClass().getName() + + providerClassName + " returned an unexpected component type: " + component.getClass().getName()); } diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfiguration.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfiguration.java index 245936f5efe..d2aa64c3aa9 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfiguration.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfiguration.java @@ -7,16 +7,16 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.OpenTelemetryConfigurationModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.SamplerModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.internal.ModelMapper; import io.opentelemetry.sdk.autoconfigure.spi.Ordered; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.autoconfigure.spi.internal.AutoConfigureListener; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import io.opentelemetry.sdk.trace.samplers.Sampler; import java.io.Closeable; import java.io.IOException; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationBuilder.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationBuilder.java index 51904dcfcc9..176302cc561 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationBuilder.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationBuilder.java @@ -5,8 +5,8 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.OpenTelemetryConfigurationModel; import io.opentelemetry.sdk.logs.export.LogRecordExporter; import io.opentelemetry.sdk.metrics.export.MetricExporter; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationCustomizer.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationCustomizer.java index 827ac0f884a..13f8454a9c0 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationCustomizer.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationCustomizer.java @@ -5,7 +5,7 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.OpenTelemetryConfigurationModel; import io.opentelemetry.sdk.logs.export.LogRecordExporter; import io.opentelemetry.sdk.metrics.export.MetricExporter; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/EntitiesEnvResourceDetector.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/EntitiesEnvResourceDetector.java index 172dbce98eb..781456f7d4f 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/EntitiesEnvResourceDetector.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/EntitiesEnvResourceDetector.java @@ -7,9 +7,9 @@ import static io.opentelemetry.sdk.autoconfigure.declarativeconfig.EnvironmentResource.ENTITIES_PROPERTY; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import io.opentelemetry.sdk.resources.Resource; import java.util.Collections; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ExemplarFilterFactory.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ExemplarFilterFactory.java index dc11f5a692e..ded6d9dde1c 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ExemplarFilterFactory.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ExemplarFilterFactory.java @@ -5,7 +5,7 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.ExemplarFilterModel; import io.opentelemetry.sdk.metrics.ExemplarFilter; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/FileConfigUtil.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/FileConfigUtil.java index b5a8fe572d5..dfb0df29289 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/FileConfigUtil.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/FileConfigUtil.java @@ -7,8 +7,8 @@ import static java.util.stream.Collectors.joining; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import java.util.Set; import javax.annotation.Nullable; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/IncludeExcludeFactory.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/IncludeExcludeFactory.java index 0e2742c0bfb..2506e8466a2 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/IncludeExcludeFactory.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/IncludeExcludeFactory.java @@ -5,7 +5,7 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.IncludeExcludeModel; import io.opentelemetry.sdk.common.internal.IncludeExcludePredicate; import java.util.List; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/InstrumentSelectorFactory.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/InstrumentSelectorFactory.java index b82bd301f89..e7f40741e82 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/InstrumentSelectorFactory.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/InstrumentSelectorFactory.java @@ -5,7 +5,7 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.ViewSelectorModel; import io.opentelemetry.sdk.metrics.InstrumentSelector; import io.opentelemetry.sdk.metrics.InstrumentSelectorBuilder; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LegacyYamlDeclarativeConfigProperties.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LegacyYamlDeclarativeConfigProperties.java new file mode 100644 index 00000000000..623543756f3 --- /dev/null +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LegacyYamlDeclarativeConfigProperties.java @@ -0,0 +1,132 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.autoconfigure.declarativeconfig; + +import io.opentelemetry.api.config.DeclarativeConfigProperties; +import io.opentelemetry.common.ComponentLoader; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import javax.annotation.Nullable; + +/** + * Temporary adapter of declarative config properties implementing the legacy incubator interface + * {@link io.opentelemetry.api.incubator.config.DeclarativeConfigProperties} for backwards + * compatibility with legacy {@link + * io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider}. + * + *

Scheduled for removal after 1.68.0. + */ +@SuppressWarnings("deprecation") +final class LegacyYamlDeclarativeConfigProperties + implements io.opentelemetry.api.incubator.config.DeclarativeConfigProperties { + + private final DeclarativeConfigProperties delegate; + + LegacyYamlDeclarativeConfigProperties(DeclarativeConfigProperties delegate) { + this.delegate = delegate; + } + + @Nullable + @Override + public String getString(String name) { + return delegate.getString(name); + } + + @Nullable + @Override + public Boolean getBoolean(String name) { + return delegate.getBoolean(name); + } + + @Nullable + @Override + public Integer getInt(String name) { + return delegate.getInt(name); + } + + @Nullable + @Override + public Long getLong(String name) { + return delegate.getLong(name); + } + + @Nullable + @Override + public Double getDouble(String name) { + return delegate.getDouble(name); + } + + @Nullable + @Override + public List getScalarList(String name, Class scalarType) { + return delegate.getScalarList(name, scalarType); + } + + @Override + public boolean isString(String name) { + return delegate.isString(name); + } + + @Override + public boolean isBoolean(String name) { + return delegate.isBoolean(name); + } + + @Override + public boolean isInt(String name) { + return delegate.isInt(name); + } + + @Override + public boolean isLong(String name) { + return delegate.isLong(name); + } + + @Override + public boolean isDouble(String name) { + return delegate.isDouble(name); + } + + @Nullable + @Override + public io.opentelemetry.api.incubator.config.DeclarativeConfigProperties getStructured( + String name) { + DeclarativeConfigProperties structured = delegate.getStructured(name); + return structured == null ? null : new LegacyYamlDeclarativeConfigProperties(structured); + } + + @Nullable + @Override + public List getStructuredList( + String name) { + List list = delegate.getStructuredList(name); + if (list == null) { + return null; + } + List result = + new ArrayList<>(list.size()); + for (DeclarativeConfigProperties item : list) { + result.add(new LegacyYamlDeclarativeConfigProperties(item)); + } + return result; + } + + @Override + public Set getPropertyKeys() { + return delegate.getPropertyKeys(); + } + + @Override + public ComponentLoader getComponentLoader() { + return delegate.getComponentLoader(); + } + + @Override + public String toString() { + return "LegacyYamlDeclarativeConfigProperties{" + delegate + '}'; + } +} diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricReaderFactory.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricReaderFactory.java index 687b64131b0..cf5875a6b5f 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricReaderFactory.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricReaderFactory.java @@ -7,7 +7,7 @@ import static io.opentelemetry.sdk.autoconfigure.declarativeconfig.FileConfigUtil.requireNonNull; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.MetricReaderModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.PeriodicMetricReaderModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.PullMetricExporterModel; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/OpenTelemetryConfigurationFactory.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/OpenTelemetryConfigurationFactory.java index 9ceaa3a4cdf..bdfa6bbaa55 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/OpenTelemetryConfigurationFactory.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/OpenTelemetryConfigurationFactory.java @@ -5,8 +5,8 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdkBuilder; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.LoggerProviderModel; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/PropagatorFactory.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/PropagatorFactory.java index f2de7b59508..666835b7ecc 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/PropagatorFactory.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/PropagatorFactory.java @@ -5,7 +5,7 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.PropagatorModel; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactory.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactory.java index ed6f80e5a71..8bb8868b173 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactory.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactory.java @@ -5,7 +5,7 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.AlwaysRecordSamplerModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.ParentBasedSamplerModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.SamplerModel; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ServiceResourceDetector.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ServiceResourceDetector.java index 204bda1ad01..74c469ca6a4 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ServiceResourceDetector.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ServiceResourceDetector.java @@ -6,9 +6,9 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import io.opentelemetry.sdk.common.internal.SemConvConstants; import io.opentelemetry.sdk.resources.Resource; diff --git a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/YamlDeclarativeConfigProperties.java b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/YamlDeclarativeConfigProperties.java index 43a4bb16ef1..681bc696313 100644 --- a/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/YamlDeclarativeConfigProperties.java +++ b/sdk-extensions/declarative-config/src/main/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/YamlDeclarativeConfigProperties.java @@ -8,8 +8,8 @@ import static java.util.stream.Collectors.joining; import static java.util.stream.Collectors.toList; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.common.ComponentLoader; import java.util.Arrays; import java.util.Collections; diff --git a/sdk-extensions/declarative-config/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/sdk-extensions/declarative-config/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider similarity index 99% rename from sdk-extensions/declarative-config/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider rename to sdk-extensions/declarative-config/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider index 596144da6a4..ab573c38938 100644 --- a/sdk-extensions/declarative-config/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider +++ b/sdk-extensions/declarative-config/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider @@ -1,2 +1,3 @@ io.opentelemetry.sdk.autoconfigure.declarativeconfig.EntitiesEnvResourceDetector io.opentelemetry.sdk.autoconfigure.declarativeconfig.ServiceResourceDetector + diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/AttributeListFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/AttributeListFactoryTest.java index 79d3f55ffce..a661e3c8506 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/AttributeListFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/AttributeListFactoryTest.java @@ -11,7 +11,7 @@ import static org.mockito.Mockito.mock; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.AttributeNameValueModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.AttributeTypeModel; import java.util.Arrays; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ComposableRuleBasedSamplerFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ComposableRuleBasedSamplerFactoryTest.java index 89f410bc31d..358492d4441 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ComposableRuleBasedSamplerFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ComposableRuleBasedSamplerFactoryTest.java @@ -17,7 +17,7 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.api.trace.SpanKind; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigContextTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigContextTest.java index 7b650174e98..a50811ecaae 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigContextTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigContextTest.java @@ -8,15 +8,21 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigProperties; +import io.opentelemetry.api.incubator.config.ConfigProvider; +import io.opentelemetry.api.metrics.MeterProvider; import io.opentelemetry.common.ComponentLoader; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; +import io.opentelemetry.sdk.common.InternalTelemetryVersion; import io.opentelemetry.sdk.resources.Resource; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -30,6 +36,7 @@ class DeclarativeConfigContextTest { private final DeclarativeConfigContext context = new DeclarativeConfigContext(componentLoader); @Test + @SuppressWarnings("deprecation") void componentProvidersCached() { // First loadComponent call should load providers assertThatThrownBy( @@ -57,6 +64,8 @@ void componentProvidersCached() { // Verify spiHelper.load() was only called once verify(componentLoader, times(1)).load(ComponentProvider.class); + verify(componentLoader, times(1)) + .load(io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider.class); } @Test @@ -103,4 +112,286 @@ public Object create(DeclarativeConfigProperties config) { assertThat(config.isDouble("double_key")).isTrue(); assertThat(config.isString("int_key")).isFalse(); } + + @Test + @SuppressWarnings("deprecation") + void legacyComponentProviderLoaded() { + Resource expectedResource = Resource.builder().put("source", "legacy").build(); + io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider legacyProvider = + new io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider() { + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "legacy-test"; + } + + @Override + public Object create( + io.opentelemetry.api.incubator.config.DeclarativeConfigProperties config) { + assertThat(config).isInstanceOf(LegacyYamlDeclarativeConfigProperties.class); + return expectedResource; + } + }; + + doReturn(Collections.singletonList(legacyProvider)) + .when(componentLoader) + .load(io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider.class); + + Resource resource = + context.loadComponent( + Resource.class, + ConfigKeyValue.of( + "legacy-test", + YamlDeclarativeConfigProperties.create(Collections.emptyMap(), componentLoader))); + + assertThat(resource).isSameAs(expectedResource); + } + + @Test + @SuppressWarnings("deprecation") + void legacyComponentProviderConflictWhenModernProviderExists() { + Resource modernResource = Resource.builder().put("source", "modern").build(); + Resource legacyResource = Resource.builder().put("source", "legacy").build(); + + ComponentProvider modernProvider = + new ComponentProvider() { + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "duplicate-test"; + } + + @Override + public Object create(DeclarativeConfigProperties config) { + return modernResource; + } + }; + + io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider legacyProvider = + new io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider() { + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "duplicate-test"; + } + + @Override + public Object create( + io.opentelemetry.api.incubator.config.DeclarativeConfigProperties config) { + return legacyResource; + } + }; + + doReturn(Collections.singletonList(modernProvider)) + .when(componentLoader) + .load(ComponentProvider.class); + doReturn(Collections.singletonList(legacyProvider)) + .when(componentLoader) + .load(io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider.class); + + assertThatThrownBy( + () -> + context.loadComponent( + Resource.class, + ConfigKeyValue.of( + "duplicate-test", + YamlDeclarativeConfigProperties.create( + Collections.emptyMap(), componentLoader)))) + .isInstanceOf(DeclarativeConfigException.class) + .hasMessageContaining("Component provider conflict. Multiple providers detected for"); + } + + @Test + @SuppressWarnings("deprecation") + void legacyComponentProviderConflictWhenMultipleLegacyProvidersExist() { + Resource legacyResource1 = Resource.builder().put("source", "legacy1").build(); + Resource legacyResource2 = Resource.builder().put("source", "legacy2").build(); + + io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider legacyProvider1 = + new io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider() { + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "duplicate-legacy"; + } + + @Override + public Object create( + io.opentelemetry.api.incubator.config.DeclarativeConfigProperties config) { + return legacyResource1; + } + }; + + io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider legacyProvider2 = + new io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider() { + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "duplicate-legacy"; + } + + @Override + public Object create( + io.opentelemetry.api.incubator.config.DeclarativeConfigProperties config) { + return legacyResource2; + } + }; + + doReturn(Arrays.asList(legacyProvider1, legacyProvider2)) + .when(componentLoader) + .load(io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider.class); + + assertThatThrownBy( + () -> + context.loadComponent( + Resource.class, + ConfigKeyValue.of( + "duplicate-legacy", + YamlDeclarativeConfigProperties.create( + Collections.emptyMap(), componentLoader)))) + .isInstanceOf(DeclarativeConfigException.class) + .hasMessageContaining("Component provider conflict. Multiple providers detected for"); + } + + @Test + void componentProviderUnexpectedComponentType() { + ComponentProvider provider = + new ComponentProvider() { + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "bad-type"; + } + + @Override + public Object create(DeclarativeConfigProperties config) { + return "not-a-resource"; + } + }; + + doReturn(Collections.singletonList(provider)) + .when(componentLoader) + .load(ComponentProvider.class); + + assertThatThrownBy( + () -> + context.loadComponent( + Resource.class, + ConfigKeyValue.of( + "bad-type", + YamlDeclarativeConfigProperties.create( + Collections.emptyMap(), componentLoader)))) + .isInstanceOf(DeclarativeConfigException.class) + .hasMessageStartingWith( + "Error configuring io.opentelemetry.sdk.resources.Resource with name \"bad-type\"") + .hasCauseInstanceOf(DeclarativeConfigException.class) + .hasRootCauseMessage( + "Error configuring io.opentelemetry.sdk.resources.Resource with name \"bad-type\". Component provider " + + provider.getClass().getName() + + " returned an unexpected component type: java.lang.String"); + } + + @Test + void componentProviderThrowsExceptionWrapped() { + ComponentProvider provider = + new ComponentProvider() { + @Override + public Class getType() { + return Resource.class; + } + + @Override + public String getName() { + return "throws-error"; + } + + @Override + public Object create(DeclarativeConfigProperties config) { + throw new IllegalStateException("initialization failure"); + } + }; + + doReturn(Collections.singletonList(provider)) + .when(componentLoader) + .load(ComponentProvider.class); + + assertThatThrownBy( + () -> + context.loadComponent( + Resource.class, + ConfigKeyValue.of( + "throws-error", + YamlDeclarativeConfigProperties.create( + Collections.emptyMap(), componentLoader)))) + .isInstanceOf(DeclarativeConfigException.class) + .hasMessageStartingWith( + "Error configuring io.opentelemetry.sdk.resources.Resource with name \"throws-error\"") + .hasCauseInstanceOf(IllegalStateException.class); + } + + @Test + void setInternalTelemetry_nullWhenConfigProviderNull() { + AtomicReference meterProviderRef = new AtomicReference<>(); + AtomicReference versionRef = new AtomicReference<>(); + + context.setInternalTelemetry(supplier -> meterProviderRef.set(supplier.get()), versionRef::set); + + assertThat(meterProviderRef.get()).isSameAs(MeterProvider.noop()); + assertThat(versionRef.get()).isNull(); + } + + @Test + void setInternalTelemetry_legacy() { + ConfigProvider configProvider = mock(ConfigProvider.class); + DeclarativeConfigProperties otelSdkProps = mock(DeclarativeConfigProperties.class); + when(configProvider.getInstrumentationConfig("otel_sdk")).thenReturn(otelSdkProps); + when(otelSdkProps.getString("internal_telemetry_version")).thenReturn("legacy"); + + DeclarativeConfigContext ctx = new DeclarativeConfigContext(componentLoader); + ctx.setConfigProvider(configProvider); + + AtomicReference versionRef = new AtomicReference<>(); + ctx.setInternalTelemetry(supplier -> {}, versionRef::set); + + assertThat(versionRef.get()).isEqualTo(InternalTelemetryVersion.LEGACY); + } + + @Test + void setInternalTelemetry_invalid() { + ConfigProvider configProvider = mock(ConfigProvider.class); + DeclarativeConfigProperties otelSdkProps = mock(DeclarativeConfigProperties.class); + when(configProvider.getInstrumentationConfig("otel_sdk")).thenReturn(otelSdkProps); + when(otelSdkProps.getString("internal_telemetry_version")).thenReturn("invalid_ver"); + + DeclarativeConfigContext ctx = new DeclarativeConfigContext(componentLoader); + ctx.setConfigProvider(configProvider); + + assertThatThrownBy(() -> ctx.setInternalTelemetry(supplier -> {}, version -> {})) + .isInstanceOf(DeclarativeConfigException.class) + .hasMessageContaining("Invalid sdk telemetry version: invalid_ver"); + } } diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationBuilderTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationBuilderTest.java index 2eaa79f1d34..01c212cd046 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationBuilderTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationBuilderTest.java @@ -10,7 +10,7 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.logs.export.LogRecordExporter; import io.opentelemetry.sdk.metrics.export.MetricExporter; import io.opentelemetry.sdk.trace.export.SpanExporter; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationCreateTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationCreateTest.java index 86b8f3608a3..4518e6e77ad 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationCreateTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationCreateTest.java @@ -14,7 +14,7 @@ import com.linecorp.armeria.testing.junit5.server.SelfSignedCertificateExtension; import io.github.netmikey.logunit.api.LogCapturer; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.internal.testing.CleanupExtension; import io.opentelemetry.internal.testing.slf4j.SuppressLogger; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationParseTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationParseTest.java index 6646403853f..df533261980 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationParseTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/DeclarativeConfigurationParseTest.java @@ -8,7 +8,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.AggregationModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.AttributeLimitsModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.AttributeNameValueModel; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/EntitiesEnvResourceDetectorTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/EntitiesEnvResourceDetectorTest.java index fff320a9cc4..1a89dd20072 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/EntitiesEnvResourceDetectorTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/EntitiesEnvResourceDetectorTest.java @@ -9,7 +9,7 @@ import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.resources.internal.Entity; import io.opentelemetry.sdk.resources.internal.EntityUtil; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/IdGeneratorFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/IdGeneratorFactoryTest.java index 23d0b00f490..2180d42a4ed 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/IdGeneratorFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/IdGeneratorFactoryTest.java @@ -8,7 +8,7 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.internal.testing.CleanupExtension; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.component.IdGeneratorComponentProvider; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/IncludeExcludeFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/IncludeExcludeFactoryTest.java index 87c22c7c44e..6d6a01d7f9c 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/IncludeExcludeFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/IncludeExcludeFactoryTest.java @@ -8,7 +8,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.IncludeExcludeModel; import io.opentelemetry.sdk.common.internal.IncludeExcludePredicate; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/InstrumentSelectorFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/InstrumentSelectorFactoryTest.java index 028fab07677..4373f8dfc34 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/InstrumentSelectorFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/InstrumentSelectorFactoryTest.java @@ -9,7 +9,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.mock; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.InstrumentTypeModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.ViewSelectorModel; import io.opentelemetry.sdk.metrics.InstrumentSelector; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LegacyYamlDeclarativeConfigPropertiesTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LegacyYamlDeclarativeConfigPropertiesTest.java new file mode 100644 index 00000000000..f086a767c8b --- /dev/null +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LegacyYamlDeclarativeConfigPropertiesTest.java @@ -0,0 +1,84 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.autoconfigure.declarativeconfig; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import io.opentelemetry.api.config.DeclarativeConfigProperties; +import io.opentelemetry.common.ComponentLoader; +import java.util.Collections; +import java.util.List; +import org.junit.jupiter.api.Test; + +@SuppressWarnings("deprecation") +class LegacyYamlDeclarativeConfigPropertiesTest { + + @Test + void delegation() { + DeclarativeConfigProperties delegate = mock(DeclarativeConfigProperties.class); + DeclarativeConfigProperties child = mock(DeclarativeConfigProperties.class); + ComponentLoader componentLoader = mock(ComponentLoader.class); + + when(delegate.getString("str")).thenReturn("hello"); + when(delegate.getBoolean("bool")).thenReturn(true); + when(delegate.getInt("int")).thenReturn(42); + when(delegate.getLong("long")).thenReturn(100L); + when(delegate.getDouble("double")).thenReturn(3.14); + + when(delegate.isString("str")).thenReturn(true); + when(delegate.isBoolean("bool")).thenReturn(true); + when(delegate.isInt("int")).thenReturn(true); + when(delegate.isLong("long")).thenReturn(true); + when(delegate.isDouble("double")).thenReturn(true); + + when(delegate.getScalarList("list", String.class)) + .thenReturn(Collections.singletonList("item")); + when(delegate.getStructured("child")).thenReturn(child); + when(delegate.getStructured("missing")).thenReturn(null); + + when(delegate.getStructuredList("children")).thenReturn(Collections.singletonList(child)); + when(delegate.getStructuredList("missing_list")).thenReturn(null); + + when(delegate.getPropertyKeys()).thenReturn(Collections.singleton("str")); + when(delegate.getComponentLoader()).thenReturn(componentLoader); + when(delegate.toString()).thenReturn("mockDelegate"); + + LegacyYamlDeclarativeConfigProperties properties = + new LegacyYamlDeclarativeConfigProperties(delegate); + + assertThat(properties.getString("str")).isEqualTo("hello"); + assertThat(properties.getBoolean("bool")).isTrue(); + assertThat(properties.getInt("int")).isEqualTo(42); + assertThat(properties.getLong("long")).isEqualTo(100L); + assertThat(properties.getDouble("double")).isEqualTo(3.14); + + assertThat(properties.isString("str")).isTrue(); + assertThat(properties.isBoolean("bool")).isTrue(); + assertThat(properties.isInt("int")).isTrue(); + assertThat(properties.isLong("long")).isTrue(); + assertThat(properties.isDouble("double")).isTrue(); + + assertThat(properties.getScalarList("list", String.class)).containsExactly("item"); + + io.opentelemetry.api.incubator.config.DeclarativeConfigProperties structured = + properties.getStructured("child"); + assertThat(structured).isInstanceOf(LegacyYamlDeclarativeConfigProperties.class); + assertThat(properties.getStructured("missing")).isNull(); + + List structuredList = + properties.getStructuredList("children"); + assertThat(structuredList).hasSize(1); + assertThat(structuredList.get(0)).isInstanceOf(LegacyYamlDeclarativeConfigProperties.class); + assertThat(properties.getStructuredList("missing_list")).isNull(); + + assertThat(properties.getPropertyKeys()).containsExactly("str"); + assertThat(properties.getComponentLoader()).isSameAs(componentLoader); + assertThat(properties.toString()) + .isEqualTo("LegacyYamlDeclarativeConfigProperties{mockDelegate}"); + } +} diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LogRecordExporterFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LogRecordExporterFactoryTest.java index fe80bc26e83..29091adcef0 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LogRecordExporterFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LogRecordExporterFactoryTest.java @@ -10,7 +10,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import com.linecorp.armeria.testing.junit5.server.SelfSignedCertificateExtension; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.exporter.logging.SystemOutLogRecordExporter; import io.opentelemetry.exporter.logging.otlp.internal.logs.OtlpStdoutLogRecordExporter; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LogRecordProcessorFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LogRecordProcessorFactoryTest.java index 1470d392600..40d0cc93d4a 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LogRecordProcessorFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/LogRecordProcessorFactoryTest.java @@ -8,7 +8,7 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporter; import io.opentelemetry.internal.testing.CleanupExtension; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricExporterFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricExporterFactoryTest.java index f229ab8e60b..38328f419d2 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricExporterFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricExporterFactoryTest.java @@ -10,7 +10,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import com.linecorp.armeria.testing.junit5.server.SelfSignedCertificateExtension; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.exporter.logging.LoggingMetricExporter; import io.opentelemetry.exporter.logging.otlp.internal.metrics.OtlpStdoutMetricExporter; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricReaderFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricReaderFactoryTest.java index 0ce35451c3e..42302cb2942 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricReaderFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/MetricReaderFactoryTest.java @@ -14,7 +14,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporter; import io.opentelemetry.exporter.prometheus.PrometheusHttpServer; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/OpenTelemetryConfigurationFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/OpenTelemetryConfigurationFactoryTest.java index cd9c6604474..71238954053 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/OpenTelemetryConfigurationFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/OpenTelemetryConfigurationFactoryTest.java @@ -12,7 +12,7 @@ import io.github.netmikey.logunit.api.LogCapturer; import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.context.propagation.ContextPropagators; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/PropagatorFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/PropagatorFactoryTest.java index 862ef7efad9..d2c11db5f48 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/PropagatorFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/PropagatorFactoryTest.java @@ -9,8 +9,8 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.context.propagation.ContextPropagators; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ResourceFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ResourceFactoryTest.java index a991a0822f9..00ac3a71cc2 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ResourceFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ResourceFactoryTest.java @@ -13,7 +13,7 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.internal.testing.slf4j.SuppressLogger; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.AttributeNameValueModel; @@ -22,7 +22,7 @@ import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.internal.ExperimentalResourceDetectionModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.internal.ExperimentalResourceDetectorModel; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.internal.ResourceModelAccessor; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.resources.ResourceBuilder; import io.opentelemetry.sdk.resources.internal.Entity; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactoryTest.java index 5fa15122572..453ea879773 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactoryTest.java @@ -8,7 +8,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.internal.testing.CleanupExtension; import io.opentelemetry.internal.testing.slf4j.SuppressLogger; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ServiceResourceDetectorTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ServiceResourceDetectorTest.java index 814b799056d..9d144f62454 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ServiceResourceDetectorTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/ServiceResourceDetectorTest.java @@ -10,7 +10,7 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.resources.internal.Entity; import io.opentelemetry.sdk.resources.internal.EntityUtil; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SpanExporterFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SpanExporterFactoryTest.java index 4e6a6cead30..ef89fd927a7 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SpanExporterFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SpanExporterFactoryTest.java @@ -10,7 +10,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import com.linecorp.armeria.testing.junit5.server.SelfSignedCertificateExtension; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.exporter.logging.LoggingSpanExporter; import io.opentelemetry.exporter.logging.otlp.internal.traces.OtlpStdoutSpanExporter; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SpanProcessorFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SpanProcessorFactoryTest.java index a6893432179..ca37ee23a89 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SpanProcessorFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SpanProcessorFactoryTest.java @@ -8,7 +8,7 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigException; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter; import io.opentelemetry.internal.testing.CleanupExtension; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/YamlDeclarativeConfigPropertiesTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/YamlDeclarativeConfigPropertiesTest.java index 210af6c14cc..15772eff2d5 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/YamlDeclarativeConfigPropertiesTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/YamlDeclarativeConfigPropertiesTest.java @@ -5,12 +5,12 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig; -import static io.opentelemetry.api.incubator.config.DeclarativeConfigProperties.empty; +import static io.opentelemetry.api.config.DeclarativeConfigProperties.empty; import static org.assertj.core.api.Assertions.assertThat; import com.google.common.collect.ImmutableSet; import io.github.netmikey.logunit.api.LogCapturer; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.internal.testing.slf4j.SuppressLogger; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.model.OpenTelemetryConfigurationModel; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/IdGeneratorComponentProvider.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/IdGeneratorComponentProvider.java index cc90e512cea..458727bfc59 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/IdGeneratorComponentProvider.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/IdGeneratorComponentProvider.java @@ -5,8 +5,8 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig.component; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.api.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.trace.IdGenerator; public class IdGeneratorComponentProvider implements ComponentProvider { diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/LogRecordExporterComponentProvider.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/LogRecordExporterComponentProvider.java index dcdfffe0051..c7deabcc836 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/LogRecordExporterComponentProvider.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/LogRecordExporterComponentProvider.java @@ -5,8 +5,8 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig.component; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.api.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.logs.export.LogRecordExporter; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/LogRecordProcessorComponentProvider.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/LogRecordProcessorComponentProvider.java index ac9037613cd..a0738de69d6 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/LogRecordProcessorComponentProvider.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/LogRecordProcessorComponentProvider.java @@ -5,9 +5,9 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig.component; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.context.Context; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.logs.LogRecordProcessor; import io.opentelemetry.sdk.logs.ReadWriteLogRecord; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/MetricExporterComponentProvider.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/MetricExporterComponentProvider.java index 185f4e9e4f6..d189d24b2d4 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/MetricExporterComponentProvider.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/MetricExporterComponentProvider.java @@ -5,8 +5,8 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig.component; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.api.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.metrics.InstrumentType; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/ResourceComponentProvider.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/ResourceComponentProvider.java index cd7003a5cf4..6c62ce74925 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/ResourceComponentProvider.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/ResourceComponentProvider.java @@ -5,8 +5,8 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig.component; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.api.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.resources.Resource; public class ResourceComponentProvider implements ComponentProvider { diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/ResourceFirstComponentProvider.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/ResourceFirstComponentProvider.java index 3c5232e5ac1..7d5ffe15357 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/ResourceFirstComponentProvider.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/ResourceFirstComponentProvider.java @@ -5,8 +5,8 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig.component; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.api.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.resources.Resource; public class ResourceFirstComponentProvider implements ComponentProvider { diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/ResourceSecondComponentProvider.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/ResourceSecondComponentProvider.java index c64ea1bb5d7..bb3d8d9d703 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/ResourceSecondComponentProvider.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/ResourceSecondComponentProvider.java @@ -5,8 +5,8 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig.component; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.api.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.resources.Resource; public class ResourceSecondComponentProvider implements ComponentProvider { diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/SamplerComponentProvider.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/SamplerComponentProvider.java index 7618e10f6c4..e82263217e4 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/SamplerComponentProvider.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/SamplerComponentProvider.java @@ -6,10 +6,10 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig.component; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.context.Context; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.samplers.Sampler; import io.opentelemetry.sdk.trace.samplers.SamplingResult; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/SpanExporterComponentProvider.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/SpanExporterComponentProvider.java index dc4bedf2fb3..47b393acd74 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/SpanExporterComponentProvider.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/SpanExporterComponentProvider.java @@ -5,8 +5,8 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig.component; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.api.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.export.SpanExporter; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/SpanProcessorComponentProvider.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/SpanProcessorComponentProvider.java index b481557bf0e..62cc0e90eb8 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/SpanProcessorComponentProvider.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/SpanProcessorComponentProvider.java @@ -5,9 +5,9 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig.component; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.context.Context; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.ReadWriteSpan; import io.opentelemetry.sdk.trace.ReadableSpan; diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/TextMapPropagatorComponentProvider.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/TextMapPropagatorComponentProvider.java index f001dd9a881..15365cc7c02 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/TextMapPropagatorComponentProvider.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/component/TextMapPropagatorComponentProvider.java @@ -5,12 +5,12 @@ package io.opentelemetry.sdk.autoconfigure.declarativeconfig.component; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapGetter; import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.context.propagation.TextMapSetter; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import java.util.Collection; import java.util.Collections; import javax.annotation.Nullable; diff --git a/sdk-extensions/declarative-config/src/test/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/sdk-extensions/declarative-config/src/test/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider similarity index 99% rename from sdk-extensions/declarative-config/src/test/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider rename to sdk-extensions/declarative-config/src/test/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider index deed49c7019..98cdcb2e199 100644 --- a/sdk-extensions/declarative-config/src/test/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider +++ b/sdk-extensions/declarative-config/src/test/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider @@ -9,3 +9,4 @@ io.opentelemetry.sdk.autoconfigure.declarativeconfig.component.ResourceComponent io.opentelemetry.sdk.autoconfigure.declarativeconfig.component.ResourceFirstComponentProvider io.opentelemetry.sdk.autoconfigure.declarativeconfig.component.ResourceSecondComponentProvider io.opentelemetry.sdk.autoconfigure.declarativeconfig.component.IdGeneratorComponentProvider + diff --git a/sdk-extensions/jaeger-remote-sampler/build.gradle.kts b/sdk-extensions/jaeger-remote-sampler/build.gradle.kts index 4b791bce400..ca200b2d936 100644 --- a/sdk-extensions/jaeger-remote-sampler/build.gradle.kts +++ b/sdk-extensions/jaeger-remote-sampler/build.gradle.kts @@ -13,7 +13,7 @@ otelJava.requireSuppressWarningsExplanation.set(false) otelJava.osgiOptionalPackages.set(listOf("io.opentelemetry.sdk.autoconfigure.declarativeconfig", "io.opentelemetry.sdk.autoconfigure.spi")) otelJava.osgiServiceLoaderProvides.set(listOf( "io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSamplerProvider", - "io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider", + "io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider", )) dependencies { diff --git a/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java b/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java index b983f6751ef..c998cf4be6e 100644 --- a/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java +++ b/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java @@ -5,10 +5,10 @@ package io.opentelemetry.sdk.extension.trace.jaeger.sampler.internal; -import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigException; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.autoconfigure.declarativeconfig.DeclarativeConfiguration; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider; import io.opentelemetry.sdk.extension.trace.jaeger.sampler.JaegerRemoteSampler; import io.opentelemetry.sdk.extension.trace.jaeger.sampler.JaegerRemoteSamplerBuilder; import io.opentelemetry.sdk.trace.samplers.Sampler; diff --git a/sdk-extensions/jaeger-remote-sampler/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider b/sdk-extensions/jaeger-remote-sampler/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider similarity index 98% rename from sdk-extensions/jaeger-remote-sampler/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider rename to sdk-extensions/jaeger-remote-sampler/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider index a06efe29e4f..d4a81bc8438 100644 --- a/sdk-extensions/jaeger-remote-sampler/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider +++ b/sdk-extensions/jaeger-remote-sampler/src/main/resources/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.declarativeconfig.ComponentProvider @@ -1 +1,2 @@ io.opentelemetry.sdk.extension.trace.jaeger.sampler.internal.JaegerRemoteSamplerComponentProvider + diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java b/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java index 281c065f64c..98877b0886c 100644 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java @@ -5,7 +5,7 @@ package io.opentelemetry.sdk; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.internal.SdkConfigProvider; import javax.annotation.Nullable; diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/internal/ExtendedOpenTelemetrySdk.java b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/ExtendedOpenTelemetrySdk.java index 6981d9e85a0..84acb3435a2 100644 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/internal/ExtendedOpenTelemetrySdk.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/ExtendedOpenTelemetrySdk.java @@ -5,9 +5,9 @@ package io.opentelemetry.sdk.internal; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.incubator.ExtendedOpenTelemetry; import io.opentelemetry.api.incubator.config.ConfigProvider; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.logs.SdkLoggerProvider; import io.opentelemetry.sdk.logs.internal.SdkLoggerProviderUtil; diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/internal/SdkConfigProvider.java b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/SdkConfigProvider.java index a5399ed4a23..04b23cc9587 100644 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/internal/SdkConfigProvider.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/SdkConfigProvider.java @@ -5,8 +5,8 @@ package io.opentelemetry.sdk.internal; +import io.opentelemetry.api.config.DeclarativeConfigProperties; import io.opentelemetry.api.incubator.config.ConfigProvider; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; /** * SDK implementation of {@link ConfigProvider}.