blob: f38104513a796ec9a915ef4d875a96399bbda845 [file] [log] [blame]
Tatu Saloranta637b73c2013-02-13 10:17:51 -08001Project: jackson-core
Tatu Saloranta1c9e1452014-11-24 18:08:01 -08002
3Contains core streaming reader (`JsonParser`) and writer (`JsonGenerator`) abstractions,
Tatu Saloranta3dcedd22015-01-10 20:15:06 -08004factory for constructing readers/writers (JsonFactory), as well as a minimal set
Tatu Saloranta1c9e1452014-11-24 18:08:01 -08005of interfaces needed for streaming level to make callbacks and call-throughs,
6via `ObjectCodec` and `TreeNode`.
7
Tatu Saloranta3dcedd22015-01-10 20:15:06 -08008Also includes implementation of this API for JSON.
Tatu Saloranta1c9e1452014-11-24 18:08:01 -08009Forms the base for other data formats as well, despite naming that suggests
Tatu Saloranta3dcedd22015-01-10 20:15:06 -080010JSON-specificity: naming is due to history, as Jackson started out as pure
11JSON library.
Tatu Saloranta1c9e1452014-11-24 18:08:01 -080012
13------------------------------------------------------------------------
14=== Releases ===
15------------------------------------------------------------------------
16
Tatu Saloranta29c98072015-12-07 18:35:55 -0800172.5.5 (07-Dec-2015)
Tatu Saloranta98df1822015-10-01 08:08:41 -070018
19#220: Problem with `JsonParser.nextFieldName(SerializableString)` for byte-backed parser
Cowtowncoder5f04c202015-10-06 14:25:20 -070020#221: Fixed ArrayIndexOutOfBounds exception for character-based `JsonGenerator`
21 (reported by a-lerion@github)
Tatu Saloranta98df1822015-10-01 08:08:41 -070022
Tatu Saloranta7cac58b2015-06-09 18:24:02 -0700232.5.4 (09-Jun-2015)
24
25No changes.
26
Cowtowncodercec04792015-04-24 10:08:26 -0700272.5.3 (24-Apr-2015)
Tatu Saloranta6a637522015-04-22 21:33:47 -070028
29#191: Longest collision chain in symbol table now exceeds maximum -- suspect a DoS attack
30 (reported by Paul D)
31
Tatu Saloranta8f64a152015-03-29 16:46:40 -0700322.5.2 (29-Mar-2015)
Cowtowncoder29a364a2015-02-16 13:55:24 -080033
34#181: Failure parsing -Infinity on buffer boundary
35 (reported by brharrington@github)
Tatu Salorantae0a02272015-03-26 21:05:39 -070036#187: Longest collision chain in symbol table exceeds maximum length routinely
37 in non-malicious code
38 (reported by mazzaferri@github)
Cowtowncoder29a364a2015-02-16 13:55:24 -080039
Tatu Saloranta725b7972015-02-06 16:03:50 -0800402.5.1 (06-Feb-2015)
Tatu Saloranta3dcedd22015-01-10 20:15:06 -080041
42#178: Add `Lf2SpacesIndenter.withLinefeed` back to keep binary-compatibility with 2.4.x
43 (reported by ansell@github)
Tatu Saloranta9bdda3f2015-02-02 21:35:52 -080044- Minor fix to alignment of null bytes in the last 4 bytes of name, in case where name
45 may cross the input boundary
Tatu Saloranta3dcedd22015-01-10 20:15:06 -080046
Tatu Saloranta41ee3042015-01-01 15:34:50 -0800472.5.0 (01-Jan-2015)
Tatu Salorantaca94baf2014-08-07 20:44:41 -070048
Tatue9972872014-08-13 13:00:57 -070049#148: BytesToNameCanonicalizer can mishandle leading null byte(s).
50 (reported by rjmac@github)
Cowtowncoder27eb3c12014-11-07 15:16:45 -080051#164: Add `JsonGenerator.Feature.IGNORE_UNKNOWN` (but support via individual
52 data format modules)
Tatu Saloranta55cfa312014-11-28 20:54:50 -080053#166: Allow to configure line endings and indentation
54 (contributed by Aaron D)
Cowtowncoder7b1d4112014-11-24 11:41:16 -080055#167: `JsonGenerator` not catching problem of writing field name twice in a row
Tatu Saloranta44f42e82014-11-26 20:38:27 -080056#168: Add methods in `JsonStreamContext` for keeping track of "current value"
Cowtowncoderd2c60232014-12-09 14:39:17 -080057#169: Add `JsonPointer.head()`
Cowtowncoderfa0b5232014-12-05 14:01:27 -080058 (contributed by Alex S, lordofthejars@github)
Cowtowncoderf4087952014-09-29 14:23:37 -070059- Added `ResolvedType.getParameterSource()` to support better resolution
60 of generic types.
Cowtowncoder7df7c572014-11-07 17:06:29 -080061- Added `JsonGenerator.writeRawValue(SerializableString)`
Tatu Saloranta39170c02014-12-12 20:17:13 -080062- Added `JsonParser.hasExpectedStartObjectToken()` convenience method
Tatu Salorantaaae53972014-12-09 20:05:04 -080063- Added `JsonParser.hasTokenId(id)` convenience method
Cowtowncoder2ec34032014-12-11 10:50:57 -080064- Added `JsonParser.nextFieldName()` (no args)
Tatue9972872014-08-13 13:00:57 -070065
Cowtowncoderfca10e32015-02-19 16:39:04 -0800662.4.6 (not released yet)
67
68#184: WRITE_NUMBERS_AS_STRINGS disables WRITE_BIGDECIMAL_AS_PLAIN
69 (reported by Derek C)
70
Tatu Saloranta36c91eb2015-01-13 20:20:08 -0800712.4.5 (13-Jan-2015)
72
73No changes since 2.4.4.
74
Tatu Saloranta1c9e1452014-11-24 18:08:01 -0800752.4.4 (24-Nov-2014)
Tatu Salorantad533f292014-09-24 20:14:39 -070076
Cowtowncoder290799a2014-10-08 16:06:40 -070077#157: ArrayIndexOutOfBoundsException: 200 on numbers with more than 200 digits.
78 (reported by Lars P, larsp@github)
Tatu Saloranta0d9cd9f2014-12-07 10:16:55 -080079#173: An exception is thrown for a valid JsonPointer expression
80 (reported by Alex S)
Cowtowncoderd9995142014-12-30 17:09:51 -080081#176: `JsonPointer` should not consider "00" to be valid index
82 (reported by fge@gitub)
Tatu Salorantaffd16b72014-11-09 12:48:32 -080083- Fix `JsonGenerator.setFeatureMask()` to better handle dynamic changes.
Tatu Salorantad533f292014-09-24 20:14:39 -070084
Cowtowncoderd860a8c2014-10-09 11:35:33 -0700852.4.3 (02-Oct-2014)
Tatu544904d2014-08-13 12:31:11 -070086
Cowtowncoderd860a8c2014-10-09 11:35:33 -070087#152: Exception for property names longer than 256k
88 (reported by CrendKing@github)
Tatu544904d2014-08-13 12:31:11 -070089
Tatu Salorantad533f292014-09-24 20:14:39 -0700902.4.2 (13-Aug-2014)
Tatu4ceaba82014-06-06 13:44:41 -070091
Tatu Saloranta5027dc52014-07-08 20:27:00 -070092#145: NPE at BytesToNameCanonicalizer
93 (reported by Shay B)
Tatu Saloranta1f6e1fb2012-01-17 22:29:27 -080094#146: Error while parsing negative floats at the end of the input buffer
95 (reported by rjmac@github)
Tatu4ceaba82014-06-06 13:44:41 -070096
Tatu Saloranta5027dc52014-07-08 20:27:00 -0700972.4.1 (16-Jun-2014)
98
99#143: Flaw in `BufferRecycler.allocByteBuffer(int,int)` that results in
100 performance regression
101
1022.4.0 (29-May-2014)
Tatu Saloranta1f6e1fb2012-01-17 22:29:27 -0800103
Tatu Saloranta175a97b2014-01-09 21:49:24 -0800104#121: Increase size of low-level byte[]/char[] input/output buffers
105 (from 4k->8k for bytes, 2k->4k for chars)
Tatu Saloranta1d076012014-03-24 18:29:33 -0700106#127: Add `JsonGenerator.writeStartArray(int size)` for binary formats
Tatu64aa9d22014-04-18 14:07:38 -0700107#138: Add support for using `char[]` as input source; optimize handling
108 of `String` input as well.
Tatu Salorantaf633f102013-12-13 21:15:24 -0800109- Refactor `BufferRecycler` to eliminate helper enums
Tatu Saloranta6f91dcf2013-12-01 13:16:45 -0800110
Tatu Saloranta9e2d7372014-05-07 08:23:32 -07001112.3.3 (10-Apr-2014)
112
113No changes since 2.3.2.
114
1152.3.2 (01-Mar-2014)
Tatu Salorantaa50f62c2014-03-06 20:24:04 -0800116
117#126: Revert some 1.6 back to make core lib work with Android 2.2 (FroYo)
118 (contributed by Goncalo S)
119#129: Missing delegation method, `JsonParserDelegate.isExpectedStartArrayToken()`
120 (Pascal G)
Tatu Saloranta9e2d7372014-05-07 08:23:32 -0700121#133: Prevent error on JsonPointer expressions for properties that have numeric
122 ids above 32-bit range
123 (reported by mrstlee@github)
Tatu Salorantaa50f62c2014-03-06 20:24:04 -0800124
Tatu141c08b2014-02-28 14:04:39 -08001252.3.1 (28-Dec-2013)
126
127No functional changes.
128
Tatu Salorantaf633f102013-12-13 21:15:24 -08001292.3.0 (13-Nov-2013)
130
Tatu Salorantaf9593612013-08-07 19:24:25 -0700131#8: Add methods in `JsonParser`/`JsonGenerator` for reading/writing Object Ids
Tatu Saloranta098ece82013-09-19 12:12:22 -0700132#47: Support YAML-style comments with `JsonParser.Feature.ALLOW_YAML_COMMENTS`
Tatu Saloranta880ba762013-09-24 21:32:15 -0700133#60: Add a feature (`JsonParser.Feature.STRICT_DUPLICATE_DETECTION`) to verify
134 that input does not contain duplicate filed names
Tatu Salorantaad28e352013-07-04 16:40:18 -0700135#77: Improve error reporting for unrecognized tokens
136 (requested by cowwoc@github)
Tatu Saloranta0dba7142013-07-04 21:17:31 -0700137#85: Add `JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN`
Tatu Saloranta08f918c2013-07-27 19:26:51 -0700138#91: Add methods in `JsonGenerator` for writing native Type Ids
Tatu Saloranta567257f2013-08-02 22:20:17 -0700139#92: Add methods in `JsonParser` for reading native Type Ids
Tatu Salorantacaefc682013-08-07 19:20:50 -0700140#93: Add `getFeatureMask()`, `setFeatureMask()` in `JsonGenerator`/`JsonParser`
Tatu Saloranta98c86a92013-08-10 19:25:43 -0700141#94: Allow coercion of String value "null" (similar to handling of null token)
Tatu Saloranta1734a3a2013-08-28 19:06:20 -0700142#96: Add `JsonFactory.requiresPropertyOrdering()` introspection method
Tatu Saloranta7dc9de62013-08-30 19:01:20 -0700143#97: JsonGenerator's `JsonWriteContext` not maintained properly, loses
144 current field name
145 (reported by Sam R)
Tatu Salorantab40ac812013-08-28 21:04:32 -0700146#98: Improve handling of failures for `BigDecimal`, for "NaN" (and infinity)
Tatu Salorantaeaa2b0c2013-09-21 11:39:53 -0700147#102: Unquoted field names can not start with a digit
Tatu Salorantab8835442013-09-14 12:12:57 -0700148#103: Add `JsonFactory.canHandleBinaryNatively`, `JsonGenerator.canWriteBinaryNatively`
149 to let databind module detect level of support for binary data.
Tatu Saloranta38d6e352013-09-21 11:26:42 -0700150#105: Parser parsers numbers eagerly; does not report error with missing space
Tatu Salorantaf9ad80f2013-09-24 21:31:16 -0700151#106: Add `JsonGenerator.Feature.STRICT_DUPLICATE_DETECTION` for preventing dup names
Tatu Saloranta0e10fd52013-11-02 21:12:49 -0700152#110: Improve overridability of `JsonGeneratorDelegate`
153 (suggested by qpliu@github)
Tatu Saloranta911cca02013-10-08 10:03:44 -0700154#111: _currInputRowStart isn't initialized in UTF8StreamJsonParser() constructor
155 (reported by dreamershl@github)
Tatu Saloranta5e14c462013-11-08 19:30:54 -0800156#115: JsonGenerator writeRawValue problem with surrogate UTF-8 characters
157 (reported by Marcin Z)
Tatu Salorantabc540622013-11-11 16:08:15 -0800158#116: WriterBasedJsonGenerator produces truncated Unicode escape sequences
159 (reported by Steve L-S)
Tatu Saloranta45cc26c2013-08-07 23:24:04 -0700160- Improve `DefaultPrettyPrinter`, `Lf2SpacesIndenter` (from databind #276)
Tatu Saloranta98cb9a72013-08-10 15:05:33 -0700161- Add `JsonGenerator.canOmitFields()` method to support discovery of
162 positional formats, needed for handling of filtering for CSV
Tatu Saloranta8475c8b2013-09-18 16:21:22 -0700163- Rewrite `InternCache` to use `ConcurrentHashMap`, to work more efficiently both
164 for common case of few misses (no block on access), and slowest cases (lots of
165 misses).
Tatu879b7cd2013-09-24 11:51:37 -0700166- Add `JsonPointer` implementation, to be used by tree model, streaming
Tatu Saloranta7ee38782013-10-03 10:51:06 -0700167- Make `UTF8StreamJsonParser` non-final, for potential sub-classing
Tatu Salorantaad28e352013-07-04 16:40:18 -0700168
Tatu Saloranta3da5c042013-10-08 10:08:24 -07001692.2.3 (23-Aug-2013)
170
171#78: ArrayIndexOutOfBoundsException for very long numbers (>500 digits)
172 (reported by boothen@github)
173#81: CharTypes.appendQuoted misencodes first 32 Unicode values as '\0000'
174 (reported by githubaff0@github)
175#84: Support for parsing 'Infinity' when feature ALLOW_NON_NUMERIC_NUMBERS is on
176 (contributed by ebrevdo@github)
177- Add `Base64Variant.decode()` convenience methods
178
Tatu Saloranta0ec6bac2013-06-06 13:26:26 -07001792.2.2 (26-May-2013)
180
181No changes since previous version.
182
Tatu Salorantad940b452013-05-26 22:16:00 -07001832.2.1 (03-May-2013)
Tatu Saloranta7a9d1d32013-04-26 16:42:40 -0700184
Tatu Saloranta7b796a82013-04-27 10:18:30 -0700185#72: JsonFactory.copy() was not copying settings properly
186 (reported by Christian S (squiddle@github))
Tatu Saloranta7a9d1d32013-04-26 16:42:40 -0700187- Moved VERSION/LICENSE contained in jars under META-INF/, to resolve
188 Android packaging (APK) issues
189
Tatu Saloranta7a9d1d32013-04-26 16:42:40 -07001902.2.0 (22-Apr-2013)
Tatu Saloranta306524f2012-11-12 14:33:10 -0800191
192Fixes:
193
Tatu Saloranta5b7bbe12013-04-16 19:08:21 -0700194#51: JsonLocation had non-serializable field, mark as transient
Tatu Saloranta61d5bdd2013-01-11 19:02:01 -0800195
Tatu Saloranta45466132013-01-11 10:20:48 -0800196Improvements
197
Tatu Saloranta5b7bbe12013-04-16 19:08:21 -0700198#46, #49: Improve VersionUtil to generate PackageVersion, instead of
Tatu Saloranta45466132013-01-11 10:20:48 -0800199 reading VERSION.txt from jar -- improves startup perf on Android significantly
200 (contributed by Ben G)
Tatu Saloranta5b7bbe12013-04-16 19:08:21 -0700201#59: Add more functionality in `TreeNode` interface, to allow some
Tatu Saloranta12525982013-02-12 22:56:57 -0800202 level of traversal over any and all Tree Model implementations
Tatu Saloranta5b7bbe12013-04-16 19:08:21 -0700203#69: Add support for writing `short` values in JsonGenerator
Tatu Saloranta45466132013-01-11 10:20:48 -0800204
Tatu Salorantac3ef9f32013-02-04 20:35:22 -08002052.1.3 (19-Jan-2013)
Tatu Saloranta1e1bfb62012-11-15 17:39:03 -0800206
Tatu Salorantac3ef9f32013-02-04 20:35:22 -0800207* [JACKSON-884]: JsonStringEncoder.quoteAsStringValue() fails to encode
208 ctrl chars correctly.
209* [Issue#48] Problems with spaces in URLs
210 (reported by KlausBrunner)
211
2122.1.2 (04-Dec-2012)
213
214* [Issue#42] Problems with UTF32Reader
215 (reported by James R [jroper@github])
216* Added missing methods (like 'setPrettyPrinter()' in JsonGeneratorDelegate
217
2182.1.1 (11-Nov-2012)
Tatu Salorantadc2e72f2012-10-05 13:04:07 -0700219
Tatu Salorantaab0269c2012-10-20 13:19:10 -0700220* [Issue#34] `JsonParser.nextFieldName()` fails on buffer boundary
221 (reported by gsson@github)
Tatu Saloranta9c386442012-11-08 14:40:26 -0800222* [Issue#38] `JsonParser.nextFieldName()` problems when handling
223 names with trailing spaces
224 (reported by matjazs@github)
Tatu Salorantadc2e72f2012-10-05 13:04:07 -0700225
Tatu Salorantaab0269c2012-10-20 13:19:10 -07002262.1.0 (08-Oct-2012)
227
228A new minor version for 2.x.
Tatu Saloranta1adc8982012-03-30 16:47:59 -0700229
Tatu Saloranta84101d72012-05-14 22:16:28 -0700230New features:
231
Tatu Salorantae6dfc692012-09-28 15:34:05 -0700232* [Issue#14]: add 'readBinaryValue(...)' method in JsonParser
233* [Issue#16]: add 'writeBinary(InputStream, int)' method in JsonGenerator
Tatu Salorantad80a2d02012-06-11 20:37:35 -0700234 (and implement for JSON backend)
Tatu Salorantae6dfc692012-09-28 15:34:05 -0700235* [Issue#26]: Allow overriding "root value separator"
236 (suggested by Henning S)
Tatu Salorantae53c3a92012-05-23 20:07:23 -0700237
Tatu Salorantadc2e72f2012-10-05 13:04:07 -0700238Improvements:
239
240* [JACKSON-837]: Made JsonGenerator implement Flushable.
241 (suggested by Matt G)
242* [Issue#10]: add 'JsonProcessingException.getOriginalMessage()' for accessing
243 message without location info
244* [Issue#31]: make `JsonFactory` java.io.Serializable (via JDK)
245
Tatu Salorantaeeb2fbd2012-05-28 22:00:08 -0700246Other:
247
Tatu Salorantafeaabd12012-07-22 23:03:41 -0700248* [Issue-25]: Add 'createParser' and 'createGenerator' (as eventual replacements
Tatu Salorantaeeb2fbd2012-05-28 22:00:08 -0700249 for 'createJsonParser'/'createJsonGenerator') in 'JsonFactory'
Tatu Saloranta9c9622d2012-07-24 18:37:03 -0700250* Try to improve locking aspects of symbol tables, by reducing scope of
251 synchronized sections when creating, merging table contents.
Tatu Saloranta378ecdc2012-08-04 16:27:27 -0700252* Added 'JsonFactory.copy()' method to support databinding's 'ObjectMapper.copy()'
Tatu Salorantaad2df5f2012-08-22 20:55:49 -0700253* Added method 'requiresCustomCodec()' for JsonFactory and JsonParser
Tatu Saloranta5ad18ff2012-09-22 16:00:57 -0700254* Added 'JsonParser.getValueAsString()' method (to support flexible conversions)
Tatu Saloranta1344de92012-10-05 21:13:21 -0700255* Added META-INF/services/com.fasterxml.jackson.core.JsonFactory SPI to register
256 `JsonFactory` for even more automatic format discovery in future.
Tatu Salorantaeeb2fbd2012-05-28 22:00:08 -0700257
Tatu Saloranta34098342012-07-15 11:02:23 -07002582.0.4 (26-Jun-2012)
259
260Fixes:
261
262* [Issue-6] PrettyPrinter, count wrong for end-object case
263* 1.9.x fixes up to 1.9.8
264
2652.0.3: skipped; only some modules use this version
266
Tatu Saloranta9a362442012-05-14 19:42:15 -07002672.0.2 (14-May-2012)
268
Tatu Saloranta34098342012-07-15 11:02:23 -0700269* 1.9.x fixes up to 1.9.7
Tatu Saloranta9a362442012-05-14 19:42:15 -0700270
Tatu Saloranta93402042012-04-30 18:41:17 -07002712.0.1 (22-Apr-2012)
272
273Fixes:
274
275* [JACKSON-827] Fix incompatibilities with JDK 1.5 (2.0.0 accidentally
276 required 1.6)
277 (reported Pascal G)
278
Tatu Saloranta1adc8982012-03-30 16:47:59 -07002792.0.0 (25-Mar-2012)
Tatu Saloranta1f6e1fb2012-01-17 22:29:27 -0800280
281Fixes:
282
Tatu Saloranta5e69eec2012-03-25 11:52:34 -0700283(all fixes up until 1.9.6)
284
Tatu Saloranta1f6e1fb2012-01-17 22:29:27 -0800285Improvements
286
Tatu Saloranta9fc55aa2012-01-18 17:26:28 -0800287* [JACKSON-730]: Add checks to ensure that Features are applicable for
288 instances (parsers, generators), or if not, throw IllegalArgumentException
Tatu Saloranta1f6e1fb2012-01-17 22:29:27 -0800289* [JACKSON-742]: Add append-methods in SerializableString
290
291New features:
292
Tatu Saloranta487fe102012-02-20 17:53:26 -0800293* [JACKSON-782]: Add 'JsonParser.overrideCurrentName()', needed as a workaround
294 for some exotic data binding cases (and/or formats)
295
Tatu Saloranta1f6e1fb2012-01-17 22:29:27 -0800296[entries for versions 1.x and earlier not retained; refer to earlier releases)