Class EnumConverter

  • All Implemented Interfaces:
    IConverter

    public class EnumConverter
    extends ScalarConverterBase
    An object to convert simple LinkML enums.

    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 Detail

      • EnumConverter

        public EnumConverter​(Class<?> targetEnum)
                      throws LinkMLRuntimeException
        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 expected fromString method.
    • Method Detail

      • getType

        public Class<?> getType()
        Description copied from interface: IConverter
        Gets 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.
      • serialise

        public Object serialise​(Object object,
                                ConverterContext ctx)
                         throws LinkMLRuntimeException
        Description copied from interface: IConverter
        Converts 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:
        serialise in interface IConverter
        Overrides:
        serialise in class ScalarConverterBase
        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.