Class AbstractTypeMaterializer

  • All Implemented Interfaces:
    com.fasterxml.jackson.core.Versioned

    public class AbstractTypeMaterializer
    extends com.fasterxml.jackson.databind.AbstractTypeResolver
    implements com.fasterxml.jackson.core.Versioned
    Nifty class for pulling implementations of classes out of thin air.

    ... friends call him Mister Bean... :-)

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  AbstractTypeMaterializer.Feature
      Enumeration that defines togglable features that guide the serialization feature.
      (package private) static class  AbstractTypeMaterializer.MyClassLoader
      To support actual dynamic loading of bytecode we need a simple custom classloader.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected AbstractTypeMaterializer.MyClassLoader _classLoader
      We will use per-materializer class loader for now; would be nice to find a way to reduce number of class loaders (and hence number of generated classes!) constructed...
      protected java.lang.String _defaultPackage
      Package name to use as prefix for generated classes.
      protected int _featureFlags
      Bit set that contains all enabled features
      protected static int DEFAULT_FEATURE_FLAGS
      Bitfield (set of flags) of all Features that are enabled by default.
      static java.lang.String DEFAULT_PACKAGE_FOR_GENERATED
      Default package to use for generated classes.
    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      protected boolean _suitableType​(com.fasterxml.jackson.databind.JavaType type)  
      void disable​(AbstractTypeMaterializer.Feature f)
      Method for disabling specified feature.
      void enable​(AbstractTypeMaterializer.Feature f)
      Method for enabling specified feature.
      boolean isEnabled​(AbstractTypeMaterializer.Feature f)
      Method for checking whether given feature is enabled or not
      java.lang.Class<?> materializeGenericType​(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config, com.fasterxml.jackson.databind.JavaType type)  
      java.lang.Class<?> materializeRawType​(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config, com.fasterxml.jackson.databind.introspect.AnnotatedClass typeDef)
      NOTE: should not be called for generic types.
      com.fasterxml.jackson.databind.JavaType resolveAbstractType​(com.fasterxml.jackson.databind.DeserializationConfig config, com.fasterxml.jackson.databind.BeanDescription beanDesc)
      Entry-point for AbstractTypeResolver that Jackson calls to materialize an abstract type.
      com.fasterxml.jackson.databind.JavaType resolveAbstractType​(com.fasterxml.jackson.databind.DeserializationConfig config, com.fasterxml.jackson.databind.JavaType type)
      Deprecated.
      void set​(AbstractTypeMaterializer.Feature f, boolean state)
      Method for enabling or disabling specified feature.
      void setDefaultPackage​(java.lang.String defPkg)
      Method for specifying package to use for generated classes.
      com.fasterxml.jackson.core.Version version()
      Method that will return version information stored in and read from jar that contains this class.
      • Methods inherited from class com.fasterxml.jackson.databind.AbstractTypeResolver

        findTypeMapping
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEFAULT_FEATURE_FLAGS

        protected static final int DEFAULT_FEATURE_FLAGS
        Bitfield (set of flags) of all Features that are enabled by default.
      • DEFAULT_PACKAGE_FOR_GENERATED

        public static final java.lang.String DEFAULT_PACKAGE_FOR_GENERATED
        Default package to use for generated classes.
        See Also:
        Constant Field Values
      • _classLoader

        protected final AbstractTypeMaterializer.MyClassLoader _classLoader
        We will use per-materializer class loader for now; would be nice to find a way to reduce number of class loaders (and hence number of generated classes!) constructed...
      • _featureFlags

        protected int _featureFlags
        Bit set that contains all enabled features
      • _defaultPackage

        protected java.lang.String _defaultPackage
        Package name to use as prefix for generated classes.
    • Constructor Detail

      • AbstractTypeMaterializer

        public AbstractTypeMaterializer()
      • AbstractTypeMaterializer

        public AbstractTypeMaterializer​(java.lang.ClassLoader parentClassLoader)
        Parameters:
        parentClassLoader - Class loader to use for generated classes; if null, will use class loader that loaded materializer itself.
    • Method Detail

      • version

        public com.fasterxml.jackson.core.Version version()
        Method that will return version information stored in and read from jar that contains this class.
        Specified by:
        version in interface com.fasterxml.jackson.core.Versioned
      • setDefaultPackage

        public void setDefaultPackage​(java.lang.String defPkg)
        Method for specifying package to use for generated classes.
      • resolveAbstractType

        public com.fasterxml.jackson.databind.JavaType resolveAbstractType​(com.fasterxml.jackson.databind.DeserializationConfig config,
                                                                           com.fasterxml.jackson.databind.BeanDescription beanDesc)
        Entry-point for AbstractTypeResolver that Jackson calls to materialize an abstract type.
        Overrides:
        resolveAbstractType in class com.fasterxml.jackson.databind.AbstractTypeResolver
      • resolveAbstractType

        @Deprecated
        public com.fasterxml.jackson.databind.JavaType resolveAbstractType​(com.fasterxml.jackson.databind.DeserializationConfig config,
                                                                           com.fasterxml.jackson.databind.JavaType type)
        Deprecated.
        Older variant of resolveAbstractType(DeserializationConfig, BeanDescription), obsoleted in 2.7. Kept around in 2.7 for backwards compatibility.

        TODO: remove from 2.9

        Overrides:
        resolveAbstractType in class com.fasterxml.jackson.databind.AbstractTypeResolver
      • materializeGenericType

        public java.lang.Class<?> materializeGenericType​(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config,
                                                         com.fasterxml.jackson.databind.JavaType type)
        Since:
        2.4
      • materializeRawType

        public java.lang.Class<?> materializeRawType​(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config,
                                                     com.fasterxml.jackson.databind.introspect.AnnotatedClass typeDef)
        NOTE: should not be called for generic types.
        Since:
        2.4
      • _suitableType

        protected boolean _suitableType​(com.fasterxml.jackson.databind.JavaType type)