Class PersistentCollectionSerializer

  • All Implemented Interfaces:
    com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable, com.fasterxml.jackson.databind.jsonschema.SchemaAware, com.fasterxml.jackson.databind.ser.ContextualSerializer, com.fasterxml.jackson.databind.ser.ResolvableSerializer, Serializable

    public class PersistentCollectionSerializer
    extends com.fasterxml.jackson.databind.ser.ContainerSerializer<Object>
    implements com.fasterxml.jackson.databind.ser.ContextualSerializer, com.fasterxml.jackson.databind.ser.ResolvableSerializer
    Wrapper serializer used to handle aspects of lazy loading that can be used for Hibernate collection datatypes; which includes both Collection and Map types (unlike in JDK).
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.JsonSerializer

        com.fasterxml.jackson.databind.JsonSerializer.None
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected int _features
      Hibernate-module features set, if any.
      protected com.fasterxml.jackson.databind.JavaType _originalType
      Type for which underlying serializer was created.
      protected com.fasterxml.jackson.databind.JsonSerializer<Object> _serializer
      Serializer that does actual value serialization when value is available (either already or with forced access).
      protected org.hibernate.SessionFactory _sessionFactory  
      • Fields inherited from class com.fasterxml.jackson.databind.ser.std.StdSerializer

        _handledType
    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      protected com.fasterxml.jackson.databind.ser.ContainerSerializer<?> _containerSerializer()  
      protected PersistentCollectionSerializer _withSerializer​(com.fasterxml.jackson.databind.JsonSerializer<?> ser)  
      protected com.fasterxml.jackson.databind.ser.ContainerSerializer<?> _withValueTypeSerializer​(com.fasterxml.jackson.databind.jsontype.TypeSerializer vts)  
      void acceptJsonFormatVisitor​(com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper visitor, com.fasterxml.jackson.databind.JavaType typeHint)  
      com.fasterxml.jackson.databind.JsonSerializer<?> createContextual​(com.fasterxml.jackson.databind.SerializerProvider provider, com.fasterxml.jackson.databind.BeanProperty property)
      We need to resolve actual serializer once we know the context; specifically must know type of property being serialized.
      protected Object findLazyValue​(org.hibernate.collection.spi.PersistentCollection coll)  
      com.fasterxml.jackson.databind.JsonSerializer<?> getContentSerializer()  
      com.fasterxml.jackson.databind.JavaType getContentType()  
      boolean hasSingleElement​(Object value)  
      boolean isEmpty​(com.fasterxml.jackson.databind.SerializerProvider provider, Object value)  
      boolean isEmpty​(Object value)
      Deprecated.
      boolean isUnwrappingSerializer()  
      void resolve​(com.fasterxml.jackson.databind.SerializerProvider provider)  
      void serialize​(Object value, com.fasterxml.jackson.core.JsonGenerator jgen, com.fasterxml.jackson.databind.SerializerProvider provider)  
      void serializeWithType​(Object value, com.fasterxml.jackson.core.JsonGenerator jgen, com.fasterxml.jackson.databind.SerializerProvider provider, com.fasterxml.jackson.databind.jsontype.TypeSerializer typeSer)  
      PersistentCollectionSerializer unwrappingSerializer​(com.fasterxml.jackson.databind.util.NameTransformer unwrapper)  
      protected boolean usesLazyLoading​(com.fasterxml.jackson.databind.BeanProperty property)
      Method called to see whether given property indicates it uses lazy resolution of reference contained.
      boolean usesObjectId()  
      • Methods inherited from class com.fasterxml.jackson.databind.ser.ContainerSerializer

        hasContentTypeAnnotation, withValueTypeSerializer
      • Methods inherited from class com.fasterxml.jackson.databind.ser.std.StdSerializer

        _neitherNull, _nonEmpty, createSchemaNode, createSchemaNode, findAnnotatedContentSerializer, findContextualConvertingSerializer, findConvertingContentSerializer, findFormatFeature, findFormatOverrides, findIncludeOverrides, findPropertyFilter, getSchema, getSchema, handledType, isDefaultSerializer, visitArrayFormat, visitArrayFormat, visitFloatFormat, visitIntFormat, visitIntFormat, visitStringFormat, visitStringFormat, wrapAndThrow, wrapAndThrow
      • Methods inherited from class com.fasterxml.jackson.databind.JsonSerializer

        getDelegatee, properties, replaceDelegatee, withFilterId, withIgnoredProperties
    • Field Detail

      • _originalType

        protected final com.fasterxml.jackson.databind.JavaType _originalType
        Type for which underlying serializer was created.
        Since:
        2.7
      • _features

        protected final int _features
        Hibernate-module features set, if any.
      • _serializer

        protected final com.fasterxml.jackson.databind.JsonSerializer<Object> _serializer
        Serializer that does actual value serialization when value is available (either already or with forced access).
      • _sessionFactory

        protected final org.hibernate.SessionFactory _sessionFactory
    • Constructor Detail

      • PersistentCollectionSerializer

        public PersistentCollectionSerializer​(com.fasterxml.jackson.databind.JavaType containerType,
                                              com.fasterxml.jackson.databind.JsonSerializer<?> serializer,
                                              int features,
                                              org.hibernate.SessionFactory sessionFactory)
      • PersistentCollectionSerializer

        protected PersistentCollectionSerializer​(PersistentCollectionSerializer base,
                                                 com.fasterxml.jackson.databind.JsonSerializer<?> serializer)
        Since:
        2.7
    • Method Detail

      • unwrappingSerializer

        public PersistentCollectionSerializer unwrappingSerializer​(com.fasterxml.jackson.databind.util.NameTransformer unwrapper)
        Overrides:
        unwrappingSerializer in class com.fasterxml.jackson.databind.JsonSerializer<Object>
      • _withValueTypeSerializer

        protected com.fasterxml.jackson.databind.ser.ContainerSerializer<?> _withValueTypeSerializer​(com.fasterxml.jackson.databind.jsontype.TypeSerializer vts)
        Specified by:
        _withValueTypeSerializer in class com.fasterxml.jackson.databind.ser.ContainerSerializer<Object>
      • resolve

        public void resolve​(com.fasterxml.jackson.databind.SerializerProvider provider)
                     throws com.fasterxml.jackson.databind.JsonMappingException
        Specified by:
        resolve in interface com.fasterxml.jackson.databind.ser.ResolvableSerializer
        Throws:
        com.fasterxml.jackson.databind.JsonMappingException
      • createContextual

        public com.fasterxml.jackson.databind.JsonSerializer<?> createContextual​(com.fasterxml.jackson.databind.SerializerProvider provider,
                                                                                 com.fasterxml.jackson.databind.BeanProperty property)
                                                                          throws com.fasterxml.jackson.databind.JsonMappingException
        We need to resolve actual serializer once we know the context; specifically must know type of property being serialized.
        Specified by:
        createContextual in interface com.fasterxml.jackson.databind.ser.ContextualSerializer
        Throws:
        com.fasterxml.jackson.databind.JsonMappingException
      • isEmpty

        @Deprecated
        public boolean isEmpty​(Object value)
        Deprecated.
        Overrides:
        isEmpty in class com.fasterxml.jackson.databind.JsonSerializer<Object>
      • isEmpty

        public boolean isEmpty​(com.fasterxml.jackson.databind.SerializerProvider provider,
                               Object value)
        Overrides:
        isEmpty in class com.fasterxml.jackson.databind.JsonSerializer<Object>
      • isUnwrappingSerializer

        public boolean isUnwrappingSerializer()
        Overrides:
        isUnwrappingSerializer in class com.fasterxml.jackson.databind.JsonSerializer<Object>
      • usesObjectId

        public boolean usesObjectId()
        Overrides:
        usesObjectId in class com.fasterxml.jackson.databind.JsonSerializer<Object>
      • acceptJsonFormatVisitor

        public void acceptJsonFormatVisitor​(com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper visitor,
                                            com.fasterxml.jackson.databind.JavaType typeHint)
                                     throws com.fasterxml.jackson.databind.JsonMappingException
        Specified by:
        acceptJsonFormatVisitor in interface com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable
        Overrides:
        acceptJsonFormatVisitor in class com.fasterxml.jackson.databind.ser.std.StdSerializer<Object>
        Throws:
        com.fasterxml.jackson.databind.JsonMappingException
      • getContentType

        public com.fasterxml.jackson.databind.JavaType getContentType()
        Specified by:
        getContentType in class com.fasterxml.jackson.databind.ser.ContainerSerializer<Object>
      • getContentSerializer

        public com.fasterxml.jackson.databind.JsonSerializer<?> getContentSerializer()
        Specified by:
        getContentSerializer in class com.fasterxml.jackson.databind.ser.ContainerSerializer<Object>
      • hasSingleElement

        public boolean hasSingleElement​(Object value)
        Specified by:
        hasSingleElement in class com.fasterxml.jackson.databind.ser.ContainerSerializer<Object>
      • serialize

        public void serialize​(Object value,
                              com.fasterxml.jackson.core.JsonGenerator jgen,
                              com.fasterxml.jackson.databind.SerializerProvider provider)
                       throws IOException
        Specified by:
        serialize in class com.fasterxml.jackson.databind.ser.std.StdSerializer<Object>
        Throws:
        IOException
      • serializeWithType

        public void serializeWithType​(Object value,
                                      com.fasterxml.jackson.core.JsonGenerator jgen,
                                      com.fasterxml.jackson.databind.SerializerProvider provider,
                                      com.fasterxml.jackson.databind.jsontype.TypeSerializer typeSer)
                               throws IOException
        Overrides:
        serializeWithType in class com.fasterxml.jackson.databind.JsonSerializer<Object>
        Throws:
        IOException
      • _containerSerializer

        protected com.fasterxml.jackson.databind.ser.ContainerSerializer<?> _containerSerializer()
      • findLazyValue

        protected Object findLazyValue​(org.hibernate.collection.spi.PersistentCollection coll)
      • usesLazyLoading

        protected boolean usesLazyLoading​(com.fasterxml.jackson.databind.BeanProperty property)
        Method called to see whether given property indicates it uses lazy resolution of reference contained.