1 package com.fasterxml.jackson.databind.cfg;
2
3 import java.util.*;
4
5 import com.fasterxml.jackson.annotation.JsonFormat;
6 import com.fasterxml.jackson.annotation.JsonInclude;
7 import com.fasterxml.jackson.annotation.JsonSetter;
8 import com.fasterxml.jackson.databind.introspect.VisibilityChecker;
9
10
15 public class ConfigOverrides
16 implements java.io.Serializable
17 {
18 private static final long serialVersionUID = 1L;
19
20
23 protected Map<Class<?>, MutableConfigOverride> _overrides;
24
25
26
27
30 protected JsonInclude.Value _defaultInclusion;
31
32
35 protected JsonSetter.Value _defaultSetterInfo;
36
37
40 protected VisibilityChecker<?> _visibilityChecker;
41
42
45 protected Boolean _defaultMergeable;
46
47
55 protected Boolean _defaultLeniency;
56
57
62
63 public ConfigOverrides() {
64 this(null,
65
66 JsonInclude.Value.empty(),
67 JsonSetter.Value.empty(),
68 VisibilityChecker.Std.defaultInstance(),
69 null, null
70 );
71 }
72
73
76 protected ConfigOverrides(Map<Class<?>, MutableConfigOverride> overrides,
77 JsonInclude.Value defIncl, JsonSetter.Value defSetter,
78 VisibilityChecker<?> defVisibility, Boolean defMergeable, Boolean defLeniency)
79 {
80 _overrides = overrides;
81 _defaultInclusion = defIncl;
82 _defaultSetterInfo = defSetter;
83 _visibilityChecker = defVisibility;
84 _defaultMergeable = defMergeable;
85 _defaultLeniency = defLeniency;
86 }
87
88
91 @Deprecated
92 protected ConfigOverrides(Map<Class<?>, MutableConfigOverride> overrides,
93 JsonInclude.Value defIncl, JsonSetter.Value defSetter,
94 VisibilityChecker<?> defVisibility, Boolean defMergeable) {
95 this(overrides, defIncl, defSetter, defVisibility, defMergeable, null);
96 }
97
98 public ConfigOverrides copy()
99 {
100 Map<Class<?>, MutableConfigOverride> newOverrides;
101 if (_overrides == null) {
102 newOverrides = null;
103 } else {
104 newOverrides = _newMap();
105 for (Map.Entry<Class<?>, MutableConfigOverride> entry : _overrides.entrySet()) {
106 newOverrides.put(entry.getKey(), entry.getValue().copy());
107 }
108 }
109 return new ConfigOverrides(newOverrides,
110 _defaultInclusion, _defaultSetterInfo, _visibilityChecker,
111 _defaultMergeable, _defaultLeniency);
112 }
113
114
119
120 public ConfigOverride findOverride(Class<?> type) {
121 if (_overrides == null) {
122 return null;
123 }
124 return _overrides.get(type);
125 }
126
127 public MutableConfigOverride findOrCreateOverride(Class<?> type) {
128 if (_overrides == null) {
129 _overrides = _newMap();
130 }
131 MutableConfigOverride override = _overrides.get(type);
132 if (override == null) {
133 override = new MutableConfigOverride();
134 _overrides.put(type, override);
135 }
136 return override;
137 }
138
139
148 public JsonFormat.Value findFormatDefaults(Class<?> type) {
149 if (_overrides != null) {
150 ConfigOverride override = _overrides.get(type);
151 if (override != null) {
152 JsonFormat.Value format = override.getFormat();
153 if (format != null) {
154 if (!format.hasLenient()) {
155 return format.withLenient(_defaultLeniency);
156 }
157 return format;
158 }
159 }
160 }
161 if (_defaultLeniency == null) {
162 return JsonFormat.Value.empty();
163 }
164 return JsonFormat.Value.forLeniency(_defaultLeniency);
165 }
166
167
172
173 public JsonInclude.Value getDefaultInclusion() {
174 return _defaultInclusion;
175 }
176
177 public JsonSetter.Value getDefaultSetterInfo() {
178 return _defaultSetterInfo;
179 }
180
181 public Boolean getDefaultMergeable() {
182 return _defaultMergeable;
183 }
184
185
188 public Boolean getDefaultLeniency() {
189 return _defaultLeniency;
190 }
191
192
195 public VisibilityChecker<?> getDefaultVisibility() {
196 return _visibilityChecker;
197 }
198
199
202 public void setDefaultInclusion(JsonInclude.Value v) {
203 _defaultInclusion = v;
204 }
205
206
209 public void setDefaultSetterInfo(JsonSetter.Value v) {
210 _defaultSetterInfo = v;
211 }
212
213
216 public void setDefaultMergeable(Boolean v) {
217 _defaultMergeable = v;
218 }
219
220
223 public void setDefaultLeniency(Boolean v) {
224 _defaultLeniency = v;
225 }
226
227
230 public void setDefaultVisibility(VisibilityChecker<?> v) {
231 _visibilityChecker = v;
232 }
233
234
239
240 protected Map<Class<?>, MutableConfigOverride> _newMap() {
241 return new HashMap<Class<?>, MutableConfigOverride>();
242 }
243 }
244