Project: jackson-core

Contains core streaming reader (`JsonParser`) and writer (`JsonGenerator`) abstractions,
factory for constructing readers/writers (JsonFactory), as well as a minimal set
of interfaces needed for streaming level to make callbacks and call-throughs,
via `ObjectCodec` and `TreeNode`.

Also includes implementation of this API for JSON.
Forms the base for other data formats as well, despite naming that suggests
JSON-specificity: naming is due to history, as Jackson started out as pure
JSON library.

------------------------------------------------------------------------
=== Releases ===
------------------------------------------------------------------------

2.12.0 (not yet released)

#618: Publish Gradle Module Metadata
 (contributed by Jendrik J)
#619: Add `StreamReadCapability` for further format-based/format-agnostic
  handling improvements
#627: Add `JsonParser.isExpectedNumberIntToken()` convenience method
#630: Add `StreamWriteCapability` for further format-based/format-agnostic
  handling improvements
#631: Add `JsonParser.getNumberValueExact()` to allow precision-retaining buffering
- Deprecate `JsonParser.getCurrentTokenId()` (use `#currentTokenId()` instead)

2.11.2 (02-Aug-2020)
2.11.1 (25-Jun-2020)

No changes since 2.11.0

2.11.0 (26-Apr-2020)

#504: Add a String Array write method in the Streaming API
 (requested by Michel F, impl contributed by Oleksandr P)
#565: Synchronize variants of `JsonGenerator#writeNumberField` with `JsonGenerator#writeNumber`
 (contributed by valery1707@github)
#587: Add JsonGenerator#writeNumber(char[], int, int) method
 (contributed by Volkan Y)
#606: Do not clear aggregated contents of `TextBuffer` when `releaseBuffers()` called
#609: `FilteringGeneratorDelegate` does not handle `writeString(Reader, int)`
 (reported by Volkan Y)
#611: Optionally allow leading decimal in float tokens
 (contributed by James A)

2.10.5 (21-Jul-2020)

#616: Parsing JSON with `ALLOW_MISSING_VALUE` enabled results in endless stream
  of `VALUE_NULL` tokens
 (reported by Justin L)

2.10.4 (03-May-2020)

#605: Handle case when system property access is restricted
 (reported by rhernandez35@github)

2.10.3 (03-Mar-2020)

#592: DataFormatMatcher#getMatchedFormatName throws NPE when no match exists
 (reported by Scott L)
#603: 'JsonParser.getCurrentLocation()` byte/char offset update incorrectly for big payloads
 (reported, fix contributed by Fabien R)

2.10.2 (05-Jan-2020)

#580: FilteringGeneratorDelegate writeRawValue delegate to `writeRaw()`
  instead of `writeRawValue()`
 (reported by Arnaud R)
#582: `FilteringGeneratorDelegate` bug when filtering arrays (in 2.10.1)
 (reported by alarribeau@github)

2.10.1 (09-Nov-2019)

#455: Jackson reports wrong locations for JsonEOFException
 (reported by wastevenson@github, fix contributed by Todd O'B
#567: Add `uses` for `ObjectCodec` in module-info
 (reported by Marc M)
#578: Array index out of bounds in hex lookup
 (reported by Emily S)

2.10.0 (26-Sep-2019)

#433: Add Builder pattern for creating configured Stream factories
#464: Add "maximum unescaped char" configuration option for `JsonFactory` via builder
#467: Create `JsonReadFeature` to move JSON-specific `JsonParser.Feature`s to
#479: Improve thread-safety of buffer recycling
#480: `SerializableString` value can not directly render to Writer
 (requested by Philippe M)
#481: Create `JsonWriteFeature` to move JSON-specific `JsonGenerator.Feature`s to
#484: Implement `UTF8JsonGenerator.writeRawValue(SerializableString)` (and
  `writeRaw(..)`) more efficiently
#495: Create `StreamReadFeature` to move non-json specific `JsonParser.Feature`s to
#496: Create `StreamWriteFeature` to take over non-json-specific `JsonGenerator.Feature`s
#502: Make `DefaultPrettyPrinter.createInstance()` to fail for sub-classes
#506: Add missing type parameter for `TypeReference` in `ObjectCodec`
#508: Add new exception type `InputCoercionException` to be used for failed coercions
  like overflow for `int`
#517: Add `JsonGenerator.writeStartObject(Object, int)` (needed by CBOR, maybe Avro)
#527: Add simple module-info for JDK9+, using Moditect
#533: UTF-8 BOM not accounted for in JsonLocation.getByteOffset()
 (contributed by Fabien R)
#539: Reduce max size of recycled byte[]/char[] blocks by `TextBuffer`, `ByteArrayBuilder`
#547: `CharsToNameCanonicalizer`: Internal error on `SymbolTable.rehash()` with high
  number of hash collisions
 (reported by Alex R)
#548: ByteQuadsCanonicalizer: ArrayIndexOutOfBoundsException in addName
 (reported by Alex R)
#549: Add configurability of "quote character" for JSON factory
#561: Misleading exception for unquoted String parsing
#563: Async parser does not keep track of Array context properly
 (reported by Doug R)
- Rewrite `JsonGenerator.copyCurrentStructure()` to remove recursion)
- Add `missingNode()`, `nullNode()` in `TreeCodec`
- Add `JsonParserDelegate.delegate()` methods

2.9.10 (21-Sep-2019)

#540: UTF8StreamJsonParser: fix byte to int conversion for malformed escapes
 (reported by Alex R and Sam S)
#556: 'IndexOutOfBoundsException' in UTF8JsonGenerator.writeString(Reader, len)
  when using a negative length
 (reported by jacob-alan-ward@github)

2.9.9 (16-May-2019)

#516: _inputPtr off-by-one in UTF8StreamJsonParser._parseNumber2()
 (reported by Henrik G)
#531: Non-blocking parser reports incorrect locations when fed with non-zero offset
 (reported by David N)

2.9.8 (15-Dec-2018)

#488: Fail earlier on coercions from "too big" `BigInteger` into
  fixed-size types (`int`, `long`, `short`)
#510: Fix ArrayIndexOutofBoundsException found by LGTM.com
 (reported by Alexander E-T)
- Improve exception message for missing Base64 padding (see databind#2183)

2.9.7 (19-Sep-2018)

#476: Problem with `BufferRecycler` via async parser (or when sharing parser
 across threads)
#477: Exception while decoding Base64 value with escaped `=` character
#488: Fail earlier on coercions from "too big" `BigInteger` into
  fixed-size types (`int`, `long`, `short`)

2.9.6 (12-Jun-2018)

#400: Add mechanism for forcing `BufferRecycler` released (to call on shutdown)
 (contributed by Jeroen B)
#460: Failing to link `ObjectCodec` with `JsonFactory` copy constructor
#463: Ensure that `skipChildren()` of non-blocking `JsonParser` will throw
   exception if not enough input
  (requested by Doug R)

2.9.5 (26-Mar-2018)

No changes since 2.9.4

2.9.4 (24-Jan-2018)

#414: Base64 MIME variant does not ignore white space chars as per RFC2045
 (reported by tmoschou@github)
#437: `ArrayIndexOutOfBoundsException` in `UTF8StreamJsonParser`
 (reported by Igor A)

2.9.3 (09-Dec-2017)

#419: `ArrayIndexOutOfBoundsException` from `UTF32Reader.read()` on invalid input

2.9.2 (13-Oct-2017)

- New parent pom (`jackson-base`)

2.9.1 (07-Sep-2017)

#397: Add `Automatic-Module-Name` ("com.fasterxml.jackson.core") for JDK 9 module system

2.9.0 (30-Jul-2017))

#17: Add 'JsonGenerator.writeString(Reader r, int charLength)'
 (constributed by Logan W)
#57: Add support for non-blocking ("async") JSON parsing
#208: Make use of `_matchCount` in `FilteringParserDelegate`
 (contributed by Rafal F)
#242: Add new write methods in `JsonGenerator` for writing type id containers
#304: Optimize `NumberOutput.outputLong()` method
#306: Add new method in `JsonStreamContext` to construct `JsonPointer`
#312: Add `JsonProcessingException.clearLocation()` to allow clearing
  possibly security-sensitive information
 (contributed by Alex Y)
#314: Add a method in `JsonParser` to allow checking for "NaN" values
#323: Add `JsonParser.ALLOW_TRAILING_COMMA` to work for Arrays and Objects
 (contributed by Brad H)
#325: `DataInput` backed parser should handle `EOFException` at end of doc
 (reported by Brad H)
#330: `FilteringParserDelegate` seems to miss last closing `END_OBJECT`
 (contributed by Rafal F)
#340: Making `WriterBasedJsonGenerator` non-final
 (requested by rfoltyns@github)
#356: Improve indication of "source reference" in `JsonLocation` wrt `byte[]`,`char[]`
#372: JsonParserSequence#skipChildren() throws exception when current delegate is
  TokenBuffer.Parser with "incomplete" JSON
 (contributed by Michael S)
#374: Minimal and DefaultPrettyPrinter with configurable separators 
 (contributed by Rafal F)

2.8.11 (23-Dec-2017)

#418: ArrayIndexOutOfBoundsException from UTF32Reader.read on invalid input
 (reported, contributed fix for by pfitzsimons-r7@github)

2.8.10 (24-Aug-2017)

No changes since 2.8.9

2.8.9 (12-Jun-2017)

#382: ArrayIndexOutOfBoundsException from UTF32Reader.read on invalid input
 (reported by Wil S)

2.8.8 (05-Apr-2017)

#359: FilteringGeneratorDelegate does not override writeStartObject(Object forValue)
 (contributed by Arnaud R)
#362: Use correct length variable for UTF-8 surrogate writing

2.8.7 (21-Feb-2017)

#349: CharsToNameCanonicalizer performance bottleneck 
 (reported by Nuno D, nmldiegues@github)
#351: `java.lang.NegativeArraySizeException` at `ByteArrayBuilder.toByteArray()`
#354: Buffer size dependency in UTF8JsonGenerator writeRaw
 (reported by Chistopher C)

2.8.6 (12-Jan-2017)

#322: Trim tokens in error messages to 256 byte to prevent attacks
 (contributed by Alessio S)
#335: Missing exception for invalid last character of base64 string to decode
 using `Base64Variant.decode()`

2.8.5 (14-Nov-2016)
2.8.4 (14-Oct-2016)

No changes since 2.8.3

2.8.3 (17-Sep-2016)

#318: Add support for writing `byte[]` via `JsonGenerator.writeEmbeddedObject()`

2.8.2 (30-Aug-2016)
2.8.1 (20-Jul-2016)

No changes since 2.8.0

2.8.0 (04-Jul-2016)

#86: Allow inclusion of request body for `JsonParseException`
 (contributed by LokeshN)
#117: Add `JsonParser.Feature.ALLOW_MISSING_VALUES` to support for missing values
 (contributed by LokeshN)
#136: Add `JsonpCharacterEscapes` for easier handling of potential problems
 with JSONP and rare but technically allowed \u2028 and \u2029 linefeed characters
#253: Add `JsonGenerator. writeEmbeddedObject()` to allow writes of opaque native types
 (suggested by Gregoire C)
#255: Relax ownership checks for buffers not to require increase in size
#257: Add `writeStartObject(Object pojo)` to streamline assignment of current value
#265: `JsonStringEncoder` should allow passing `CharSequence`
 (contributed by Mikael S)
#276: Add support for serializing using `java.io.DataOutput`
#277: Add new scalar-array write methods for `int`/`long`/`double` cases
#279: Support `DataInput` for parsing
#280: Add `JsonParser.finishToken()` to force full, non-lazy reading of current token
#281: Add `JsonEOFException` as sub-class of `JsonParseException`
#282: Fail to report error for trying to write field name outside Object (root level)
#285: Add `JsonParser.getText(Writer)`
 (contributed by LokesN)
#290: Add `JsonGenerator.canWriteFormattedNumbers()` for introspection
#294: Add `JsonGenerator.writeFieldId(long)` method to support binary formats
 with non-String keys
#296: `JsonParserSequence` skips a token on a switched Parser
 (reported by Kevin G)
- Add `JsonParser.currentToken()` and `JsonParser.currentTokenId()` as replacements
  for `getCurrentToken()` and `getCurrentTokenId()`, respectively. Existing methods
  will likely be deprecated in 2.9.

2.7.9.3:

#1872: NullPointerException in SubTypeValidator.validateSubType when
  validating Spring interface
#1931: Two more c3p0 gadgets to exploit default typing issue

2.7.9.2 (20-Dec-2017)

#1607: `@JsonIdentityReference` not used when setup on class only
#1628: Don't print to error stream about failure to load JDK 7 types
#1680: Blacklist couple more types for deserialization
#1737: Block more JDK types from polymorphic deserialization
#1855: Blacklist for more serialization gadgets (dbcp/tomcat, spring)

2.7.9.1 (18-Apr-2017)

#1599: Jackson Deserializer security vulnerability

2.7.9 (04-Feb-2017)

No changes since 2.7.8

2.7.8 (26-Sep-2016)

#317: ArrayIndexOutOfBoundsException: 200 on floating point number with exactly
  200-length decimal part
 (reported by Allar H)

2.7.7 (27-Aug-2016)

#307: JsonGenerationException: Split surrogate on writeRaw() input thrown for
  input of a certain size
 (reported by Mike N)
#315: `OutOfMemoryError` when writing BigDecimal
 (reported by gmethwin@github)

2.7.6 (23-Jul-2016)

- Clean up of FindBugs reported possible issues.

2.7.5 (11-Jun-2016)
 
#280: FilteringGeneratorDelegate.writeUTF8String() should delegate to writeUTF8String()
 (reported by Tanguy L)

2.7.4 (29-Apr-2016)

#209: Make use of `_allowMultipleMatches` in `FilteringParserDelegate`
 (contributed by Lokesh N)
- Make `processor` transient in `JsonParseException`, `JsonGenerationException`
  to keep both Serializable

2.7.3 (16-Mar-2016)

No changes since 2.7.2.

2.7.2 (26-Feb-2016)

#246: Fix UTF8JsonGenerator to allow QUOTE_FIELD_NAMES to be toggled
 (suggested by philipa@github)

2.7.1 (02-Feb-2016)

No changes since 2.7.0.

2.7.0 (10-Jun-2016)

#37: JsonParser.getTokenLocation() doesn't update after field names
 (reported by Michael L)
#198: Add back-references to `JsonParser` / `JsonGenerator` for low-level parsing issues
 (via `JsonParseException`, `JsonGenerationException`)
#211: Typo of function name com.fasterxml.jackson.core.Version.isUknownVersion()
 (reported by timray@github)
#229: Array element and field token spans include previous comma.
- Implemented `ReaderBasedJsonParser.nextFieldName(SerializableString)`
  (to improved Afterburner performance over String/char[] sources)

2.6.6 (05-Apr-2016)

#248: VersionUtil.versionFor() unexpectedly return null instead of Version.unknownVersion()
 (reported by sammyhk@github)

2.6.5 (19-Jan-2016)
2.6.4 (07-Dec-2015)

No changes since 2.6.3.

2.6.3 (12-Oct-2015)

#220: Problem with `JsonParser.nextFieldName(SerializableString)` for byte-backed parser

2.6.2 (14-Sep-2015)

#213: Parser is sometimes wrong when using CANONICALIZE_FIELD_NAMES
 (reported by ichernev@github)
#216: ArrayIndexOutOfBoundsException: 128 when repeatedly serializing to a byte array
 (reported by geekbeast@github)

2.6.1 (09-Aug-2015)

#207: `ArrayIndexOutOfBoundsException` in `ByteQuadsCanonicalizer`
 (reported by Florian S, fschopp@github)

2.6.0 (17-Jul-2015)

#137: Allow filtering content read via `JsonParser` by specifying `JsonPointer`;
  uses new class `com.fasterxml.jackson.core.filter.FilteringParserDelegate`
  (and related, `TokenFilter`)
#177: Add a check so `JsonGenerator.writeString()` won't work if `writeFieldName()` expected.
#182: Inconsistent TextBuffer#getTextBuffer behavior
 (contributed by Masaru H)
#185: Allow filtering content written via `JsonGenerator` by specifying `JsonPointer`;
  uses new class `com.fasterxml.jackson.core.filter.FilteringGeneratorDelegate`
  (and related, `TokenFilter`)
#188: `JsonParser.getValueAsString()` should return field name for `JsonToken.FIELD_NAME`, not `null`
#189: Add `JsonFactory.Feature.USE_THREAD_LOCAL_FOR_BUFFER_RECYCLING` (default: true), which may
  be disabled to prevent use of ThreadLocal-based buffer recyling.
 (suggested by soldierkam@github)
#195: Add `JsonGenerator.getOutputBuffered()` to find out amount of content buffered,
  not yet flushed.
 (requested by Ruediger M)
#196: Add support for `FormatFeature` extension, for format-specifc Enum-backed
  parser/generator options
- Minor improvement to construction of "default PrettyPrinter": now overridable by data format
  modules
- Implement a new yet more optimized symbol table for byte-backed parsers
- Add `JsonParser.Feature.IGNORE_UNDEFINED`, useful for data formats like protobuf
- Optimize writing of String names (remove intermediate copy; with JDK7 no speed benefit)

2.5.5 (07-Dec-2015)

#220: Problem with `JsonParser.nextFieldName(SerializableString)` for byte-backed parser
#221: Fixed ArrayIndexOutOfBounds exception for character-based `JsonGenerator`
 (reported by a-lerion@github)

2.5.4 (09-Jun-2015)

No changes.

2.5.3 (24-Apr-2015)

#191: Longest collision chain in symbol table now exceeds maximum -- suspect a DoS attack
 (reported by Paul D)

2.5.2 (29-Mar-2015)

#181: Failure parsing -Infinity on buffer boundary
 (reported by brharrington@github)
#187: Longest collision chain in symbol table exceeds maximum length routinely
  in non-malicious code
 (reported by mazzaferri@github)

2.5.1 (06-Feb-2015)

#178: Add `Lf2SpacesIndenter.withLinefeed` back to keep binary-compatibility with 2.4.x
 (reported by ansell@github)
- Minor fix to alignment of null bytes in the last 4 bytes of name, in case where name
  may cross the input boundary

2.5.0 (01-Jan-2015)

#148: BytesToNameCanonicalizer can mishandle leading null byte(s).
 (reported by rjmac@github)
#164: Add `JsonGenerator.Feature.IGNORE_UNKNOWN` (but support via individual
  data format modules)
#166: Allow to configure line endings and indentation
 (contributed by Aaron D)
#167: `JsonGenerator` not catching problem of writing field name twice in a row
#168: Add methods in `JsonStreamContext` for keeping track of "current value"
#169: Add `JsonPointer.head()`
 (contributed by Alex S, lordofthejars@github)
- Added `ResolvedType.getParameterSource()` to support better resolution
 of generic types.
- Added `JsonGenerator.writeRawValue(SerializableString)`
- Added `JsonParser.hasExpectedStartObjectToken()` convenience method
- Added `JsonParser.hasTokenId(id)` convenience method
- Added `JsonParser.nextFieldName()` (no args)

2.4.6 (23-Apr-2015)

#184: WRITE_NUMBERS_AS_STRINGS disables WRITE_BIGDECIMAL_AS_PLAIN
 (reported by Derek C)

2.4.5 (13-Jan-2015)

No changes since 2.4.4.

2.4.4 (24-Nov-2014)

#157: ArrayIndexOutOfBoundsException: 200 on numbers with more than 200 digits.
 (reported by Lars P, larsp@github)
#173: An exception is thrown for a valid JsonPointer expression
 (reported by Alex S)
#176: `JsonPointer` should not consider "00" to be valid index
 (reported by fge@gitub)
- Fix `JsonGenerator.setFeatureMask()` to better handle dynamic changes.

2.4.3 (02-Oct-2014)

#152: Exception for property names longer than 256k
 (reported by CrendKing@github)

2.4.2 (13-Aug-2014)

#145: NPE at BytesToNameCanonicalizer
 (reported by Shay B)
#146: Error while parsing negative floats at the end of the input buffer
 (reported by rjmac@github)

2.4.1 (16-Jun-2014)

#143: Flaw in `BufferRecycler.allocByteBuffer(int,int)` that results in
 performance regression

2.4.0 (29-May-2014)

#121: Increase size of low-level byte[]/char[] input/output buffers
 (from 4k->8k for bytes, 2k->4k for chars)
#127: Add `JsonGenerator.writeStartArray(int size)` for binary formats
#138: Add support for using `char[]` as input source; optimize handling
  of `String` input as well.
- Refactor `BufferRecycler` to eliminate helper enums

2.3.5 (13-Jan-2015)

#152: Exception for property names longer than 256k
#173: An exception is thrown for a valid JsonPointer expression
#176: `JsonPointer` should not consider "00" to be valid index

2.3.4 (17-Jul-2014)
2.3.3 (10-Apr-2014)

No changes since 2.3.2.

2.3.2 (01-Mar-2014)

#126: Revert some 1.6 back to make core lib work with Android 2.2 (FroYo)
 (contributed by Goncalo S)
#129: Missing delegation method, `JsonParserDelegate.isExpectedStartArrayToken()`
 (Pascal G)
#133: Prevent error on JsonPointer expressions for properties that have numeric
  ids above 32-bit range
 (reported by mrstlee@github)

2.3.1 (28-Dec-2013)

No functional changes.

2.3.0 (13-Nov-2013)

#8: Add methods in `JsonParser`/`JsonGenerator` for reading/writing Object Ids
#47: Support YAML-style comments with `JsonParser.Feature.ALLOW_YAML_COMMENTS`
#60: Add a feature (`JsonParser.Feature.STRICT_DUPLICATE_DETECTION`) to verify
  that input does not contain duplicate filed names
#77: Improve error reporting for unrecognized tokens
 (requested by cowwoc@github)
#85: Add `JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN`
#91: Add methods in `JsonGenerator` for writing native Type Ids
#92: Add methods in `JsonParser` for reading native Type Ids
#93: Add `getFeatureMask()`, `setFeatureMask()` in `JsonGenerator`/`JsonParser`
#94: Allow coercion of String value "null" (similar to handling of null token)
#96: Add `JsonFactory.requiresPropertyOrdering()` introspection method
#97: JsonGenerator's `JsonWriteContext` not maintained properly, loses
  current field name
 (reported by Sam R)
#98: Improve handling of failures for `BigDecimal`, for "NaN" (and infinity)
#102: Unquoted field names can not start with a digit
#103: Add `JsonFactory.canHandleBinaryNatively`, `JsonGenerator.canWriteBinaryNatively`
 to let databind module detect level of support for binary data.
#105: Parser parsers numbers eagerly; does not report error with missing space
#106: Add `JsonGenerator.Feature.STRICT_DUPLICATE_DETECTION` for preventing dup names
#110: Improve overridability of `JsonGeneratorDelegate`
 (suggested by qpliu@github)
#111: _currInputRowStart isn't initialized in UTF8StreamJsonParser() constructor
 (reported by dreamershl@github)
#115: JsonGenerator writeRawValue problem with surrogate UTF-8 characters
 (reported by Marcin Z)
#116: WriterBasedJsonGenerator produces truncated Unicode escape sequences
 (reported by Steve L-S)
- Improve `DefaultPrettyPrinter`, `Lf2SpacesIndenter` (from databind #276)
- Add `JsonGenerator.canOmitFields()` method to support discovery of
  positional formats, needed for handling of filtering for CSV
- Rewrite `InternCache` to use `ConcurrentHashMap`, to work more efficiently both
  for common case of few misses (no block on access), and slowest cases (lots of
  misses).
- Add `JsonPointer` implementation, to be used by tree model, streaming
- Make `UTF8StreamJsonParser` non-final, for potential sub-classing

2.2.3 (23-Aug-2013)

#78: ArrayIndexOutOfBoundsException for very long numbers (>500 digits)
 (reported by boothen@github)
#81: CharTypes.appendQuoted misencodes first 32 Unicode values as '\0000'
 (reported by githubaff0@github)
#84: Support for parsing 'Infinity' when feature ALLOW_NON_NUMERIC_NUMBERS is on
 (contributed by ebrevdo@github)
- Add `Base64Variant.decode()` convenience methods

2.2.2 (26-May-2013)

No changes since previous version.

2.2.1 (03-May-2013)

#72: JsonFactory.copy() was not copying settings properly
 (reported by Christian S (squiddle@github))
- Moved VERSION/LICENSE contained in jars under META-INF/, to resolve
  Android packaging (APK) issues

2.2.0 (22-Apr-2013)

Fixes:

#51: JsonLocation had non-serializable field, mark as transient

Improvements

#46, #49: Improve VersionUtil to generate PackageVersion, instead of
  reading VERSION.txt from jar -- improves startup perf on Android significantly
 (contributed by Ben G)
#59: Add more functionality in `TreeNode` interface, to allow some
 level of traversal over any and all Tree Model implementations
#69: Add support for writing `short` values in JsonGenerator

2.1.3 (19-Jan-2013)

* [JACKSON-884]: JsonStringEncoder.quoteAsStringValue() fails to encode 
  ctrl chars correctly.
* [Issue#48] Problems with spaces in URLs
 (reported by KlausBrunner)

2.1.2 (04-Dec-2012)

* [Issue#42] Problems with UTF32Reader
 (reported by James R [jroper@github])
* Added missing methods (like 'setPrettyPrinter()' in JsonGeneratorDelegate

2.1.1 (11-Nov-2012)

* [Issue#34] `JsonParser.nextFieldName()` fails on buffer boundary
 (reported by gsson@github)
* [Issue#38] `JsonParser.nextFieldName()` problems when handling
 names with trailing spaces
 (reported by matjazs@github)

2.1.0 (08-Oct-2012)

A new minor version for 2.x.

New features:

* [Issue#14]: add 'readBinaryValue(...)' method in JsonParser
* [Issue#16]: add 'writeBinary(InputStream, int)' method in JsonGenerator
  (and implement for JSON backend)
* [Issue#26]: Allow overriding "root value separator"
 (suggested by Henning S)

Improvements:

* [JACKSON-837]: Made JsonGenerator implement Flushable.
 (suggested by Matt G)
* [Issue#10]: add 'JsonProcessingException.getOriginalMessage()' for accessing
  message without location info
* [Issue#31]: make `JsonFactory` java.io.Serializable (via JDK)

Other:

* [Issue-25]: Add 'createParser' and 'createGenerator' (as eventual replacements
  for 'createJsonParser'/'createJsonGenerator') in 'JsonFactory'
* Try to improve locking aspects of symbol tables, by reducing scope of
  synchronized sections when creating, merging table contents.
* Added 'JsonFactory.copy()' method to support databinding's 'ObjectMapper.copy()'
* Added method 'requiresCustomCodec()' for JsonFactory and JsonParser
* Added 'JsonParser.getValueAsString()' method (to support flexible conversions)
* Added META-INF/services/com.fasterxml.jackson.core.JsonFactory SPI to register
  `JsonFactory` for even more automatic format discovery in future.

2.0.4 (26-Jun-2012)

Fixes:

* [Issue-6] PrettyPrinter, count wrong for end-object case
* 1.9.x fixes up to 1.9.8

2.0.3: skipped;	 only some modules use this version

2.0.2 (14-May-2012)

* 1.9.x fixes up to 1.9.7

2.0.1 (22-Apr-2012)

Fixes:

* [JACKSON-827] Fix incompatibilities with JDK 1.5 (2.0.0 accidentally
  required 1.6)
 (reported Pascal G)

2.0.0 (25-Mar-2012)

Fixes:

(all fixes up until 1.9.6)

Improvements

* [JACKSON-730]: Add checks to ensure that Features are applicable for
  instances (parsers, generators), or if not, throw IllegalArgumentException
* [JACKSON-742]: Add append-methods in SerializableString

New features:

* [JACKSON-782]: Add 'JsonParser.overrideCurrentName()', needed as a workaround
  for some exotic data binding cases (and/or formats)

[entries for versions 1.x and earlier not retained; refer to earlier releases)
