xref: /aosp_15_r20/external/jackson-databind/release-notes/VERSION-2.x (revision 0ed15c778abdfe0f5f51f6133673e1619d6e56e4)
1 Project: jackson-databind
2 
3 ------------------------------------------------------------------------
4 === Releases ===
5 ------------------------------------------------------------------------
6 
7 2.12.0 (not yet released)
8 
9 #426: `@JsonIgnoreProperties` does not prevent Exception Conflicting getter/setter
10   definitions for property
11  (reported by gmkll@github)
12 #921: Deserialization Not Working Right with Generic Types and Builders
13  (reported by Mike G; fix contributed by Ville K)
14 #1296: Add `@JsonIncludeProperties(propertyNames)` (reverse of `@JsonIgnoreProperties`)
15  (contributed Baptiste P)
16 #1852: Allow case insensitive deserialization of String value into
17   `boolean`/`Boolean` (esp for Excel)
18  (requested by Patrick J)
19 #1886: Allow use of `@JsonFormat(with=JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES)`
20   on Class
21 #1919: Abstract class included as part of known type ids for error message
22   when using JsonSubTypes
23  (reported by Incara@github)
24 #2066: Distinguish null from empty string for UUID deserialization
25  (requested by leonshaw@github)
26 #2091: `ReferenceType` does not expose valid containedType
27  (reported by Nate B)
28 #2113: Add `CoercionConfig[s]` mechanism for configuring allowed coercions
29 #2118: `JsonProperty.Access.READ_ONLY` does not work with "getter-as-setter" `Collection`s
30  (reported by Xiang Z)
31 #2215: Support `BigInteger` and `BigDecimal` creators in `StdValueInstantiator`
32  (requested by David N, implementation contributed by Tiago M)
33 #2283: `JsonProperty.Access.READ_ONLY` fails with collections when a property name is specified
34  (reported by Yona A)
35 #2644: `BigDecimal` precision not retained for polymorphic deserialization
36  (reported by rost5000@github)
37 #2675: Support use of `Void` valued properties (`MapperFeature.ALLOW_VOID_VALUED_PROPERTIES`)
38 #2683: Explicitly fail (de)serialization of `java.time.*` types in absence of
39   registered custom (de)serializers
40 #2707: Improve description included in by `DeserializationContext.handleUnexpectedToken()`
41 #2719: `FAIL_ON_IGNORED_PROPERTIES` does not throw on `READONLY` properties with
42   an explicit name
43  (reported, fix contributed by David B)
44 #2726: Add Gradle Module Metadata for version alignment with Gradle 6
45  (contributed by Jendrik J)
46 #2732: Allow `JsonNode` auto-convert into `ArrayNode` if duplicates found (for XML)
47 #2733: Allow values of "untyped" auto-convert into `List` if duplicates found (for XML)
48 #2751: Add `ValueInstantiator.createContextual(...)
49 #2761: Support multiple names in `JsonSubType.Type`
50  (contributed by Swayam R)
51 #2776: Explicitly fail (de)serialization of `org.joda.time.*` types in absence of registered
52   custom (de)serializers
53 #2784: Trailing zeros are stripped when deserializing BigDecimal values inside a
54   @JsonUnwrapped property
55  (reported by mjustin@github)
56 #2805: Remove `JsonProcessingException` from `ObjectMapper.treeToValue()`
57 - Add `BeanDeserializerBase.isCaseInsensitive()`
58 - Some refactoring of `CollectionDeserializer` to solve CSV array handling issues
59 
60 2.11.2 (02-Aug-2020)
61 
62 #2783: Parser/Generator features not set when using `ObjectMapper.createParser()`,
63   `createGenerator()`
64 #2785: Polymorphic subtypes not registering on copied ObjectMapper (2.11.1)
65  (reported, fix contributed by Joshua S)
66 #2789: Failure to read AnnotatedField value in Jackson 2.11
67  (reported by isaki@github)
68 #2796: `TypeFactory.constructType()` does not take `TypeBindings` correctly
69  (reported by Daniel H)
70 
71 2.11.1 (25-Jun-2020)
72 
73 #2486: Builder Deserialization with JsonCreator Value vs Array
74  (reported by Ville K)
75 #2725: JsonCreator on static method in Enum and Enum used as key in map
76   fails randomly
77  (reported by Michael C)
78 #2755: `StdSubtypeResolver` is not thread safe (possibly due to copy
79   not being made with `ObjectMapper.copy()`)
80  (reported by tjwilson90@github)
81 #2757: "Conflicting setter definitions for property" exception for `Map`
82   subtype during deserialization
83  (reported by Frank S)
84 #2758: Fail to deserialize local Records
85  (reported by Johannes K)
86 #2759: Rearranging of props when property-based generator is in use leads
87   to incorrect output
88  (reported by Oleg C)
89 #2760: Jackson doesn't respect `CAN_OVERRIDE_ACCESS_MODIFIERS=false` for
90   deserializer properties
91  (reported by Johannes K)
92 #2767: `DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS` don't support `Map`
93   type field
94  (reported by abomb4@github)
95 #2770: JsonParser from MismatchedInputException cannot getText() for
96   floating-point value
97  (reported by João G)
98 
99 2.11.0 (26-Apr-2020)
100 
101 #953: i-I case conversion problem in Turkish locale with case-insensitive deserialization
102  (reported by Máté R)
103 #962: `@JsonInject` fails on trying to find deserializer even if inject-only
104  (reported by David B)
105 #1983: Polymorphic deserialization should handle case-insensitive Type Id property name
106   if `MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES` is enabled
107  (reported by soundvibe@github, fix contributed by Oleksandr P)
108 #2049: TreeTraversingParser and UTF8StreamJsonParser create contexts differently
109  (reported by Antonio P)
110 #2352: Support use of `@JsonAlias` for enum values
111  (contributed by Robert D)
112 #2365: `declaringClass` of "enum-as-POJO" not removed for `ObjectMapper` with
113   a naming strategy
114  (reported by Tynakuh@github)
115 #2480: Fix `JavaType.isEnumType()` to support sub-classes
116 #2487: BeanDeserializerBuilder Protected Factory Method for Extension
117  (contributed by Ville K)
118 #2503: Support `@JsonSerialize(keyUsing)` and `@JsonDeserialize(keyUsing)` on Key class
119 #2511: Add `SerializationFeature.WRITE_SELF_REFERENCES_AS_NULL`
120  (contributed by Joongsoo P)
121 #2515: `ObjectMapper.registerSubtypes(NamedType...)` doesn't allow registering
122   same POJO for two different type ids
123  (contributed by Joseph K)
124 #2522: `DeserializationContext.handleMissingInstantiator()` throws
125   `MismatchedInputException` for non-static inner classes
126 #2525: Incorrect `JsonStreamContext` for `TokenBuffer` and `TreeTraversingParser`
127 #2527: Add `AnnotationIntrospector.findRenameByField()` to support Kotlin's
128   "is-getter" naming convention
129 #2555: Use `@JsonProperty(index)` for sorting properties on serialization
130 #2565: Java 8 `Optional` not working with `@JsonUnwrapped` on unwrappable type
131  (reported by Haowei W)
132 #2587: Add `MapperFeature.BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES` to allow blocking
133   use of unsafe base type for polymorphic deserialization
134 #2589: `DOMDeserializer`: setExpandEntityReferences(false) may not prevent
135   external entity expansion in all cases
136  (reported by Bartosz B)
137 #2592: `ObjectMapper.setSerializationInclusion()` is ignored for `JsonAnyGetter`
138  (reported by Oleksii K)
139 #2608: `ValueInstantiationException` when deserializing using a builder and
140   `UNWRAP_SINGLE_VALUE_ARRAYS`
141  (reported by cadrake@github)
142 #2627: JsonIgnoreProperties(ignoreUnknown = true) does not work on field and method level
143  (reported by robotmrv@github)
144 #2632: Failure to resolve generic type parameters on serialization
145  (reported by Simone D)
146 #2635: JsonParser cannot getText() for input stream on MismatchedInputException
147  (reported by João G)
148 #2636: ObjectReader readValue lacks Class<T> argument
149  (contributed by Robin R)
150 #2643: Change default textual serialization of `java.util.Date`/`Calendar`
151   to include colon in timezone offset
152 #2647: Add `ObjectMapper.createParser()` and `createGenerator()` methods
153 #2657: Allow serialization of `Properties` with non-String values
154 #2663: Add new factory method for creating custom `EnumValues` to pass to `EnumDeserializer
155  (requested by Rafal K)
156 #2668: `IllegalArgumentException` thrown for mismatched subclass deserialization
157  (reported by nbruno@github)
158 #2693: Add convenience methods for creating `List`, `Map` valued `ObjectReader`s
159   (ObjectMapper.readerForListOf())
160 - Add `SerializerProvider.findContentValueSerializer()` methods
161 
162 2.10.5 (21-Jul-2020)
163 
164 #2787 (partial fix): NPE after add mixin for enum
165  (reported by Denis K)
166 
167 2.10.4 (03-May-2020)
168 
169 #2679: `ObjectMapper.readValue("123", Void.TYPE)` throws "should never occur"
170  (reported by Endre S)
171 
172 2.10.3 (03-Mar-2020)
173 
174 #2482: `JSONMappingException` `Location` column number is one line Behind the actual
175   location
176  (reported by Kamal A, fixed by Ivo S)
177 #2599: NoClassDefFoundError at DeserializationContext.<init> on Android 4.1.2
178   and Jackson 2.10.0
179  (reported by Tobias P)
180 #2602: ByteBufferSerializer produces unexpected results with a duplicated ByteBuffer
181   and a position > 0
182  (reported by Eduard T)
183 #2605: Failure to deserializer polymorphic subtypes of base type `Enum`
184  (reported by uewle@github)
185 #2610: `EXTERNAL_PROPERTY` doesn't work with `@JsonIgnoreProperties`
186  (reported, fix suggested by Alexander S)
187 
188 2.10.2 (05-Jan-2020)
189 
190 #2101: `FAIL_ON_NULL_FOR_PRIMITIVES` failure does not indicate field name in exception message
191  (reported by raderio@github)
192 
193 2.10.1 (09-Nov-2019)
194 
195 #2457: Extended enum values are not handled as enums when used as Map keys
196  (reported by Andrey K)
197 #2473: Array index missing in path of `JsonMappingException` for `Collection<String>`,
198   with custom deserializer
199  (reported by João G)
200 #2475: `StringCollectionSerializer` calls `JsonGenerator.setCurrentValue(value)`,
201   which messes up current value for sibling properties
202  (reported by Ryan B)
203 #2485: Add `uses` for `Module` in module-info
204  (contributed by Marc M)
205 #2513: BigDecimalAsStringSerializer in NumberSerializer throws IllegalStateException in 2.10
206  (reported by Johan H)
207 #2519: Serializing `BigDecimal` values inside containers ignores shape override
208  (reported by Richard W)
209 #2520: Sub-optimal exception message when failing to deserialize non-static inner classes
210  (reported by Mark S)
211 #2529: Add tests to ensure `EnumSet` and `EnumMap` work correctly with "null-as-empty"
212 #2534: Add `BasicPolymorphicTypeValidator.Builder.allowIfSubTypeIsArray()`
213 #2535: Allow String-to-byte[] coercion for String-value collections
214 
215 2.10.0 (26-Sep-2019)
216 
217 #18: Make `JsonNode` serializable
218 #1093: Default typing does not work with `writerFor(Object.class)`
219  (reported by hoomanv@github)
220 #1675: Remove "impossible" `IOException` in `readTree()` and `readValue()` `ObjectMapper`
221   methods which accept Strings
222  (requested by matthew-pwnieexpress@github)
223 #1954: Add Builder pattern for creating configured `ObjectMapper` instances
224 #1995: Limit size of `DeserializerCache`, auto-flush on exceeding
225 #2059: Remove `final` modifier for `TypeFactory`
226  (requested by Thibaut R)
227 #2077: `JsonTypeInfo` with a subtype having `JsonFormat.Shape.ARRAY` and
228   no fields generates `{}` not `[]`
229  (reported by Sadayuki F)
230 #2115: Support naive deserialization of `Serializable` values as "untyped", same
231   as `java.lang.Object`
232  (requested by Christopher S)
233 #2116: Make NumberSerializers.Base public and its inherited classes not final
234  (requested by Édouard M)
235 #2126: `DeserializationContext.instantiationException()` throws `InvalidDefinitionException`
236 #2129: Add `SerializationFeature.WRITE_ENUM_KEYS_USING_INDEX`, separate from value setting
237  (suggested by renzihui@github)
238 #2133: Improve `DeserializationProblemHandler.handleUnexpectedToken()` to allow handling of
239   Collection problems
240  (contributed by Semyon L)
241 #2149: Add `MapperFeature.ACCEPT_CASE_INSENSITIVE_VALUES`
242  (suggested by Craig P)
243 #2153: Add `JsonMapper` to replace generic `ObjectMapper` usage
244 #2164: `FactoryBasedEnumDeserializer` does not respect
245   `DeserializationFeature.WRAP_EXCEPTIONS`
246  (reported by Yiqiu H)
247 #2187: Make `JsonNode.toString()` use shared `ObjectMapper` to produce valid json
248 #2189: `TreeTraversingParser` does not check int bounds
249  (reported by Alexander S)
250 #2195: Add abstraction `PolymorphicTypeValidator`, for limiting subtypes allowed by
251   default typing, `@JsonTypeInfo`
252 #2196: Type safety for `readValue()` with `TypeReference`
253  (suggested by nguyenfilip@github)
254 #2204: Add `JsonNode.isEmpty()` as convenience alias
255 #2211: Change of behavior (2.8 -> 2.9) with `ObjectMapper.readTree(input)` with no content
256 #2217: Suboptimal memory allocation in `TextNode.getBinaryValue()`
257  (reported by Christoph B)
258 #2220: Force serialization always for `convertValue()`; avoid short-cuts
259 #2223: Add `missingNode()` method in `JsonNodeFactory`
260 #2227: Minor cleanup of exception message for `Enum` binding failure
261  (reported by RightHandedMonkey@github)
262 #2230: `WRITE_BIGDECIMAL_AS_PLAIN` is ignored if `@JsonFormat` is used
263  (reported by Pavel C)
264 #2236: Type id not provided on `Double.NaN`, `Infinity` with `@JsonTypeInfo`
265  (reported by C-B-B@github)
266 #2237: Add "required" methods in `JsonNode`: `required(String | int)`,
267   `requiredAt(JsonPointer)`
268 #2241: Add `PropertyNamingStrategy.LOWER_DOT_CASE` for dot-delimited names
269  (contributed by [email protected])
270 #2251: Getter that returns an abstract collection breaks a delegating `@JsonCreator`
271 #2265: Inconsistent handling of Collections$UnmodifiableList vs Collections$UnmodifiableRandomAccessList
272 #2273: Add basic Java 9+ module info
273 #2280: JsonMerge not work with constructor args
274  (reported by Deblock T)
275 #2309: READ_ENUMS_USING_TO_STRING doesn't support null values
276  (reported, fix suggested by Ben A)
277 #2311: Unnecessary MultiView creation for property writers
278  (suggested by Manuel H)
279 #2331: `JsonMappingException` through nested getter with generic wildcard return type
280  (reported by sunchezz89@github)
281 #2336: `MapDeserializer` can not merge `Map`s with polymorphic values
282  (reported by Robert G)
283 #2338: Suboptimal return type for `JsonNode.withArray()`
284  (reported by Victor N)
285 #2339: Suboptimal return type for `ObjectNode.set()`
286  (reported by Victor N)
287 #2348: Add sanity checks for `ObjectMapper.readXXX()` methods
288  (requested by ebundy@github)
289 #2349: Add option `DefaultTyping.EVERYTHING` to support Kotlin data classes
290 #2357: Lack of path on MismatchedInputException
291  (suggested by TheEin@github)
292 #2378: `@JsonAlias` doesn't work with AutoValue
293  (reported by David H)
294 #2390: `Iterable` serialization breaks when adding `@JsonFilter` annotation
295  (reported by Chris M)
296 #2392: `BeanDeserializerModifier.modifyDeserializer()` not applied to custom bean deserializers
297  (reported by andreasbaus@github)
298 #2393: `TreeTraversingParser.getLongValue()` incorrectly checks `canConvertToInt()`
299  (reported by RabbidDog@github)
300 #2398: Replace recursion in `TokenBuffer.copyCurrentStructure()` with iteration
301  (reported by Sam S)
302 #2415: Builder-based POJO deserializer should pass builder instance, not type,
303   to `handleUnknownVanilla()`
304  (proposed by Vladimir T, follow up to #822)
305 #2416: Optimize `ValueInstantiator` construction for default `Collection`, `Map` types
306 #2422: `scala.collection.immutable.ListMap` fails to serialize since 2.9.3
307  (reported by dejanlokar1@github)
308 #2424: Add global config override setting for `@JsonFormat.lenient()`
309 #2428: Use "activateDefaultTyping" over "enableDefaultTyping" in 2.10 with new methods
310 #2430: Change `ObjectMapper.valueToTree()` to convert `null` to `NullNode`
311 #2432: Add support for module bundles
312  (contributed by Marcos P)
313 #2433: Improve `NullNode.equals()`
314  (suggested by David B)
315 #2442: `ArrayNode.addAll()` adds raw `null` values which cause NPE on `deepCopy()`
316   and `toString()`
317  (reported, fix contributed by Hesham M)
318 #2446: Java 11: Unable to load JDK7 types (annotations, java.nio.file.Path): no Java7 support added
319  (reported by David C)
320 #2451: Add new `JsonValueFormat` value, `UUID`
321 #2453: Add `DeserializationContext.readTree(JsonParser)` convenience method
322 #2458: `Nulls` property metadata ignored for creators
323  (reported  by XakepSDK@github)
324 #2466: Didn't find class "java.nio.file.Path" below Android api 26
325  (reported by KevynBct@github)
326 #2467: Accept `JsonTypeInfo.As.WRAPPER_ARRAY` with no second argument to
327   deserialize as "null value"
328  (contributed by Martin C)
329 
330 [2.9.10.x micro-patches omitted]
331 
332 2.9.10 (21-Sep-2019)
333 
334 #2331: `JsonMappingException` through nested getter with generic wildcard return type
335 #2334: Block one more gadget type (CVE-2019-12384)
336 #2341: Block one more gadget type (CVE-2019-12814)
337 #2374: `ObjectMapper. getRegisteredModuleIds()` throws NPE if no modules registered
338 #2387: Block yet another deserialization gadget (CVE-2019-14379)
339 #2389: Block yet another deserialization gadget (CVE-2019-14439)
340  (reported by xiexq)
341 #2404: FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY setting ignored when
342   creator properties are buffered
343  (contributed by Joe B)
344 #2410: Block one more gadget type (CVE-2019-14540)
345   (reported by iSafeBlue@github / blue@ixsec.org)
346 #2420: Block one more gadget type (no CVE allocated yet)
347   (reported by crazylirui@gmail.com)
348 #2449: Block one more gadget type (CVE-2019-14540)
349   (reported by kingkk)
350 #2460: Block one more gadget type (ehcache, CVE-2019-17267)
351   (reported by Fei Lu)
352 #2462: Block two more gadget types (commons-configuration)
353 #2469: Block one more gadget type (xalan2)
354 
355 2.9.9 (16-May-2019)
356 
357 #1408: Call to `TypeVariable.getBounds()` without synchronization unsafe on some platforms
358  (reported by Thomas K)
359 #2221: `DeserializationProblemHandler.handleUnknownTypeId()` returning `Void.class`,
360   enableDefaultTyping causing NPE
361  (reported by MeyerNils@github)
362 #2251: Getter that returns an abstract collection breaks a delegating `@JsonCreator`
363 #2265: Inconsistent handling of Collections$UnmodifiableList vs Collections$UnmodifiableRandomAccessList
364  (reported by Joffrey B)
365 #2299: Fix for using jackson-databind in an OSGi environment under Android
366  (contributed by Christoph F)
367 #2303: Deserialize null, when java type is "TypeRef of TypeRef of T", does not provide "Type(Type(null))"
368  (reported by Cyril M)
369 #2324: `StringCollectionDeserializer` fails with custom collection
370  (reported byb Daniil B)
371 #2326: Block one more gadget type (CVE-2019-12086)
372 - Prevent String coercion of `null` in `WritableObjectId` when calling `JsonGenerator.writeObjectId()`,
373   mostly relevant for formats like YAML that have native Object Ids
374 
375 2.9.8 (15-Dec-2018)
376 
377 #1662: `ByteBuffer` serialization is broken if offset is not 0
378  (reported by j-baker@github)
379 #2155: Type parameters are checked for equality while isAssignableFrom expected
380  (reported by frankfiedler@github)
381 #2167: Large ISO-8601 Dates are formatted/serialized incorrectly
382 #2181: Don't re-use dynamic serializers for property-updating copy constructors
383  (suggested by Pavel N)
384 #2183: Base64 JsonMappingException: Unexpected end-of-input
385  (reported by ViToni@github)
386 #2186: Block more classes from polymorphic deserialization (CVE-2018-19360,
387   CVE-2018-19361, CVE-2018-19362)
388  (reported by Guixiong Wu)
389 #2197: Illegal reflective access operation warning when using `java.lang.Void`
390   as value type
391  (reported by René K)
392 #2202: StdKeyDeserializer Class method _getToStringResolver is slow causing Thread Block
393  (reported by sushobhitrajan@github)
394 
395 2.9.7 (19-Sep-2018)
396 
397 #2060: `UnwrappingBeanPropertyWriter` incorrectly assumes the found serializer is
398   of type `UnwrappingBeanSerializer`
399  (reported by Petar T)
400 #2064: Cannot set custom format for `SqlDateSerializer` globally
401  (reported by Brandon K)
402 #2079: NPE when visiting StaticListSerializerBase
403  (reported by WorldSEnder@github)
404 #2082: `FactoryBasedEnumDeserializer` should be cachable
405 #2088: `@JsonUnwrapped` fields are skipped when using `PropertyBasedCreator` if
406   they appear after the last creator property
407  (reported, fix contributed by 6bangs@github)
408 #2096: `TreeTraversingParser` does not take base64 variant into account
409  (reported by tangiel@github)
410 #2097: Block more classes from polymorphic deserialization (CVE-2018-14718
411   - CVE-2018-14721)
412 #2109: Canonical string for reference type is built incorrectly
413  (reported by svarzee@github)
414 #2120: `NioPathDeserializer` improvement
415  (contributed by Semyon L)
416 #2128: Location information included twice for some `JsonMappingException`s
417 
418 2.9.6 (12-Jun-2018)
419 
420 #955: Add `MapperFeature.USE_BASE_TYPE_AS_DEFAULT_IMPL` to use declared base type
421    as `defaultImpl` for polymorphic deserialization
422   (contributed by mikeldpl@github)
423 #1328: External property polymorphic deserialization does not work with enums
424 #1565: Deserialization failure with Polymorphism using JsonTypeInfo `defaultImpl`,
425   subtype as target
426 #1964: Failed to specialize `Map` type during serialization where key type
427   incompatibility overidden via "raw" types
428  (reported by ptirador@github)
429 #1990: MixIn `@JsonProperty` for `Object.hashCode()` is ignored
430  (reported by Freddy B)
431 #1991: Context attributes are not passed/available to custom serializer if object is in POJO
432  (reported by dletin@github)
433 #1998: Removing "type" attribute with Mixin not taken in account if
434   using ObjectMapper.copy()
435  (reported by SBKila@github)
436 #1999: "Duplicate property" issue should mention which class it complains about
437  (reported by Ondrej Z)
438 #2001: Deserialization issue with `@JsonIgnore` and `@JsonCreator` + `@JsonProperty`
439   for same property name
440  (reported, fix contributed by Jakub S)
441 #2015: `@Jsonsetter with Nulls.SKIP` collides with
442   `DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL` when parsing enum
443  (reported by ndori@github)
444 #2016: Delegating JsonCreator disregards JsonDeserialize info
445  (reported by Carter K)
446 #2019: Abstract Type mapping in 2.9 fails when multiple modules are registered
447  (reported by asger82@github)
448 #2021: Delegating JsonCreator disregards `JsonDeserialize.using` annotation
449 #2023: `JsonFormat.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT` not working
450   with `null` coercion with `@JsonSetter`
451 #2027: Concurrency error causes `IllegalStateException` on `BeanPropertyMap`
452  (reported by franboragina@github)
453 #2032: CVE-2018-11307: Potential information exfiltration with default typing, serialization gadget from MyBatis
454  (reported by Guixiong Wu)
455 #2034: Serialization problem with type specialization of nested generic types
456  (reported by Reinhard P)
457 #2038: JDK Serializing and using Deserialized `ObjectMapper` loses linkage
458   back from `JsonParser.getCodec()`
459  (reported by Chetan N)
460 #2051: Implicit constructor property names are not renamed properly with
461   `PropertyNamingStrategy`
462 #2052: CVE-2018-12022: Block polymorphic deserialization of types from Jodd-db library
463  (reported by Guixiong Wu)
464 #2058: CVE-2018-12023: Block polymorphic deserialization of types from Oracle JDBC driver
465  (reported by Guixiong Wu)
466 
467 2.9.5 (26-Mar-2018)
468 
469 #1911: Allow serialization of `BigDecimal` as String, using
470   `@JsonFormat(shape=Shape.String)`, config overrides
471  (suggested by cen1@github)
472 #1912: `BeanDeserializerModifier.updateBuilder()` not work to set custom
473   deserializer on a property (since 2.9.0)
474  (contributed by Deblock T)
475 #1931: Two more `c3p0` gadgets to exploit default typing issue
476  (reported by [email protected])
477 #1932: `EnumMap` cannot deserialize with type inclusion as property
478 #1940: `Float` values with integer value beyond `int` lose precision if
479   bound to `long`
480  (reported by Aniruddha M)
481 #1941: `TypeFactory.constructFromCanonical()` throws NPE for Unparameterized
482   generic canonical strings
483  (reported by ayushgp@github)
484 #1947: `MapperFeature.AUTO_DETECT_XXX` do not work if all disabled
485  (reported by Timur S)
486 #1977: Serializing an Iterator with multiple sub-types fails after upgrading to 2.9.x
487  (reported by ssivanand@github)
488 #1978: Using @JsonUnwrapped annotation in builderdeserializer hangs in infinite loop
489  (reported by roeltje25@github)
490 
491 2.9.4 (24-Jan-2018)
492 
493 #1382: `@JsonProperty(access=READ_ONLY)` unxepected behaviour with `Collections`
494  (reported by hexfaker@github)
495 #1673: Serialising generic value classes via Reference Types (like Optional) fails
496   to include type information
497  (reported by Pier-Luc W)
498 #1729: Integer bounds verification when calling `TokenBuffer.getIntValue()`
499  (reported by Kevin G)
500 #1853: Deserialise from Object (using Creator methods) returns field name instead of value
501  (reported by Alexander S)
502 #1854: NPE deserializing collection with `@JsonCreator` and `ACCEPT_CASE_INSENSITIVE_PROPERTIES`
503  (reported by rue-jw@github)
504 #1855: Blacklist for more serialization gadgets (dbcp/tomcat, spring, CVE-2017-17485)
505 #1859: Issue handling unknown/unmapped Enum keys
506  (reported by remya11@github)
507 #1868: Class name handling for JDK unmodifiable Collection types changed
508   (reported by Rob W)
509 #1870: Remove `final` on inherited methods in `BuilderBasedDeserializer` to allow
510   overriding by subclasses
511   (requested by Ville K)
512 #1878: `@JsonBackReference` property is always ignored when deserializing since 2.9.0
513  (reported by reda-alaoui@github)
514 #1895: Per-type config override "JsonFormat.Shape.OBJECT" for Map.Entry not working
515  (reported by mcortella@github)
516 #1899: Another two gadgets to exploit default typing issue in jackson-databind
517  (reported by OneSourceCat@github)
518 #1906: Add string format specifier for error message in `PropertyValueBuffer`
519  (reported by Joe S)
520 #1907: Remove `getClass()` from `_valueType` argument for error reporting
521  (reported by Joe S)
522 
523 2.9.3 (09-Dec-2017)
524 
525 #1604: Nested type arguments doesn't work with polymorphic types
526 #1794: `StackTraceElementDeserializer` not working if field visibility changed
527  (reported by dsingley@github)
528 #1799: Allow creation of custom sub-types of `NullNode`, `BooleanNode`, `MissingNode`
529 #1804: `ValueInstantiator.canInstantiate()` ignores `canCreateUsingArrayDelegate()`
530  (reported byb henryptung@github)
531 #1807: Jackson-databind caches plain map deserializer and use it even map has `@JsonDeserializer`
532  (reported by lexas2509@github)
533 #1823: ClassNameIdResolver doesn't handle resolve Collections$SingletonMap & Collections$SingletonSet
534  (reported by Peter J)
535 #1831: `ObjectReader.readValue(JsonNode)` does not work correctly with polymorphic types,
536   value to update
537  (reported by basmastr@github)
538 #1835: ValueInjector break from 2.8.x to 2.9.x
539  (repoted by kinigitbyday@github)
540 #1842: `null` String for `Exception`s deserialized as String "null" instead of `null`
541  (reported by ZeleniJure@github)
542 #1843: Include name of unsettable property in exception from `SetterlessProperty.set()`
543  (suggested by andreh7@github)
544 #1844: Map "deep" merge only adds new items, but not override existing values
545  (reported by alinakovalenko@github)
546 
547 2.9.2 (14-Oct-2017)
548 
549 (possibly) #1756: Deserialization error with custom `AnnotationIntrospector`
550  (reported by Daniel N)
551 #1705: Non-generic interface method hides type resolution info from generic base class
552   (reported by Tim B)
553  NOTE: was originally reported fixed in 2.9.1 -- turns out it wasn't.
554 #1767: Allow `DeserializationProblemHandler` to respond to primitive types
555  (reported by nhtzr@github)
556 #1768: Improve `TypeFactory.constructFromCanonical()` to work with
557   `java.lang.reflect.Type.getTypeName()' format
558  (suggested by Luís C)
559 #1771: Pass missing argument for string formatting in `ObjectMapper`
560  (reported by Nils B)
561 #1788: `StdDateFormat._parseAsISO8601()` does not parse "fractional" timezone correctly
562 #1793: `java.lang.NullPointerException` in `ObjectArraySerializer.acceptJsonFormatVisitor()`
563   for array value with `@JsonValue`
564  (reported by Vincent D)
565 
566 2.9.1 (07-Sep-2017)
567 
568 #1725: `NPE` In `TypeFactory. constructParametricType(...)`
569  (reported by ctytgat@github)
570 #1730: InvalidFormatException` for `JsonToken.VALUE_EMBEDDED_OBJECT`
571  (reported by zigzago@github)
572 #1744: StdDateFormat: add option to serialize timezone offset with a colon
573  (contributed by Bertrand R)
574 #1745: StdDateFormat: accept and truncate millis larger than 3 digits
575  (suggested by Bertrand R)
576 #1749: StdDateFormat: performance improvement of '_format(..)' method
577  (contributed by Bertrand R)
578 #1759: Reuse `Calendar` instance during parsing by `StdDateFormat`
579  (contributed by Bertrand R)
580 - Fix `DelegatingDeserializer` constructor to pass `handledType()` (and
581   not type of deserializer being delegated to!)
582 - Add `Automatic-Module-Name` ("com.fasterxml.jackson.databind") for JDK 9 module system
583 
584 2.9.0 (30-Jul-2017)
585 
586 #219: SqlDateSerializer does not obey SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS
587  (reported by BrentDouglas@github)
588 #265: Add descriptive exception for attempts to use `@JsonWrapped` via Creator parameter
589 #291: @JsonTypeInfo with As.EXTERNAL_PROPERTY doesn't work if external type property
590   is referenced more than once
591  (reported by Starkom@github)
592 #357: StackOverflowError with contentConverter that returns array type
593  (reported by Florian S)
594 #383: Recursive `@JsonUnwrapped` (`child` with same type) fail: "No _valueDeserializer assigned"
595  (reported by tdavis@github)
596 #403: Make FAIL_ON_NULL_FOR_PRIMITIVES apply to primitive arrays and other types that wrap primitives
597  (reported by Harleen S)
598 #476: Allow "Serialize as POJO" using `@JsonFormat(shape=Shape.OBJECT)` class annotation
599 #507: Support for default `@JsonView` for a class
600  (suggested by Mark W)
601 #687: Exception deserializing a collection @JsonIdentityInfo and a property based creator
602 #865: `JsonFormat.Shape.OBJECT` ignored when class implements `Map.Entry`
603 #888: Allow specifying custom exclusion comparator via `@JsonInclude`,
604   using `JsonInclude.Include.CUSTOM`
605 #994: `DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS` only works for POJOs, Maps
606 #1029: Add a way to define property name aliases
607 #1035: `@JsonAnySetter` assumes key of `String`, does not consider declared type.
608  (reported by Michael F)
609 #1060: Allow use of `@JsonIgnoreProperties` for POJO-valued arrays, `Collection`s
610 #1106: Add `MapperFeature.ALLOW_COERCION_OF_SCALARS` for enabling/disabling coercions
611 #1284: Make `StdKeySerializers` use new `JsonGenerator.writeFieldId()` for `int`/`long` keys
612 #1320: Add `ObjectNode.put(String, BigInteger)`
613  (proposed by Jan L)
614 #1341: `DeserializationFeature.FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY`
615  (contributed by Connor K)
616 #1347: Extend `ObjectMapper.configOverrides()` to allow changing visibility rules
617 #1356: Differentiate between input and code exceptions on deserialization
618  (suggested by Nick B)
619 #1369: Improve `@JsonCreator` detection via `AnnotationIntrospector`
620  by passing `MappingConfig`
621 #1371: Add `MapperFeature.INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIES` to allow
622  disabling use of `@CreatorProperties` as explicit `@JsonCreator` equivalent
623 #1376: Add ability to disable JsonAnySetter/JsonAnyGetter via mixin
624  (suggested by brentryan@github)
625 #1399: Add support for `@JsonMerge` to allow "deep update"
626 #1402: Use `@JsonSetter(nulls=...)` to specify handling of `null` values during deserialization
627 #1406: `ObjectMapper.readTree()` methods do not return `null` on end-of-input
628  (reported by Fabrizio C)
629 #1407: `@JsonFormat.pattern` is ignored for `java.sql.Date` valued properties
630  (reported by sangpire@github)
631 #1415: Creating CollectionType for non generic collection class broken
632 #1428: Allow `@JsonValue` on a field, not just getter
633 #1434: Explicitly pass null on invoke calls with no arguments
634  (contributed by Emiliano C)
635 #1433: `ObjectMapper.convertValue()` with null does not consider null conversions
636   (`JsonDeserializer.getNullValue()`)
637  (contributed by jdmichal@github)
638 #1440: Wrong `JsonStreamContext` in `DeserializationProblemHandler` when reading
639   `TokenBuffer` content
640  (reported by Patrick G)
641 #1444: Change `ObjectMapper.setSerializationInclusion()` to apply to content inclusion too
642 #1450: `SimpleModule.addKeyDeserializer()' should throw `IllegalArgumentException` if `null`
643   reference of `KeyDeserializer` passed
644  (suggested by PawelJagus@github)
645 #1454: Support `@JsonFormat.lenient` for `java.util.Date`, `java.util.Calendar`
646 #1474: Replace use of `Class.newInstance()` (deprecated in Java 9) with call via Constructor
647 #1480: Add support for serializing `boolean`/`Boolean` as number (0 or 1)
648  (suggested by jwilmoth@github)
649 #1520: Case insensitive enum deserialization with `MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS`
650  (contributed by Ana-Eliza B)
651 #1522: Global `@JsonInclude(Include.NON_NULL)` for all properties with a specific type
652  (contributed by Carsten W)
653 #1544: EnumMapDeserializer assumes a pure EnumMap and does not support EnumMap derived classes
654  (reported by Lyor G)
655 #1550: Unexpected behavior with `@JsonInclude(JsonInclude.Include.NON_EMPTY)` and
656  `java.util.Date` serialization
657 #1551: `JsonMappingException` with polymorphic type and `JsonIdentityInfo` when basic type is abstract
658  (reported by acm073@github)
659 #1552: Map key converted to byte array is not serialized as base64 string
660  (reported by nmatt@github)
661 #1554: Support deserialization of `Shape.OBJECT` ("as POJO") for `Map`s (and map-like types)
662 #1556: Add `ObjectMapper.updateValue()` method to update instance with given overrides
663  (suggested by syncer@github)
664 #1583: Add a `DeserializationFeature.FAIL_ON_TRAILING_TOKENS` to force reading of the
665   whole input as single value
666 #1592: Add support for handling primitive/discrepancy problem with type refinements
667 #1605: Allow serialization of `InetAddress` as simple numeric host address
668  (requested by Jared J)
669 #1616: Extraneous type id mapping added for base type itself
670 #1619: By-pass annotation introspection for array types
671 #1637: `ObjectReader.at()` with `JsonPointer` stops after first collection
672  (reported by Chris P)
673 #1653: Convenience overload(s) for ObjectMapper#registerSubtypes
674 #1655: `@JsonAnyGetter` uses different `bean` parameter in `SimpleBeanPropertyFilter`
675  (reported by georgeflugq@github)
676 #1678: Rewrite `StdDateFormat` ISO-8601 handling functionality
677 #1684: Rewrite handling of type ids to let `JsonGenerator` handle (more of) details
678 #1688: Deserialization fails for `java.nio.file.Path` implementations when default typing
679   enabled
680  (reported by Christian B)
681 #1690: Prevent use of quoted number (index) for Enum deserialization via
682   `MapperFeature.ALLOW_COERCION_OF_SCALARS`
683  (requested by magdel@github)
684 
685 2.8.11.4 (25-Jul-2019)
686 
687 #2334: Block one more gadget type (CVE-2019-12384)
688 #2341: Block one more gadget type (CVE-2019-12814)
689 #2387: Block one more gadget type (CVE-2019-14379)
690 #2389: Block one more gadget type (CVE-2019-14439)
691  (reported by xiexq)
692 
693 2.8.11.3 (23-Nov-2018)
694 
695 #2326: Block one more gadget type (CVE-2019-12086)
696  (contributed by MaximilianTews@github)
697 
698 2.8.11.2 (08-Jun-2018)
699 
700 #1941: `TypeFactory.constructFromCanonical()` throws NPE for Unparameterized
701   generic canonical strings
702  (reported by ayushgp@github)
703 #2032: CVE-2018-11307: Potential information exfiltration with default typing, serialization gadget from MyBatis
704  (reported by Guixiong Wu)
705 #2052: CVE-2018-12022: Block polymorphic deserialization of types from Jodd-db library
706  (reported by Guixiong Wu)
707 #2058: CVE-2018-12023: Block polymorphic deserialization of types from Oracle JDBC driver
708  (reported by Guixiong Wu)
709 
710 2.8.11.1 (11-Feb-2018)
711 
712 #1872: `NullPointerException` in `SubTypeValidator.validateSubType` when
713   validating Spring interface
714  (reported by Rob W)
715 #1899: Another two gadgets to exploit default typing issue (CVE-2018-5968)
716  (reported by OneSourceCat@github)
717 #1931: Two more `c3p0` gadgets to exploit default typing issue (c3p0, CVE-2018-7489)
718 
719 2.8.11 (24-Dec-2017)
720 
721 #1604: Nested type arguments doesn't work with polymorphic types
722 #1680: Blacklist couple more types for deserialization
723 #1767: Allow `DeserializationProblemHandler` to respond to primitive types
724  (reported by nhtzr@github)
725 #1768: Improve `TypeFactory.constructFromCanonical()` to work with
726   `java.lang.reflect.Type.getTypeName()` format
727 #1804: `ValueInstantiator.canInstantiate()` ignores `canCreateUsingArrayDelegate()`
728  (reported by henryptung@github)
729 #1807: Jackson-databind caches plain map deserializer and use it even map has `@JsonDeserializer`
730  (reported by lexas2509@github)
731 #1855: Blacklist for more serialization gadgets (dbcp/tomcat, spring / CVE-2017-17485)
732 
733 2.8.10 (24-Aug-2017)
734 
735 #1657: `StdDateFormat` deserializes dates with no tz/offset as UTC instead of
736   configured timezone
737  (reported by Bertrand R)
738 #1680: Blacklist couple more types for deserialization
739 #1658: Infinite recursion when deserializing a class extending a Map,
740   with a recursive value type
741  (reported by Kevin G)
742 #1679: `StackOverflowError` in Dynamic `StdKeySerializer`
743 #1711: Delegating creator fails to work for binary data (`byte[]`) with
744  binary formats (CBOR, Smile)
745 #1735: Missing type checks when using polymorphic type ids
746  (reported by Lukas Euler)
747 #1737: Block more JDK types from polymorphic deserialization (CVE 2017-15095)
748 
749 2.8.9 (12-Jun-2017)
750 
751 #1595: `JsonIgnoreProperties.allowSetters` is not working in Jackson 2.8
752  (reported by Javy L)
753 #1597: Escape JSONP breaking characters
754  (contributed by Marco C)
755 #1629: `FromStringDeserializer` ignores registered `DeserializationProblemHandler`
756   for `java.util.UUID`
757  (reported by Andrew J)
758 #1642: Support `READ_UNKNOWN_ENUM_VALUES_AS_NULL` with `@JsonCreator`
759  (contributed by Joe L)
760 #1647: Missing properties from base class when recursive types are involved
761  (reported by Slobodan P)
762 #1648: `DateTimeSerializerBase` ignores configured date format when creating contextual
763  (reported by Bertrand R)
764 #1651: `StdDateFormat` fails to parse 'zulu' date when TimeZone other than UTC
765  (reported by Bertrand R)
766 
767 2.8.8.1 (19-Apr-2017)
768 
769 #1585: Invoke ServiceLoader.load() inside of a privileged block when loading
770   modules using `ObjectMapper.findModules()`
771  (contributed by Ivo S)
772 #1599: Jackson Deserializer security vulnerability (CVE-2017-7525)
773  (reported by ayound@github)
774 #1607: @JsonIdentityReference not used when setup on class only
775  (reported by vboulaye@github)
776 
777 2.8.8 (05-Apr-2017)
778 
779 (partial) #994: `DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS` only works for POJOs, Maps
780 #1345: `@JsonProperty(access = READ_ONLY)` together with generated constructor (Lombok) causes
781  exception: "Could not find creator property with name ..."
782  (reported by Raniz85@github)
783 #1533: `AsPropertyTypeDeserializer` ignores `DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT`
784 #1543: JsonFormat.Shape.NUMBER_INT does not work when defined on enum type in 2.8
785  (reported by Alex P)
786 #1570: `Enum` key for `Map` ignores `SerializationFeature.WRITE_ENUMS_USING_INDEX`
787  (reported by SolaKun@github)
788 #1573: Missing properties when deserializing using a builder class with a non-default
789   constructor and a mutator annotated with `@JsonUnwrapped`
790  (reported by Joshua J)
791 #1575: Problem with `@JsonIgnoreProperties` on recursive property (regression in 2.8)
792  (reported by anujkumar04@github)
793 - Minor fix to creation of `PropertyMetadata`, had one path that could lead to NPE
794 
795 2.8.7 (21-Feb-2017)
796 
797 #935: `@JsonProperty(access = Access.READ_ONLY)` - unexpected behaviour
798 #1317: '@JsonIgnore' annotation not working with creator properties, serialization
799 
800 2.8.6 (12-Jan-2017)
801 
802 #349: @JsonAnySetter with @JsonUnwrapped: deserialization fails with arrays
803  (reported by hdave@github)
804 #1388: `@JsonIdentityInfo`: id has to be the first key in deserialization when
805   deserializing with `@JsonCreator`
806  (reported by moodysalem@github)
807 #1425: `JsonNode.binaryValue()` ignores illegal character if it's the last one
808  (reported by binoternary@github)
809 #1453: `UntypedObjectDeserializer` does not retain `float` type (over `double`)
810 #1456: `TypeFactory` type resolution broken in 2.7 for generic types
811    when using `constructType` with context
812 #1473: Add explicit deserializer for `StringBuilder` due to Java 9 changes
813 #1493: `ACCEPT_CASE_INSENSITIVE_PROPERTIES` fails with `@JsonUnwrapped`
814 
815 2.8.5 (14-Nov-2016)
816 
817 #1417: Further issues with `@JsonInclude` with `NON_DEFAULT`
818 #1421: ACCEPT_SINGLE_VALUE_AS_ARRAY partially broken in 2.7.x, 2.8.x
819 #1429: `StdKeyDeserializer` can erroneously use a static factory method
820   with more than one argument
821 #1432: Off by 1 bug in PropertyValueBuffer
822  (reported by Kevin D)
823 #1438: `ACCEPT_CASE_INSENSITIVE_PROPERTIES` is not respected for creator properties
824  (reported by Jayson M)
825 #1439: NPE when using with filter id, serializing `java.util.Map` types
826 #1441: Failure with custom Enum key deserializer, polymorphic types
827  (reported by Nathanial O)
828 #1445: Map key deserializerModifiers ignored
829  (reported by alfonsobonso@github)
830 - Improvements to #1411 fix to ensure consistent `null` key handling
831 
832 2.8.4 (14-Oct-2016)
833 
834 #466: Jackson ignores Type information when raw return type is BigDecimal or BigInteger
835 #1001: Parameter names module gets confused with delegate creator which is a static method
836 #1324: Boolean parsing with `StdDeserializer` is too slow with huge integer value
837  (reported by pavankumar-parankusam@github)
838 #1383: Problem with `@JsonCreator` with 1-arg factory-method, implicit param names
839 #1384: `@JsonDeserialize(keyUsing = ...)` does not work correctly together with
840   DefaultTyping.NON_FINAL
841  (reported by Oleg Z)
842 #1385: Polymorphic type lost when using `@JsonValue`
843  (reported by TomMarkuske@github)
844 #1389 Problem with handling of multi-argument creator with Enums
845  (fix contributed by Pavel P)
846 #1392: Custom UnmodifiableSetMixin Fails in Jackson 2.7+ but works in Jackson 2.6
847  (reported by Rob W)
848 #1395: Problems deserializing primitive `long` field while using `TypeResolverBuilder`
849  (reported by UghZan3@github)
850 #1403: Reference-chain hints use incorrect class-name for inner classes
851  (reported by Josh G)
852 #1411: MapSerializer._orderEntries should check for null keys
853  (reported by Jörn H)
854 
855 2.8.3 (17-Sep-2016)
856 
857 #1351: `@JsonInclude(NON_DEFAULT)` doesn't omit null fields
858  (reported by Gili T)
859 #1353: Improve error-handling for `java.net.URL` deserialization
860 #1361: Change `TokenBuffer` to use new `writeEmbeddedObject()` if possible
861 
862 2.8.2 (30-Aug-2016)
863 
864 #1315: Binding numeric values can BigDecimal lose precision
865  (reported by Andrew S)
866 #1327: Class level `@JsonInclude(JsonInclude.Include.NON_EMPTY)` is ignored
867  (reported by elruwen@github)
868 #1335: Unconditionally call `TypeIdResolver.getDescForKnownTypeIds`
869  (contributed by Chris J-Y)
870 
871 2.8.1 (20-Jul-2016)
872 
873 #1256: `Optional.empty()` not excluded if property declared with type `Object`
874 #1288: Type id not exposed for `JsonTypeInfo.As.EXTERNAL_PROPERTY` even when `visible` set to `true`
875  (reported by libetl@github)
876 #1289: Optimize construction of `ArrayList`, `LinkedHashMap` instances
877 #1291: Backward-incompatible behaviour of 2.8: deserializing enum types
878    with two static factory methods fail by default
879 #1297: Deserialization of generic type with Map.class
880  (reported by Arek G)
881 #1302: NPE for `ResolvedRecursiveType` in 2.8.0 due to caching
882 
883 2.8.0 (04-Jul-2016)
884 
885 #621: Allow definition of "ignorable types" without annotation (using
886   `Mapper.configOverride(type).setIsIgnoredType(true)`
887 #867: Support `SerializationFeature.WRITE_EMPTY_JSON_ARRAYS ` for `JsonNode`
888 #903: Add `JsonGenerator` reference to `SerializerProvider`
889 #931: Add new method in `Deserializers.Base` to support `ReferenceType`
890 #960: `@JsonCreator` not working on a factory with no arguments for an enum type
891  (reported by Artur J)
892 #990: Allow failing on `null` values for creator (add
893   `DeserializationFeature.FAIL_ON_NULL_CREATOR_PROPERTIES`)
894  (contributed by mkokho@github)
895 #999: External property is not deserialized
896  (reported by Aleksandr O)
897 #1017: Add new mapping exception type ('InvalidTypeIdException') for subtype resolution errors
898  (suggested by natnan@github)
899 #1028: Ignore USE_BIG_DECIMAL_FOR_FLOATS for NaN/Infinity
900  (reported by Vladimir K, lightoze@github)
901 #1047: Allow use of `@JsonAnySetter` on a Map-valued field, no need for setter
902 #1082: Can not use static Creator factory methods for `Enum`s, with JsonCreator.Mode.PROPERTIES
903  (contributed by Lokesh K)
904 #1084: Change `TypeDeserializerBase` to take `JavaType` for `defaultImpl`, NOT `Class`
905 #1126: Allow deserialization of unknown Enums using a predefined value
906  (contributed by Alejandro R)
907 #1136: Implement `TokenBuffer.writeEmbeddedObject(Object)`
908  (suggested by Gregoire C, gcxRun@github)
909 #1165: CoreXMLDeserializers does not handle time-only XMLGregorianCalendars
910  (reported, contributed fix by Ross G)
911 #1181: Add the ability to specify the initial capacity of the ArrayNode
912  (suggested by Matt V, mveitas@github)
913 #1184: Allow overriding of `transient` with explicit inclusion with `@JsonProperty`
914  (suggested by Maarten B)
915 #1187: Refactor `AtomicReferenceDeserializer` into `ReferenceTypeDeserializer`
916 #1204: Add a convenience accessor `JavaType.hasContentType()` (true for container or reference type)
917 #1206: Add "anchor type" member for `ReferenceType`
918 #1211: Change `JsonValueSerializer` to get `AnnotatedMethod`, not "raw" method
919 #1217: `@JsonIgnoreProperties` on Pojo fields not working for deserialization
920  (reported by Lokesh K)
921 #1221: Use `Throwable.addSuppressed()` directly and/or via try-with-resources
922 #1232: Add support for `JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES`
923 #1233: Add support for `JsonFormat.Feature.WRITE_SORTED_MAP_ENTRIES`
924 #1235: `java.nio.file.Path` support incomplete
925  (reported by, fix contributed by Benson M)
926 #1261: JsonIdentityInfo broken deserialization involving forward references and/or cycles
927  (reported by, fix contributed by Ari F)
928 #1270: Generic type returned from type id resolver seems to be ignored
929  (reported by Benson M)
930 #1277: Add caching of resolved generic types for `TypeFactory`
931  (requested by Andriy P)
932 
933 2.7.9.5 (23-Nov-2018)
934 
935 #2097: Block more classes from polymorphic deserialization (CVE-2018-14718
936   - CVE-2018-14721)
937  (reported by Guixiong Wu)
938 #2109: Canonical string for reference type is built incorrectly
939  (reported by svarzee@github)
940 #2186: Block more classes from polymorphic deserialization (CVE-2018-19360,
941   CVE-2018-19361, CVE-2018-19362)
942  (reported by Guixiong Wu)
943 
944 2.7.9 (04-Feb-2017)
945 
946 #1367: No Object Id found for an instance when using `@ConstructorProperties`
947 #1505: @JsonEnumDefaultValue should take precedence over FAIL_ON_NUMBERS_FOR_ENUMS
948  (suggested by Stephan S)
949 #1506: Missing `KeyDeserializer` for `CharSequence`
950 #1513: `MapSerializer._orderEntries()` throws NPE when operating on `ConcurrentHashMap`
951  (reported by Sovietaced@github)
952 - Simplified processing of class annotations (for `AnnotatedClass`) to try to
953   solve rare concurrency problems with "root name" annotations.
954 
955 2.7.8 (26-Sep-2016)
956 
957 #877: @JsonIgnoreProperties`: ignoring the "cause" property of `Throwable` on GAE
958 #1359: Improve `JsonNode` deserializer to create `FloatNode` if parser supports
959 #1362: ObjectReader.readValues()` ignores offset and length when reading an array
960  (reported by wastevenson@github)
961 #1363: The static field ClassUtil.sCached can cause a class loader leak
962  (reported by Stuart D)
963 #1368: Problem serializing `JsonMappingException` due to addition of non-ignored
964   `processor` property (added in 2.7)
965  (reported, suggesed fix by Josh C)
966 #1383: Problem with `@JsonCreator` with 1-arg factory-method, implicit param names
967 
968 2.7.7 (27-Aug-2016)
969 
970 #1322: EnumMap keys not using enum's `@JsonProperty` values unlike Enum values
971  (reported by MichaelChambers@github)
972 #1332: Fixed ArrayIndexOutOfBoundException for enum by index deser
973  (reported by Max D)
974 #1344: Deserializing locale assumes JDK separator (underscore), does not
975   accept RFC specified (hyphen)
976  (reported by Jim M)
977 
978 2.7.6 (23-Jul-2016)
979 
980 #1215: Problem with type specialization for Maps with `@JsonDeserialize(as=subtype)`
981  (reported by brentryan@github)
982 #1279: Ensure DOM parsing defaults to not expanding external entities
983 #1288: Type id not exposed for `JsonTypeInfo.As.EXTERNAL_PROPERTY` even when `visible` set to `true`
984 #1299: Timestamp deserialization error
985  (reported by liyuj@github)
986 #1301: Problem with `JavaType.toString()` for recursive (self-referential) types
987  (reported by Brian P)
988 #1307: `TypeWrappedDeserializer` doesn't delegate the `getNullValue()` method to `_deserializer`
989  (reported by vfries@github)
990 
991 2.7.5 (11-Jun-2016)
992 
993 #1098: DeserializationFeature.FAIL_ON_INVALID_SUBTYPE does not work with
994   `JsonTypeInfo.Id.CLASS`
995  (reported by szaccaria@github)
996 #1223: `BasicClassIntrospector.forSerialization(...).findProperties` should
997   respect MapperFeature.AUTO_DETECT_GETTERS/SETTERS?
998  (reported by William H)
999 #1225: `JsonMappingException` should override getProcessor()
1000  (reported by Nick B)
1001 
1002 2.6.7.1 (11-Jul-2017)
1003 
1004 #1383: Problem with `@JsonCreator` with 1-arg factory-method, implicit param names
1005 #1599: Backport the extra safety checks for polymorphic deserialization
1006 
1007 2.6.7 (05-Jun-2016)
1008 
1009 #1194: Incorrect signature for generic type via `JavaType.getGenericSignature
1010 #1228: @JsonAnySetter does not deserialize null to Deserializer's NullValue
1011  (contributed by Eric S)
1012 #1231: `@JsonSerialize(as=superType)` behavior disallowed in 2.7.4
1013  (reported by Mark W)
1014 #1248: `Annotated` returns raw type in place of Generic Type in 2.7.x
1015  (reported by Andrew J, apjoseph@github)
1016 #1253: Problem with context handling for `TokenBuffer`, field name
1017 #1260: `NullPointerException` in `JsonNodeDeserializer`
1018  (reported by Eric S)
1019 
1020 2.7.4 (29-Apr-2016)
1021 
1022 #1122: Jackson 2.7 and Lombok: 'Conflicting/ambiguous property name definitions'
1023 #1178: `@JsonSerialize(contentAs=superType)` behavior disallowed in 2.7
1024 #1186: SimpleAbstractTypeResolver breaks generic parameters
1025  (reported by tobiash@github)
1026 #1189: Converter called twice results in ClassCastException
1027  (reported by carrino@github)
1028 #1191: Non-matching quotes used in error message for date parsing
1029 #1194: Incorrect signature for generic type via `JavaType.getGenericSignature
1030 #1195: `JsonMappingException` not Serializable due to 2.7 reference to source (parser)
1031  (reported by mjustin@github)
1032 #1197: `SNAKE_CASE` doesn't work when using Lombok's `@AllArgsConstructor`
1033 #1198: Problem with `@JsonTypeInfo.As.EXTERNAL_PROPERTY`, `defaultImpl`, missing type id, NPE
1034 #1203: `@JsonTypeInfo` does not work correctly for ReferenceTypes like `AtomicReference`
1035 #1208: treeToValue doesn't handle POJONodes that contain exactly the requested value type
1036   (reported by Tom M)
1037 - Improve handling of custom content (de)serializers for `AtomicReference`
1038 
1039 2.7.3 (16-Mar-2016)
1040 
1041 #1125: Problem with polymorphic types, losing properties from base type(s)
1042 #1150: Problem with Object id handling, explicit `null` token
1043  (reported by Xavi T)
1044 #1154: @JsonFormat.pattern on dates is now ignored if shape is not explicitely provided
1045  (reported by Yoann R)
1046 #1161: `DeserializationFeature.READ_ENUMS_USING_TO_STRING` not dynamically
1047   changeable with 2.7
1048  (reported by asa-git@github)
1049 - Minor fixes to `AnnotationIntrospector.findEnumValues()` to correct problems with
1050   merging of explicit enum value names.
1051 
1052 2.7.2 (26-Feb-2016)
1053 
1054 #1124: JsonAnyGetter ignores JsonSerialize(contentUsing=...)
1055  (reported by Jiri M)
1056 #1128: UnrecognizedPropertyException in 2.7.1 for properties that work with version 2.6.5
1057  (reported by Roleek@github)
1058 #1129: When applying type modifiers, don't ignore container types.
1059 #1130: NPE in `StdDateFormat` hashCode and equals
1060  (reported by Kazuki S, kazuki43zoo@github)
1061 #1134: Jackson 2.7 doesn't work with jdk6 due to use of `Collections.emptyIterator()`
1062  (reported by Timur S, saladinkzn@github)
1063 
1064 2.7.1-1 (03-Feb-2016)
1065 
1066 Special one-off "micro patch" for:
1067 
1068 #1115: Problems with deprecated `TypeFactory.constructType(type, ctxt)` methods if `ctxt` is `null`
1069 
1070 2.7.1 (02-Feb-2016)
1071 
1072 #1079: Add back `TypeFactory.constructType(Type, Class)` as "deprecated" in 2.7.1
1073 #1083: Field in base class is not recognized, when using `@JsonType.defaultImpl`
1074  (reported by Julian H)
1075 #1095: Prevent coercion of `int` from empty String to `null` if
1076   `DeserializationFeature .FAIL_ON_NULL_FOR_PRIMITIVES` is `true`
1077  (reported by yzmyyff@github)
1078 #1102: Handling of deprecated `SimpleType.construct()` too minimalistic
1079  (reported by Thibault K)
1080 #1109: @JsonFormat is ignored by the DateSerializer unless either a custom pattern
1081   or a timezone are specified
1082  (contributed by Aleks S)
1083 
1084 2.7.0 (10-Jan-2016)
1085 
1086 #76: Problem handling datatypes Recursive type parameters
1087  (reported by Aram K)
1088 #357: StackOverflowError with contentConverter that returns array type
1089  (reported by Florian S)
1090 #432: `StdValueInstantiator` unwraps exceptions, losing context
1091  (reported by Miles K)
1092 #497: Add new JsonInclude.Include feature to exclude maps after exclusion removes all elements
1093 #803: Allow use of `StdDateFormat.setLenient()`
1094  (suggested by raj-ghodke@github)
1095 #819: Add support for setting `FormatFeature` via `ObjectReader`, `ObjectWriter`
1096 #857: Add support for java.beans.Transient (requires Java 7)
1097  (suggested by Thomas M)
1098 #898: Add `ObjectMapper.getSerializerProviderInstance()`
1099 #905: Add support for `@ConstructorProperties` (requires Java 7)
1100  (requested by Jonas K)
1101 #909: Rename PropertyNamingStrategy CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES as SNAKE_CASE,
1102    PASCAL_CASE_TO_CAMEL_CASE as UPPER_CAMEL_CASE
1103  (suggested by marcottedan@github)
1104 #915: ObjectMapper default timezone is GMT, should be UTC
1105  (suggested by Infrag@github)
1106 #918: Add `MapperFeature.ALLOW_EXPLICIT_PROPERTY_RENAMING`
1107  (contributed by David H)
1108 #924: `SequenceWriter.writeAll()` could accept `Iterable`
1109  (suggested by Jiri-Kremser@github(
1110 #932: Rewrite ser/deser for `AtomicReference`, based on "optional" ser/desers
1111 #933: Close some gaps to allow using the `tryToResolveUnresolved` flows
1112 #936: Deserialization into List subtype with JsonCreator no longer works
1113  (reported by adamjoeldavis@github)
1114 #948: Support leap seconds, any number of millisecond digits for ISO-8601 Dates.
1115  (contributed by Jesse W)
1116 #952: Revert non-empty handling of primitive numbers wrt `NON_EMPTY`; make
1117   `NON_DEFAULT` use extended criteria
1118 #957: Merge `datatype-jdk7` stuff in (java.nio.file.Path handling)
1119 #959: Schema generation: consider active view, discard non-included properties
1120 #963: Add PropertyNameStrategy `KEBAB_CASE`
1121  (requested by Daniel M)
1122 #978: ObjectMapper#canSerialize(Object.class) returns false even though FAIL_ON_EMPTY_BEANS is disabled
1123  (reported by Shumpei A)
1124 #997: Add `MapperFeature.OVERRIDE_PUBLIC_ACCESS_MODIFIERS`
1125 #998: Allow use of `NON_DEFAULT` for POJOs without default constructor
1126 #1000: Add new mapping exception type for enums and UUIDs
1127  (suggesed by natnan@github)
1128 #1010: Support for array delegator
1129  (contributed by Hugo W)
1130 #1011: Change ObjectWriter::withAttributes() to take a Map with some kind of wildcard types
1131  (suggested by David B)
1132 #1043: @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) does not work on fields
1133  (reported by fabiolaa@github)
1134 #1044: Add `AnnotationIntrospector.resolveSetterConflict(...)` to allow custom setter conflict resolution
1135  (suggested by clydebarrow@github)
1136 - Make `JsonValueFormat` (self-)serializable, deserializable, to/from valid external
1137   value (as per JSON Schema spec)
1138 
1139 INCOMPATIBILITIES:
1140 
1141 - While unlikely to be problematic, #959 above required an addition of `SerializerProvider`
1142   argument for `depositSchemaProperty()` method `BeanProperty` and `PropertyWriter` interfaces
1143 - JDK baseline now Java 7 (JDK 1.7), from Java 6/JDK 1.6
1144 
1145 2.6.6 (05-Apr-2016)
1146 
1147 #1088: NPE possibility in SimpleMixinResolver
1148  (reported by Laird N)
1149 #1099: Fix custom comparator container node traversal
1150  (contributed by Daniel N)
1151 #1108: Jackson not continue to parse after DeserializationFeature.FAIL_ON_INVALID_SUBTYPE error
1152  (reported by jefferyyuan@github)
1153 #1112: Detailed error message from custom key deserializer is discarded
1154  (contributed by Benson M)
1155 #1120: String value omitted from weirdStringException
1156  (reported by Benson M)
1157 #1123: Serializing and Deserializing Locale.ROOT
1158  (reported by hookumsnivy@github)
1159 
1160 2.6.5 (19-Jan-2016)
1161 
1162 #1052: Don't generate a spurious NullNode after parsing an embedded object
1163  (reported by philipa@github)
1164 #1061: Problem with Object Id and Type Id as Wrapper Object (regression in 2.5.1)
1165 #1073: Add try-catch around `java.sql` type serializers
1166  (suggested by claudemt@github)
1167 #1078: ObjectMapper.copy() still does not preserve _registeredModuleTypes
1168  (reported by ajonkisz@github)
1169 
1170 2.6.4 (07-Dec-2015)
1171 
1172 #984: JsonStreamContexts are not build the same way for write.. and convert methods
1173  (reported by Antibrumm@github)
1174 #989: Deserialization from "{}" to java.lang.Object causes "out of END_OBJECT token" error
1175  (reported by Ievgen P)
1176 #1003: JsonTypeInfo.As.EXTERNAL_PROPERTY does not work with a Delegate
1177  (reported by alexwen@github)
1178 #1005: Synthetic constructors confusing Jackson data binding
1179  (reported by Jayson M)
1180 #1013: `@JsonUnwrapped` is not treated as assuming `@JsonProperty("")`
1181  (reported by David B)
1182 #1036: Problem with case-insensitive deserialization
1183  (repoted by Dmitry R)
1184 - Fix a minor problem with `@JsonNaming` not recognizing default value
1185 
1186 2.6.3 (12-Oct-2015)
1187 
1188 #749: `EnumMap` serialization ignores `SerializationFeature.WRITE_ENUMS_USING_TO_STRING`
1189  (reported by scubasau@github)
1190 #938: Regression: `StackOverflowError` with recursive types that contain `Map.Entry`
1191  (reported by jloisel@github)
1192 #939: Regression: DateConversionError in 2.6.x
1193  (reported by Andreas P, anpieber@github)
1194 #940: Add missing `hashCode()` implementations for `JsonNode` types that did not have them
1195  (contributed by Sergio M)
1196 #941: Deserialization from "{}" to ObjectNode field causes "out of END_OBJECT token" error
1197  (reported by Sadayuki F)
1198 #942: Handle null type id for polymorphic values that use external type id
1199  (reported by Warren B, stormboy@github)
1200 #943: Incorrect serialization of enum map key
1201  (reported by Benson M)
1202 #944: Failure to use custom deserializer for key deserializer
1203  (contributed by Benson M)
1204 #949: Report the offending substring when number parsing fails
1205  (contributed by Jesse W)
1206 #965: BigDecimal values via @JsonTypeInfo/@JsonSubTypes get rounded
1207  (reported by gmjabs@github)
1208 
1209 2.6.2 (14-Sep-2015)
1210 
1211 #894: When using withFactory on ObjectMapper, the created Factory has a TypeParser
1212   which still has the original Factory
1213  (reported by lufe66@github)
1214 #899: Problem serializing `ObjectReader` (and possibly `ObjectMapper`)
1215 #913: ObjectMapper.copy does not preserve MappingJsonFactory features
1216  (reported, fixed by Daniel W)
1217 #922: ObjectMapper.copy() does not preserve _registeredModuleTypes
1218 #928: Problem deserializing External Type Id if type id comes before POJO
1219 
1220 2.6.1 (09-Aug-2015)
1221 
1222 #873: Add missing OSGi import
1223 #881: BeanDeserializerBase having issues with non-CreatorProperty properties.
1224  (reported by dharaburda@github)
1225 #884: ArrayIndexOutOfBoundException for `BeanPropertyMap` (with ObjectId)
1226  (reported by alterGauner@github)
1227 #889: Configuring an ObjectMapper's DateFormat changes time zone
1228  (reported by Andy W, wilkinsona@github)
1229 #890: Exception deserializing a byte[] when the target type comes from an annotation
1230  (reported by gmjabs@github)
1231 
1232 2.6.0 (19-Jul-2015)
1233 
1234 #77: Allow injection of 'transient' fields
1235 #95: Allow read-only properties with `@JsonIgnoreProperties(allowGetters=true)`
1236 #222: EXTERNAL_PROPERTY adds property multiple times and in multiple places
1237  (reported by Rob E, thatsnotright@github)
1238 #296: Serialization of transient fields with public getters (add
1239     MapperFeature.PROPAGATE_TRANSIENT_MARKER)
1240  (suggested by Michal L)
1241 #312: Support Type Id mappings where two ids map to same Class
1242 #348: ObjectMapper.valueToTree does not work with @JsonRawValue
1243  (reported by Chris P, pimlottc@github)
1244 #504: Add `DeserializationFeature.USE_LONG_FOR_INTS`
1245  (suggested by Jeff S)
1246 #624: Allow setting external `ClassLoader` to use, via `TypeFactory`
1247 #649: Make `BeanDeserializer` use new `parser.nextFieldName()` and `.hasTokenId()` methods
1248 #664: Add `DeserializationFeature.ACCEPT_FLOAT_AS_INT` to prevent coercion of floating point
1249  numbers int `int`/`long`/`Integer`/`Long`
1250  (requested by wenzis@github)
1251 #677: Specifying `Enum` value serialization using `@JsonProperty`
1252  (requested by Allen C, allenchen1154@github)
1253 #679: Add `isEmpty()` implementation for `JsonNode` serializers
1254 #688: Provide a means for an ObjectMapper to discover mixin annotation classes on demand
1255  (requested by Laird N)
1256 #689: Add `ObjectMapper.setDefaultPrettyPrinter(PrettyPrinter)`
1257  (requested by derknorton@github)
1258 #696: Copy constructor does not preserve `_injectableValues`
1259  (reported by Charles A)
1260 #698: Add support for referential types (ReferenceType)
1261 #700: Cannot Change Default Abstract Type Mapper from LinkedHashMap
1262  (reported by wealdtech@github)
1263 #725: Auto-detect multi-argument constructor with implicit names if it is the only visible creator
1264 #727: Improve `ObjectWriter.forType()` to avoid forcing base type for container types
1265 #734: Add basic error-recovery for `ObjectReader.readValues()`
1266 #737: Add support for writing raw values in TokenBuffer
1267  (suggested by Guillaume S, gsmet@github)
1268 #740: Ensure proper `null` (as empty) handling for `AtomicReference`
1269 #741: Pass `DeserializationContext' argument for `JsonDeserializer` methods "getNullValue()"
1270  and "getEmptyValue()"
1271 #743: Add `RawValue` helper type, for piping raw values through `TokenBuffer`
1272 #756: Disabling SerializationFeature.FAIL_ON_EMPTY_BEANS does not affect `canSerialize()`
1273  (reported by nickwongdev@github)
1274 #762: Add `ObjectWriter.withoutRootName()`, `ObjectReader.withoutRootName()`
1275 #765: `SimpleType.withStaticTyping()` impl incorrect
1276 #769: Fix `JacksonAnnotationIntrospector.findDeserializer` to return `Object` (as per
1277   `AnnotationIntrospector`); similarly for other `findXxx(De)Serializer(...)` methods
1278 #777: Allow missing build method if its name is empty ("")
1279  (suggested by galdosd@github)
1280 #781: Support handling of `@JsonProperty.required` for Creator methods
1281 #787: Add `ObjectMapper setFilterProvider(FilterProvider)` to allow chaining
1282  (suggested by rgoldberg@githin)
1283 #790: Add `JsonNode.equals(Comparator<JsonNode>, JsonNode)` to support
1284   configurable/external equality comparison
1285 #794: Add `SerializationFeature.WRITE_DATES_WITH_ZONE_ID` to allow inclusion/exclusion of
1286   timezone id for date/time values (as opposed to timezone offset)
1287 #795: Converter annotation not honored for abstract types
1288  (reported by myrosia@github)
1289 #797: `JsonNodeFactory` method `numberNode(long)` produces `IntNode` for small numbers
1290 #810: Force value coercion for `java.util.Properties`, so that values are `String`s
1291 #811: Add new option, `JsonInclude.Include.NON_ABSENT` (to support exclusion of
1292   JDK8/Guava Optionals)
1293 #812: Java 8 breaks Class-value annotation properties, wrt generics: need to work around
1294 #813: Add support for new property of `@JsonProperty.access` to support
1295   read-only/write-only use cases
1296 #820: Add new method for `ObjectReader`, to bind from JSON Pointer position
1297  (contributed by Jerry Y, islanderman@github)
1298 #824: Contextual `TimeZone` changes don't take effect wrt `java.util.Date`,
1299   `java.util.Calendar` serialization
1300 #826: Replaced synchronized HashMap with ConcurrentHashMap in TypeDeserializerBase._findDeserializer
1301  (contributed by Lars P)
1302 #827: Fix for polymorphic custom map key serializer
1303  (reported by mjr6140@gitgub)
1304 #828: Respect DeserializationFeatures.WRAP_EXCEPTIONS in CollectionDeserializer
1305  (contributed by Steve G, thezerobit@github)
1306 #840: Change semantics of `@JsonPropertyOrder(alphabetic)` to only count `true` value
1307 #848: Custom serializer not used if POJO has `@JsonValue`
1308 #849: Possible problem with `NON_EMPTY` exclusion, `int`s, `Strings`
1309 #868: Annotations are lost in the case of duplicate methods
1310 - Remove old cglib compatibility tests; cause problems in Eclipse
1311 - Add `withFilterId()` method in `JsonSerializer` (demote from `BeanSerializer`)
1312 
1313 2.5.5 (07-Dec-2015)
1314 
1315 #844: Using JsonCreator still causes invalid path references in JsonMappingException
1316  (reported by Ian B)
1317 #852: Accept scientific number notation for quoted numbers too
1318 #878: serializeWithType on BeanSerializer does not setCurrentValue
1319  (reported by Chi K, chikim79@github)
1320 
1321 2.5.4 (09-Jun-2015)
1322 
1323 #676: Deserialization of class with generic collection inside depends on
1324   how is was deserialized first time
1325  (reported by lunaticare@github)
1326 #771: Annotation bundles ignored when added to Mixin
1327  (reported by Andrew D)
1328 #774: NPE from SqlDateSerializer as _useTimestamp is not checked for being null
1329  (reported by mrowkow@github)
1330 #785: Add handlings for classes which are available in `Thread.currentThread().getContextClassLoader()`
1331  (contributed by Charles A)
1332 #792: Ensure Constructor Parameter annotations are linked with those of Field, Getter, or Setter
1333 #793: `ObjectMapper.readTree()` does not work with defaultTyping enabled
1334  (reported by gracefulgopher@github)
1335 #801: Using `@JsonCreator` cause generating invalid path reference in `JsonMappingException`
1336  (contributed by Kamil B)
1337 #815: Presence of PropertyNamingStrategy Makes Deserialization fail
1338 #816: Allow date-only ISO strings to have no time zone
1339  (contributed by Andrew G)
1340 - Fix handling of Enums wrt JSON Schema, when 'toString()' used for serialization
1341 
1342 2.5.3 (24-Apr-2015)
1343 
1344 #731: XmlAdapter result marshaling error in case of ValueType=Object
1345  (reported, debugged by Dmitry S)
1346 #742: Allow deserialization of `null` Object Id (missing already allowed)
1347 #744: Custom deserializer with parent object update failing
1348  (reported by migel@github)
1349 #745: EnumDeserializer.deserializerForCreator fails when used to deserialize a Map key
1350  (contributed by John M)
1351 #761: Builder deserializer: in-compatible type exception when return type is super type
1352  (contributed by Alexey G)
1353 #766: Fix Infinite recursion (StackOverflowError) when serializing a SOAP object
1354  (contributed by Alain G)
1355 
1356 2.5.2 (29-Mar-2015)
1357 
1358 #609: Problem resolving locally declared generic type
1359  (repoted by Hal H)
1360 #691: NullSerializer for MapProperty failing when using polymorphic handling
1361  (reported by Antibrumm@github)
1362 #703: Multiple calls to ObjectMapper#canSerialize(Object.class) returns different values
1363  (reported by flexfrank@github)
1364 #705: JsonAnyGetter doesn't work with JsonSerialize (except with keyUsing)
1365  (reported by natnan@github)
1366 #728: TypeFactory#_fromVariable returns unknownType() even though it has enough information
1367   to provide a more specific type
1368  (reported by jkochaniak@github)
1369 #733: MappingIterator should move past errors or not return hasNext() == true
1370  (reported by Lorrin N, lorrin@github)
1371 #738: @JsonTypeInfo non-deterministically ignored in 2.5.1 (concurrency issue)
1372  (reported by Dylan S, dylanscott@github)
1373 - Improvement to handling of custom `ValueInstantiator` for delegating mode; no more NPE
1374   if `getDelegateCreator()` returns null
1375 - Refactor `TypedKey` into separate util class
1376 
1377 2.5.1 (06-Feb-2015)
1378 
1379 #667: Problem with bogus conflict between single-arg-String vs `CharSequence` constructor
1380 #669: JSOG usage of @JsonTypeInfo and @JsonIdentityInfo(generator=JSOGGenerator.class) fails
1381  (reported by ericali78@github)
1382 #671: Adding `java.util.Currency` deserialization support for maps
1383  (contributed by Alexandre S-C)
1384 #674: Spring CGLIB proxies not handled as intended
1385  (reported by Zoltan F)
1386 #682: Class<?>-valued Map keys not serialized properly
1387  (reported by Ludevik@github)
1388 #684: FAIL_ON_NUMBERS_FOR_ENUMS does not fail when integer value is quoted
1389  (reported by kllp@github)
1390 #696: Copy constructor does not preserve `_injectableValues`
1391  (reported by Charles A)
1392 - Add a work-around in `ISO8601DateFormat` to allow omission of ':' from timezone
1393 - Bit more work to complete #633
1394 
1395 2.5.0 (01-Jan-2015)
1396 
1397 #47: Support `@JsonValue` for (Map) key serialization
1398 #113: Problem deserializing polymorphic types with @JsonCreator
1399 #165: Add `DeserializationContext.getContextualType()` to let deserializer
1400   known the expected type.
1401 #299: Add `DeserializationFeature.FAIL_ON_UNRESOLVED_OBJECT_IDS` to allow missing
1402   Object Ids (as global default)
1403 #408: External type id does not allow use of 'visible=true'
1404 #421: @JsonCreator not used in case of multiple creators with parameter names
1405  (reported by Lovro P, lpandzic@github)
1406 #427: Make array and Collection serializers call `JsonGenerator.writeStartArray(int)`
1407 #521: Keep bundle annotations, prevent problems with recursive annotation types
1408  (reported by tea-dragon@github)
1409 #527: Add support for `@JsonInclude(content=Include.NON_NULL)` (and others) for Maps
1410 #528: Add support for `JsonType.As.EXISTING_PROPERTY`
1411  (reported by heapifyman@github; implemented by fleebytes@github)
1412 #539: Problem with post-procesing of "empty bean" serializer; was not calling
1413   'BeanSerializerModifier.modifySerializer()` for empty beans
1414  (reported by Fabien R, fabienrenaud@github)
1415 #540: Support deserializing `[]` as null or empty collection when the java type
1416   is a not an object, `DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT`
1417  (requested by Fabien R, fabienrenaud@github)
1418 #543: Problem resolving self-referential recursive types
1419  (reported by ahgittin@github)
1420 #550: Minor optimization: prune introspection of "well-known" JDK types
1421 #552: Improved handling for ISO-8601 (date) format
1422  (contributed by Jerome G, geronimo-iia@github)
1423 #559: Add `getDateFormat()`, `getPropertyNamingStrategy()` in `ObjectMapper`
1424 #560: @JsonCreator to deserialize BigInteger to Enum
1425  (requested by gisupp@github)
1426 #565: Add support for handling `Map.Entry`
1427 #566: Add support for case-insensitive deserialization (`MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES`)
1428  (contributed by Michael R)
1429 #571: Add support in ObjectMapper for custom `ObjectReader`, `ObjectWriter` (sub-classes)
1430 #572: Override default serialization of Enums
1431  (requested by herau@github)
1432 #576: Add fluent API for adding mixins
1433  (contributed by Adam S, adstro@github)
1434 #594: `@JsonValue` on enum not used when enum value is a Map key
1435  (reported by chrylis@github)
1436 #596: Add support for `@JsonProperty.defaultValue`, exposed via `BeanProperty.getMetadata().getDefaultValue()`
1437 #597: Improve error messaging for cases where JSON Creator returns null (which
1438   is illegal)
1439  (contributed by Aurelien L)
1440 #599: Add a simple mechanism for avoiding multiple registrations of the same module
1441 #607: Allow (re)config of `JsonParser.Feature`s via `ObjectReader`
1442 #608: Allow (re)config of `JsonGenerator.Feature`s via `ObjectWriter`
1443 #614: Add a mechanism for using `@JsonCreator.mode` for resolving possible ambiguity between
1444   delegating- and property-based creators
1445 #616: Add `SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS`
1446 #622: Support for non-scalar ObjectId Reference deserialiazation (like JSOG)
1447 #623: Add `StdNodeBasedDeserializer`
1448 #630: Add `KeyDeserializer` for `Class`
1449 #631: Update `current value` of `JsonParser`, `JsonGenerator` from standard serializers,
1450  deserializers
1451  (suggested by Antibrumm@github)
1452 #633: Allow returning null value from IdResolver to make type information optional
1453  (requested by Antibrumm@github)
1454 #634: Add `typeFromId(DatabindContext,String)` in `TypeIdDeserializer`
1455 #636: `ClassNotFoundException` for classes not (yet) needed during serialization
1456  (contributed by mspiegel@github)
1457 #638: Add annotation-based method(s) for injecting properties during serialization
1458  (using @JsonAppend, VirtualBeanPropertyWriter)
1459 #647: Deserialization fails when @JsonUnwrapped property contains an object with same property name
1460  (reported by Konstantin L)
1461 #653: Jackson doesn't follow JavaBean naming convention (added `MapperFeature.USE_STD_BEAN_NAMING`)
1462 #654: Add support for (re)configuring `JsonGenerator.setRootValueSeparator()` via `ObjectWriter`
1463 #655: Add `ObjectWriter.writeValues()` for writing value sequences
1464 #660: `@JsonCreator`-annotated factory method is ignored if constructor exists
1465 - Allow use of `Shape.ARRAY` for Enums, as an alias to 'use index'
1466 - Start using `JsonGenerator.writeStartArray(int)` to help data formats
1467   that benefit from knowing number of elements in arrays (and would otherwise
1468   need to buffer values to know length)
1469 - Added new overload for `JsonSerializer.isEmpty()`, to eventually solve #588
1470 - Improve error messaging (related to [jaxb-annotations#38]) to include known subtype ids.
1471 
1472 2.4.6 (23-Apr-2015)
1473 
1474 #735: (complete fix) @JsonDeserialize on Map with contentUsing custom deserializer overwrites default behavior
1475  (reported by blackfyre512@github) (regression due to #604)
1476 $744: Custom deserializer with parent object update fails
1477 
1478 2.4.5.1 (26-Mar-2015)
1479 
1480 Special one-off "micro patch" for:
1481 
1482 #706: Add support for `@JsonUnwrapped` via JSON Schema module
1483 #707: Error in getting string representation of an ObjectNode with a float number value
1484  (reported by @navidqar)
1485 #735: (partial) @JsonDeserialize on Map with contentUsing custom deserializer overwrites default behavior
1486 
1487 2.4.5 (13-Jan-2015)
1488 
1489 #635: Reduce cachability of `Map` deserializers, to avoid problems with per-property config changes
1490     (regression due to #604)
1491 #656: `defaultImpl` configuration is ignored for `WRAPPER_OBJECT`
1492 - Solve potential cyclic-resolution problem for `UntypedObjectDeserializer`
1493 
1494 2.4.4 (24-Nov-2014)
1495 
1496 (jackson-core)#158: Setter confusion on assignable types
1497  (reported by tsquared2763@github)
1498 #245: Calls to ObjectMapper.addMixInAnnotations() on an instance returned by ObjectMapper.copy()
1499  don't work
1500  (reported by Erik D)
1501 #580: delegate deserializers choke on a (single) abstract/polymorphic parameter
1502  (reported by Ian B, tea-dragon@github)
1503 #590: Binding invalid Currency gives nonsense at end of the message
1504  (reported by Jerbell@github)
1505 #592: Wrong `TokenBuffer` delegate deserialization using `@JsonCreator`
1506  (reported by Eugene L)
1507 #601: ClassCastException for a custom serializer for enum key in `EnumMap`
1508  (reported by Benson M)
1509 #604: `Map` deserializers not being cached, causing performance problems
1510 #610: Fix forward reference in hierarchies
1511  (contributed by zeito@github)
1512 #619: Off by one error in AnnotatedWithParams
1513  (reported by stevetodd@github)
1514 - Minor fix to `EnumSerializer` regarding detection "serialize using index"
1515 - Minor fix to number serializers, to call proper callback for schema generation
1516 
1517 2.4.3 (02-Oct-2014)
1518 
1519 #496: Wrong result with `new TextNode("false").asBoolean(true)`
1520  (reported by Ivar R, ivarru@github)
1521 #511: DeserializationFeature.FAIL_ON_INVALID_SUBTYPE does not work
1522  (reported by sbelikov@github)
1523 #523: MapDeserializer and friends do not report the field/key name for mapping exceptions
1524  (reported by Ian B, tea-dragon@github)
1525 #524: @JsonIdentityReference(alwaysAsId = true) Custom resolver is reset to SimpleObjectIdResolver
1526  (reported by pkokorev@github)
1527 #541: @JsonProperty in @JsonCreator is conflicting with POJOs getters/attributes
1528  (reported by fabienrenaud@github)
1529 #543: Problem resolving self-referential generic types
1530 #570: Add Support for Parsing All Compliant ISO-8601 Date Formats
1531  (requested by pfconrey@github)
1532 - Fixed a problem with `acceptJsonFormatVisitor` with Collection/array types that
1533   are marked with `@JsonValue`; could cause NPE in JSON Schema generator module.
1534 
1535 2.4.2 (14-Aug-2014)
1536 
1537 #515: Mixin annotations lost when using a mixin class hierarchy with non-mixin interfaces
1538  (reported by 'stevebread@github')
1539 - Fixed a problem related to [jackson-dataformat-smile#19].
1540 
1541 2.4.1.2 (12-Jul-2014)
1542 
1543 Special one-off "micro patch" for:
1544 
1545 #503: Concurrency issue inside com.fasterxml.jackson.databind.util.LRUMap.get(Object)
1546  (reported by fjtc@github)
1547 
1548 2.4.1.1 (18-Jun-2014)
1549 
1550 Special one-off "micro patch" for:
1551 
1552 #491: Temporary work-around for issue #490 (full fix for 2.5 needs to be
1553   in `jackson-annotations`)
1554 #506: Index is never set for Collection and Array in InvalidFormatException.Reference
1555  (reported by Fabrice D, fabdouglas@github)
1556 - Fixed a problem related to [jackson-dataformat-smile#19].
1557 
1558 2.4.1 (17-Jun-2014)
1559 
1560 #479: NPE on trying to deserialize a `String[]` that contains null
1561  (reported by huxi@github)
1562 #482: Make date parsing error behavior consistent with JDK
1563  (suggested by Steve S, sanbeg@github)
1564 #489 (partial): TypeFactory cache prevents garbage collection of custom ClassLoader
1565  (reported by sftwrengnr@github)
1566 
1567 2.4.0 (02-Jun-2014)
1568 
1569 #81: Allow use of @JsonUnwrapped with typed (@JsonTypeInfo) classes, provided
1570   that (new) feature `SerializationFeature.FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERS`
1571   is disabled
1572  (constributed by Ben F, UnquietCode@github)
1573 #88: Prevent use of type information for `JsonNode` via default typing
1574  (reported by electricmonk@github)
1575 #149: Allow use of "stringified" indexes for Enum values
1576  (requested by chenboxiang@github)
1577 #176: Allow use external Object Id resolver (to use with @JsonIdentityInfo etc)
1578  (implemented by Pascal G)
1579 #193: Conflicting property name definitions
1580  (reported by Stuart J, sgjohnston@github)
1581 #323: Serialization of the field with deserialization config
1582  (reported by metanet@github)
1583 #327: Should not consider explicitly differing renames a fail, as long as all are explicit
1584 #335: Allow use of `@JsonPropertyOrder(alphabetic=true)` for Map properties
1585 #351: ObjectId does not properly handle forward references during deserialization
1586  (contributed by pgelinas)
1587 #352 Add `ObjectMapper.setConfig()` for overriding `SerializationConfig`/`DeserializationConfig`
1588 #353: Problems with polymorphic types, `JsonNode` (related to #88)
1589  (reported by cemo@github)
1590 #359: Converted object not using explicitly annotated serializer
1591  (reported by Florian S [fschopp@github])
1592 #369: Incorrect comparison for renaming in `POJOPropertyBuilder`
1593 #375: Add `readValue()`/`readPropertyValue()` methods in `DeserializationContext`
1594 #376: Add support for `@JsonFormat(shape=STRING)` for number serializers
1595 #381: Allow inlining/unwrapping of value from single-component JSON array
1596  (contributed by yinzara@github)
1597 #390: Change order in which managed/back references are resolved (now back-ref
1598  first, then forward)
1599  (requested by zAlbee@github)
1600 #407: Properly use null handlers for value types when serializer Collection
1601  and array types
1602  (contributed by Will P)
1603 #425: Add support for using `Void.class` as "no class", instead of `NoClass.class`
1604 #428: `PropertyNamingStrategy` will rename even explicit name from `@JsonProperty`
1605  (reported by turskip@github)
1606 #435: Performance bottleneck in TypeFactory._fromClass
1607  (reported by Sean D, sdonovanuk@github)
1608 #434: Ensure that DecimalNodes with mathematically equal values are equal
1609  (contributed by Francis G)
1610 #435: Performance bottleneck in TypeFactory._fromClass
1611  (reported by sdonovanuk@github)
1612 #438: Add support for accessing `@JsonProperty(index=N)` annotations
1613 #442: Make `@JsonUnwrapped` indicate property inclusion
1614  (suggested by Ben F)
1615 #447: ArrayNode#addAll should accept Collection<? extends JsonNode>
1616  (suggested by alias@github)
1617 #461: Add new standard naming strategy, `PropertyNamingStrategy.LowerCaseStrategy`
1618 #463: Add 'JsonNode.asText(String defaultValue)`
1619  (suggested by Chris C)
1620 #464: Include `JsonLocation` in more mapping exceptions
1621  (contributed by Andy C (q3aiml@github))
1622 #465: Make it easier to support serialization of custom subtypes of `Number`
1623 #467: Unwanted POJO's embedded in tree via serialization to tree
1624  (reported by Benson M)
1625 - Slightly improve `SqlDateSerializer` to support `@JsonFormat`
1626 - Improve handling of native type ids (YAML, CBOR) to use non-native type ids
1627   as fallback
1628 
1629 2.3.5 (13-Jan-2015)
1630 
1631 #496: Wrong result for TextNode("false").asBoolean(true)
1632  (reported by Ivar R, ivarru@github)
1633 #543: Problems resolving self-referential generic types.
1634 #656: defaultImpl configuration is ignored for WRAPPER_OBJECT
1635 
1636 2.3.4 (17-Jul-2014)
1637 
1638 #459: BeanDeserializerBuilder copy constructor not copying `_injectables`
1639 #462: Annotation-provided Deserializers are not contextualized inside CreatorProperties
1640  (reported by aarondav@github)
1641 
1642 2.3.3 (10-Apr-2014)
1643 
1644 #420: Remove 'final' modifier from `BeanDeserializerBase.deserializeWithType`
1645  (requested by Ghoughpteighbteau@github)
1646 #422: Allow use of "True" and "False" as aliases for booleans when coercing from
1647   JSON String
1648 #423: Fix `CalendarSerializer` to work with custom format
1649  (reported by sergeymetallic@github)
1650 #433: `ObjectMapper`'s `.valueToTree()` wraps `JsonSerializable` objects into a POJONode
1651  (reported by Francis G)
1652 - Fix null-handling for `CollectionSerializer`
1653 
1654 2.3.2 (01-Mar-2014)
1655 
1656 #378: Fix a problem with custom enum deserializer construction
1657  (reported by BokoEnos@github)
1658 #379: Fix a problem with (re)naming of Creator properties; needed to make
1659  Paranamer module work with NamingStrategy.
1660  (reported by Chris P, cpilsworth@github)
1661 #398: Should deserialize empty (not null) URI from empty String
1662  (reported by pgieser@github)
1663 #406: @JsonTypeIdResolver not working with external type ids
1664  (reported by Martin T)
1665 #411: NumberDeserializers throws exception with NaN and +/- Infinity
1666  (reported by clarkbreyman@github)
1667 #412: ObjectMapper.writerWithType() does not change root name being used
1668  (repoted by jhalterman@github)
1669 - Added `BeanSerializerBase._serializeObjectId()` needed by modules that
1670   override standard BeanSerializer; specifically, XML module.
1671 
1672 2.3.1 (28-Dec-2013)
1673 
1674 #346: Fix problem deserializing `ObjectNode`, with @JsonCreator, empty
1675   JSON Object
1676  (reported by gaff78@github)
1677 #358: `IterableSerializer` ignoring annotated content serializer
1678  (reported by Florian S)
1679 #361: Reduce sync overhead for SerializerCache by using volatile, double-locking
1680  (contributed by stuartwdouglas@github)
1681 #362: UUID output as Base64 String with ObjectMapper.convertValue()
1682  (reported by jknack@github)
1683 #367: Make `TypeNameIdResolver` call `TypeResolver` for resolving base type
1684  (suggested by Ben F)
1685 #370: Fail to add Object Id for POJO with no properties
1686  (reported by jh3141@github)
1687 - Fix for [jackson-module-afterburner#38]: need to remove @JacksonStdImpl from
1688   `RawSerializer`, to avoid accidental removal of proper handling.
1689 
1690 2.3.0 (13-Nov-2013)
1691 
1692 #48: Add support for `InetSocketAddress`
1693  (contributed by Nick T)
1694 #152: Add support for traversing `JsonNode` with (new!) `JsonPointer` implementation
1695  (suggested by fge@github)
1696 #208: Accept "fromString()" as an implicit Creator (factory) method (alias for "valueOf()")
1697  (requested by David P)
1698 #215: Allow registering custom `CharacterEscapes` to use for serialization,
1699  via `ObjectWriter.with(CharacterEscapes)` (and `ObjectMapper.writer(CharacterEscapes)`)
1700 #227: Allow "generic" Enum serializers, deserializers, via `SimpleModule`
1701 #234: Incorrect type information for deeply nested Maps
1702  (reported by Andrei P)
1703 #237: Add `DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY` to optionally
1704   throw `JsonMappingException` on duplicate keys, tree model (`JsonNode`)
1705 #238: Allow existence of overlapping getter, is-getter (choose 'regular' getter)
1706 #239: Support `ByteBuffer`
1707  (suggested by mckamey@github)
1708 #240: Make sure `@JsonSerialize.include` does not accidentally override
1709   class inclusion settings
1710  (requested by thierryhenrio@github)
1711 #253: `DelegatingDeserializer` causes problems for Managed/BackReferences
1712  (reported by bfelaco@github)
1713 #257: Make `UntypedObjectDeserializer` support overides for `List`, `Map` etc
1714 #268: Add new variant of `ObjectMapper.canSerialize()` that can return `Throwable`
1715  that caused false to be returned (if any)
1716 #269: Add support for new `@JsonPropertyDescription` via `AnnotationIntrospector`
1717  as well as `BeanProperty.getMedata().getDescription()`
1718 #270: Add `SerializationFeature.USE_EQUALITY_FOR_OBJECT_ID` to allow use of equality
1719  (instead of identity) for figuring out when to use Object Id
1720  (requested by beku8@github)
1721 #271: Support handling of `@JsonUnwrapped` for in-built JSON Schema generation
1722 #277: Make `TokenBuffer` support new native type and object ids
1723 #302: Add `setNamingStrategy` in `Module.SetupContext`
1724  (suggested by Miguel C)
1725 #305: Add support for accessing `TypeFactory` via `TypeIdResolverBase`
1726  (not yet via `TypeIdResolver` interface), other configuration
1727 #306: Allow use of `@JsonFilter` for properties, not just classes
1728 #307: Allow use of `@JsonFilter` for Maps in addition to POJOs
1729 #308: Improve serialization and deserialization speed of `java.util.UUID` by 4x
1730  (suggested by David P)
1731 #310: Improve `java.util.UUID` serialization with binary codecs, to use "raw" form.
1732 #311: Make sure that "creator properties" are alphabetically ordered too, if
1733   so requested.
1734 #315: Allow per-property definition of null serializer to use, using
1735  new `@JsonSerialize(nullsUsing=xxx)` annotation property
1736 #317: Fix `JsonNode` support for nulls bound to `ObjectNode`, `ArrayNode`
1737  (contributed by Seth P)
1738 #318: Problems with `ObjectMapper.updateValue()`, creator property-backed accessors
1739 #319: Add support for per-call ("contextual") attributes, with defaulting,
1740  to allow keeping track of state during (de)serialization
1741 #324: Make sure to throw `JsonMappingException` from `EnumDeserializer` creator,
1742   not `IllegalArgumentException`
1743  (reported by beverku@github)
1744 #326: Support `@JsonFilter` for "any getter" properties
1745 #334: Make `ArrayNode`, `ObjectNode` non-final again
1746 #337: `AnySetter` does not support polymorphic types
1747  (reported by askvortsov@github)
1748 #340: AtomicReference not working with polymorphic types
1749 #342: Add `DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES` to make `ObjectMapper`
1750   throw exception when encountering explicitly ignored properties
1751  (requested by Ruslan M)
1752 [JACKSON-890]: Support managed/back-references for polymorphic (abstract) types
1753 - Add 'BeanPropertyWriter.isUnwrapping()' for future needs (by Afterburner)
1754 - Add coercions from String "null" (as if null token was parsed) for primitives/Wrappers.
1755 - Add `JsonDeserializer.handledType()`
1756 
1757 2.2.4 (10-Jun-2014)
1758 
1759 #292: Problems with abstract `Map`s, `Collection`s, polymorphic deserialization
1760 #324: EnumDeserializer should throw JsonMappingException, not IllegalArgumentException
1761 #346: Problems deserializing `ObjectNode` from empty JSON Object, with @JsonCreator
1762 
1763 2.2.3 (22-Aug-2013)
1764 
1765 #234: Problems with serializing types for deeply nested generic Maps, default typing
1766 #251: SerializationFeature.WRITE_BIGDECIMAL_AS_PLAIN ignored with JsonNode
1767   serialization
1768  (reported by fge@github)
1769 #259: Fix a problem with JSON Schema generation for `@JsonValue`
1770  (reported by Lior L)
1771 #267: Handle negative, stringified timestamps
1772  (reported by Drecth@github)
1773 #281: Make `NullNode` use configured null-value serializer
1774 #287: Fix problems with converters, Maps with Object values
1775  (reported by antubis@github)
1776 #288: Fix problem with serialization converters assigned with annotations
1777  (reported by cemo@github)
1778 
1779 2.2.2 (26-May-2013)
1780 
1781 #216: Problems with Android, 1.6-only types
1782 #217: JsonProcessingExceptions not all wrapped as expected
1783  (reported by karldmoore@github)
1784 #220: ContainerNode missing 'createNumber(BigInteger)'
1785  (reported by Pascal G)
1786 #223: Duplicated nulls with @JsonFormat(shape=Shape.ARRAY)
1787  (reported by lukegh@github)
1788 #226: Field mapping fail on deserialization to common referenced object when
1789   @JsonUnwrapped is used
1790  (reported by ikvia@github)
1791 #232: Converting bound BigDecimal value to tree fails with WRITE_BIGDECIMAL_AS_PLAIN
1792  (reported by celkings@github)
1793 - Minor fix to handle primitive types for key deserializer lookups
1794 - Add convenience method `MappingIterator.getCurrentLocation()`
1795  (suggested by Tomdz@github)
1796 
1797 2.2.1 (03-May-2013)
1798 
1799 #214: Problem with LICENSE, NOTICE, Android packaging
1800  (reported by thierryd@github)
1801 
1802 2.2.0 (22-Apr-2013)
1803 
1804 Fixes:
1805 
1806 #23: Fixing typing of root-level collections
1807 #118: JsonTypeInfo.as.EXTERNAL_PROPERTY not working correctly
1808  with missing type id, scalar types
1809 #130: TimeZone not set for GregorianCalendar, even if configured
1810 #144: MissingNode.isValueNode() should return 'false'
1811  (reported by 'fge@github')
1812 #146: Creator properties were not being renamed as expected
1813  (contributed by Christoper C)
1814 #188: Problem with ObjectId serialization, 'alwaysAsId' references
1815 
1816 Improvements:
1817 
1818 #116: JavaType implements `java.lang.reflect.Type` (as does `TypeReference`)
1819 #147: Defer reporting of problems with missing creator parameters
1820  (contributed by Christoper C)
1821 #155: Make `ObjectNode` and `ArrayNode` final (other node types already were)
1822  (requested by fge@github)
1823 #161: Add deserializer for java.util.concurrent.ArrayBlockingQueue
1824 #173: Add 'JsonNode.traverse(ObjectCodec)' for convenience
1825 #181: Improve error reporting for missing '_valueDeserializer'
1826 #194: Add `FloatNode` type in tree model (JsonNode)
1827  (requested by msteiger@github)
1828 #199: Allow deserializing `Iterable` instances (as basic `Collection`s)
1829  (requested by electrum@github)
1830 #206: Make 'ObjectMapper.createDeserializationContext()' overridable
1831  (requested by noter@github)
1832 #207: Add explicit support for `short` datatypes, for tree model
1833  (contributed by msteiger@github)
1834 
1835 New features:
1836 
1837 #120: Extend BeanDeserializerModifier to work with non-POJO deserializers
1838 #121: Extend BeanSerializerModifier to work with non-POJO serializers
1839 #124: Add support for serialization converters (@JsonSerializer(converter=...))
1840 #124: Add support for deserialization converters (@JsonDeserializer(converter=...))
1841 #140: Add 'SerializationFeature.WRITE_BIGDECIMAL_AS_PLAIN' to allow forcing
1842   of non-scientific notation when serializing BigDecimals.
1843  (suggested by phedny@github)
1844 #148: Add 'DeserializationFeature.FAIL_ON_INVALID_SUBTYPE`, which allows mapping
1845   entries with missing or invalid type id into null references (instead of failing).
1846   Also allows use of '@JsonTypeInfo.defaultImpl = NoClass.class' as alternative.
1847 #159: Add more accessors in 'MappingIterator': getParser(), getParserSchema(),
1848   readAll()
1849  (suggested by Tom D)
1850 #190: Add 'MapperFeature.ALLOW_FINAL_FIELDS_AS_MUTATORS' (default: true) for
1851  pruning out final fields (to avoid using as mutators)
1852  (requested by Eric T)
1853 #195: Add 'MapperFeature.INFER_PROPERTY_MUTATORS' (default: enabled) for finer
1854   control of what mutators are auto-detected.
1855  (requested by Dain S)
1856 #198: Add SPI metadata, handling in ObjectMapper (findModules()), for
1857   automatic registration of auto-detected extension modules
1858  (suggested by 'beamerblvd@github')
1859 #203: Added new features to support advanced date/time handling:
1860   - SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS
1861   - DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS
1862   - DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE
1863 
1864 Other:
1865 
1866 #126: Update JDK baseline to 1.6
1867 * API under 'com.fasterxml.jackson.databind.jsonFormatVisitors' changed significantly
1868   based on experiences with external JSON Schema generator.
1869 * Version information accessed via code-generated access class, instead of reading
1870   VERSION.txt
1871 * Added 2 methods in Converter interface: getInputType(), getOutputType(),
1872   to allow programmatic overrides (needed by JAXB annotation module)
1873 
1874 2.1.4 (26-Feb-2013)
1875 
1876 * [JACKSON-887]: StackOverflow with parameterized sub-class field
1877  (reported by Alexander M)
1878 * [#130]: TimeZone not set for GregorianCalendar, when deserializing
1879 * [#157]: NPE when registering module twice
1880 * [#162]: JsonNodeFactory: work around an old bug with BigDecimal and zero
1881  (submitted by fge@github)
1882 * [#166]: Incorrect optimization for `ObjectMapper.convertValue(Class)`
1883  (reported by Eric T)
1884 * [#167]: Problems with @JsonValue, polymorphic types (regression from 1.x)
1885  (reported by Eric T)
1886 * [#170]: Problems deserializing `java.io.File` if creator auto-discovery disabled
1887  (reported by Eric T)
1888 * [#175]: NPE for JsonMappingException, if no path is specified
1889  (reported by bramp@github)
1890 
1891 2.1.3 (19-Jan-2013)
1892 
1893 * [Issue#141]: ACCEPT_EMPTY_STRING_AS_NULL_OBJECT not working for enums
1894 * [Issue#142]: Serialization of class containing EnumMap with polymorphic enum
1895   fails to generate class type data
1896  (reported by kidavis4@github)
1897 
1898 2.1.2 (04-Dec-2012)
1899 
1900 * [Issue#106]: NPE in ObjectArraySerializer.createContextual(...)
1901 * [Issue#117]: HandlerInstantiator defaulting not working
1902  (reported by Alexander B)
1903 * [Issue#118]: Problems with JsonTypeInfo.As.EXTERNAL_PROPERTY, scalar values
1904  (reported by Adva11@github)
1905 * [Issue#119]: Problems with @JsonValue, JsonTypeInfo.As.EXTERNAL_PROPERTY
1906  (reported by Adva11@github)
1907 * [Issue#122]: ObjectMapper.copy() was not copying underlying mix-in map
1908  (reported by rzlo@github)
1909 
1910 2.1.1 (11-Nov-2012)
1911 
1912 Fixes:
1913 
1914 * [JACKSON-875]: Enum values not found if Feature.USE_ANNOTATIONS disabled
1915  (reported by Laurent P)
1916 * [Issue#93]: ObjectNode.setAll() broken; would not add anything for
1917   empty ObjectNodes.
1918  (reported by Francis G)
1919 * Making things implement java.io.Serializable:
1920   - Issues: #94, #99, #100, #102
1921     (reported by Sean B)
1922 * [Issue#96]: Problem with JsonTypeInfo.As.EXTERNAL_PROPERTY, defaultImpl
1923  (reported by Adva11@github)
1924 
1925 2.1.0 (08-Oct-2012)
1926 
1927   New minor version for 2.x series. Major improvements in multiple areas,
1928   including:
1929 
1930   - Dataformat auto-detection
1931   - More `@JsonFormat.shape` variant to serialize Collections as
1932     JSON Objects, POJOs as JSON Arrays (csv-like).
1933   - Much more configuration accessible via ObjectReader, ObjectWriter
1934   - New mechanism for JSON Schema generation, other uses (in future)
1935 
1936 Fixes:
1937 
1938 * [JACKSON-830]/[Issue#19]: Change OSGi bundle name to be fully-qualified
1939 * ]JACKSON-847]: Make @JsonIdentityInfo work with property-based creator
1940 * [JACKSON-851]: State corruption with ObjectWriter, DefaultPrettyPrinter
1941  (reported by Duncan A)
1942 * [Issue#75]: Too aggressive KeySerializer caching
1943 * Minor fix wrt [Issue#11], coercion needed extra checks
1944 
1945 Improvements:
1946 
1947 * [JACKSON-758]: Remove 'IOException' from throws clauses of "writeValueAsString"
1948   and "writeValueAsBytes" of ObjectMapper/ObjectWriter
1949  (suggested by G-T Chen)
1950 * [JACKSON-839]: Allow "upgrade" of integer number types for
1951   UntypedObjectDeserializer, even with default typing enabled.
1952 * [JACKSON-850]: Allow use of zero-arg factory methods as "default creator"
1953   (suggested by Razvan D)
1954 * [Issue#9]: Implement 'required' JSON Schema attribute for bean properties
1955 * [Issue#20]: Add new exception type, InvalidFormatException (sub-type of
1956   JsonMappingException) to indicate data format problems
1957  (suggested by HolySamosa@github)
1958 * [Issue#30]: ObjectReader and ObjectWriter now try to pre-fetch root
1959   (de)serializer if possible; minor performance improvement (2% for small POJOs).
1960 * [Issue#33]: Simplified/clarified definition of 'ObjectReader.readValues()';
1961   minor change in behavior for JSON Array "wrapped" sequences
1962 * [Issue#60]: Add 'JsonNode.hasNonNull(...)' method(s)
1963  (suggested by Jeff S on mailing list)
1964 * [Issue#64]: Add new "standard" PropertyNamingStrategy, PascalCaseStrategy
1965   (PropertyNamingStrategy.PASCAL_CASE_TO_CAMEL_CASE)
1966  (contributed by Sean B)
1967 * [Issue#65]: Add getters to `ObjectMapper`, DeserializationContext/-Factory.
1968  (contributed by Dmitry K)
1969 * [Issue#69]: Add `PropertyName` abstraction, new methods in AnnotationIntrospector
1970 * [Issue#80]: Make `DecimalNode` normalize input, to make "1.0" and "1.00"equal
1971  (reported by fge@github)
1972 
1973 New features:
1974 
1975 * [Issue#15]: Support data format auto-detection via ObjectReader (added
1976   'withFormatDetection(...)' fluent factories)
1977 * [Issue#21]: Add 'ObjectNode.set(...)' method (and related) to improve
1978   chaining, semantic consistency of Tree Model API
1979  (suggested by fge@Github)
1980 * [Issue#22]: Add 'ObjectMapper.setAnnotationIntrospectors()' which allows
1981   defining different introspectors for serialization, deserialization
1982 * [Issue#24]: Allow serialization of Enums as JSON Objects
1983  (suggested by rveloso@github)
1984 * [Issue#28]: Add 'ObjectMapper.copy()', to create non-linked copy of
1985   mapper, with same configuration settings
1986 * [Issue#29]: Allow serializing, deserializing POJOs as JSON Arrays
1987   by using `@JsonFormat(shape=Shape.ARRAY)`
1988 * [Issue#40]: Allow serialization of Collections as JSON Objects
1989   (and deserialization from)
1990  (suggested by 'rveloso@github')
1991 * [Issue#42]: Allow specifying Base64 variant to use for Base64-encoded data
1992   using ObjectReader.with(Base64Variant), ObjectWriter.with(Base64Variant).
1993  (suggested by 'mpfau@github')
1994 * [Issue#45]: Add '@JsonNaming' annotation to define per-class PropertyNamingStrategy
1995  (suggested by Mark W)
1996 * [Pull#58]: Make 'MappingIterator' implement 'Closable'
1997  (contributed by Pascal G)
1998 * [Issue#72]: Add 'MapperFeature.USE_WRAPPER_NAME_AS_PROPERTY_NAME' to use
1999   wrapper name annotations for renaming properties
2000 * [Issue#87]: Add 'StdDelegatingSerializer', 'StdDelegatingDeserializer' to
2001   simplify writing of two-step handlers
2002 * (issue #4 of jackson-annotations): Add `@JsonIdentityReference(alwaysAsId=true)`
2003   to force ALL references to an object written as Object Id, even the first one.
2004 * Added 'ObjectReader#withHandler' to allow for reconfiguring deserialization
2005   problem handler
2006  (suggested by 'electricmonk')
2007 
2008 Other changes:
2009 
2010 * New variant of AnnotationIntrospector.getFormat(), to support class
2011   annotations
2012 * It is now possible to serialize instances of plain old Object, iff
2013   'FAIL_ON_EMPTY_BEANS' is disabled.
2014 * Trying to remove reference to "JSON" in datatype conversion errors
2015  (since databinding is format-agnostic)
2016 
2017 INCOMPATIBILITIES: (rats!)
2018 
2019 * Note that [Issue#33] (see above) is, technically speaking, backwards
2020   imcompatible change. It is estimated that it should NOT affect most
2021   users, as changes are to edge cases (and undocumented ones at that).
2022   However, it can potentially cause problems with upgrade.
2023 * Implementation of `JsonFormatVisitable` resulting in 2 new methods
2024   being added in `BeanPropertyFilter` interface -- this is unfortunate,
2025   but was required to support full traversability.
2026 
2027 2.0.4 (26-Jun-2012)
2028 
2029 * [Issue#6]: element count for PrettyPrinter, endObject wrong
2030    (reported by "thebluemountain")
2031 * [JACKSON-838]: Utf8StreamParser._reportInvalidToken() skips letters
2032     from reported token name
2033    (reported by Lóránt Pintér)
2034 * [JACKSON-841] Data is doubled in SegmentedStringWriter output
2035    (reported by Scott S)
2036 * [JACKSON-842] ArrayIndexOutOfBoundsException when skipping C-style comments
2037    (reported by Sebastien R)
2038 
2039 2.0.3: no version 2.0.3 released -- only used for extension modules
2040 
2041 2.0.2 [14-May-2012]
2042 
2043 Fixes:
2044 
2045 * [Issue#14]: Annotations were not included from parent classes of
2046   mix-in classes
2047  (reported by @guillaup)
2048 * [JACKSON-824]: Combination of JSON Views, ObjectMapper.readerForUpdating()
2049   was not working
2050  (reported by Nir S)
2051 (and all fixes from 1.9.7)
2052 
2053 Improvements:
2054 
2055 * [Issue#11]: Improve ObjectMapper.convertValue()/.treeToValue() to use
2056   cast if possible
2057 
2058 2.0.1 [23-Apr-2012]
2059 
2060 Fixes:
2061 
2062 * [JACKSON-827] Ensure core packages work on JDK 1.5
2063  (reported by Pascal g)
2064 * [JACKSON-829] Custom serializers not working for List<String> properties,
2065   @JsonSerialize(contentUsing)
2066  (reported by James R)
2067 
2068 Improvements:
2069 
2070 * [Issue#5]: Add support for maps with java.util.Locale keys to the set of
2071   StdKeyDeserializers
2072  (contributed by Ryan G)
2073 
2074 2.0.0 [25-Mar-2012]
2075 
2076 Fixes:
2077 
2078 * [JACKSON-368]: Problems with managed references, abstract types
2079 * [JACKSON-711]: Delegating @JsonCreator did not work with Injectable values
2080 * [JACKSON-798]: Problem with external type id, creators
2081   (reported by Casey L)
2082 (and all fixes up until and including 1.9.6)
2083 
2084 Improvements:
2085 
2086 * [JACKSON-546]: Indicate end-of-input with JsonMappingException instead
2087   of EOFException, when there is no parsing exception
2088 * [JACKSON-664]: Reduce overhead of type resolution by adding caching
2089   in TypeFactory
2090 * [JACKSON-690]: Pass DeserializationContext through ValueInstantiator
2091 * [JACKSON-695]: Add 'isEmpty(value)' in JsonSerializer to allow
2092   customizing handling of serialization of empty values
2093 * [JACKSON-710]: 'ObjectMapper.convertValue()' should ignore root value
2094   wrapping/unwrapping settings
2095 * [JACKSON-730] Split various features (JsonParser, JsonGenerator,
2096   SerializationConfig, DeserializationConfig) into per-factory
2097   features (MapperFeature, JsonFactory.Feature) an per
2098   instance features (existing ones)
2099 * [JACKSON-732]: Allow 'AnnotationIntrospector.findContentDeserializer()'
2100   (and similar) to return instance, not just Class<?> for instance
2101  (requested by James R)
2102 * [JACKSON-736]: Add (more) access to array, container and map serializers
2103 * [JACKSON-737]: Allow accessing of "creator properties" for BeanDeserializer
2104 * [JACKSON-748]: Add 'registerSubtypes' to 'Module.setupContext' (and SimpleModule)
2105 * [JACKSON-749]: Make @JsonValue work for Enum deserialization
2106 * [JACKSON-769]: ObjectNode/ArrayNode: change 'put', 'insert', 'add' to return
2107   'this node' (unless already returning something)
2108 * [JACKSON-770]: Simplify method naming for JsonNode, drop unnecessary 'get' prefix
2109   from methods like 'getTextValue()' (becomes 'textValue()')
2110 * [JACKSON-777]: Rename 'SerializationConfig.Feature' as 'SerializationFeature',
2111   'DeserializationConfig.Feature' as 'DeserializationFeature'
2112 * [JACKSON-780]: MissingNode, NullNode should return 'defaultValue' from 'asXxx' methods,
2113   (not 0 for numbers), as they are not numeric types
2114 * [JACKSON-787]: Allow use of @JsonIgnoreProperties for properties (fields, getters, setters)
2115 * [JACKSON-795]: @JsonValue was not working for Maps, Collections
2116 * [JACKSON-800]: Add 'Module.SetupContext#addDeserializationProblemHandler'
2117  (suggested by James R)
2118 
2119 New features:
2120 
2121 * [JACKSON-107]: Add support for Object Identity (to handled cycles, shared refs),
2122   with @JsonIdentityInfo
2123 * [JACKSON-435]: Allow per-property Date formatting using @JsonFormat.
2124 * [JACKSON-437]: Allow injecting of type id as POJO property, by setting
2125   new '@JsonTypeInfo.visible' property to true.
2126 * [JACKSON-469]: Support "Builder pattern" for deserialiation; that is, allow
2127   use of separate Builder object for data binding, creating actual value
2128 * [JACKSON-608]: Allow use of JSON Views for deserialization
2129 * [JACKSON-636]: Add 'SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS' to allow
2130   forced sorting of Maps during serialization
2131   (suggested by Joern H)
2132 * [JACKSON-669]: Allow prefix/suffix for @JsonUnwrapped properties
2133  (requested by Aner P)
2134 * [JACKSON-707]: Add 'JsonNode.deepCopy()', to create safe deep copies
2135   of ObjectNodes, ArrayNodes.
2136 * [JACKSON-714]: Add general-purpose @JsonFormat annotation
2137 * [JACKSON-718]: Added 'JsonNode.canConvertToInt()', 'JsonNode.canConvertToLong()'
2138 * [JACKSON-747]: Allow changing of 'SerializationFeature' for ObjectWriter,
2139   'DeserializationFeature' for ObjectReader.
2140 * [JACKSON-752]: Add @JsonInclude (replacement of @JsonSerialize.include)
2141 * [JACKSON-754]: Add @JacksonAnnotationsInside for creating "annotation
2142   bundles" (also: AnnotationIntrospector.isAnnotationBundle())
2143 * [JACKSON-762]: Allow using @JsonTypeId to specify property to use as
2144   type id, instead of using separate type id resolver.
2145 * [JACKSON-764]: Allow specifying "root name" to use for root wrapping
2146   via ObjectReader, ObjectWriter.
2147 * [JACKSON-772]: Add 'JsonNode.withArray()' to use for traversing Array nodes.
2148 * [JACKSON-793]: Add support for configurable Locale, TimeZone to use
2149   (via SerializationConfig, DeserializationConfig)
2150 * [JACKSON-805]: Add 'SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED'
2151   to improve interoperability with BadgerFish/Jettison
2152 * [JACKSON-810]: Deserialization Feature: Allow unknown Enum values via
2153   'DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL'
2154   (suggested by Raymond R)
2155 * [JACKSON-813]: Add '@JsonSerializableSchema.id' attribute, to indicate
2156   'id' value to add to generated JSON Schemas.
2157 
2158 [entries for versions 1.x and earlier not retained; refer to earlier releases)
2159