@@ -60,6 +60,11 @@ public final class SerializationConfig
60
60
*/
61
61
protected final PrettyPrinter _defaultPrettyPrinter ;
62
62
63
+ /**
64
+ * @since 2.18 (only in DeserializationConfig from 2.12)
65
+ */
66
+ protected final ConstructorDetector _ctorDetector ;
67
+
63
68
/*
64
69
/**********************************************************
65
70
/* Serialization features
@@ -120,6 +125,7 @@ public SerializationConfig(BaseSettings base,
120
125
_serFeatures = SER_FEATURE_DEFAULTS ;
121
126
_filterProvider = null ;
122
127
_defaultPrettyPrinter = DEFAULT_PRETTY_PRINTER ;
128
+ _ctorDetector = null ;
123
129
_generatorFeatures = 0 ;
124
130
_generatorFeaturesToChange = 0 ;
125
131
_formatWriteFeatures = 0 ;
@@ -151,6 +157,7 @@ protected SerializationConfig(SerializationConfig src,
151
157
_serFeatures = src ._serFeatures ;
152
158
_filterProvider = src ._filterProvider ;
153
159
_defaultPrettyPrinter = src ._defaultPrettyPrinter ;
160
+ _ctorDetector = src ._ctorDetector ;
154
161
_generatorFeatures = src ._generatorFeatures ;
155
162
_generatorFeaturesToChange = src ._generatorFeaturesToChange ;
156
163
_formatWriteFeatures = src ._formatWriteFeatures ;
@@ -170,6 +177,7 @@ private SerializationConfig(SerializationConfig src, SubtypeResolver str)
170
177
_serFeatures = src ._serFeatures ;
171
178
_filterProvider = src ._filterProvider ;
172
179
_defaultPrettyPrinter = src ._defaultPrettyPrinter ;
180
+ _ctorDetector = src ._ctorDetector ;
173
181
_generatorFeatures = src ._generatorFeatures ;
174
182
_generatorFeaturesToChange = src ._generatorFeaturesToChange ;
175
183
_formatWriteFeatures = src ._formatWriteFeatures ;
@@ -185,6 +193,7 @@ private SerializationConfig(SerializationConfig src,
185
193
_serFeatures = serFeatures ;
186
194
_filterProvider = src ._filterProvider ;
187
195
_defaultPrettyPrinter = src ._defaultPrettyPrinter ;
196
+ _ctorDetector = src ._ctorDetector ;
188
197
_generatorFeatures = generatorFeatures ;
189
198
_generatorFeaturesToChange = generatorFeatureMask ;
190
199
_formatWriteFeatures = formatFeatures ;
@@ -197,6 +206,7 @@ private SerializationConfig(SerializationConfig src, BaseSettings base)
197
206
_serFeatures = src ._serFeatures ;
198
207
_filterProvider = src ._filterProvider ;
199
208
_defaultPrettyPrinter = src ._defaultPrettyPrinter ;
209
+ _ctorDetector = src ._ctorDetector ;
200
210
_generatorFeatures = src ._generatorFeatures ;
201
211
_generatorFeaturesToChange = src ._generatorFeaturesToChange ;
202
212
_formatWriteFeatures = src ._formatWriteFeatures ;
@@ -209,6 +219,7 @@ private SerializationConfig(SerializationConfig src, FilterProvider filters)
209
219
_serFeatures = src ._serFeatures ;
210
220
_filterProvider = filters ;
211
221
_defaultPrettyPrinter = src ._defaultPrettyPrinter ;
222
+ _ctorDetector = src ._ctorDetector ;
212
223
_generatorFeatures = src ._generatorFeatures ;
213
224
_generatorFeaturesToChange = src ._generatorFeaturesToChange ;
214
225
_formatWriteFeatures = src ._formatWriteFeatures ;
@@ -221,6 +232,7 @@ private SerializationConfig(SerializationConfig src, Class<?> view)
221
232
_serFeatures = src ._serFeatures ;
222
233
_filterProvider = src ._filterProvider ;
223
234
_defaultPrettyPrinter = src ._defaultPrettyPrinter ;
235
+ _ctorDetector = src ._ctorDetector ;
224
236
_generatorFeatures = src ._generatorFeatures ;
225
237
_generatorFeaturesToChange = src ._generatorFeaturesToChange ;
226
238
_formatWriteFeatures = src ._formatWriteFeatures ;
@@ -233,6 +245,7 @@ private SerializationConfig(SerializationConfig src, PropertyName rootName)
233
245
_serFeatures = src ._serFeatures ;
234
246
_filterProvider = src ._filterProvider ;
235
247
_defaultPrettyPrinter = src ._defaultPrettyPrinter ;
248
+ _ctorDetector = src ._ctorDetector ;
236
249
_generatorFeatures = src ._generatorFeatures ;
237
250
_generatorFeaturesToChange = src ._generatorFeaturesToChange ;
238
251
_formatWriteFeatures = src ._formatWriteFeatures ;
@@ -248,6 +261,7 @@ protected SerializationConfig(SerializationConfig src, ContextAttributes attrs)
248
261
_serFeatures = src ._serFeatures ;
249
262
_filterProvider = src ._filterProvider ;
250
263
_defaultPrettyPrinter = src ._defaultPrettyPrinter ;
264
+ _ctorDetector = src ._ctorDetector ;
251
265
_generatorFeatures = src ._generatorFeatures ;
252
266
_generatorFeaturesToChange = src ._generatorFeaturesToChange ;
253
267
_formatWriteFeatures = src ._formatWriteFeatures ;
@@ -263,6 +277,7 @@ protected SerializationConfig(SerializationConfig src, SimpleMixInResolver mixin
263
277
_serFeatures = src ._serFeatures ;
264
278
_filterProvider = src ._filterProvider ;
265
279
_defaultPrettyPrinter = src ._defaultPrettyPrinter ;
280
+ _ctorDetector = src ._ctorDetector ;
266
281
_generatorFeatures = src ._generatorFeatures ;
267
282
_generatorFeaturesToChange = src ._generatorFeaturesToChange ;
268
283
_formatWriteFeatures = src ._formatWriteFeatures ;
@@ -278,6 +293,7 @@ protected SerializationConfig(SerializationConfig src, PrettyPrinter defaultPP)
278
293
_serFeatures = src ._serFeatures ;
279
294
_filterProvider = src ._filterProvider ;
280
295
_defaultPrettyPrinter = defaultPP ;
296
+ _ctorDetector = src ._ctorDetector ;
281
297
_generatorFeatures = src ._generatorFeatures ;
282
298
_generatorFeaturesToChange = src ._generatorFeaturesToChange ;
283
299
_formatWriteFeatures = src ._formatWriteFeatures ;
@@ -293,6 +309,23 @@ protected SerializationConfig(SerializationConfig src, DatatypeFeatures dtFeatur
293
309
_serFeatures = src ._serFeatures ;
294
310
_filterProvider = src ._filterProvider ;
295
311
_defaultPrettyPrinter = src ._defaultPrettyPrinter ;
312
+ _ctorDetector = src ._ctorDetector ;
313
+ _generatorFeatures = src ._generatorFeatures ;
314
+ _generatorFeaturesToChange = src ._generatorFeaturesToChange ;
315
+ _formatWriteFeatures = src ._formatWriteFeatures ;
316
+ _formatWriteFeaturesToChange = src ._formatWriteFeaturesToChange ;
317
+ }
318
+
319
+ /**
320
+ * @since 2.18
321
+ */
322
+ protected SerializationConfig (SerializationConfig src , ConstructorDetector ctorDetector )
323
+ {
324
+ super (src );
325
+ _serFeatures = src ._serFeatures ;
326
+ _filterProvider = src ._filterProvider ;
327
+ _defaultPrettyPrinter = src ._defaultPrettyPrinter ;
328
+ _ctorDetector = ctorDetector ;
296
329
_generatorFeatures = src ._generatorFeatures ;
297
330
_generatorFeaturesToChange = src ._generatorFeaturesToChange ;
298
331
_formatWriteFeatures = src ._formatWriteFeatures ;
@@ -724,6 +757,16 @@ public SerializationConfig withDefaultPrettyPrinter(PrettyPrinter pp) {
724
757
return (_defaultPrettyPrinter == pp ) ? this : new SerializationConfig (this , pp );
725
758
}
726
759
760
+ /**
761
+ * @since 2.18
762
+ */
763
+ public SerializationConfig with (ConstructorDetector ctorDetector ) {
764
+ if (_ctorDetector == ctorDetector ) {
765
+ return this ;
766
+ }
767
+ return new SerializationConfig (this , ctorDetector );
768
+ }
769
+
727
770
/*
728
771
/**********************************************************
729
772
/* Factories for objects configured here
@@ -892,6 +935,14 @@ public PrettyPrinter getDefaultPrettyPrinter() {
892
935
return _defaultPrettyPrinter ;
893
936
}
894
937
938
+ @ Override // since 2.18
939
+ public ConstructorDetector getConstructorDetector () {
940
+ if (_ctorDetector == null ) {
941
+ return ConstructorDetector .DEFAULT ;
942
+ }
943
+ return _ctorDetector ;
944
+ }
945
+
895
946
/*
896
947
/**********************************************************
897
948
/* Introspection methods
0 commit comments