Class AbstractKeyDeserializer<E extends AbstractPersistable>
- java.lang.Object
-
- com.fasterxml.jackson.databind.KeyDeserializer
-
- ai.timefold.solver.examples.common.persistence.jackson.AbstractKeyDeserializer<E>
-
- Type Parameters:
E- The type must have aJsonIdentityInfoannotation withJacksonUniqueIdGeneratoras its generator.
public abstract class AbstractKeyDeserializer<E extends AbstractPersistable> extends com.fasterxml.jackson.databind.KeyDeserializerDeserializes map key defined byJacksonUniqueIdGeneratorto a child ofAbstractPersistable.Deserialization will create new instances of the map key type. Duplicate instances will be created if any other part of the JSON is also referencing the same type. In that case, a custom implementation of
AbstractJsonSolutionFileIOmust be used later to resolve the duplicates by comparing IDs of such objects and making sure only one instance exists with each ID.Example: let us consider a "Location" object that has a field of type Map<Location, Distance>. When the outer Location object gets deserialized from List<Location>, the nested map needs to be deserialized as well. However, at this point, the Location objects used as keys in the map do not yet exist. (The rest of the list has not been read yet.) Therefore the deserializer needs to create a temporary dummy Location object to use as the map key. This object later needs to be replaced by the actual Location object by the
AbstractJsonSolutionFileIO.
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractKeyDeserializer(Class<E> persistableClass)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract EcreateInstance(long id)EdeserializeKey(String value, com.fasterxml.jackson.databind.DeserializationContext deserializationContext)
-