java.lang.Object
edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.databind.introspect.ConcreteBeanPropertyBase
edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.databind.ser.PropertyWriter
All Implemented Interfaces:
BeanProperty, Named, Serializable
Direct Known Subclasses:
BeanPropertyWriter, MapProperty

public abstract class PropertyWriter extends ConcreteBeanPropertyBase implements Serializable
Base class for writers used to output property values (name-value pairs) as key/value pairs via streaming API. This is the most generic abstraction implemented by both POJO and Map serializers, and invoked by filtering functionality.
Since:
2.3
See Also:
  • Constructor Details

  • Method Details

    • getName

      public abstract String getName()
      Description copied from interface: BeanProperty
      Method to get logical name of the property
      Specified by:
      getName in interface BeanProperty
      Specified by:
      getName in interface Named
    • getFullName

      public abstract PropertyName getFullName()
      Description copied from interface: BeanProperty
      Method for getting full name definition, including possible format-specific additional properties (such as namespace when using XML backend).
      Specified by:
      getFullName in interface BeanProperty
    • findAnnotation

      public <A extends Annotation> A findAnnotation(Class<A> acls)
      Convenience method for accessing annotation that may be associated either directly on property, or, if not, via enclosing class (context). This allows adding baseline contextual annotations, for example, by adding an annotation for a given class and making that apply to all properties unless overridden by per-property annotations.

      This method is functionally equivalent to:

        MyAnnotation ann = propWriter.getAnnotation(MyAnnotation.class);
        if (ann == null) {
          ann = propWriter.getContextAnnotation(MyAnnotation.class);
        }
      
      that is, tries to find a property annotation first, but if one is not found, tries to find context-annotation (from enclosing class) of same type.
      Since:
      2.5
    • getAnnotation

      public abstract <A extends Annotation> A getAnnotation(Class<A> acls)
      Method for accessing annotations directly declared for property that this writer is associated with.
      Specified by:
      getAnnotation in interface BeanProperty
      Since:
      2.5
    • getContextAnnotation

      public abstract <A extends Annotation> A getContextAnnotation(Class<A> acls)
      Method for accessing annotations declared in context of the property that this writer is associated with; usually this means annotations on enclosing class for property.
      Specified by:
      getContextAnnotation in interface BeanProperty
      Since:
      2.5
    • serializeAsField

      public abstract void serializeAsField(Object value, JsonGenerator jgen, SerializerProvider provider) throws Exception
      The main serialization method called by filter when property is to be written normally.
      Throws:
      Exception
    • serializeAsOmittedField

      public abstract void serializeAsOmittedField(Object value, JsonGenerator jgen, SerializerProvider provider) throws Exception
      Serialization method that filter needs to call in cases where property is to be filtered, but the underlying data format requires a placeholder of some kind. This is usually the case for tabular (positional) data formats such as CSV.
      Throws:
      Exception
    • serializeAsElement

      public abstract void serializeAsElement(Object value, JsonGenerator jgen, SerializerProvider provider) throws Exception
      Serialization method called when output is to be done as an array, that is, not using property names. This is needed when serializing container (Collection, array) types, or POJOs using tabular ("as array") output format.

      Note that this mode of operation is independent of underlying data format; so it is typically NOT called for fully tabular formats such as CSV, where logical output is still as form of POJOs.

      Throws:
      Exception
    • serializeAsPlaceholder

      public abstract void serializeAsPlaceholder(Object value, JsonGenerator jgen, SerializerProvider provider) throws Exception
      Serialization method called when doing tabular (positional) output from databind, but then value is to be omitted. This requires output of a placeholder value of some sort; often similar to serializeAsOmittedField(java.lang.Object, edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.core.JsonGenerator, edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.databind.SerializerProvider).
      Throws:
      Exception
    • depositSchemaProperty

      public abstract void depositSchemaProperty(JsonObjectFormatVisitor objectVisitor, SerializerProvider provider) throws JsonMappingException
      Traversal method used for things like JSON Schema generation, or POJO introspection.
      Specified by:
      depositSchemaProperty in interface BeanProperty
      Parameters:
      objectVisitor - Visitor to used as the callback handler
      Throws:
      JsonMappingException
    • depositSchemaProperty

      @Deprecated public abstract void depositSchemaProperty(ObjectNode propertiesNode, SerializerProvider provider) throws JsonMappingException
      Deprecated.
      Since 2.2
      Legacy method called for JSON Schema generation; should not be called by new code
      Throws:
      JsonMappingException