java.lang.Object
edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.core.TreeCodec
edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.core.ObjectCodec
All Implemented Interfaces:
Versioned
Direct Known Subclasses:
ObjectMapper, ObjectReader

public abstract class ObjectCodec extends TreeCodec implements Versioned
Abstract class that defines the interface that JsonParser and JsonGenerator use to serialize and deserialize regular Java objects (POJOs aka Beans).

The standard implementation of this class is edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.databind.ObjectMapper, defined in the "jackson-databind".

  • Constructor Details

    • ObjectCodec

      protected ObjectCodec()
  • Method Details

    • version

      public abstract Version version()
      Description copied from interface: Versioned
      Method called to detect version of the component that implements this interface; returned version should never be null, but may return specific "not available" instance (see Version for details).
      Specified by:
      version in interface Versioned
      Returns:
      Version of the component
    • readValue

      public abstract <T> T readValue(JsonParser p, Class<T> valueType) throws IOException
      Method to deserialize JSON content into a non-container type (it can be an array type, however): typically a bean, array or a wrapper type (like Boolean).

      Note: this method should NOT be used if the result type is a container (Collection or Map. The reason is that due to type erasure, key and value types can not be introspected when using this method.

      Type Parameters:
      T - Nominal parameter for target type
      Parameters:
      p - Parser to use for decoding content to bind
      valueType - Java value type to bind content to
      Returns:
      Value deserialized
      Throws:
      IOException - for low-level read issues, or JsonParseException for decoding problems
    • readValue

      public abstract <T> T readValue(JsonParser p, TypeReference<T> valueTypeRef) throws IOException
      Method to deserialize JSON content into a Java type, reference to which is passed as argument. Type is passed using so-called "super type token" and specifically needs to be used if the root type is a parameterized (generic) container type.
      Type Parameters:
      T - Nominal parameter for target type
      Parameters:
      p - Parser to use for decoding content to bind
      valueTypeRef - Java value type to bind content to
      Returns:
      Value deserialized
      Throws:
      IOException - for low-level read issues, or JsonParseException for decoding problems
    • readValue

      public abstract <T> T readValue(JsonParser p, ResolvedType valueType) throws IOException
      Method to deserialize JSON content into a POJO, type specified with fully resolved type object (so it can be a generic type, including containers like Collection and Map).
      Type Parameters:
      T - Nominal parameter for target type
      Parameters:
      p - Parser to use for decoding content to bind
      valueType - Java value type to bind content to
      Returns:
      Value deserialized
      Throws:
      IOException - for low-level read issues, or JsonParseException for decoding problems
    • readValues

      public abstract <T> Iterator<T> readValues(JsonParser p, Class<T> valueType) throws IOException
      Method for reading sequence of Objects from parser stream, all with same specified value type.
      Type Parameters:
      T - Nominal parameter for target type
      Parameters:
      p - Parser to use for decoding content to bind
      valueType - Java value type to bind content to
      Returns:
      Iterator for incrementally deserializing values
      Throws:
      IOException - for low-level read issues, or JsonParseException for decoding problems
    • readValues

      public abstract <T> Iterator<T> readValues(JsonParser p, TypeReference<T> valueTypeRef) throws IOException
      Method for reading sequence of Objects from parser stream, all with same specified value type.
      Type Parameters:
      T - Nominal parameter for target type
      Parameters:
      p - Parser to use for decoding content to bind
      valueTypeRef - Java value type to bind content to
      Returns:
      Iterator for incrementally deserializing values
      Throws:
      IOException - for low-level read issues, or JsonParseException for decoding problems
    • readValues

      public abstract <T> Iterator<T> readValues(JsonParser p, ResolvedType valueType) throws IOException
      Method for reading sequence of Objects from parser stream, all with same specified value type.
      Type Parameters:
      T - Nominal parameter for target type
      Parameters:
      p - Parser to use for decoding content to bind
      valueType - Java value type to bind content to
      Returns:
      Iterator for incrementally deserializing values
      Throws:
      IOException - for low-level read issues, or JsonParseException for decoding problems
    • writeValue

      public abstract void writeValue(JsonGenerator gen, Object value) throws IOException
      Method to serialize given Java Object, using generator provided.
      Parameters:
      gen - Generator to use for serializing value
      value - Value to serialize
      Throws:
      IOException - for low-level write issues, or JsonGenerationException for decoding problems
    • readTree

      public abstract <T extends TreeNode> T readTree(JsonParser p) throws IOException
      Method for deserializing JSON content as tree expressed using set of TreeNode instances. Returns root of the resulting tree (where root can consist of just a single node if the current event is a value event, not container). Empty or whitespace documents return null.
      Specified by:
      readTree in class TreeCodec
      Returns:
      next tree from p, or null if empty.
      Throws:
      IOException - for low-level read issues, or JsonParseException for decoding problems
    • writeTree

      public abstract void writeTree(JsonGenerator gen, TreeNode tree) throws IOException
      Method for serializing JSON content from given Tree instance, using specified generator.
      Specified by:
      writeTree in class TreeCodec
      Parameters:
      gen - Generator to use for serializing value
      tree - Tree to serialize
      Throws:
      IOException - for low-level write issues, or JsonGenerationException for decoding problems
    • createObjectNode

      public abstract TreeNode createObjectNode()
      Method for construct root level Object nodes for Tree Model instances.
      Specified by:
      createObjectNode in class TreeCodec
      Returns:
      Object node created
    • createArrayNode

      public abstract TreeNode createArrayNode()
      Method for construct root level Array nodes for Tree Model instances.
      Specified by:
      createArrayNode in class TreeCodec
      Returns:
      Array node created
    • treeAsTokens

      public abstract JsonParser treeAsTokens(TreeNode n)
      Method for constructing a JsonParser for reading contents of a JSON tree, as if it was external serialized JSON content.
      Specified by:
      treeAsTokens in class TreeCodec
      Parameters:
      n - Content to traverse over
      Returns:
      Parser constructed for traversing over contents of specified node
    • treeToValue

      public abstract <T> T treeToValue(TreeNode n, Class<T> valueType) throws JsonProcessingException
      Convenience method for converting given JSON tree into instance of specified value type. This is equivalent to first constructing a JsonParser to iterate over contents of the tree, and using that parser for data binding.
      Type Parameters:
      T - Nominal parameter for target type
      Parameters:
      n - Tree to convert
      valueType - Java target value type to convert content to
      Returns:
      Converted value instance
      Throws:
      JsonProcessingException - if structural conversion fails
    • getJsonFactory

      @Deprecated public JsonFactory getJsonFactory()
      Deprecated.
      Use getFactory() instead.
      Returns:
      Underlying JsonFactory instance
    • getFactory

      public JsonFactory getFactory()
      Accessor for finding underlying data format factory (JsonFactory) codec will use for data binding.
      Returns:
      Underlying JsonFactory instance