io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties Maven / Gradle / Ivy
Show all versions of opentelemetry-sdk-extension-autoconfigure-spi Show documentation
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.sdk.autoconfigure.spi;
import static io.opentelemetry.api.internal.ConfigUtil.defaultIfNull;
import java.time.Duration;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
/** Properties used for auto-configuration of the OpenTelemetry SDK components. */
public interface ConfigProperties {
/**
* Returns a string-valued configuration property.
*
* @return null if the property has not been configured.
* @throws ConfigurationException if the property is not a valid string.
*/
@Nullable
String getString(String name);
/**
* Returns a string-valued configuration property.
*
* @return a string-valued configuration property or {@code defaultValue} if a property with
* {@code name} has not been configured.
* @throws ConfigurationException if the property is not a valid string.
* @since 1.15.0
*/
default String getString(String name, String defaultValue) {
return defaultIfNull(getString(name), defaultValue);
}
/**
* Returns a boolean-valued 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.
* @throws ConfigurationException if the property is not a valid boolean.
*/
@Nullable
Boolean getBoolean(String name);
/**
* Returns a boolean-valued configuration property.
*
* @return a Boolean-valued configuration property or {@code defaultValue} if a property with
* {@code name} has not been configured.
* @throws ConfigurationException if the property is not a valid string.
* @since 1.15.0
*/
default boolean getBoolean(String name, boolean defaultValue) {
return defaultIfNull(getBoolean(name), defaultValue);
}
/**
* Returns an Integer-valued configuration property.
*
* @return null if the property has not been configured.
* @throws ConfigurationException if the property is not a valid integer.
*/
@Nullable
Integer getInt(String name);
/**
* Returns an Integer-valued configuration property.
*
* @return an Integer-valued configuration property or {@code defaultValue} if a property with
* {@code name} has not been configured.
* @throws ConfigurationException if the property is not a valid string.
* @since 1.15.0
*/
default int getInt(String name, int defaultValue) {
return defaultIfNull(getInt(name), defaultValue);
}
/**
* Returns a Long-valued configuration property.
*
* @return null if the property has not been configured.
* @throws ConfigurationException if the property is not a valid long.
*/
@Nullable
Long getLong(String name);
/**
* Returns a Long-valued configuration property.
*
* @return a Long-valued configuration property or {@code defaultValue} if a property with {@code
* name} has not been configured.
* @throws ConfigurationException if the property is not a valid string.
* @since 1.15.0
*/
default long getLong(String name, long defaultValue) {
return defaultIfNull(getLong(name), defaultValue);
}
/**
* Returns a double-valued configuration property.
*
* @return null if the property has not been configured.
* @throws ConfigurationException if the property is not a valid double.
*/
@Nullable
Double getDouble(String name);
/**
* Returns a double-valued configuration property.
*
* @return a Double-valued configuration property or {@code defaultValue} if a property with
* {@code name} has not been configured.
* @throws ConfigurationException if the property is not a valid string.
* @since 1.15.0
*/
default double getDouble(String name, double defaultValue) {
return defaultIfNull(getDouble(name), defaultValue);
}
/**
* Returns a duration property from the map, or {@code null} if it cannot be found or it has a
* wrong type.
*
* Durations can be of the form "{number}{unit}", where unit is one of:
*
*
* - ms
*
- s
*
- m
*
- h
*
- d
*
*
* If no unit is specified, milliseconds is the assumed duration unit.
*
* @param name The property name
* @return the {@link Duration} value of the property, {@code null} if the property cannot be
* found.
* @throws ConfigurationException for malformed duration strings.
*/
@Nullable
Duration getDuration(String name);
/**
* Returns a Duration value configuration property.
*
* @see ConfigProperties#getDuration(String name)
* @return a Double-valued configuration property or {@code defaultValue} if a property with name
* {@code name} has not been configured.
* @throws ConfigurationException if the property is not a valid string.
* @since 1.15.0
*/
default Duration getDuration(String name, Duration defaultValue) {
return defaultIfNull(getDuration(name), defaultValue);
}
/**
* Returns a list-valued configuration property. The format of the original value must be
* comma-separated. Empty values will be removed.
*
* @return an empty list if the property has not been configured.
* @throws ConfigurationException if the property is not a valid comma-separated list.
*/
List getList(String name);
/**
* Returns a List value configuration property.
*
* @see ConfigProperties#getList(String name)
* @return a List configuration property or {@code defaultValue} if a property with {@code name}
* has not been configured.
* @throws ConfigurationException if the property is not a valid string.
* @since 1.15.0
*/
default List getList(String name, List defaultValue) {
List value = getList(name);
return value.isEmpty() ? defaultValue : value;
}
/**
* Returns a Map configuration property. The format of the original value must be comma-separated
* for each key, with an '=' separating the key and value. For instance,
* service.name=Greatest Service,host.name=localhost
. Empty values will be removed.
*
* @return an empty map if the property has not been configured.
* @throws ConfigurationException for malformed map strings.
*/
Map getMap(String name);
/**
* Returns a Map value configuration property.
*
* @see ConfigProperties#getMap(String name)
* @return a Double-valued configuration property or {@code defaultValue} if a property with
* {@code name} has not been configured.
* @throws ConfigurationException if the property is not a valid string.
* @since 1.15.0
*/
default Map getMap(String name, Map defaultValue) {
Map value = getMap(name);
return value.isEmpty() ? defaultValue : value;
}
}