com.fasterxml.jackson.databind.annotation.JsonAppend Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ehcache Show documentation
Show all versions of ehcache Show documentation
Ehcache is an open source, standards-based cache used to boost performance,
offload the database and simplify scalability. Ehcache is robust, proven and full-featured and
this has made it the most widely-used Java-based cache.
package com.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 com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ser.VirtualBeanPropertyWriter;
/**
* Annotation that may be used to add "virtual" properties to be written
* after regular properties (although ordering may be changed using
* both standard @JsonPropertyOrder
annotation, and
* properties of this annotation).
*
* @since 2.5
*/
@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@com.fasterxml.jackson.annotation.JacksonAnnotation
public @interface JsonAppend
{
/**
* Set of attribute-backed properties to include when serializing
* a POJO.
*/
public Attr[] attrs() default { };
/**
* Set of general virtual properties to include when serializing a POJO.
*/
public Prop[] props() default { };
/**
* Indicator used to determine whether properties defined are to be
* appended after (false) or prepended before (true) regular properties.
* Affects all kinds of properties defined using this annotation.
*/
public boolean prepend() default false;
/**
* Definition of a single attribute-backed property.
* Attribute-backed properties will be appended after (or prepended before,
* as per {@link #prepend}) regular properties
* in specified order, although their placement may be further changed
* by the usual property-ordering functionality (alphabetic sorting;
* explicit ordering)
*/
public @interface Attr
{
/**
* Name of attribute of which value to serialize. Is also used as the
* name of external property to write, unless overridden by
* assigning a value for {@link #propName()}.
*/
public String value();
/**
* Name to use for serializing value of the attribute; if not defined,
* {@link #value} will be used instead.
*/
public String propName() default "";
/**
* Optional namespace to use; only relevant for data formats that use
* namespaces (like XML).
*/
public String propNamespace() default "";
/**
* When to include attribute-property. Default value indicates that
* property should only be written if specified attribute has a non-null
* value.
*/
public JsonInclude.Include include() default JsonInclude.Include.NON_NULL;
/**
* Metadata about property, similar to
* {@link com.fasterxml.jackson.annotation.JsonProperty#required()}.
*/
public boolean required() default false;
}
/**
* Definition of a single general virtual property.
*/
public @interface Prop
{
/**
* Actual implementation class (a subtype of {@link VirtualBeanPropertyWriter})
* of the property to instantiate (using the no-argument default constructor).
*/
public Class value();
/**
* Name of the property to possibly use for serializing (although implementation
* may choose to not use this information).
*/
public String name() default "";
/**
* Optional namespace to use along with {@link #name};
* only relevant for data formats that use namespaces (like XML).
*/
public String namespace() default "";
/**
* When to include value of the property. Default value indicates that
* property should only be written if specified attribute has a non-null
* value. As with other properties, actual property implementation may or may
* not choose to use this inclusion information.
*/
public JsonInclude.Include include() default JsonInclude.Include.NON_NULL;
/**
* Metadata about property, similar to
* {@link com.fasterxml.jackson.annotation.JsonProperty#required()}.
*/
public boolean required() default false;
/**
* Nominal type of the property. Passed as type information for related
* virtual objects, and may (or may not be) used by implementation
* for choosing serializer to use.
*/
public Class type() default Object.class;
}
}