[ASTERIXDB-1130][STO]: JSON serialization for persisted objects - user model changes: no
- storage format changes: This change replaces the use of Java serialization for persisted objects such as dataset/index metadata, checkpoints, ect... This will break backward compatibly with any existing AsterixDB instance. However, the change is needed to enable future backward compatibility support for persisted objects.
- interface changes: IJsonSerializable: contains API to serialize a class as a JsonNode. IPersistedResourceRegistry: contains a mapping between an IJsonSerializable class and a unique type id. An IPersistedResourceRegistry is responsible for generating the class identifier in the JSON output. The class identifier will always contain the following attributes: @type: a unique type id that identifies the object type. @version: the version of the serialized class. @class: the serialized class full name.
Any registered class with PersistedResourceRegistry must provide a static fromJson(IPersistedResourceRegistry, JsonNode) method for deserialization. This is ensured during the class registration process.