package com.fasterxml.jackson.databind.cfg;

import java.util.*;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonSetter;
import com.fasterxml.jackson.databind.introspect.VisibilityChecker;

Container for individual ConfigOverride values.
Since:2.8
/** * Container for individual {@link ConfigOverride} values. * * @since 2.8 */
public class ConfigOverrides implements java.io.Serializable { private static final long serialVersionUID = 1L;
Per-type override definitions
/** * Per-type override definitions */
protected Map<Class<?>, MutableConfigOverride> _overrides; // // // Global defaulting
Since:2.9
/** * @since 2.9 */
protected JsonInclude.Value _defaultInclusion;
Since:2.9
/** * @since 2.9 */
protected JsonSetter.Value _defaultSetterInfo;
Since:2.9
/** * @since 2.9 */
protected VisibilityChecker<?> _visibilityChecker;
Since:2.9
/** * @since 2.9 */
protected Boolean _defaultMergeable;
Global default setting (if any) for leniency: if disabled ({link Boolean#TRUE}), "strict" (not lenient): default setting if absence of value is considered "lenient" in Jackson 2.x. Default setting may be overridden by per-type and per-property settings.
Since:2.10
/** * Global default setting (if any) for leniency: if disabled ({link Boolean#TRUE}), * "strict" (not lenient): default setting if absence of value is considered "lenient" * in Jackson 2.x. Default setting may be overridden by per-type and per-property * settings. * * @since 2.10 */
protected Boolean _defaultLeniency; /* /********************************************************************** /* Life cycle /********************************************************************** */ public ConfigOverrides() { this(null, // !!! TODO: change to (ALWAYS, ALWAYS)? JsonInclude.Value.empty(), JsonSetter.Value.empty(), VisibilityChecker.Std.defaultInstance(), null, null ); }
Since:2.10
/** * @since 2.10 */
protected ConfigOverrides(Map<Class<?>, MutableConfigOverride> overrides, JsonInclude.Value defIncl, JsonSetter.Value defSetter, VisibilityChecker<?> defVisibility, Boolean defMergeable, Boolean defLeniency) { _overrides = overrides; _defaultInclusion = defIncl; _defaultSetterInfo = defSetter; _visibilityChecker = defVisibility; _defaultMergeable = defMergeable; _defaultLeniency = defLeniency; }
Deprecated:Since 2.10
/** * @deprecated Since 2.10 */
@Deprecated // since 2.10 protected ConfigOverrides(Map<Class<?>, MutableConfigOverride> overrides, JsonInclude.Value defIncl, JsonSetter.Value defSetter, VisibilityChecker<?> defVisibility, Boolean defMergeable) { this(overrides, defIncl, defSetter, defVisibility, defMergeable, null); } public ConfigOverrides copy() { Map<Class<?>, MutableConfigOverride> newOverrides; if (_overrides == null) { newOverrides = null; } else { newOverrides = _newMap(); for (Map.Entry<Class<?>, MutableConfigOverride> entry : _overrides.entrySet()) { newOverrides.put(entry.getKey(), entry.getValue().copy()); } } return new ConfigOverrides(newOverrides, _defaultInclusion, _defaultSetterInfo, _visibilityChecker, _defaultMergeable, _defaultLeniency); } /* /********************************************************************** /* Per-type override access /********************************************************************** */ public ConfigOverride findOverride(Class<?> type) { if (_overrides == null) { return null; } return _overrides.get(type); } public MutableConfigOverride findOrCreateOverride(Class<?> type) { if (_overrides == null) { _overrides = _newMap(); } MutableConfigOverride override = _overrides.get(type); if (override == null) { override = new MutableConfigOverride(); _overrides.put(type, override); } return override; }
Specific accessor for finding {code JsonFormat.Value} for given type, considering global default for leniency as well as per-type format override (if any).
Returns:Default format settings for type; never null.
Since:2.10
/** * Specific accessor for finding {code JsonFormat.Value} for given type, * considering global default for leniency as well as per-type format * override (if any). * * @return Default format settings for type; never null. * * @since 2.10 */
public JsonFormat.Value findFormatDefaults(Class<?> type) { if (_overrides != null) { ConfigOverride override = _overrides.get(type); if (override != null) { JsonFormat.Value format = override.getFormat(); if (format != null) { if (!format.hasLenient()) { return format.withLenient(_defaultLeniency); } return format; } } } if (_defaultLeniency == null) { return JsonFormat.Value.empty(); } return JsonFormat.Value.forLeniency(_defaultLeniency); } /* /********************************************************************** /* Global defaults access /********************************************************************** */ public JsonInclude.Value getDefaultInclusion() { return _defaultInclusion; } public JsonSetter.Value getDefaultSetterInfo() { return _defaultSetterInfo; } public Boolean getDefaultMergeable() { return _defaultMergeable; }
Since:2.10
/** * @since 2.10 */
public Boolean getDefaultLeniency() { return _defaultLeniency; }
Since:2.9
/** * @since 2.9 */
public VisibilityChecker<?> getDefaultVisibility() { return _visibilityChecker; }
Since:2.9
/** * @since 2.9 */
public void setDefaultInclusion(JsonInclude.Value v) { _defaultInclusion = v; }
Since:2.9
/** * @since 2.9 */
public void setDefaultSetterInfo(JsonSetter.Value v) { _defaultSetterInfo = v; }
Since:2.9
/** * @since 2.9 */
public void setDefaultMergeable(Boolean v) { _defaultMergeable = v; }
Since:2.10
/** * @since 2.10 */
public void setDefaultLeniency(Boolean v) { _defaultLeniency = v; }
Since:2.9
/** * @since 2.9 */
public void setDefaultVisibility(VisibilityChecker<?> v) { _visibilityChecker = v; } /* /********************************************************************** /* Helper methods /********************************************************************** */ protected Map<Class<?>, MutableConfigOverride> _newMap() { return new HashMap<Class<?>, MutableConfigOverride>(); } }