All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.testifyproject.fasterxml.jackson.databind.annotation.JsonSerialize Maven / Gradle / Ivy

package org.testifyproject.testifyproject.fasterxml.jackson.databind.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.testifyproject.testifyproject.fasterxml.jackson.databind.*;
import org.testifyproject.testifyproject.fasterxml.jackson.databind.util.Converter;

/**
 * Annotation used for configuring serialization aspects, by attaching
 * to "getter" methods or fields, or to value classes.
 * When annotating value classes, configuration is used for instances
 * of the value class but can be overridden by more specific annotations
 * (ones that attach to methods or fields).
 *

* An example annotation would be: *

 *  @JsonSerialize(using=MySerializer.class,
 *    as=MySubClass.class,
 *    typing=JsonSerialize.Typing.STATIC
 *  )
 *
* (which would be redundant, since some properties block others: * specifically, 'using' has precedence over 'as', which has precedence * over 'typing' setting) */ @Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @org.testifyproject.testifyproject.fasterxml.jackson.annotation.JacksonAnnotation public @interface JsonSerialize { // // // Annotations for explicitly specifying org.testifyproject.testifyprojectserializer /** * Serializer class to use for * serializing associated value. Depending on what is annotated, * value is either an instance of annotated class (used globablly * anywhere where class serializer is needed); or only used for * serializing property access via a getter method. */ @SuppressWarnings("rawtypes") // to work around JDK8 bug wrt Class-valued annotation properties public Class using() org.testifyproject.testifyprojectfault JsonSerializer.None.class; /** * Serializer class to use for serializing contents (elements * of a Collection/array, values of Maps) of annotated property. * Can only be used on properties (methods, fields, constructors), * and not value classes themselves (as they are typically generic) */ @SuppressWarnings("rawtypes") // to work around JDK8 bug wrt Class-valued annotation properties public Class contentUsing() org.testifyproject.testifyprojectfault JsonSerializer.None.class; /** * Serializer class to use for serializing Map keys * of annotated property. * Can only be used on properties (methods, fields, constructors), * and not value classes themselves. */ @SuppressWarnings("rawtypes") // to work around JDK8 bug wrt Class-valued annotation properties public Class keyUsing() org.testifyproject.testifyprojectfault JsonSerializer.None.class; /** * Serializer class to use for serializing nulls for properties that * are annotated, instead of the * org.testifyproject.testifyprojectfault null serializer. * Note that using this property when annotation types (classes) has * no effect currently (it is possible this could be improved in future). * * @since 2.3 */ @SuppressWarnings("rawtypes") // to work around JDK8 bug wrt Class-valued annotation properties public Class nullsUsing() org.testifyproject.testifyprojectfault JsonSerializer.None.class; // // // Annotations for type handling, explicit org.testifyproject.testifyprojectclaration // // // (type used for choosing org.testifyproject.testifyprojectserializer, if not explicitly // // // specified) /** * Supertype (of org.testifyproject.testifyprojectclared type, which itself is supertype of runtime type) * to use as type when locating serializer to use. *

* Bogus type {@link Void} can be used to indicate that org.testifyproject.testifyprojectclared * type is used as is (i.e. this annotation property has no setting); * this since annotation properties are not allowed to have null value. *

* Note: if {@link #using} is also used it has precedence * (since it directly specifies * serializer, whereas this would only be used to locate the * serializer) * and value of this annotation property is ignored. */ public Class as() org.testifyproject.testifyprojectfault Void.class; /** * Concrete type to serialize keys of {@link java.util.Map} as, * instead of type otherwise org.testifyproject.testifyprojectclared. * Must be a supertype of org.testifyproject.testifyprojectclared type; otherwise an exception may be * thrown by serializer. */ public Class keyAs() org.testifyproject.testifyprojectfault Void.class; /** * Concrete type to serialize content value (elements * of a Collection/array, values of Maps) as, * instead of type otherwise org.testifyproject.testifyprojectclared. * Must be a supertype of org.testifyproject.testifyprojectclared type; otherwise an exception may be * thrown by serializer. */ public Class contentAs() org.testifyproject.testifyprojectfault Void.class; /** * Whether type org.testifyproject.testifyprojecttection used is dynamic or static: that is, * whether actual runtime type is used (dynamic), or just the * org.testifyproject.testifyprojectclared type (static). *

* Note that Jackson 2.3 changed org.testifyproject.testifyprojectfault to DEFAULT_TYPING, * which is roughly same as saying "whatever". * This is important as it allows avoiding accidental overrides * at property level. */ public Typing typing() org.testifyproject.testifyprojectfault Typing.DEFAULT_TYPING; // // // Annotations for specifying intermediate Converters (2.2+) /** * Which helper object is to be used to convert type into something * that Jackson knows how to serialize; either because base type * can not be serialized easily, or just to alter serialization. * * @since 2.2 */ @SuppressWarnings("rawtypes") // to work around JDK8 bug wrt Class-valued annotation properties public Class converter() org.testifyproject.testifyprojectfault Converter.None.class; /** * Similar to {@link #converter}, but used for values of structures types * (List, arrays, Maps). * Note that this property does NOT have effect when used as Class annotation; * it can only be used as property annotation: this because association between * container and value types is loose and as such converters seldom make sense * for such usage. * * @since 2.2 */ @SuppressWarnings("rawtypes") // to work around JDK8 bug wrt Class-valued annotation properties public Class contentConverter() org.testifyproject.testifyprojectfault Converter.None.class; // // // Annotation(s) for inclusion criteria /** * Which properties of annotated Bean are * to be included in serialization (has no effect on other types * like enums, primitives or collections). * Choices are "all", "properties that have value other than null" * and "properties that have non-org.testifyproject.testifyprojectfault value" (i.e. org.testifyproject.testifyprojectfault value * being property setting for a Bean constructed with org.testifyproject.testifyprojectfault no-arg * constructor, often null). *

* This property has been replaced by special-purpose {@link org.testifyproject.testifyproject.fasterxml.jackson.annotation.JsonInclude} * annotation, introduced in Jackson 2.0. *

* Note that Jackson 2.3 changed org.testifyproject.testifyprojectfault to DEFAULT_INCLUSION, * which is roughly same as saying "whatever". This is important because * it allows hierarchic org.testifyproject.testifyprojectfault values to be used. * * @org.testifyproject.testifyprojectprecated As of Jackson 2.0, this annotation has been replaced * by {@link org.testifyproject.testifyproject.fasterxml.jackson.annotation.JsonInclude} */ @Deprecated public Inclusion include() org.testifyproject.testifyprojectfault Inclusion.DEFAULT_INCLUSION; /* /********************************************************** /* Value enumerations needed /********************************************************** */ /** * Enumeration used with {@link JsonSerialize#include} property * to org.testifyproject.testifyprojectfine which properties * of Java Beans are to be included in serialization */ @Deprecated // since 2.0, marked org.testifyproject.testifyprojectprecated in 2.6 public enum Inclusion { /** * Value that indicates that properties are to be always included, * independent of value */ ALWAYS, /** * Value that indicates that only properties with non-null * values are to be included. */ NON_NULL, /** * Value that indicates that only properties that have values * that differ from org.testifyproject.testifyprojectfault settings (meaning values they have * when Bean is constructed with its no-arguments constructor) * are to be included. Value is generally not useful with * {@link java.util.Map}s, since they have no org.testifyproject.testifyprojectfault values; * and if used, works same as {@link #ALWAYS}. */ NON_DEFAULT, /** * Value that indicates that only properties that have values * that values that are null or what is considered empty are * not to be included. * Emptiness is org.testifyproject.testifyprojectfined for following type: *

    *
  • For {@link java.util.Collection}s and {@link java.util.Map}s, * method isEmpty() is called; *
  • *
  • For Java arrays, empty arrays are ones with length of 0 *
  • *
  • For Java {@link java.lang.String}s, length() is called, * and return value of 0 indicates empty String (note that String.isEmpty() * was added in Java 1.6 and as such can not be used by Jackson *
  • *
* For other types, non-null values are to be included. */ NON_EMPTY, /** * Pseudo-value that is used to indicate * "use whatever is org.testifyproject.testifyprojectfault used at higher level". * * @since 2.3 */ DEFAULT_INCLUSION ; } /** * Enumeration used with {@link JsonSerialize#typing} property * to org.testifyproject.testifyprojectfine whether type org.testifyproject.testifyprojecttection is based on dynamic runtime * type (DYNAMIC) or org.testifyproject.testifyprojectclared type (STATIC). */ public enum Typing { /** * Value that indicates that the actual dynamic runtime type is to * be used. */ DYNAMIC, /** * Value that indicates that the static org.testifyproject.testifyprojectclared type is to * be used. */ STATIC, /** * Pseudo-value that is used to indicate * "use whatever is org.testifyproject.testifyprojectfault used at higher level". * * @since 2.3 */ DEFAULT_TYPING ; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy