com.fasterxml.jackson.databind.ser

## Class VirtualBeanPropertyWriter

- java.lang.Object
- - com.fasterxml.jackson.databind.ser.PropertyWriter
  - - com.fasterxml.jackson.databind.ser.BeanPropertyWriter
    - - com.fasterxml.jackson.databind.ser.VirtualBeanPropertyWriter

- All Implemented Interfaces:
    BeanProperty, Named
  Direct Known Subclasses:
    AttributePropertyWriter

      public abstract class VirtualBeanPropertyWriter
      extends BeanPropertyWriter

  `BeanPropertyWriter` implementation used with `JsonAppend` to add "virtual" properties in addition to regular ones.
  Since:
    2.5
  See Also:
    `AttributePropertyWriter`

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface com.fasterxml.jackson.databind.BeanProperty

      `BeanProperty.Std`

  - ### Field Summary

    - ### Fields inherited from class com.fasterxml.jackson.databind.ser.BeanPropertyWriter

      `_accessorMethod, _cfgSerializationType, _contextAnnotations, _declaredType, _dynamicSerializers, _field, _format, _includeInViews, _internalSettings, _member, _metadata, _name, _nonTrivialBaseType, _nullSerializer, _serializer, _suppressableValue, _suppressNulls, _typeSerializer, _wrapperName, MARKER_FOR_EMPTY, NO_FORMAT`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `VirtualBeanPropertyWriter()` Constructor that may be used by sub-classes for constructing a "blue-print" instance; one that will only become (or create) actual usable instance when its `withConfig(com.fasterxml.jackson.databind.cfg.MapperConfig<?>, com.fasterxml.jackson.databind.introspect.AnnotatedClass, com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition, com.fasterxml.jackson.databind.JavaType)` method is called.
    `protected` | `VirtualBeanPropertyWriter(BeanPropertyDefinition propDef, Annotations contextAnnotations, JavaType declaredType)` Constructor used by most sub-types.
    `protected` | `VirtualBeanPropertyWriter(BeanPropertyDefinition propDef, Annotations contextAnnotations, JavaType declaredType, JsonSerializer<?> ser, TypeSerializer typeSer, JavaType serType, com.fasterxml.jackson.annotation.JsonInclude.Include inclusion)` Pass-through constructor that may be used by sub-classes that want full control over implementation.
    `protected` | `VirtualBeanPropertyWriter(VirtualBeanPropertyWriter base)`
    `protected` | `VirtualBeanPropertyWriter(VirtualBeanPropertyWriter base, PropertyName name)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected static Object` | `_suppressableValue(com.fasterxml.jackson.annotation.JsonInclude.Include inclusion)`
    `protected static boolean` | `_suppressNulls(com.fasterxml.jackson.annotation.JsonInclude.Include inclusion)`
    `Type` | `getGenericPropertyType()` Get the generic property type of this property writer.
    `Class<?>` | `getPropertyType()`
    `boolean` | `isVirtual()` Note: will be defined in `BeanProperty`; as of now is not yet.
    `void` | `serializeAsElement(Object bean, com.fasterxml.jackson.core.JsonGenerator gen, SerializerProvider prov)` Alternative to `BeanPropertyWriter.serializeAsField(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)` that is used when a POJO is serialized as JSON Array; the difference is that no field names are written.
    `void` | `serializeAsField(Object bean, com.fasterxml.jackson.core.JsonGenerator gen, SerializerProvider prov)` Method called to access property that this bean stands for, from within given bean, and to serialize it as a JSON Object field using appropriate serializer.
    `protected abstract Object` | `value(Object bean, com.fasterxml.jackson.core.JsonGenerator jgen, SerializerProvider prov)` Method called to figure out the value to serialize.
    `abstract VirtualBeanPropertyWriter` | `withConfig(MapperConfig<?> config, AnnotatedClass declaringClass, BeanPropertyDefinition propDef, JavaType type)` Contextualization method called on a newly constructed virtual bean property.

    - ### Methods inherited from class com.fasterxml.jackson.databind.ser.BeanPropertyWriter

      `_depositSchemaProperty, _findAndAddDynamic, _handleSelfReference, _new, assignNullSerializer, assignSerializer, assignTypeSerializer, depositSchemaProperty, depositSchemaProperty, findFormatOverrides, get, getAnnotation, getContextAnnotation, getFullName, getInternalSetting, getMember, getMetadata, getName, getRawSerializationType, getSerializationType, getSerializedName, getSerializer, getType, getTypeSerializer, getViews, getWrapperName, hasNullSerializer, hasSerializer, isRequired, isUnwrapping, removeInternalSetting, rename, serializeAsOmittedField, serializeAsPlaceholder, setInternalSetting, setNonTrivialBaseType, toString, unwrappingWriter, willSuppressNulls, wouldConflictWithName`

    - ### Methods inherited from class com.fasterxml.jackson.databind.ser.PropertyWriter

      `findAnnotation`

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

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

- - ### Constructor Detail

    - #### VirtualBeanPropertyWriter

          protected VirtualBeanPropertyWriter(BeanPropertyDefinition propDef,
                                              Annotations contextAnnotations,
                                              JavaType declaredType)

      Constructor used by most sub-types.

    - #### VirtualBeanPropertyWriter

          protected VirtualBeanPropertyWriter()

      Constructor that may be used by sub-classes for constructing a "blue-print" instance; one that will only become (or create) actual usable instance when its `withConfig(com.fasterxml.jackson.databind.cfg.MapperConfig<?>, com.fasterxml.jackson.databind.introspect.AnnotatedClass, com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition, com.fasterxml.jackson.databind.JavaType)` method is called.

    - #### VirtualBeanPropertyWriter

          protected VirtualBeanPropertyWriter(BeanPropertyDefinition propDef,
                                              Annotations contextAnnotations,
                                              JavaType declaredType,
                                              JsonSerializer<?> ser,
                                              TypeSerializer typeSer,
                                              JavaType serType,
                                              com.fasterxml.jackson.annotation.JsonInclude.Include inclusion)

      Pass-through constructor that may be used by sub-classes that want full control over implementation.

    - #### VirtualBeanPropertyWriter

          protected VirtualBeanPropertyWriter(VirtualBeanPropertyWriter base)

    - #### VirtualBeanPropertyWriter

          protected VirtualBeanPropertyWriter(VirtualBeanPropertyWriter base,
                                              PropertyName name)

  - ### Method Detail

    - #### _suppressNulls

          protected static boolean _suppressNulls(com.fasterxml.jackson.annotation.JsonInclude.Include inclusion)

    - #### _suppressableValue

          protected static Object _suppressableValue(com.fasterxml.jackson.annotation.JsonInclude.Include inclusion)

    - #### isVirtual

          public boolean isVirtual()

      Description copied from class: `BeanPropertyWriter`
      Note: will be defined in `BeanProperty`; as of now is not yet.

      TODO: move to `BeanProperty` in near future, once all standard implementations define it.

      Overrides:
        `isVirtual` in class `BeanPropertyWriter`

    - #### getPropertyType

          public Class<?> getPropertyType()

      Overrides:
        `getPropertyType` in class `BeanPropertyWriter`

    - #### getGenericPropertyType

          public Type getGenericPropertyType()

      Description copied from class: `BeanPropertyWriter`
      Get the generic property type of this property writer.
      Overrides:
        `getGenericPropertyType` in class `BeanPropertyWriter`
      Returns:
        The property type, or null if not found.

    - #### value

          protected abstract Object value(Object bean,
                                          com.fasterxml.jackson.core.JsonGenerator jgen,
                                          SerializerProvider prov)
                                   throws Exception

      Method called to figure out the value to serialize. For simple sub-types (such as `AttributePropertyWriter`) this may be one of few methods to define, although more advanced implementations may choose to not even use this method (by overriding `serializeAsField(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)`) and define a bogus implementation.
      Throws:
        `Exception`

    - #### withConfig

          public abstract VirtualBeanPropertyWriter withConfig(MapperConfig<?> config,
                                                               AnnotatedClass declaringClass,
                                                               BeanPropertyDefinition propDef,
                                                               JavaType type)

      Contextualization method called on a newly constructed virtual bean property. Usually a new intance needs to be created due to finality of some of configuration members; otherwise while recommended, creating a new instance is not strictly-speaking mandatory because calls are made in thread-safe manner, as part of initialization before use.
      Parameters:
        `config` - Currenct configuration; guaranteed to be `SerializationConfig` (just not typed since caller does not have dependency to serialization-specific types)
        `declaringClass` - Class that contains this property writer
        `propDef` - Nominal property definition to use
        `type` - Declared type for the property

    - #### serializeAsField

          public void serializeAsField(Object bean,
                                       com.fasterxml.jackson.core.JsonGenerator gen,
                                       SerializerProvider prov)
                                throws Exception

      Description copied from class: `BeanPropertyWriter`
      Method called to access property that this bean stands for, from within given bean, and to serialize it as a JSON Object field using appropriate serializer.
      Overrides:
        `serializeAsField` in class `BeanPropertyWriter`
      Throws:
        `Exception`

    - #### serializeAsElement

          public void serializeAsElement(Object bean,
                                         com.fasterxml.jackson.core.JsonGenerator gen,
                                         SerializerProvider prov)
                                  throws Exception

      Description copied from class: `BeanPropertyWriter`
      Alternative to `BeanPropertyWriter.serializeAsField(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)` that is used when a POJO is serialized as JSON Array; the difference is that no field names are written.
      Overrides:
        `serializeAsElement` in class `BeanPropertyWriter`
      Throws:
        `Exception`

Copyright © 2014–2015 FasterXML. All rights reserved.