Class EnumConverter
- All Implemented Interfaces:
IConverter
This converter is explicitly not intended for so-called “dynamic enums”, which are not yet supported – and when they will be, it will likely be through another, dedicated converter.
Similarly to the ObjectConverter, there should be one instance of
this class for every type of enum that needs to be converted.
This converter relies on the enum type providing (1) a
fromString method that can be used to deserialise an enum value,
and (2) a toString() method that can be used to serialise the
value, in such a way that, if v is a value from the enum
Enum, then Enum.fromString(v.toString()) == v is
true.
The Java code generator in LinkML-Py automatically produces such enum types,
if the --true-enums option is used.
-
Constructor Summary
ConstructorsConstructorDescriptionEnumConverter(Class<?> targetEnum) Creates a new converter for the specified type of enum. -
Method Summary
Modifier and TypeMethodDescriptionprotected ObjectconvertImpl(Object raw, ConverterContext ctx) Performs the actual type conversion.Class<?> getType()Gets the type of object that this converter can convert a raw object into.serialise(Object object, ConverterContext ctx) Converts a LinkML object into a raw object.Methods inherited from class ScalarConverterBase
convert, convertForSlot, serialiseForSlot, toList
-
Constructor Details
-
EnumConverter
Creates a new converter for the specified type of enum.- Parameters:
targetEnum- The enum into which to convert raw objects.- Throws:
LinkMLRuntimeException- If the target type is not a valid enum type (either because it is not a Java enum to begin with, or because it does not provide the expectedfromStringmethod.
-
-
Method Details
-
getType
Description copied from interface:IConverterGets the type of object that this converter can convert a raw object into.- Returns:
- The Java type representing the LinkML object this converter is intended for.
-
convertImpl
Description copied from class:ScalarConverterBasePerforms the actual type conversion.- Specified by:
convertImplin classScalarConverterBase- Parameters:
raw- The raw object to convert. This is guaranteed to be a non-null, non-list, non-dictionary object.- Returns:
- The converted value.
- Throws:
LinkMLRuntimeException- If the converter cannot convert the given value.
-
serialise
Description copied from interface:IConverterConverts a LinkML object into a raw object.Given the Java representation of a LinkML object, this method shall return an object suitable to be given to a generic JSON/YAML writer.
- Specified by:
serialisein interfaceIConverter- Overrides:
serialisein classScalarConverterBase- Parameters:
object- The LinkML object to convert.ctx- The global converter context.- Returns:
- The raw object that represents the original LinkML object.
- Throws:
LinkMLRuntimeException- If the converter cannot convert the given object.
-