TypeWrappedSerializer
Date: 2016-12-04

com.fasterxml.jackson.databind.ser.impl

## Class TypeWrappedSerializer

- java.lang.Object
- - com.fasterxml.jackson.databind.JsonSerializer<java.lang.Object>
  - - com.fasterxml.jackson.databind.ser.impl.TypeWrappedSerializer

- All Implemented Interfaces:
    JsonFormatVisitable

      public final class TypeWrappedSerializer
      extends JsonSerializer<java.lang.Object>

  Simple serializer that will call configured type serializer, passing in configured data serializer, and exposing it all as a simple serializer.

- - ### Nested Class Summary

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

      `JsonSerializer.None`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected JsonSerializer<java.lang.Object>` | `_serializer`
    `protected TypeSerializer` | `_typeSerializer`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TypeWrappedSerializer(TypeSerializer typeSer, JsonSerializer<?> ser)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Class<java.lang.Object>` | `handledType()` Method for accessing type of Objects this serializer can handle.
    `void` | `serialize(java.lang.Object value, com.fasterxml.jackson.core.JsonGenerator jgen, SerializerProvider provider)` Method that can be called to ask implementation to serialize values of type this serializer handles.
    `void` | `serializeWithType(java.lang.Object value, com.fasterxml.jackson.core.JsonGenerator jgen, SerializerProvider provider, TypeSerializer typeSer)` Method that can be called to ask implementation to serialize values of type this serializer handles, using specified type serializer for embedding necessary type information.
    `TypeSerializer` | `typeSerializer()`
    `JsonSerializer<java.lang.Object>` | `valueSerializer()`

    - ### Methods inherited from class com.fasterxml.jackson.databind.JsonSerializer

      `acceptJsonFormatVisitor, getDelegatee, isEmpty, isEmpty, isUnwrappingSerializer, properties, replaceDelegatee, unwrappingSerializer, usesObjectId, withFilterId`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### _typeSerializer

          protected final TypeSerializer _typeSerializer

    - #### _serializer

          protected final JsonSerializer<java.lang.Object> _serializer

  - ### Constructor Detail

    - #### TypeWrappedSerializer

          public TypeWrappedSerializer(TypeSerializer typeSer,
                               JsonSerializer<?> ser)

  - ### Method Detail

    - #### serialize

          public void serialize(java.lang.Object value,
                       com.fasterxml.jackson.core.JsonGenerator jgen,
                       SerializerProvider provider)
                         throws java.io.IOException

      Description copied from class: `JsonSerializer`
      Method that can be called to ask implementation to serialize values of type this serializer handles.
      Specified by:
        `serialize` in class `JsonSerializer<java.lang.Object>`
      Parameters:
        `value` - Value to serialize; can not be null.
        `jgen` - Generator used to output resulting Json content
        `provider` - Provider that can be used to get serializers for serializing Objects value contains, if any.
      Throws:
        `java.io.IOException`

    - #### serializeWithType

          public void serializeWithType(java.lang.Object value,
                               com.fasterxml.jackson.core.JsonGenerator jgen,
                               SerializerProvider provider,
                               TypeSerializer typeSer)
                                 throws java.io.IOException

      Description copied from class: `JsonSerializer`
      Method that can be called to ask implementation to serialize values of type this serializer handles, using specified type serializer for embedding necessary type information.

      Default implementation will throw `UnsupportedOperationException` to indicate that proper type handling needs to be implemented.

      For simple datatypes written as a single scalar value (JSON String, Number, Boolean), implementation would look like:

            // note: method to call depends on whether this type is serialized as JSON scalar, object or Array!
            typeSer.writeTypePrefixForScalar(value, gen);
            serialize(value, gen, provider);
            typeSer.writeTypeSuffixForScalar(value, gen);

      and implementations for type serialized as JSON Arrays or Objects would differ slightly, as `START-ARRAY`/`END-ARRAY` and `START-OBJECT`/`END-OBJECT` pairs need to be properly handled with respect to serializing of contents.
      Overrides:
        `serializeWithType` in class `JsonSerializer<java.lang.Object>`
      Parameters:
        `value` - Value to serialize; can not be null.
        `jgen` - Generator used to output resulting Json content
        `provider` - Provider that can be used to get serializers for serializing Objects value contains, if any.
        `typeSer` - Type serializer to use for including type information
      Throws:
        `java.io.IOException`

    - #### handledType

          public java.lang.Class<java.lang.Object> handledType()

      Description copied from class: `JsonSerializer`
      Method for accessing type of Objects this serializer can handle. Note that this information is not guaranteed to be exact -- it may be a more generic (super-type) -- but it should not be incorrect (return a non-related type).

      Default implementation will return null, which essentially means same as returning `Object.class` would; that is, that nothing is known about handled type.

      Overrides:
        `handledType` in class `JsonSerializer<java.lang.Object>`

    - #### valueSerializer

          public JsonSerializer<java.lang.Object> valueSerializer()

    - #### typeSerializer

          public TypeSerializer typeSerializer()