Class DefaultJsonDeserializer<CLASS extends dev.metaschema.core.model.IBoundObject>

java.lang.Object
dev.metaschema.databind.io.AbstractDeserializer<CLASS>
dev.metaschema.databind.io.json.DefaultJsonDeserializer<CLASS>
Type Parameters:
CLASS - the Java type of the bound object representing the root node to read
All Implemented Interfaces:
dev.metaschema.core.configuration.IConfiguration<DeserializationFeature<?>>, dev.metaschema.core.configuration.IMutableConfiguration<DeserializationFeature<?>>, IDeserializer<CLASS>
Direct Known Subclasses:
DefaultYamlDeserializer

public class DefaultJsonDeserializer<CLASS extends dev.metaschema.core.model.IBoundObject> extends AbstractDeserializer<CLASS>
Provides support for reading JSON-based data based on a bound Metaschema module.
  • Constructor Details

    • DefaultJsonDeserializer

      Construct a new JSON deserializer that will parse the bound class identified by the classBinding.
      Parameters:
      definition - the bound class information for the Java type this deserializer is operating on
  • Method Details

    • resetFactory

      protected final void resetFactory()
      For use by subclasses to reset the underlying JSON factory when an important change has occurred that will change how the factory produces a JsonParser.
    • configurationChanged

      protected void configurationChanged(dev.metaschema.core.configuration.IMutableConfiguration<DeserializationFeature<?>> config)
      Callback method invoked when the configuration has been changed.

      Subclasses can override this method to handle configuration changes, such as resetting cached factory instances.

      Parameters:
      config - the updated configuration
    • newFactoryInstance

      @NonNull protected com.fasterxml.jackson.core.JsonFactory newFactoryInstance()
      Get a JSON factory instance.

      This method can be used by sub-classes to create a customized factory instance.

      Returns:
      the factory
    • getJsonFactory

      @NonNull protected com.fasterxml.jackson.core.JsonFactory getJsonFactory()
      Get the parser factory associated with this deserializer.
      Returns:
      the factory instance
    • newJsonParser

      @NonNull protected final com.fasterxml.jackson.core.JsonParser newJsonParser(@NonNull Reader reader) throws IOException
      Using the managed JSON factory, create a new JSON parser instance using the provided reader.
      Parameters:
      reader - the reader for the parser to read data from
      Returns:
      the new parser
      Throws:
      IOException - if an error occurred while creating the parser
    • deserializeToNodeItemInternal

      protected dev.metaschema.core.metapath.item.node.INodeItem deserializeToNodeItemInternal(@NonNull Reader reader, @NonNull URI documentUri) throws IOException
      Description copied from class: AbstractDeserializer
      This abstract method delegates parsing to the concrete implementation.
      Specified by:
      deserializeToNodeItemInternal in class AbstractDeserializer<CLASS extends dev.metaschema.core.model.IBoundObject>
      Parameters:
      reader - the reader instance to read data from
      documentUri - the URI of the document that is being read
      Returns:
      a new node item containing the read contents
      Throws:
      IOException - if an error occurred while reading data from the stream
    • deserializeToValueInternal

      public CLASS deserializeToValueInternal(@NonNull Reader reader, @NonNull URI documentUri) throws IOException
      Description copied from class: AbstractDeserializer
      This abstract method delegates parsing to the concrete implementation, returning the deserialized value directly.
      Specified by:
      deserializeToValueInternal in class AbstractDeserializer<CLASS extends dev.metaschema.core.model.IBoundObject>
      Parameters:
      reader - the reader instance to read data from
      documentUri - the URI of the document that is being read
      Returns:
      the deserialized object
      Throws:
      IOException - if an error occurred while reading data from the stream
    • getBindingContext

      @NonNull protected IBindingContext getBindingContext()
      Retrieve the binding context associated with the serializer.
      Returns:
      the binding context
    • getDefinition

      @NonNull protected IBoundDefinitionModelAssembly getDefinition()
      Retrieve the bound class information associated with the assembly that the serializer/deserializer will write/read data from.
      Returns:
      the class binding for the Module assembly
    • getConfiguration

      @NonNull protected dev.metaschema.core.configuration.IMutableConfiguration<DeserializationFeature<?>> getConfiguration()
      Get the current configuration of the serializer/deserializer.
      Returns:
      the configuration
    • isFeatureEnabled

      public boolean isFeatureEnabled(DeserializationFeature<?> feature)
      Specified by:
      isFeatureEnabled in interface dev.metaschema.core.configuration.IConfiguration<T extends dev.metaschema.core.configuration.IConfigurationFeature<?>>
    • getFeatureValues

      public Map<DeserializationFeature<?>,Object> getFeatureValues()
      Specified by:
      getFeatureValues in interface dev.metaschema.core.configuration.IConfiguration<T extends dev.metaschema.core.configuration.IConfigurationFeature<?>>
    • get

      public <V> V get(DeserializationFeature<?> feature)
      Specified by:
      get in interface dev.metaschema.core.configuration.IConfiguration<T extends dev.metaschema.core.configuration.IConfigurationFeature<?>>