com.fasterxml.jackson.databind.PropertyMetadata Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of swagger-all Show documentation
Show all versions of swagger-all Show documentation
swagger-all is a rebundled verison of Swagger as one OSGi bundle.
package com.fasterxml.jackson.databind;
/**
* Simple container class used for storing "additional" metadata about
* properties. Carved out to reduce number of distinct properties that
* actual property implementations and placeholders need to store;
* since instances are immutable, they can be freely shared.
*
* @since 2.3
*/
public class PropertyMetadata
implements java.io.Serializable
{
private static final long serialVersionUID = -1;
public final static PropertyMetadata STD_REQUIRED = new PropertyMetadata(Boolean.TRUE, null, null);
public final static PropertyMetadata STD_OPTIONAL = new PropertyMetadata(Boolean.FALSE, null, null);
public final static PropertyMetadata STD_REQUIRED_OR_OPTIONAL = new PropertyMetadata(null, null, null);
/**
* Three states: required, not required and unknown; unknown represented
* as null.
*/
protected final Boolean _required;
/**
* Optional human-readable description associated with the property.
*/
protected final String _description;
/**
* Optional index of the property within containing Object.
*
* @since 2.4
*/
protected final Integer _index;
/*
/**********************************************************
/* Construction, configuration
/**********************************************************
*/
@Deprecated // since 2.4
protected PropertyMetadata(Boolean req, String desc) { this(req, desc, null); }
protected PropertyMetadata(Boolean req, String desc, Integer index)
{
_required = req;
_description = desc;
_index = index;
}
/**
* @since 2.4 Use variant that takes three arguments.
*/
@Deprecated
public static PropertyMetadata construct(boolean req, String desc) {
return construct(req, desc, null);
}
public static PropertyMetadata construct(boolean req, String desc, Integer index) {
PropertyMetadata md = req ? STD_REQUIRED : STD_OPTIONAL;
if (desc != null) {
md = md.withDescription(desc);
}
if (index != null) {
md = md.withIndex(index);
}
return md;
}
/**
* Minor optimization: let's canonicalize back to placeholders in cases
* where there is no real data to consider
*/
protected Object readResolve()
{
if (_description == null && _index == null) {
if (_required == null) {
return STD_REQUIRED_OR_OPTIONAL;
}
return _required.booleanValue() ? STD_REQUIRED : STD_OPTIONAL;
}
return this;
}
public PropertyMetadata withDescription(String desc) {
return new PropertyMetadata(_required, desc, _index);
}
public PropertyMetadata withIndex(Integer index) {
return new PropertyMetadata(_required, _description, index);
}
public PropertyMetadata withRequired(Boolean b) {
if (b == null) {
if (_required == null) {
return this;
}
} else {
if (_required != null && _required.booleanValue() == b.booleanValue()) {
return this;
}
}
return new PropertyMetadata(b, _description, _index);
}
/*
/**********************************************************
/* Accessors
/**********************************************************
*/
public String getDescription() { return _description; }
public boolean isRequired() { return (_required != null) && _required.booleanValue(); }
public Boolean getRequired() { return _required; }
/**
* @since 2.4
*/
public Integer getIndex() { return _index; }
/**
* @since 2.4
*/
public boolean hasIndex() { return _index != null; }
}