1 Project: jackson-core 2 3 Contains core streaming reader (`JsonParser`) and writer (`JsonGenerator`) abstractions, 4 factory for constructing readers/writers (JsonFactory), as well as a minimal set 5 of interfaces needed for streaming level to make callbacks and call-throughs, 6 via `ObjectCodec` and `TreeNode`. 7 8 Also includes implementation of this API for JSON. 9 Forms the base for other data formats as well, despite naming that suggests 10 JSON-specificity: naming is due to history, as Jackson started out as pure 11 JSON library. 12 13 ------------------------------------------------------------------------ 14 === Releases === 15 ------------------------------------------------------------------------ 16 17 2.12.0 (not yet released) 18 19 #618: Publish Gradle Module Metadata 20 (contributed by Jendrik J) 21 #619: Add `StreamReadCapability` for further format-based/format-agnostic 22 handling improvements 23 #627: Add `JsonParser.isExpectedNumberIntToken()` convenience method 24 #630: Add `StreamWriteCapability` for further format-based/format-agnostic 25 handling improvements 26 #631: Add `JsonParser.getNumberValueExact()` to allow precision-retaining buffering 27 - Deprecate `JsonParser.getCurrentTokenId()` (use `#currentTokenId()` instead) 28 29 2.11.2 (02-Aug-2020) 30 2.11.1 (25-Jun-2020) 31 32 No changes since 2.11.0 33 34 2.11.0 (26-Apr-2020) 35 36 #504: Add a String Array write method in the Streaming API 37 (requested by Michel F, impl contributed by Oleksandr P) 38 #565: Synchronize variants of `JsonGenerator#writeNumberField` with `JsonGenerator#writeNumber` 39 (contributed by valery1707@github) 40 #587: Add JsonGenerator#writeNumber(char[], int, int) method 41 (contributed by Volkan Y) 42 #606: Do not clear aggregated contents of `TextBuffer` when `releaseBuffers()` called 43 #609: `FilteringGeneratorDelegate` does not handle `writeString(Reader, int)` 44 (reported by Volkan Y) 45 #611: Optionally allow leading decimal in float tokens 46 (contributed by James A) 47 48 2.10.5 (21-Jul-2020) 49 50 #616: Parsing JSON with `ALLOW_MISSING_VALUE` enabled results in endless stream 51 of `VALUE_NULL` tokens 52 (reported by Justin L) 53 54 2.10.4 (03-May-2020) 55 56 #605: Handle case when system property access is restricted 57 (reported by rhernandez35@github) 58 59 2.10.3 (03-Mar-2020) 60 61 #592: DataFormatMatcher#getMatchedFormatName throws NPE when no match exists 62 (reported by Scott L) 63 #603: 'JsonParser.getCurrentLocation()` byte/char offset update incorrectly for big payloads 64 (reported, fix contributed by Fabien R) 65 66 2.10.2 (05-Jan-2020) 67 68 #580: FilteringGeneratorDelegate writeRawValue delegate to `writeRaw()` 69 instead of `writeRawValue()` 70 (reported by Arnaud R) 71 #582: `FilteringGeneratorDelegate` bug when filtering arrays (in 2.10.1) 72 (reported by alarribeau@github) 73 74 2.10.1 (09-Nov-2019) 75 76 #455: Jackson reports wrong locations for JsonEOFException 77 (reported by wastevenson@github, fix contributed by Todd O'B 78 #567: Add `uses` for `ObjectCodec` in module-info 79 (reported by Marc M) 80 #578: Array index out of bounds in hex lookup 81 (reported by Emily S) 82 83 2.10.0 (26-Sep-2019) 84 85 #433: Add Builder pattern for creating configured Stream factories 86 #464: Add "maximum unescaped char" configuration option for `JsonFactory` via builder 87 #467: Create `JsonReadFeature` to move JSON-specific `JsonParser.Feature`s to 88 #479: Improve thread-safety of buffer recycling 89 #480: `SerializableString` value can not directly render to Writer 90 (requested by Philippe M) 91 #481: Create `JsonWriteFeature` to move JSON-specific `JsonGenerator.Feature`s to 92 #484: Implement `UTF8JsonGenerator.writeRawValue(SerializableString)` (and 93 `writeRaw(..)`) more efficiently 94 #495: Create `StreamReadFeature` to move non-json specific `JsonParser.Feature`s to 95 #496: Create `StreamWriteFeature` to take over non-json-specific `JsonGenerator.Feature`s 96 #502: Make `DefaultPrettyPrinter.createInstance()` to fail for sub-classes 97 #506: Add missing type parameter for `TypeReference` in `ObjectCodec` 98 #508: Add new exception type `InputCoercionException` to be used for failed coercions 99 like overflow for `int` 100 #517: Add `JsonGenerator.writeStartObject(Object, int)` (needed by CBOR, maybe Avro) 101 #527: Add simple module-info for JDK9+, using Moditect 102 #533: UTF-8 BOM not accounted for in JsonLocation.getByteOffset() 103 (contributed by Fabien R) 104 #539: Reduce max size of recycled byte[]/char[] blocks by `TextBuffer`, `ByteArrayBuilder` 105 #547: `CharsToNameCanonicalizer`: Internal error on `SymbolTable.rehash()` with high 106 number of hash collisions 107 (reported by Alex R) 108 #548: ByteQuadsCanonicalizer: ArrayIndexOutOfBoundsException in addName 109 (reported by Alex R) 110 #549: Add configurability of "quote character" for JSON factory 111 #561: Misleading exception for unquoted String parsing 112 #563: Async parser does not keep track of Array context properly 113 (reported by Doug R) 114 - Rewrite `JsonGenerator.copyCurrentStructure()` to remove recursion) 115 - Add `missingNode()`, `nullNode()` in `TreeCodec` 116 - Add `JsonParserDelegate.delegate()` methods 117 118 2.9.10 (21-Sep-2019) 119 120 #540: UTF8StreamJsonParser: fix byte to int conversion for malformed escapes 121 (reported by Alex R and Sam S) 122 #556: 'IndexOutOfBoundsException' in UTF8JsonGenerator.writeString(Reader, len) 123 when using a negative length 124 (reported by jacob-alan-ward@github) 125 126 2.9.9 (16-May-2019) 127 128 #516: _inputPtr off-by-one in UTF8StreamJsonParser._parseNumber2() 129 (reported by Henrik G) 130 #531: Non-blocking parser reports incorrect locations when fed with non-zero offset 131 (reported by David N) 132 133 2.9.8 (15-Dec-2018) 134 135 #488: Fail earlier on coercions from "too big" `BigInteger` into 136 fixed-size types (`int`, `long`, `short`) 137 #510: Fix ArrayIndexOutofBoundsException found by LGTM.com 138 (reported by Alexander E-T) 139 - Improve exception message for missing Base64 padding (see databind#2183) 140 141 2.9.7 (19-Sep-2018) 142 143 #476: Problem with `BufferRecycler` via async parser (or when sharing parser 144 across threads) 145 #477: Exception while decoding Base64 value with escaped `=` character 146 #488: Fail earlier on coercions from "too big" `BigInteger` into 147 fixed-size types (`int`, `long`, `short`) 148 149 2.9.6 (12-Jun-2018) 150 151 #400: Add mechanism for forcing `BufferRecycler` released (to call on shutdown) 152 (contributed by Jeroen B) 153 #460: Failing to link `ObjectCodec` with `JsonFactory` copy constructor 154 #463: Ensure that `skipChildren()` of non-blocking `JsonParser` will throw 155 exception if not enough input 156 (requested by Doug R) 157 158 2.9.5 (26-Mar-2018) 159 160 No changes since 2.9.4 161 162 2.9.4 (24-Jan-2018) 163 164 #414: Base64 MIME variant does not ignore white space chars as per RFC2045 165 (reported by tmoschou@github) 166 #437: `ArrayIndexOutOfBoundsException` in `UTF8StreamJsonParser` 167 (reported by Igor A) 168 169 2.9.3 (09-Dec-2017) 170 171 #419: `ArrayIndexOutOfBoundsException` from `UTF32Reader.read()` on invalid input 172 173 2.9.2 (13-Oct-2017) 174 175 - New parent pom (`jackson-base`) 176 177 2.9.1 (07-Sep-2017) 178 179 #397: Add `Automatic-Module-Name` ("com.fasterxml.jackson.core") for JDK 9 module system 180 181 2.9.0 (30-Jul-2017)) 182 183 #17: Add 'JsonGenerator.writeString(Reader r, int charLength)' 184 (constributed by Logan W) 185 #57: Add support for non-blocking ("async") JSON parsing 186 #208: Make use of `_matchCount` in `FilteringParserDelegate` 187 (contributed by Rafal F) 188 #242: Add new write methods in `JsonGenerator` for writing type id containers 189 #304: Optimize `NumberOutput.outputLong()` method 190 #306: Add new method in `JsonStreamContext` to construct `JsonPointer` 191 #312: Add `JsonProcessingException.clearLocation()` to allow clearing 192 possibly security-sensitive information 193 (contributed by Alex Y) 194 #314: Add a method in `JsonParser` to allow checking for "NaN" values 195 #323: Add `JsonParser.ALLOW_TRAILING_COMMA` to work for Arrays and Objects 196 (contributed by Brad H) 197 #325: `DataInput` backed parser should handle `EOFException` at end of doc 198 (reported by Brad H) 199 #330: `FilteringParserDelegate` seems to miss last closing `END_OBJECT` 200 (contributed by Rafal F) 201 #340: Making `WriterBasedJsonGenerator` non-final 202 (requested by rfoltyns@github) 203 #356: Improve indication of "source reference" in `JsonLocation` wrt `byte[]`,`char[]` 204 #372: JsonParserSequence#skipChildren() throws exception when current delegate is 205 TokenBuffer.Parser with "incomplete" JSON 206 (contributed by Michael S) 207 #374: Minimal and DefaultPrettyPrinter with configurable separators 208 (contributed by Rafal F) 209 210 2.8.11 (23-Dec-2017) 211 212 #418: ArrayIndexOutOfBoundsException from UTF32Reader.read on invalid input 213 (reported, contributed fix for by pfitzsimons-r7@github) 214 215 2.8.10 (24-Aug-2017) 216 217 No changes since 2.8.9 218 219 2.8.9 (12-Jun-2017) 220 221 #382: ArrayIndexOutOfBoundsException from UTF32Reader.read on invalid input 222 (reported by Wil S) 223 224 2.8.8 (05-Apr-2017) 225 226 #359: FilteringGeneratorDelegate does not override writeStartObject(Object forValue) 227 (contributed by Arnaud R) 228 #362: Use correct length variable for UTF-8 surrogate writing 229 230 2.8.7 (21-Feb-2017) 231 232 #349: CharsToNameCanonicalizer performance bottleneck 233 (reported by Nuno D, nmldiegues@github) 234 #351: `java.lang.NegativeArraySizeException` at `ByteArrayBuilder.toByteArray()` 235 #354: Buffer size dependency in UTF8JsonGenerator writeRaw 236 (reported by Chistopher C) 237 238 2.8.6 (12-Jan-2017) 239 240 #322: Trim tokens in error messages to 256 byte to prevent attacks 241 (contributed by Alessio S) 242 #335: Missing exception for invalid last character of base64 string to decode 243 using `Base64Variant.decode()` 244 245 2.8.5 (14-Nov-2016) 246 2.8.4 (14-Oct-2016) 247 248 No changes since 2.8.3 249 250 2.8.3 (17-Sep-2016) 251 252 #318: Add support for writing `byte[]` via `JsonGenerator.writeEmbeddedObject()` 253 254 2.8.2 (30-Aug-2016) 255 2.8.1 (20-Jul-2016) 256 257 No changes since 2.8.0 258 259 2.8.0 (04-Jul-2016) 260 261 #86: Allow inclusion of request body for `JsonParseException` 262 (contributed by LokeshN) 263 #117: Add `JsonParser.Feature.ALLOW_MISSING_VALUES` to support for missing values 264 (contributed by LokeshN) 265 #136: Add `JsonpCharacterEscapes` for easier handling of potential problems 266 with JSONP and rare but technically allowed \u2028 and \u2029 linefeed characters 267 #253: Add `JsonGenerator. writeEmbeddedObject()` to allow writes of opaque native types 268 (suggested by Gregoire C) 269 #255: Relax ownership checks for buffers not to require increase in size 270 #257: Add `writeStartObject(Object pojo)` to streamline assignment of current value 271 #265: `JsonStringEncoder` should allow passing `CharSequence` 272 (contributed by Mikael S) 273 #276: Add support for serializing using `java.io.DataOutput` 274 #277: Add new scalar-array write methods for `int`/`long`/`double` cases 275 #279: Support `DataInput` for parsing 276 #280: Add `JsonParser.finishToken()` to force full, non-lazy reading of current token 277 #281: Add `JsonEOFException` as sub-class of `JsonParseException` 278 #282: Fail to report error for trying to write field name outside Object (root level) 279 #285: Add `JsonParser.getText(Writer)` 280 (contributed by LokesN) 281 #290: Add `JsonGenerator.canWriteFormattedNumbers()` for introspection 282 #294: Add `JsonGenerator.writeFieldId(long)` method to support binary formats 283 with non-String keys 284 #296: `JsonParserSequence` skips a token on a switched Parser 285 (reported by Kevin G) 286 - Add `JsonParser.currentToken()` and `JsonParser.currentTokenId()` as replacements 287 for `getCurrentToken()` and `getCurrentTokenId()`, respectively. Existing methods 288 will likely be deprecated in 2.9. 289 290 2.7.9.3: 291 292 #1872: NullPointerException in SubTypeValidator.validateSubType when 293 validating Spring interface 294 #1931: Two more c3p0 gadgets to exploit default typing issue 295 296 2.7.9.2 (20-Dec-2017) 297 298 #1607: `@JsonIdentityReference` not used when setup on class only 299 #1628: Don't print to error stream about failure to load JDK 7 types 300 #1680: Blacklist couple more types for deserialization 301 #1737: Block more JDK types from polymorphic deserialization 302 #1855: Blacklist for more serialization gadgets (dbcp/tomcat, spring) 303 304 2.7.9.1 (18-Apr-2017) 305 306 #1599: Jackson Deserializer security vulnerability 307 308 2.7.9 (04-Feb-2017) 309 310 No changes since 2.7.8 311 312 2.7.8 (26-Sep-2016) 313 314 #317: ArrayIndexOutOfBoundsException: 200 on floating point number with exactly 315 200-length decimal part 316 (reported by Allar H) 317 318 2.7.7 (27-Aug-2016) 319 320 #307: JsonGenerationException: Split surrogate on writeRaw() input thrown for 321 input of a certain size 322 (reported by Mike N) 323 #315: `OutOfMemoryError` when writing BigDecimal 324 (reported by gmethwin@github) 325 326 2.7.6 (23-Jul-2016) 327 328 - Clean up of FindBugs reported possible issues. 329 330 2.7.5 (11-Jun-2016) 331 332 #280: FilteringGeneratorDelegate.writeUTF8String() should delegate to writeUTF8String() 333 (reported by Tanguy L) 334 335 2.7.4 (29-Apr-2016) 336 337 #209: Make use of `_allowMultipleMatches` in `FilteringParserDelegate` 338 (contributed by Lokesh N) 339 - Make `processor` transient in `JsonParseException`, `JsonGenerationException` 340 to keep both Serializable 341 342 2.7.3 (16-Mar-2016) 343 344 No changes since 2.7.2. 345 346 2.7.2 (26-Feb-2016) 347 348 #246: Fix UTF8JsonGenerator to allow QUOTE_FIELD_NAMES to be toggled 349 (suggested by philipa@github) 350 351 2.7.1 (02-Feb-2016) 352 353 No changes since 2.7.0. 354 355 2.7.0 (10-Jun-2016) 356 357 #37: JsonParser.getTokenLocation() doesn't update after field names 358 (reported by Michael L) 359 #198: Add back-references to `JsonParser` / `JsonGenerator` for low-level parsing issues 360 (via `JsonParseException`, `JsonGenerationException`) 361 #211: Typo of function name com.fasterxml.jackson.core.Version.isUknownVersion() 362 (reported by timray@github) 363 #229: Array element and field token spans include previous comma. 364 - Implemented `ReaderBasedJsonParser.nextFieldName(SerializableString)` 365 (to improved Afterburner performance over String/char[] sources) 366 367 2.6.6 (05-Apr-2016) 368 369 #248: VersionUtil.versionFor() unexpectedly return null instead of Version.unknownVersion() 370 (reported by sammyhk@github) 371 372 2.6.5 (19-Jan-2016) 373 2.6.4 (07-Dec-2015) 374 375 No changes since 2.6.3. 376 377 2.6.3 (12-Oct-2015) 378 379 #220: Problem with `JsonParser.nextFieldName(SerializableString)` for byte-backed parser 380 381 2.6.2 (14-Sep-2015) 382 383 #213: Parser is sometimes wrong when using CANONICALIZE_FIELD_NAMES 384 (reported by ichernev@github) 385 #216: ArrayIndexOutOfBoundsException: 128 when repeatedly serializing to a byte array 386 (reported by geekbeast@github) 387 388 2.6.1 (09-Aug-2015) 389 390 #207: `ArrayIndexOutOfBoundsException` in `ByteQuadsCanonicalizer` 391 (reported by Florian S, fschopp@github) 392 393 2.6.0 (17-Jul-2015) 394 395 #137: Allow filtering content read via `JsonParser` by specifying `JsonPointer`; 396 uses new class `com.fasterxml.jackson.core.filter.FilteringParserDelegate` 397 (and related, `TokenFilter`) 398 #177: Add a check so `JsonGenerator.writeString()` won't work if `writeFieldName()` expected. 399 #182: Inconsistent TextBuffer#getTextBuffer behavior 400 (contributed by Masaru H) 401 #185: Allow filtering content written via `JsonGenerator` by specifying `JsonPointer`; 402 uses new class `com.fasterxml.jackson.core.filter.FilteringGeneratorDelegate` 403 (and related, `TokenFilter`) 404 #188: `JsonParser.getValueAsString()` should return field name for `JsonToken.FIELD_NAME`, not `null` 405 #189: Add `JsonFactory.Feature.USE_THREAD_LOCAL_FOR_BUFFER_RECYCLING` (default: true), which may 406 be disabled to prevent use of ThreadLocal-based buffer recyling. 407 (suggested by soldierkam@github) 408 #195: Add `JsonGenerator.getOutputBuffered()` to find out amount of content buffered, 409 not yet flushed. 410 (requested by Ruediger M) 411 #196: Add support for `FormatFeature` extension, for format-specifc Enum-backed 412 parser/generator options 413 - Minor improvement to construction of "default PrettyPrinter": now overridable by data format 414 modules 415 - Implement a new yet more optimized symbol table for byte-backed parsers 416 - Add `JsonParser.Feature.IGNORE_UNDEFINED`, useful for data formats like protobuf 417 - Optimize writing of String names (remove intermediate copy; with JDK7 no speed benefit) 418 419 2.5.5 (07-Dec-2015) 420 421 #220: Problem with `JsonParser.nextFieldName(SerializableString)` for byte-backed parser 422 #221: Fixed ArrayIndexOutOfBounds exception for character-based `JsonGenerator` 423 (reported by a-lerion@github) 424 425 2.5.4 (09-Jun-2015) 426 427 No changes. 428 429 2.5.3 (24-Apr-2015) 430 431 #191: Longest collision chain in symbol table now exceeds maximum -- suspect a DoS attack 432 (reported by Paul D) 433 434 2.5.2 (29-Mar-2015) 435 436 #181: Failure parsing -Infinity on buffer boundary 437 (reported by brharrington@github) 438 #187: Longest collision chain in symbol table exceeds maximum length routinely 439 in non-malicious code 440 (reported by mazzaferri@github) 441 442 2.5.1 (06-Feb-2015) 443 444 #178: Add `Lf2SpacesIndenter.withLinefeed` back to keep binary-compatibility with 2.4.x 445 (reported by ansell@github) 446 - Minor fix to alignment of null bytes in the last 4 bytes of name, in case where name 447 may cross the input boundary 448 449 2.5.0 (01-Jan-2015) 450 451 #148: BytesToNameCanonicalizer can mishandle leading null byte(s). 452 (reported by rjmac@github) 453 #164: Add `JsonGenerator.Feature.IGNORE_UNKNOWN` (but support via individual 454 data format modules) 455 #166: Allow to configure line endings and indentation 456 (contributed by Aaron D) 457 #167: `JsonGenerator` not catching problem of writing field name twice in a row 458 #168: Add methods in `JsonStreamContext` for keeping track of "current value" 459 #169: Add `JsonPointer.head()` 460 (contributed by Alex S, lordofthejars@github) 461 - Added `ResolvedType.getParameterSource()` to support better resolution 462 of generic types. 463 - Added `JsonGenerator.writeRawValue(SerializableString)` 464 - Added `JsonParser.hasExpectedStartObjectToken()` convenience method 465 - Added `JsonParser.hasTokenId(id)` convenience method 466 - Added `JsonParser.nextFieldName()` (no args) 467 468 2.4.6 (23-Apr-2015) 469 470 #184: WRITE_NUMBERS_AS_STRINGS disables WRITE_BIGDECIMAL_AS_PLAIN 471 (reported by Derek C) 472 473 2.4.5 (13-Jan-2015) 474 475 No changes since 2.4.4. 476 477 2.4.4 (24-Nov-2014) 478 479 #157: ArrayIndexOutOfBoundsException: 200 on numbers with more than 200 digits. 480 (reported by Lars P, larsp@github) 481 #173: An exception is thrown for a valid JsonPointer expression 482 (reported by Alex S) 483 #176: `JsonPointer` should not consider "00" to be valid index 484 (reported by fge@gitub) 485 - Fix `JsonGenerator.setFeatureMask()` to better handle dynamic changes. 486 487 2.4.3 (02-Oct-2014) 488 489 #152: Exception for property names longer than 256k 490 (reported by CrendKing@github) 491 492 2.4.2 (13-Aug-2014) 493 494 #145: NPE at BytesToNameCanonicalizer 495 (reported by Shay B) 496 #146: Error while parsing negative floats at the end of the input buffer 497 (reported by rjmac@github) 498 499 2.4.1 (16-Jun-2014) 500 501 #143: Flaw in `BufferRecycler.allocByteBuffer(int,int)` that results in 502 performance regression 503 504 2.4.0 (29-May-2014) 505 506 #121: Increase size of low-level byte[]/char[] input/output buffers 507 (from 4k->8k for bytes, 2k->4k for chars) 508 #127: Add `JsonGenerator.writeStartArray(int size)` for binary formats 509 #138: Add support for using `char[]` as input source; optimize handling 510 of `String` input as well. 511 - Refactor `BufferRecycler` to eliminate helper enums 512 513 2.3.5 (13-Jan-2015) 514 515 #152: Exception for property names longer than 256k 516 #173: An exception is thrown for a valid JsonPointer expression 517 #176: `JsonPointer` should not consider "00" to be valid index 518 519 2.3.4 (17-Jul-2014) 520 2.3.3 (10-Apr-2014) 521 522 No changes since 2.3.2. 523 524 2.3.2 (01-Mar-2014) 525 526 #126: Revert some 1.6 back to make core lib work with Android 2.2 (FroYo) 527 (contributed by Goncalo S) 528 #129: Missing delegation method, `JsonParserDelegate.isExpectedStartArrayToken()` 529 (Pascal G) 530 #133: Prevent error on JsonPointer expressions for properties that have numeric 531 ids above 32-bit range 532 (reported by mrstlee@github) 533 534 2.3.1 (28-Dec-2013) 535 536 No functional changes. 537 538 2.3.0 (13-Nov-2013) 539 540 #8: Add methods in `JsonParser`/`JsonGenerator` for reading/writing Object Ids 541 #47: Support YAML-style comments with `JsonParser.Feature.ALLOW_YAML_COMMENTS` 542 #60: Add a feature (`JsonParser.Feature.STRICT_DUPLICATE_DETECTION`) to verify 543 that input does not contain duplicate filed names 544 #77: Improve error reporting for unrecognized tokens 545 (requested by cowwoc@github) 546 #85: Add `JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN` 547 #91: Add methods in `JsonGenerator` for writing native Type Ids 548 #92: Add methods in `JsonParser` for reading native Type Ids 549 #93: Add `getFeatureMask()`, `setFeatureMask()` in `JsonGenerator`/`JsonParser` 550 #94: Allow coercion of String value "null" (similar to handling of null token) 551 #96: Add `JsonFactory.requiresPropertyOrdering()` introspection method 552 #97: JsonGenerator's `JsonWriteContext` not maintained properly, loses 553 current field name 554 (reported by Sam R) 555 #98: Improve handling of failures for `BigDecimal`, for "NaN" (and infinity) 556 #102: Unquoted field names can not start with a digit 557 #103: Add `JsonFactory.canHandleBinaryNatively`, `JsonGenerator.canWriteBinaryNatively` 558 to let databind module detect level of support for binary data. 559 #105: Parser parsers numbers eagerly; does not report error with missing space 560 #106: Add `JsonGenerator.Feature.STRICT_DUPLICATE_DETECTION` for preventing dup names 561 #110: Improve overridability of `JsonGeneratorDelegate` 562 (suggested by qpliu@github) 563 #111: _currInputRowStart isn't initialized in UTF8StreamJsonParser() constructor 564 (reported by dreamershl@github) 565 #115: JsonGenerator writeRawValue problem with surrogate UTF-8 characters 566 (reported by Marcin Z) 567 #116: WriterBasedJsonGenerator produces truncated Unicode escape sequences 568 (reported by Steve L-S) 569 - Improve `DefaultPrettyPrinter`, `Lf2SpacesIndenter` (from databind #276) 570 - Add `JsonGenerator.canOmitFields()` method to support discovery of 571 positional formats, needed for handling of filtering for CSV 572 - Rewrite `InternCache` to use `ConcurrentHashMap`, to work more efficiently both 573 for common case of few misses (no block on access), and slowest cases (lots of 574 misses). 575 - Add `JsonPointer` implementation, to be used by tree model, streaming 576 - Make `UTF8StreamJsonParser` non-final, for potential sub-classing 577 578 2.2.3 (23-Aug-2013) 579 580 #78: ArrayIndexOutOfBoundsException for very long numbers (>500 digits) 581 (reported by boothen@github) 582 #81: CharTypes.appendQuoted misencodes first 32 Unicode values as '\0000' 583 (reported by githubaff0@github) 584 #84: Support for parsing 'Infinity' when feature ALLOW_NON_NUMERIC_NUMBERS is on 585 (contributed by ebrevdo@github) 586 - Add `Base64Variant.decode()` convenience methods 587 588 2.2.2 (26-May-2013) 589 590 No changes since previous version. 591 592 2.2.1 (03-May-2013) 593 594 #72: JsonFactory.copy() was not copying settings properly 595 (reported by Christian S (squiddle@github)) 596 - Moved VERSION/LICENSE contained in jars under META-INF/, to resolve 597 Android packaging (APK) issues 598 599 2.2.0 (22-Apr-2013) 600 601 Fixes: 602 603 #51: JsonLocation had non-serializable field, mark as transient 604 605 Improvements 606 607 #46, #49: Improve VersionUtil to generate PackageVersion, instead of 608 reading VERSION.txt from jar -- improves startup perf on Android significantly 609 (contributed by Ben G) 610 #59: Add more functionality in `TreeNode` interface, to allow some 611 level of traversal over any and all Tree Model implementations 612 #69: Add support for writing `short` values in JsonGenerator 613 614 2.1.3 (19-Jan-2013) 615 616 * [JACKSON-884]: JsonStringEncoder.quoteAsStringValue() fails to encode 617 ctrl chars correctly. 618 * [Issue#48] Problems with spaces in URLs 619 (reported by KlausBrunner) 620 621 2.1.2 (04-Dec-2012) 622 623 * [Issue#42] Problems with UTF32Reader 624 (reported by James R [jroper@github]) 625 * Added missing methods (like 'setPrettyPrinter()' in JsonGeneratorDelegate 626 627 2.1.1 (11-Nov-2012) 628 629 * [Issue#34] `JsonParser.nextFieldName()` fails on buffer boundary 630 (reported by gsson@github) 631 * [Issue#38] `JsonParser.nextFieldName()` problems when handling 632 names with trailing spaces 633 (reported by matjazs@github) 634 635 2.1.0 (08-Oct-2012) 636 637 A new minor version for 2.x. 638 639 New features: 640 641 * [Issue#14]: add 'readBinaryValue(...)' method in JsonParser 642 * [Issue#16]: add 'writeBinary(InputStream, int)' method in JsonGenerator 643 (and implement for JSON backend) 644 * [Issue#26]: Allow overriding "root value separator" 645 (suggested by Henning S) 646 647 Improvements: 648 649 * [JACKSON-837]: Made JsonGenerator implement Flushable. 650 (suggested by Matt G) 651 * [Issue#10]: add 'JsonProcessingException.getOriginalMessage()' for accessing 652 message without location info 653 * [Issue#31]: make `JsonFactory` java.io.Serializable (via JDK) 654 655 Other: 656 657 * [Issue-25]: Add 'createParser' and 'createGenerator' (as eventual replacements 658 for 'createJsonParser'/'createJsonGenerator') in 'JsonFactory' 659 * Try to improve locking aspects of symbol tables, by reducing scope of 660 synchronized sections when creating, merging table contents. 661 * Added 'JsonFactory.copy()' method to support databinding's 'ObjectMapper.copy()' 662 * Added method 'requiresCustomCodec()' for JsonFactory and JsonParser 663 * Added 'JsonParser.getValueAsString()' method (to support flexible conversions) 664 * Added META-INF/services/com.fasterxml.jackson.core.JsonFactory SPI to register 665 `JsonFactory` for even more automatic format discovery in future. 666 667 2.0.4 (26-Jun-2012) 668 669 Fixes: 670 671 * [Issue-6] PrettyPrinter, count wrong for end-object case 672 * 1.9.x fixes up to 1.9.8 673 674 2.0.3: skipped; only some modules use this version 675 676 2.0.2 (14-May-2012) 677 678 * 1.9.x fixes up to 1.9.7 679 680 2.0.1 (22-Apr-2012) 681 682 Fixes: 683 684 * [JACKSON-827] Fix incompatibilities with JDK 1.5 (2.0.0 accidentally 685 required 1.6) 686 (reported Pascal G) 687 688 2.0.0 (25-Mar-2012) 689 690 Fixes: 691 692 (all fixes up until 1.9.6) 693 694 Improvements 695 696 * [JACKSON-730]: Add checks to ensure that Features are applicable for 697 instances (parsers, generators), or if not, throw IllegalArgumentException 698 * [JACKSON-742]: Add append-methods in SerializableString 699 700 New features: 701 702 * [JACKSON-782]: Add 'JsonParser.overrideCurrentName()', needed as a workaround 703 for some exotic data binding cases (and/or formats) 704 705 [entries for versions 1.x and earlier not retained; refer to earlier releases) 706