package com.fasterxml.jackson.annotation;
Enumeration used to define kinds of elements (called "property accessors") that annotations like JsonAutoDetect
apply to.
In addition to method types (GETTER/IS_GETTER, SETTER, CREATOR) and the
field type (FIELD), 2 pseudo-types
are defined for convenience: ALWAYS
and NONE
. These
can be used to indicate, all or none of available method types (respectively),
for use by annotations that takes JsonMethod
argument.
/**
* Enumeration used to define kinds of elements (called "property accessors")
* that annotations like {@link JsonAutoDetect} apply to.
*<p>
* In addition to method types (GETTER/IS_GETTER, SETTER, CREATOR) and the
* field type (FIELD), 2 pseudo-types
* are defined for convenience: <code>ALWAYS</code> and <code>NONE</code>. These
* can be used to indicate, all or none of available method types (respectively),
* for use by annotations that takes <code>JsonMethod</code> argument.
*/
public enum PropertyAccessor
{
Getters are methods used to get a POJO field value for serialization,
or, under certain conditions also for de-serialization. Latter
can be used for effectively setting Collection or Map values
in absence of setters, iff returned value is not a copy but
actual value of the logical property.
Since version 1.3, this does NOT include "is getters" (methods that return boolean and named 'isXxx' for property 'xxx'); instead, IS_GETTER
is used}.
/**
* Getters are methods used to get a POJO field value for serialization,
* or, under certain conditions also for de-serialization. Latter
* can be used for effectively setting Collection or Map values
* in absence of setters, iff returned value is not a copy but
* actual value of the logical property.
*<p>
* Since version 1.3, this does <b>NOT</b> include "is getters" (methods
* that return boolean and named 'isXxx' for property 'xxx'); instead,
* {@link #IS_GETTER} is used}.
*/
GETTER,
Setters are methods used to set a POJO value for deserialization.
/**
* Setters are methods used to set a POJO value for deserialization.
*/
SETTER,
Creators are constructors and (static) factory methods used to
construct POJO instances for deserialization
/**
* Creators are constructors and (static) factory methods used to
* construct POJO instances for deserialization
*/
CREATOR,
Field refers to fields of regular Java objects. Although
they are not really methods, addition of optional field-discovery
in version 1.1 meant that there was need to enable/disable
their auto-detection, and this is the place to add it in.
/**
* Field refers to fields of regular Java objects. Although
* they are not really methods, addition of optional field-discovery
* in version 1.1 meant that there was need to enable/disable
* their auto-detection, and this is the place to add it in.
*/
FIELD,
"Is getters" are getter-like methods that are named "isXxx" (instead of "getXxx" for getters) and return boolean value (either primitive, or Boolean
). /**
* "Is getters" are getter-like methods that are named "isXxx"
* (instead of "getXxx" for getters) and return boolean value
* (either primitive, or {@link java.lang.Boolean}).
*
*/
IS_GETTER,
This pseudo-type indicates that none of accessors if affected.
/**
* This pseudo-type indicates that none of accessors if affected.
*/
NONE,
This pseudo-type indicates that all accessors are affected.
/**
* This pseudo-type indicates that all accessors are affected.
*/
ALL
;
private PropertyAccessor() { }
public boolean creatorEnabled() {
return (this == CREATOR) || (this == ALL);
}
public boolean getterEnabled() {
return (this == GETTER) || (this == ALL);
}
public boolean isGetterEnabled() {
return (this == IS_GETTER) || (this == ALL);
}
public boolean setterEnabled() {
return (this == SETTER) || (this == ALL);
}
public boolean fieldEnabled() {
return (this == FIELD) || (this == ALL);
}
}