AbstractTypeMaterializer (Jackson JSON Processor)
Date: 2013-07-14

org.codehaus.jackson.mrbean

## Class AbstractTypeMaterializer

- java.lang.Object
- - org.codehaus.jackson.map.AbstractTypeResolver
  - - org.codehaus.jackson.mrbean.AbstractTypeMaterializer

- All Implemented Interfaces:
    Versioned

      public class AbstractTypeMaterializer
      extends AbstractTypeResolver
      implements Versioned

  Nifty class for pulling implementations of classes out of thin air.

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

  Since:
    1.6
  Author:
    tatu, sunny

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `AbstractTypeMaterializer.Feature` Enumeration that defines togglable features that guide the serialization feature.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected org.codehaus.jackson.mrbean.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 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 String` | `DEFAULT_PACKAGE_FOR_GENERATED` Default package to use for generated classes.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractTypeMaterializer()`
    `AbstractTypeMaterializer(ClassLoader parentClassLoader)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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
    `protected Class<?>` | `materializeClass(DeserializationConfig config, Class<?> cls)`
    `JavaType` | `resolveAbstractType(DeserializationConfig config, JavaType type)` Method called to try to resolve an abstract type into concrete type (usually for purposes of deserializing), when no concrete implementation was found.
    `void` | `set(AbstractTypeMaterializer.Feature f, boolean state)` Method for enabling or disabling specified feature.
    `void` | `setDefaultPackage(String defPkg)`
    `Version` | `version()` Method that will return version information stored in and read from jar that contains this class.

    - ### Methods inherited from class org.codehaus.jackson.map.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 String DEFAULT_PACKAGE_FOR_GENERATED

      Default package to use for generated classes.
      See Also:
        Constant Field Values

    - #### _classLoader

          protected final org.codehaus.jackson.mrbean.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 String _defaultPackage

      Package name to use as prefix for generated classes.

  - ### Constructor Detail

    - #### AbstractTypeMaterializer

          public AbstractTypeMaterializer()

    - #### AbstractTypeMaterializer

          public AbstractTypeMaterializer(ClassLoader parentClassLoader)

  - ### Method Detail

    - #### version

          public Version version()

      Method that will return version information stored in and read from jar that contains this class.
      Specified by:
        `version` in interface `Versioned`
      Since:
        1.6

    - #### isEnabled

          public final boolean isEnabled(AbstractTypeMaterializer.Feature f)

      Method for checking whether given feature is enabled or not

    - #### enable

          public void enable(AbstractTypeMaterializer.Feature f)

      Method for enabling specified feature.

    - #### disable

          public void disable(AbstractTypeMaterializer.Feature f)

      Method for disabling specified feature.

    - #### set

          public void set(AbstractTypeMaterializer.Feature f,
                 boolean state)

      Method for enabling or disabling specified feature.

    - #### setDefaultPackage

          public void setDefaultPackage(String defPkg)

    - #### resolveAbstractType

          public JavaType resolveAbstractType(DeserializationConfig config,
                                     JavaType type)

      Description copied from class: `AbstractTypeResolver`
      Method called to try to resolve an abstract type into concrete type (usually for purposes of deserializing), when no concrete implementation was found. It will be called after checking all other possibilities, including defaulting.
      Overrides:
        `resolveAbstractType` in class `AbstractTypeResolver`
      Parameters:
        `config` - Configuration in use; should always be of type `DeserializationConfig`
        `type` - Type for which materialization maybe needed
      Returns:
        Resolved concrete type (which should retain generic type parameters of input type, if any), if resolution succeeds; null if resolver does not know how to resolve type

    - #### materializeClass

          protected Class<?> materializeClass(DeserializationConfig config,
                                  Class<?> cls)