Interface IConverter
-
- All Known Implementing Classes:
BooleanConverter,ClassDefinitionConverter,CurieConverter,DateConverter,DatetimeConverter,DoubleConverter,EnumConverter,FloatConverter,IntegerConverter,ObjectConverter,ScalarConverterBase,SchemaDefinitionConverter,StringConverter,TimeConverter,TransparentConverter,URIConverter
public interface IConverterAn object that can convert a “raw object” (as obtained from a JSON/YAML parser) into a LinkML object, and the other way round.This interface is at the heart of LinkML-Java’s core library and its (de)serialisation features. The
ConverterContextmust have an implementation of this interface for every type of LinkML objects (classes, enums, types) it will need to convert.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description Objectconvert(Object raw, ConverterContext ctx)Converts a raw object into a LinkML object.voidconvertForSlot(Object raw, Object dest, Slot slot, ConverterContext ctx)Converts a raw object into a LinkML object and assigns the result to a slot of another object.Class<?>getType()Gets the type of object that this converter can convert a raw object into.Objectserialise(Object object, ConverterContext ctx)Converts a LinkML object into a raw object.ObjectserialiseForSlot(Object object, Slot slot, ConverterContext ctx)Converts a LinkML object into a raw object, when the object is the value of a specific LinkML slot.
-
-
-
Method Detail
-
getType
Class<?> getType()
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.
-
convert
Object convert(Object raw, ConverterContext ctx) throws LinkMLRuntimeException
Converts a raw object into a LinkML object.Given the raw representation of a LinkML object, as it may have been obtained from a generic JSON/YAML parser, this method shall return a suitable Java representation of the object.
- Parameters:
raw- The raw object to convert.ctx- The global converter context.- Returns:
- The converted object.
- Throws:
LinkMLRuntimeException- If the converter cannot convert the given value.
-
convertForSlot
void convertForSlot(Object raw, Object dest, Slot slot, ConverterContext ctx) throws LinkMLRuntimeException
Converts a raw object into a LinkML object and assigns the result to a slot of another object.In principle, calling this method shall perform the equivalent of the following code:
slot.setValue(dest, convert(raw, ctx));
but sometimes, an object of a given type may have to be deserialised differently depending on the slot it is intended to be assigned to. Converter implementations shall then perform whatever is necessary in this method for converting an object for a given slot.
- Parameters:
raw- The raw object to convert.dest- The object that should received the converted value.slot- The slot of thedestobject to which the converted value should be assigned.ctx- The global converter context.- Throws:
LinkMLRuntimeException- If the converter cannot convert the given value, or cannot assign it to the target object/slot.
-
serialise
Object serialise(Object object, ConverterContext ctx) throws LinkMLRuntimeException
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.
- 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.
-
serialiseForSlot
Object serialiseForSlot(Object object, Slot slot, ConverterContext ctx) throws LinkMLRuntimeException
Converts a LinkML object into a raw object, when the object is the value of a specific LinkML slot.We need such a method because the way to serialise a LinkML object into a raw object will sometimes depend on the slot to which the object belongs (the slot of which it is a value), especially with respect to inlining.
- Parameters:
object- The LinkML object to convert.slot- The slot that the given object is a value of.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.
-
-