PropertyFilter
Date: 2016-12-04

com.fasterxml.jackson.databind.ser

## Interface PropertyFilter

- All Known Implementing Classes:
    SimpleBeanPropertyFilter, SimpleBeanPropertyFilter.FilterExceptFilter, SimpleBeanPropertyFilter.SerializeExceptFilter

      public interface PropertyFilter

  Interface that defines API for filter objects use (as configured using `JsonFilter`) for filtering bean properties to serialize.

  Note that this is the replacement for `BeanPropertyFilter`, which is replaced because it was too closely bound to Bean properties and would not work with `Map`s or "any getters".

  Note that since this is an interface, it is strongly recommended that custom implementations extend `SimpleBeanPropertyFilter`, to avoid backwards compatibility issues in case interface needs to change.

  Since:
    2.3

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `depositSchemaProperty(PropertyWriter writer, JsonObjectFormatVisitor objectVisitor, SerializerProvider provider)` Method called by `BeanSerializer` to let the filter determine whether, and in what form the given property exist within the parent, or root, schema.
    `void` | `depositSchemaProperty(PropertyWriter writer, ObjectNode propertiesNode, SerializerProvider provider)` Deprecated. Since 2.3: new code should use the alternative `depositSchemaProperty` method
    `void` | `serializeAsElement(java.lang.Object elementValue, com.fasterxml.jackson.core.JsonGenerator jgen, SerializerProvider prov, PropertyWriter writer)` Method called by container to let the filter decide what to do with given element value: the usual choices are to either filter out (i.e.
    `void` | `serializeAsField(java.lang.Object pojo, com.fasterxml.jackson.core.JsonGenerator jgen, SerializerProvider prov, PropertyWriter writer)` Method called by `BeanSerializer` to let the filter decide what to do with given bean property value: the usual choices are to either filter out (i.e.

- - ### Method Detail

    - #### serializeAsField

          void serializeAsField(java.lang.Object pojo,
                              com.fasterxml.jackson.core.JsonGenerator jgen,
                              SerializerProvider prov,
                              PropertyWriter writer)
                                throws java.lang.Exception

      Method called by `BeanSerializer` to let the filter decide what to do with given bean property value: the usual choices are to either filter out (i.e. do nothing) or write using given `PropertyWriter`, although filters can choose other to do something different altogether.

      Typical implementation is something like:

           if (include(writer)) {
                writer.serializeAsField(pojo, jgen, prov);
           }

      Parameters:
        `pojo` - Object that contains property value to serialize
        `jgen` - Generator use for serializing value
        `prov` - Provider that can be used for accessing dynamic aspects of serialization processing
        `writer` - Object called to do actual serialization of the field, if not filtered out
      Throws:
        `java.lang.Exception`

    - #### serializeAsElement

          void serializeAsElement(java.lang.Object elementValue,
                                com.fasterxml.jackson.core.JsonGenerator jgen,
                                SerializerProvider prov,
                                PropertyWriter writer)
                                  throws java.lang.Exception

      Method called by container to let the filter decide what to do with given element value: the usual choices are to either filter out (i.e. do nothing) or write using given `PropertyWriter`, although filters can choose other to do something different altogether.

      Typical implementation is something like:

           if (include(writer)) {
                writer.serializeAsElement(pojo, jgen, prov);
           }

      Parameters:
        `elementValue` - Element value being serializerd
        `jgen` - Generator use for serializing value
        `prov` - Provider that can be used for accessing dynamic aspects of serialization processing
        `writer` - Object called to do actual serialization of the field, if not filtered out
      Throws:
        `java.lang.Exception`

    - #### depositSchemaProperty

          @Deprecated
          void depositSchemaProperty(PropertyWriter writer,
                                              ObjectNode propertiesNode,
                                              SerializerProvider provider)
                                     throws JsonMappingException

      Deprecated. Since 2.3: new code should use the alternative `depositSchemaProperty` method
      Method called by `BeanSerializer` to let the filter determine whether, and in what form the given property exist within the parent, or root, schema. Filters can omit adding the property to the node, or choose the form of the schema value for the property.

      Typical implementation is something like:

           if (include(writer)) {
                writer.depositSchemaProperty(propertiesNode, provider);
           }

      Parameters:
        `writer` - Bean property writer to use to create schema value
        `propertiesNode` - Node which the given property would exist within
        `provider` - Provider that can be used for accessing dynamic aspects of serialization processing
      Throws:
        `JsonMappingException`

    - #### depositSchemaProperty

          void depositSchemaProperty(PropertyWriter writer,
                                   JsonObjectFormatVisitor objectVisitor,
                                   SerializerProvider provider)
                                     throws JsonMappingException

      Method called by `BeanSerializer` to let the filter determine whether, and in what form the given property exist within the parent, or root, schema. Filters can omit adding the property to the node, or choose the form of the schema value for the property

      Typical implementation is something like:

           if (include(writer)) {
                writer.depositSchemaProperty(objectVisitor, provider);
           }

      Parameters:
        `writer` - Bean property serializer to use to create schema value
        `objectVisitor` - JsonObjectFormatVisitor which should be aware of the property's existence
        `provider` - Provider that can be used for accessing dynamic aspects of serialization processing
      Throws:
        `JsonMappingException`