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