public interface Converter<T> extends java.io.Serializable
Stringto any Java type.
Global converters are automatically applied to types that match the converter's type.
Global converters may be built in. Such converters are provided by the implementation. A compliant implementation must provide build-in converters for at least the following types:
truefor at least the following values (case insensitive):
Byte, accepting (at minimum) all values accepted by the
Short, accepting (at minimum) all values accepted by the
OptionalIntaccepting (at minimum) all values accepted by the
OptionalLongaccepting (at minimum) all values accepted by the
Float, accepting (at minimum) all values accepted by the
OptionalDoubleaccepting (at minimum) all values accepted by the
java.lang.Classbased on the result of
Custom global converters may be added to a configuration via the
ServiceLoader mechanism, and as
such can be registered by providing a resource named
META-INF/services/org.eclipse.microprofile.config.spi.Converter" which contains the fully qualified
Converter implementation class name(s) (one per line) as content.
It is also possible to explicitly register a global converter to a configuration builder
ConfigBuilder.withConverter(Class, int, Converter) methods.
If no global converter can be found for a given type, the configuration implementation must attempt to derive an implicit converter if any of the following are true (in order):
public static T of(String)method
public static T valueOf(String)method
public static T parse(CharSequence)method
A converter implementation class can specify a priority by way of the standard
annotation or by explicitly specifying the priority value to the appropriate
If no priority is explicitly assigned, the default priority value of
100 is assumed.
If multiple converters are registered for the same type, the one with the highest numerical priority value will be used.
All built in Converters have a priority value of
1. Implicit converters are only created
when no other converter was found; therefore, they do not have a priority.
""must be considered an empty value. Some converters may consider other values to be empty as well.
Implementations may (but are not required to) implement
Config.getOptionalValue() using a
Converter. If so, this converter must return
Optional.empty() for an empty input.
A conforming implementation must support the automatic creation of an implicit converter for array types.
This converter uses a comma (
U+002C ',') as a delimiter. To allow a comma to be embedded within individual
array element values, it may be escaped using a backslash (
U+005C '\') character. Any escaped comma character
will be included as a plain comma within the single element (the backslash is discarded by the converter).
Empty elements must not be included in the final array. An array which would consist of only empty values
must be considered empty; the array converter must return
null in this case.
T convert(java.lang.String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException
value; doing so may result in a
value- the string representation of a property value (must not be
nullif the value is empty
java.lang.IllegalArgumentException- if the value cannot be converted to the specified type
java.lang.NullPointerException- if the given value was