Class EnumConverter

java.lang.Object
org.incenp.linkml.core.ScalarConverterBase
org.incenp.linkml.core.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 Details

    • 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 Details

    • 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.
    • convertImpl

      protected Object convertImpl(Object raw, ConverterContext ctx) throws LinkMLRuntimeException
      Description copied from class: ScalarConverterBase
      Performs the actual type conversion.
      Specified by:
      convertImpl in class ScalarConverterBase
      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

      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.