diff --git a/Acknowledgements-2.12.md b/Acknowledgements-2.12.md new file mode 100644 index 000000000..49adcad6c --- /dev/null +++ b/Acknowledgements-2.12.md @@ -0,0 +1,56 @@ +## Acknowledgments for Jackson 2.12 release + +This page outlines some of contributors that contributed to [Jackson 2.12](Jackson-Release-2.12): it is not an exhaustive list but summarizes some of larger features. List is no almost certainly incomplete (apologies to anyone whose contribution is accidentally left out) as well as subjective -- no feature is insignificant, and omission from here (intentional or accidental) is not meant as value judgment. + +### Module maintainers + +Special thank you notes to following module maintainers (existing and new) for their contributions (in alphabetic module order): + +* Blackbird (NEW in 2.12!): [Steven Schlansker](https://github.com/stevenschlansker) (@stevenschlansker) contributed a replacement module for Afterburner called [Blackbird](https://github.com/FasterXML/jackson-modules-base/blob/master/blackbird/README.md) (clever name, even!) + * Designed module specifically work better with newer (past-Java 8) JVMs, like JVM 11 and JVM 14 +* Java 8 date/time: [Michael O'Keeffe](https://github.com/kupci) (kupci@github) + * Helped unify Date/Time handling significantly for 2.12 by fixing issues, reviewing PRs. +* Kotlin: [Drew Stephens](https://github.com/dinomite) (@dinomite) and [Vyacheslav Artemyev](https://github.com/viartemev) (@viartemev) + * Further improved Kotlin module to use new extension points introduced by core databind module +* Scala: [PJ Fanning](https://github.com/pjfanning) (@pjfanning) + * Fixed many long-standing issues with Scala module to "catch up" with core databind + * Has handled release responsibilities for the module since previous maintainers moved on + +### Module metadata improvements + +Jackson 2.12 significantly improves metadata included with modules, to support more advanced dependency management. Special thank you to following contributors: + +* [Jendrik Johannes](https://github.com/jjohannes) (@jjohannes): contributed Gradle Module Metadata improvements (like [databind#2726](https://github.com/FasterXML/jackson-databind/issues/2726)) + * Can significantly improve dependency version handling with Gradle 6, see [this blog post](https://blog.gradle.org/alignment-with-gradle-module-metadata) +* [Marc Magon](https://github.com/GedMarc) (@GedMarc): contributed further improvements to Java Module System (JPMS) metadata (`module-info.class`) regarding dependencies to JavaEE dependencies (JAXB, JAX-WS) + +### "Big" New Features + +Jackson 2.12 contains support for many highly-requested features (now tagged with `most-wanted` label); things that users have waited for years in some cases (and less in others :) ). Here are the Most Wanted features, from oldest to newest: + +#### `@JsonTypeInfo(use=DEDUCTION)` (type inference for polymorphic deserialization) + +* [Marc Carter](https://github.com/drekbour) (@drekbour) provided the PR for the VERY OLDEST open feature request + * Impressively simple solution to complicated problem, solution for which had evaded us for a... while. :) + * See [databind#43](https://github.com/FasterXML/jackson-databind/issues/43) for details + +#### `@JsonIncludeProperties` + +* [Baptiste Pernet](https://github.com/sp4ce) (@sp4ce) provided the PR for this long-time favorite feature request by users -- basically reverse of `@JsonIgnoreProperties` (opt-in vs opt-out) + * See [databind#1296](https://github.com/FasterXML/jackson-databind/issues/1296) for details + +#### Annotation-less 1-arg Creator method (finally) + +* [Lovro Pandžić](https://github.com/lpandzic) (@lpandzic) helped get this perennial favorite feature request to finally be implemented in 2.12 (after many close misses) + * See [databind#1498](https://github.com/FasterXML/jackson-databind/issues/1498) for details + +#### Java 14 Record (`java.lang.Record`) support + +* [Gunnar Morling](https://github.com/gunnarmorling) (@gunnarmorling) and [Youri Bonnaffé](https://github.com/youribonnaffe) (@youribonnaffe) + * Provided initial PR for support, tests, and guidance on improvements. + * See [databind#2709](https://github.com/FasterXML/jackson-databind/issues/2709) for details + +### Notable Fixes + +* [Carter Kozak](https://github.com/carterkozak) (@carterkozak) for important fixes to Static Factory generic type coercion (for example, [databind#2895](https://github.com/FasterXML/jackson-databind/issues/2895)), related areas + * Particularly helpful was testing during Release Candidates, including integration tests diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 80b903e4e..000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,117 +0,0 @@ -## Contributing to Jackson - -First of all: we would love to get your contributions, whether they are in form of bug reports, -Requests for Enhancement (RFE), documentation, or code patches. -This page lists things that are important to know about contributing to Jackson project repositories. - -### Community, Communication - -The easiest ways to participate beyond using Jackson is to join one of Jackson mailing lists -(Jackson google groups): - -* [Jackson Announce](https://groups.google.com/forum/#!forum/jackson-announce): Announcement-only list for new Jackson releases, meetups and other events related to Jackson -* [Jackson User](https://groups.google.com/forum/#!forum/jackson-user): List dedicated for discussion on Jackson usage -* [Jackson Dev](https://groups.google.com/forum/#!forum/jackson-dev): List for developers of Jackson core components and modules, discussing implementation details, API changes. - -or to join chat on - -* [Jackson-databind gitter](https://gitter.im/FasterXML/jackson-databind) forum - -There are other related lists and forums as well: - -* [Smile Format Discussion](https://groups.google.com/forum/#!forum/smile-format-discussion): List for discussing details of the binary JSON format called [Smile](https://en.wikipedia.org/wiki/Smile_%28data_interchange_format%29) (see [Smile Specification](https://github.com/FasterXML/smile-format-specification)) - -Note that individual Jackson projects have different maintainers; see the individual project -README for the list of maintainers of that module. - -
- -### Issue Tracking - -All bug reports, improvements ideas and RFEs are handled as Github Issues using -per-repository Issue Tracker. For example, issues related to Jackson databinding -(main json-to/from-Java objects handling) component would go -to [jackson-databind Issue Tracker](https://github.com/FasterXML/jackson-databind/issues). - -#### "New Contributor Friendly" issues - -One effort to help new contributors is to try to collect issues that might be particularly good for -new contributors: - -[Issues for New Contributors](https://github.com/FasterXML/jackson/wiki/Issues-For-New-Contributors) (Added for Hacktoberfest 2019) - -### Code contributions, related - -#### Pull Requests - -All code contributions are made using Github Pull Requests: you typically fork the component -to modify, and eventually create a Pull Request. It is good to have a Github Issue created -for change you want to submit, explaining what is needed (bug fix, change to behavior, -new feature) although this is not absolutely required. - -#### Branches - -When creating code (or documentation, test) change for eventual Pull Request, it is important to -understand which Git Branch to use as the base. - -Jackson projects maintain a few branches: - -* `master` for developing the still-far-off 3.0.0 release -- but is also used for `README.md`s -* `2.16` the next minor version in development -* `2.15` the current stable release -* `2.14` the previous stable branch, for which patch releases are still made -* `2.13` inactive branch that may receive micro-patches for urgent security issues (usually only [`jackson-databind`](https://github.com/FasterXML/jackson-databind)) - -Most bug-fix Pull Requests should be made against the current stable branch, `2.15`. -Pull requests for major new functionality or that significantly alter internals, -but are backwards-compatible with existing behavior should be made against the next minor version -branch (`2.16`). -If Jackson's functionality or default behavior is to be altered, `master` is the correct branch, but -discussion is probably in order. - -If you have any concerns or doubts about branch to use, feel free to reach out on user mailing -list or chat; or even on issue tracker of relevant repository. - -#### Backwards Compatibility - -When submitting a pull request, your choice of a base branch should take into account backwards -compatibility. - -The Jackson project follows [Apache versioning](https://apr.apache.org/versioning.html). Patch -versions maintain source and binary compatibility; functionality may be added, but existing code -that depends upon Jackson must continue to function properly without alteration. Minor versions -add functionality, may deprecate existing functionality, and may remove functionality that has -been deprecated for at least two minor versions. Any changes that require breaking existing -functionality must be part of a major version release. - -See [Jackson Releases on the wiki](https://github.com/FasterXML/jackson/wiki/Jackson-Releases) -for more information. - -#### Testing - -Jackson's functionality is vast and is used widely, so automated testing for any changes is -important for preventing accidental breakage in the future. Tests also document and demonstrate -the bounds of functionality, showing the author's intent to others working on the code in the -future. - -#### Paperwork - -There is not a lot of paperwork related to code changes: Pull Requests are almost all it takes. - -But there is one thing that is needed before development team can accept a code change (exception: -test code changes do not require one): -[Contributor License Agreement (CLA)](https://en.wikipedia.org/wiki/Contributor_License_Agreement). -This is needed before your very first code contribution, but covers all Jackson projects and -will NOT be needed for other future contributions. - -All you need to do is to download the CLA document, print it, fill and sign, scan (or take -photo on your phone) and email that copy to `info` at `fasterxml` dot `com`. - -As to document to download, you have 2 choices: - -* Standard Jackson [Contributor License Agreement](../../blob/master/contributor-agreement.pdf) (CLA) is a one-page document we need from every contributor of code (we will request it for pull requests), used mostly by individual contributors -* [Corporate CLA](../../blob/master/contributor-agreement-corporate.txt) is used by Corporations to avoid individual employees from having to send separate CLAs; it is also favored by corporate IP lawyers. - -of which the first option is more commonly used (by over 90% of contributors). - -Note that the first option is available for corporations as well, but most companies have opted to use the second option instead. Core team has no preference over which one gets used: both work; we care more about actual contributions. diff --git a/FAQ.md b/FAQ.md new file mode 100644 index 000000000..88b59748d --- /dev/null +++ b/FAQ.md @@ -0,0 +1,26 @@ +# Jackson Project FAQ + +## General + +### What is the License? + +[Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0) for Jackson 2.0 and later. +Jackson 1.x was dual licensed so that user could choose either `Apache License 2.0` or [LGPL 2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html) + +### Why do source files NOT contain license and/or copyright information + +Some projects use (and require use of) per-file comment header which indicates license details +and copyright assignments. Jackson project does not do this: we believe this is redundant +and serves no useful purpose. Instead, the license information is contained in multiple places: + +* In `src/main/resources/META-INF/LICENSE`, so that it gets included in + * Binary (jar) + * Source archives (jar / zip) +* `pom.xml` of the project (in some case parent pom) +* Included in project Wiki pages + +### Is there (commercial) support available? + +Yes! Starting with version 2.10 (released around end of September 2019), primary mechanism is through +[Tidelift](https://tidelift.com) subscriptions. You can subscribe to any number of Jackson components, and each component repo links to specific subscription: most common one being +[Tidelift subscription for 'jackson-databind'](https://tidelift.com/subscription/pkg/maven-com-fasterxml-jackson-core-jackson-databind?utm_source=maven-com-fasterxml-jackson-core-jackson-databind&utm_medium=referral&utm_campaign=readme) diff --git a/Home.md b/Home.md new file mode 100644 index 000000000..f9e31ed06 --- /dev/null +++ b/Home.md @@ -0,0 +1,12 @@ +This is the portal project for Jackson data processor. + +See [project README](../../jackson) for links, like: + +* [Releases](Jackson-Releases) +* [[FAQ]] +* [Issues for New Contributors](Issues-For-New-Contributors) is a Wiki page with links to "New Contributor Friendly" issues +* Security: + * [Criteria for Polymorphic Deser Vuln report acceptance](Jackson-Polymorphic-Deserialization-CVE-Criteria) + +Actual documentation is mostly found from [Jackson Docs](../../jackson-docs) project (and ones that are not are linked from there). + diff --git a/Issues-For-New-Contributors.md b/Issues-For-New-Contributors.md new file mode 100644 index 000000000..c9e955a3b --- /dev/null +++ b/Issues-For-New-Contributors.md @@ -0,0 +1,110 @@ +# New Contributor Friendly issues + +This is a new (created October 2019) Wiki page that tries to link to those issues across Jackson components +that are considered "New Contributor Friendly": something that may be easy to resolve (but sometimes not), but should at least be easy to tackle in some form: verify, add a unit test, investigate root cause(s), potential fix(es). And ultimately getting fixed of course. + +## How does it work? + +This is just a manually maintained page to actual issues: I have created/will create `good-first-issue` label on all Jackson component repos, and whenever labeling, will try to add link here. I encourage everyone else to do the same -- I intent to keep this Wiki as open as possible (either fully open, or via Team that has access, adding anyone who wants to be added) + +## What if they do not look all that easy? + +That is understandable -- classification is inexact science, and they may only appear less complex than truly complicated ones. Sometimes things are more difficult than they appear, as well. + +But if you are unsure about the problem or possible ways to fix the problem, don't be afraid to ask. +Sometimes a small but vital piece of information from project owners can help a lot; maintainers do not always remember to add all contextual information (or assume reader is more familiar with the project). +Asking clarifying questions is encouraged, especially when including notes on parts that you (think you) understand. + +## Want to be a Meta-Helper? + +Besides obvious help by working on issues in some form, we could ALSO use help in maintaining this page. + +One challenge with Github Wikis is that they are either fully open -- so anyone can change anything -- or must be gated by coarse Repo settings. Although ideally we would leave this Wiki wide open there are some security concerns by malicious changes here leading users to bad web sites or mis-information so Wiki here is only editable by users that belong to `Wiki` team of `FasterXML` organization. +But we trust our community so if you would like to help add/update/delete entries here, please contact us either via Issue in this repo, or by sending email note to `info` at fasterxml dot com, and we will give you access. + +----- + +## Jackson Core Components + +### Streaming + +* [#577](https://github.com/FasterXML/jackson-core/issues/577): Consider number-decoding improvements from jsoniter (esp. for `double`/`float`, `BigInteger`, `BigDecimal`) + +### Databind + +* [#2302](https://github.com/FasterXML/jackson-databind/issues/2302) -- Improve exception used, message, when indicating a `required` property is not set (only need to add test case first!) + +## Jackson Datatype modules + +### Java 8 Date/Time + +* [#108](https://github.com/FasterXML/jackson-modules-java8/issues/108): Default string formats that will deserialize successfully to an Instant? (DOCUMENTATION) +* [#130](https://github.com/FasterXML/jackson-modules-java8/issues/130): Why is there no concrete `OffsetDateTimeDeserializer` class to use via annotations +* [#168](https://github.com/FasterXML/jackson-modules-java8/issues/168): InstantSerializer doesn't respect any format-related settings without replacing serializer instance + +### Joda + +* [#98](https://github.com/FasterXML/jackson-datatype-joda/issues/98): `JsonFormat` timezone attribute effect overwritten if pattern attribute present + +### Guava + +* [#2](https://github.com/FasterXML/jackson-datatypes-collections/issues/2): : Better multiset serialization / deserialization +* [#7](https://github.com/FasterXML/jackson-datatypes-collections/issues/7): Add support for `WRITE_SORTED_MAP_ENTRIES` +* [#78](https://github.com/FasterXML/jackson-datatypes-collections/issues/78): Add README for "eclipse-collections" (DOCUMENTATION) + +## Jackson Dataformat Modules + +### CSV + +* [#198](https://github.com/FasterXML/jackson-dataformats-text/issues/198): Support writing numbers as strings for CSV + +### Properties + +### XML + +* [#302](https://github.com/FasterXML/jackson-dataformat-xml/issues/302): Unable to serialize top-level Java8 Stream +* [#329](https://github.com/FasterXML/jackson-dataformat-xml/issues/329): Jackson ignores JacksonXmlElementWrapper on Stream + +### YAML + +- none currently - + +## JVM Languages + +### Kotlin + +* [#385](https://github.com/FasterXML/jackson-module-kotlin/issues/385): Add Moditect, source module info, to allow Kotlin module usage with Java Module system + +## Friends of Jackson projects + +### Woodstox + +* [#95](https://github.com/FasterXML/woodstox/issues/95): BaseStreamWriter.writeSpace(String) should not close open element + +----- + +## Recently Completed Issues + +Note: these issues were solved recently by contributors outside of main development teams (new or otherwise) + +### 2020 + +#### October / Hacktoberfest + +* [#2873](https://github.com/FasterXML/jackson-databind/issues/2873) -- `MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS` should work for enum as keys -- by @ILGO0413 +* [#1458](https://github.com/FasterXML/jackson-databind/issues/1458) -- `@JsonAnyGetter` should be allowed on a field -- by @dominikrebhan +* [#2291](https://github.com/FasterXML/jackson-databind/issues/2291) -- Create tutorial on how to use Builders and Jackson -- by @Hassan-Elseoudy +* [#500](https://github.com/FasterXML/jackson-core/issues/500): Allow `optional-padding` for `Base64Variant` -- PR by @pavan-kalyan +* [#94](https://github.com/FasterXML/jackson-modules-java8/issues/94): Deserialization of timestamps with UTC timezone to LocalDateTime doesn't yield correct time -- PR by @angelyan +* [#25](https://github.com/FasterXML/jackson-datatypes-collections/issues/25): SetMultimap should be deserialized to a LinkedHashMultimap by default -- PR by @Migwel +* [#2871](https://github.com/FasterXML/jackson-databind/issues/2871) -- Serialization of map keys does not use `@JsonValue` similar to values (no chaining?) -- maybe add `@JsonKey` annotation -- PR by @Anusien + + +#### July + +* (databind) [#2215](https://github.com/FasterXML/jackson-databind/issues/2215): Support BigDecimal in StdValueInstantiator -- by @upsidedownsmile + + + + + diff --git a/Jackson-Polymorphic-Deserialization-CVE-Criteria.md b/Jackson-Polymorphic-Deserialization-CVE-Criteria.md new file mode 100644 index 000000000..37a13ea15 --- /dev/null +++ b/Jackson-Polymorphic-Deserialization-CVE-Criteria.md @@ -0,0 +1,81 @@ +## What qualifies for a CVE report for Polymorphic Deserialization + +This page outlines the criteria used for accepting problem described ["On Jackson CVEs: Don't Panic!"](https://medium.com/@cowtowncoder/on-jackson-cves-dont-panic-here-is-what-you-need-to-know-54cd0d6e8062) -- that of possible security problems if: + +* Service accepts JSON content from untrusted senders AND +* Service enables "Default Typing" feature (or uses equivalent `@JsonTypeInfo` with base type of `java.lang.Object`) AND +* Service has one of 3rd libraries with "gadget" Java classes AND +* Jackson version is 2.9.x or lower + +then there may be a security issue to address by an addition to the class block list. + +When such issues are reported, new checks have been added to Jackson versions 2.9 (later versions have separate prevention mechanism that does not rely on blocks) to prevent deserialization of these reported "gadget" types. + +### Problem with maintenance of block list + +Originally reports covered widely-used Java libraries (like EHCache or Spring Web or Hibernate) and there were even one or +two types found were include in (some versions of) JDK. +These could be expected to be security vulnerabilities for multiple projects and as such worth blocking. + +But maintaining these blocks and handling CVE id request, allocation and version releases has its cost -- and because Jackson 2.10 and later are not considered vulnerable in same sense, over time effort to keep adding to the block list has exceeded value for maintainers. +For context, the current block list (Jackson-databind 2.9.10.6) contains about 90 specific classes across 30-40 libraries. + +### Why Jackson 2.10+ not considered vulnerable + +The question of whether polymorphic deserialization gadgets should be considered for ANY Jackson versions is a tricky question since these attacks do NOT work against default configuration of `ObjectMapper`: developers must explicitly enable "Default Typing" (or use specific annotations on value classes to enable it). As such, strictly speaking these attacks should not truly qualify -- they may or may not apply, depending on specific usage of Jackson. This is unlikely most other CVEs where applicability is of "yes/no" style based on version. + +However: given that originally some of these issues were accepted (they are security concerns for some subset of users, after all), it became necessary to consider WHY they were accepted. Reasoning the project ended up with is as follows: + +* While vulnerability requires users to take specific action, methods that enable behavior did not mention security concern -- so users/developers were likely to be unaware of security consequences + +With that in mind, Jackson 2.10 was change substantially so that there are new method for enabling so-called Safe Default Typing, which requires "Allow List" approach to outline acceptable subtypes; instead of former global "Deny List" (aka "black list"). +Allow lists are by their nature a safer approach; and in this case user is then responsible for specifying safe set of subtypes allowed. +In addition to the new safe approach, all old Unsafe methods were changed to: + +1. Include Javadocs that explain why use of these methods is a potential security risk +2. Be deprecated in Jackson 2.x; to be removed from Jackson 3.0. + +This combination of changes allowed the change in acceptance (or lack thereof) of CVEs against Polymorphic Deserialization for different Jackson versions. + +### New criteria (from Sep 15, 2020): Notability + +Starting on September 15, 2020, new blocks will only be added (and CVE ID allocated) for "gadget" types that are "Notable", which means inclusion in either: + +1. JDK version 1.8 (Java 8) or later (all valid types accepted, blocks added) +2. Publicly available, "popular enough" artifact: + * Must be listed on [MvnRepository.com](https://mvnrepository.com/) + * Is depended on by at least 20 libraries (not including other components of the same framework, if part of larger set of artifacts) + +Some of existing blocks do not fulfill this criteria but blocks that been added previously will not be removed simply due to lack of popularity (or accessibility). + +One particular class of no-longer-accepted cases includes that of Application Server classes only available as part of AS installations -- unless they are accessible as artifacts via Maven Central (or similar publicly accessible and indexed Maven repos). + +### End of Jackson 2.9 support (31 Dec, 2020) + +Due to availability of new minor versions (2.10.5 and 2.11.2 available as of Sep 2, 2020), no new releases of Jackson 2.9 are planned to be released, not even micro-patches, after end of 2020. + +The last planned micro-patch release was 2.9.10.8, released 06-Jan-2021. +While it is still possible that an exception could be made for some critical issue but there are no plans for regular addition to the block list beyond 2.9.10.8. + +### Criteria for possible extension (from January 01, 2021) + +Although no systematic additions are considered beyond end of 2020, it is possible that specifically notable cases could be addressed. +The minimum level that must be satisfied is that gadget type is included in: + +1. JDK version 1.8 (Java 8) or later +2. Publicly available, very popular artifact: + * Must be listed on [MvnRepository.com](https://mvnrepository.com/) + * Is depended on by at certain number of libraries (not including other components of the same framework, if part of larger set of artifacts) + * Until 31st Mar 2021: 200 libraries + * Until 30rd Jun 2021: 500 libraries + * Until 30rd Sep 2021: 1000 libraries + * Until 31st Dec 2021: 2000 libraries + +While additions may be accepted as per above criteria, Jackson team will not be filing for CVE IDs nor accept them against versions 2.10 and above. Submitters are free to report these to Mitre, against existing 2.9 and earlier relevant versions. + +### End of accepting CVEs for Polymorphic Deserialization + +After end of 2021 (31st Dec, 2021), "Default Typing" style CVEs are no longer accepted regardless of what gadget types +are used. + + diff --git a/Jackson-Release-1.0.md b/Jackson-Release-1.0.md new file mode 100644 index 000000000..977d112b9 --- /dev/null +++ b/Jackson-Release-1.0.md @@ -0,0 +1,14 @@ +## Jackson Release 1.0 + +This was the first official non-beta release of Jackson. +Given that the first public pre-1.0 version was released in August 2007, development took over year and a half. + +Overview of release is: + +* Release date: May 9th, 2009. +* Codename: "Hazelnut" (curious historical fact: lots of people choke on nuts -- this has something to do with choosing the codename) +* Functionality: + * High-performance [Streaming (incremental) parser/generator] + * [Tree Model] + * Fully functional [Data Binding] between Java objects and JSON. + * Including basic set of annotations for configuring details like JSON property names. diff --git a/Jackson-Release-2.10.1.md b/Jackson-Release-2.10.1.md new file mode 100644 index 000000000..86a22532f --- /dev/null +++ b/Jackson-Release-2.10.1.md @@ -0,0 +1,48 @@ +Patch version of [2.10](Jackson-Release-2.10), released on 2019-11-09. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#455](../../jackson-core/issues/455): Jackson reports wrong locations for JsonEOFException +* [#567](../../jackson-core/issues/567): Add `uses` for `ObjectCodec` in module-info + +#### [Databind](../../jackson-databind) + +* [#2457](../../jackson-databind/issues/2457): Extended enum values are not handled as enums when used as Map keys +* [#2473](../../jackson-databind/issues/2473): Array index missing in path of `JsonMappingException` for `Collection`, with custom deserializer +* [#2475](../../jackson-databind/issues/2475): `StringCollectionSerializer` calls `JsonGenerator.setCurrentValue(value)`, which messes up current value for sibling properties +* [#2485](../../jackson-databind/issues/2485): Add `uses` for `Module` in module-info +* [#2513](../../jackson-databind/issues/2513): BigDecimalAsStringSerializer in NumberSerializer throws IllegalStateException in 2.10 +* [#2519](../../jackson-databind/issues/2519): Serializing `BigDecimal` values inside containers ignores shape override +* [#2520](../../jackson-databind/issues/2520): Sub-optimal exception message when failing to deserialize non-static inner classes +* [#2529](../../jackson-databind/issues/2529): Add tests to ensure `EnumSet` and `EnumMap` work correctly with "null-as-empty" +* [#2534](../../jackson-databind/issues/2534): Add `BasicPolymorphicTypeValidator.Builder.allowIfSubTypeIsArray()` +* [#2535](../../jackson-databind/issues/2535): Allow String-to-byte[] coercion for String-value collections + +### Changes, data formats + +#### [CSV](../../jackson-dataformats-text) + +* [#15](../../jackson-dataformats-text/issues/15): Add a `CsvParser.Feature.SKIP_EMPTY_LINES` to allow skipping empty rows + +### Changes, datatypes + +#### [Java 8 date/time](../../jackson-modules-java8) + +* [#127](../../jackson-modules-java8/issues/127): ZonedDateTime in map keys ignores option to write Zone IDs + +#### [Joda](../../jackson-datatype-joda) + +[#108](../../jackson-datatype-joda/issues/108): `JodaDateSerializer` Discards Shape Override Preference + +### Changes, other JVM languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#80](../../jackson-module-kotlin/issues/80): Boolean property name starting with 'is' not serialized/deserialized properly +* [#130](../../jackson-module-kotlin/issues/130): Using Kotlin Default Parameter Values when JSON value is null and Kotlin parameter type is Non-Nullable +* [#176](../../jackson-module-kotlin/issues/176): Version 2.9.7 breaks compatibility with Android minSdk '<' 24 +* [#225](../../jackson-module-kotlin/issues/225): Don't instantiate new instances of Kotlin singleton objects diff --git a/Jackson-Release-2.10.2.md b/Jackson-Release-2.10.2.md new file mode 100644 index 000000000..ea1236df0 --- /dev/null +++ b/Jackson-Release-2.10.2.md @@ -0,0 +1,59 @@ +Patch version of [2.10](Jackson-Release-2.10), released on 05-Jan-2020. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#580](../../jackson-core/issues/580): FilteringGeneratorDelegate writeRawValue delegate to `writeRaw()` instead of `writeRawValue()` +* [#582](../../jackson-core/issues/582): `FilteringGeneratorDelegate` bug when filtering arrays (in 2.10.1) + +#### [Databind](../../jackson-databind) + +* [#2101](../../jackson-databind/issues/2101): `FAIL_ON_NULL_FOR_PRIMITIVES` failure does not indicate field name in exception message +* [#2544](../../jackson-databind/issues/2544): `java.lang.NoClassDefFoundError` Thrown for compact profile1 +* [#2553](../../jackson-databind/issues/2553): JsonDeserialize(contentAs=...) broken with raw collections +* [#2556](../../jackson-databind/issues/2556): Contention in `TypeNameIdResolver.idFromClass()` +* [#2560](../../jackson-databind/issues/2560): Check `WRAP_EXCEPTIONS` in `CollectionDeserializer.handleNonArray()` +* [#2564](../../jackson-databind/issues/2564): Fix `IllegalArgumentException` on empty input collection for `ArrayBlockingQueue` +* [#2566](../../jackson-databind/issues/2566): `MissingNode.toString()` returns `null` (4 character token) instead of empty string +* [#2567](../../jackson-databind/issues/2567): Incorrect target type for arrays when providing nulls and nulls are disabled +* [#2573](../../jackson-databind/issues/2573): Problem with `JsonInclude` config overrides for `java.util.Map` +* [#2576](../../jackson-databind/issues/2576): Fail to serialize `Enum` instance which includes a method override as POJO (shape = Shape.OBJECT) + +### Changes, data formats + +#### [CSV](../../jackson-dataformats-text) + +* [#166](../../jackson-dataformats-text/issues/166): Incorrect `JsonParseException` Message for missing separator char + +#### [Ion](../../jackson-dataformats-binary) + +* [#189](../../jackson-dataformats-binary/issues/189): `IonObjectMapper` close()s the provided `IonWriter` unnecessarily + +#### [XML](../../jackson-dataformat-xml) + +* [#366](../../jackson-dataformat-xml/issues/366): XML containing xsi:nil is improperly parsed +* [#378](../../jackson-dataformat-xml/issues/378): Jackson 2.10.x fails to deserialize xsi:nil with multiple child elements + +#### [YAML](../../jackson-dataformats-text) + +* [#163](../../jackson-dataformats-text/issues/163): `SequenceWriter` does not create multiple docs in a single yaml file + +### Changes, JVM Languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#270](../../jackson-module-kotlin/issues/270): 2.10.1 seems to output JSON field where name of function matches name of private field +* [#279](../../jackson-module-kotlin/issues/279): 2.10 introduces another binary compatibility issue in KotlinModule constructor + +### Changes, other + +#### [JAX-RS](../../jackson-jaxrs-providers) + +* [#121](../../jackson-jaxrs-providers/issues/121): Allow multiple implementations of ws.rs + +#### [Jackson-jr](../../jackson-jr) + +* [#71](../../jackson-jr/issues/71): Jackson-jr 2.10 accidentally uses `UncheckedIOException` only available on JDK 8 diff --git a/Jackson-Release-2.10.3.md b/Jackson-Release-2.10.3.md new file mode 100644 index 000000000..3bfe11fff --- /dev/null +++ b/Jackson-Release-2.10.3.md @@ -0,0 +1,31 @@ +Patch version of [2.10](Jackson-Release-2.10), released on 03-Mar-2020. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#592](../../jackson-core/issues/592): DataFormatMatcher#getMatchedFormatName throws NPE when no match exists +* [#603](../../jackson-core/issues/603): 'JsonParser.getCurrentLocation()` byte/char offset update incorrectly for big payloads + +#### [Databind](../../jackson-databind) + +* [#2482](../../jackson-databind/issues/2482): `JSONMappingException` `Location` column number is one line Behind the actual location +* [#2599](../../jackson-databind/issues/2599): NoClassDefFoundError at DeserializationContext. on Android 4.1.2 and Jackson 2.10.0 +* [#2602](../../jackson-databind/issues/2602): ByteBufferSerializer produces unexpected results with a duplicated ByteBuffer and a position > 0 +* [#2605](../../jackson-databind/issues/2605): Failure to deserialize polymorphic subtypes of base type `Enum` +* [#2610](../../jackson-databind/issues/2610): `EXTERNAL_PROPERTY` doesn't work with `@JsonIgnoreProperties` + +### Changes, [JAX-RS](../../jackson-jaxrs-providers) + +* [#120](../../jackson-jaxrs-providers/issues/120): Incorrect export of `com.fasterxml.jackson.jaxrs.json` for JSON provider + +### Changes, JVM Languages + +#### [Scala](../../jackson-module-scala) + +* [#218](../../../../jackson-module-scala/218): Serialization of case class with overridden attributes not working + + + diff --git a/Jackson-Release-2.10.4.md b/Jackson-Release-2.10.4.md new file mode 100644 index 000000000..8b5b1955c --- /dev/null +++ b/Jackson-Release-2.10.4.md @@ -0,0 +1,45 @@ +Patch version of [2.10](Jackson-Release-2.10), released May 3rd, 2020. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +[#605](../../jackson-core/issues/605): Handle case when system property access is restricted +[#609](../../jackson-core/issues/609): (partial fix) `FilteringGeneratorDelegate` does not handle `writeString(Reader, int)` + +#### [Databind](../../jackson-databind) + +[#2679](../../jackson-databind/issues/2679): `ObjectMapper.readValue("123", Void.TYPE)` throws "should never occur" + +### Changes, data formats + +#### [Properties](../../jackson-dataformats-text) + +* [#179](../../jackson-dataformats-text/issues/179): `JavaPropsMapper` doesn't close the .properties file +properly after reading +* [#184](../../jackson-dataformats-text/issues/184): `jackson-databind` should not be optional/provided dependency + +#### [Protobuf](../../jackson-dataformats-binary) + +* [#202](../../jackson-dataformats-binary/issues/202): Parsing a protobuf message doesn't properly skip unknown fields + +#### [XML](../../jackson-dataformat-xml) + +* Upgrade Woodstox dependency to 6.2.0 (minor improvement to MSV shading) + +#### [YAML](../../jackson-dataformats-text) + +* [#182](../../jackson-dataformats-text/issues/182): Negative numbers not quoted correctly wrt `ALWAYS_QUOTE_NUMBERS_AS_STRINGS` +* [#187](../../jackson-dataformats-text/issues/187): Update to SnakeYAML to 1.26 (from 1.24) to address CVE-2017-18640 + +### Changes, datatypes + +#### [Joda](../../jackson-datatype-joda) + +* [#113](../../jackson-datatype-joda/issues/113): `ObjectMapper.setDefaultLeniency()` is causing `NullPointerException` in `JacksonJodaDateFormat` + +#### [JSR-353](../../jackson-datatype-jsr353) + +* [#16](../../jackson-datatype-jsr353/issues/16): Null being deserialized as null literal instead of JsonValue.NULL diff --git a/Jackson-Release-2.10.5.md b/Jackson-Release-2.10.5.md new file mode 100644 index 000000000..2e40798d1 --- /dev/null +++ b/Jackson-Release-2.10.5.md @@ -0,0 +1,53 @@ +Patch version of [2.10](Jackson-Release-2.10), released on 21-Jul-2020. + +It is likely the last full patch set for 2.10.x series. + +Following fixes were included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +[#616](../../jackson-core/issues/616): Parsing JSON with `ALLOW_MISSING_VALUE` enabled results in endless stream of `VALUE_NULL` tokens + +#### [Databind](../../jackson-databind) + +* [#2787](../../jackson-databind/issues/2787): (partial fix): NPE after add mixin for enum + +### Changes, data formats + +#### [Avro](../jackson-dataformats-binary) + +* [#211](../jackson-dataformats-binary/issues/211): Fix schema evolution involving maps of non-scalar + +#### [CSV](../../jackson-dataformats-text) + +* [#204](../../jackson-dataformats-text/issues/204): `CsvParser.Feature.ALLOW_TRAILING_COMMA` doesn't work with header columns + +#### [Ion](../jackson-dataformats-binary) + +* [#204](../jackson-dataformats-binary/issues/204): Add `IonFactory.getIonSystem()` accessor + +#### [XML](../../jackson-dataformat-xml) + +* [#395](../../jackson-dataformat-xml/issues/395): Namespace repairing generates xmlns definitions for xml: prefix (which is implicit) +* [#413](../../jackson-dataformat-xml/issues/413): Null String field serialization through ToXmlGenerator causes NullPointerException + +#### [YAML](../../jackson-dataformats-text) + +* [#146](../../jackson-dataformats-text/issues/146): Jackson can't handle underscores in numbers + +### Changes, datatypes + +#### [Collections](../../jackson-datatypes-collections) + +* [#67](../../jackson-datatypes-collections/issues/67): (guava) Guava collection deserialization failure with `Nulls.AS_EMPTY` + +#### [JSR-353](../../jackson-datatype-jsr353) + +* [#18](../../jackson-datatype-jsr353/issues/18): Deserialization of `JsonObject` from `null` broken since 2.10.4 + +### Changes, jackson-jr + +* [#73](../../jackson-jr/issues/73): Allow for reading `null` fields when reading simple objects + diff --git a/Jackson-Release-2.10.md b/Jackson-Release-2.10.md new file mode 100644 index 000000000..ca6315f6d --- /dev/null +++ b/Jackson-Release-2.10.md @@ -0,0 +1,376 @@ +Version 2.10 was released on September 26, 2019. + +This wiki page gives a list of links to all changes, but there is also +a [blog entry](https://medium.com/@cowtowncoder/jackson-2-10-features-cd880674d8a2) that covers major +features in more detail. + +## Status + +Branch is closed for new patch versions after 2.10.5 release: new per-component micro-patches may still be released. + +## Patches + +Beyond initial 2.10.0 (described here), following patch releases have been made. + +* [2.10.1](Jackson-Release-2.10.1) (09-Nov-2019) +* [2.10.2](Jackson-Release-2.10.2) (05-Jan-2020) +* [2.10.3](Jackson-Release-2.10.3) (03-Mar-2020) +* [2.10.4](Jackson-Release-2.10.4) (03-May-2020) +* [2.10.5](Jackson-Release-2.10.5) (21-Jul-2020) + +### Micro-patches + +Following micro-patches have been or will be released: + +* `jackson-databind` `2.10.5.1` (02-Dec-2020) -- with `jackson-bom` version `2.10.5.20201202` + * [#2589](../../jackson-databind/issues/2589): `DOMDeserializer`: setExpandEntityReferences(false) may not prevent external entity expansion in all cases (CVE-2020-25649) + +## Documentation + +* [Jackson 2.10 Features](https://medium.com/@cowtowncoder/jackson-2-10-features-cd880674d8a2) + * [Jackson 2.10: Safe Default Typing](https://medium.com/@cowtowncoder/jackson-2-10-safe-default-typing-2d018f0ce2ba) + * [Jackson 2.10: JsonNode improvements](https://medium.com/@cowtowncoder/jackson-2-10-feature-jsonnode-improvements-18894c3ac3b5) + * [Jackson 2.10: jackson-jr improvements](https://medium.com/@cowtowncoder/jackson-2-10-jackson-jr-improvements-9eb5bb7b35f) + +## Changes, compatibility + +No changes to minimum JDK baselines for use since [2.9](Jackson-Release-2.9), but 2.10 includes JDK 9+ compliant `module-info.class` which should improve forward-compatibility. +Older versions of tools may have issues with this class. + +JDK 8 is required to build all components, however, as module info inclusion plug-in requires it (note: publishing to Maven Central also requires JDK 8), but runtime environment of JDK/JVM 7 is needed with exception of: + +* `jackson-annotations`, `jackson-core`, `jackson-jr` only require JDK/JVM 6 +* Kotlin, Scala and Java 8 modules require JDK/JVM 8 or higher + +Enum serialization has changed slightly by introduction of +`SerializationFeature.WRITE_ENUM_KEYS_USING_TO_STRING` which takes over `SerializationFeature.WRITE_ENUMS_USING_TO_STRING` for specific case of serializing `Enum` values of `java.util.Map` keys (see [databind#2129](../../jackson-databind/issues/2129) for details) + +Another functional change is with Java 8 `Duration` type, which formerly ignored setting `SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS` but now uses it as originally planned (see +[java8-modules#75](https://github.com/FasterXML/jackson-modules-java8/pull/75) for details). + +### Reported problems + +We have released following problem reports regarding backwards-compatibility, aside from planned changes + +#### Databind: `TypeReference` assignment compatibility for `readValue()` + +Due to changes: + +* [jackson-core#506](https://github.com/FasterXML/jackson-core/issues/506) +* [jackson-databind#2196](https://github.com/FasterXML/jackson-databind/pull/2196) + +Generic type assignment compatibility is now expected for `TypeReference`: so, for example, following code: + +```java + MyType value = mapper.readValue(src, new TypeReference() { }); +``` + +used to compile ok but obviously fail on run type when type cast fails. +With 2.10 code will not compile, and that is intentional. + +But there is a problem with generic type co-variance (?): although you can assign to subtype like + +```java + Map value = mapper.readValue(src, new TypeReference() { }); +``` + +you CAN NOT use subtype of a type variable, so this DOES NOT compile, unfortunately: + +```java + Map value = mapper.readValue(src, new TypeReference>() { }); +``` + +which used to be allowed and actually does work. This is unfortunate, and we are not aware of a way to allow above case. + +One thing to note is that this change IS binary-compatible (so anything compiled against 2.9 will still link fine against 2.10), but NOT source-compatible. This means that change should not cause any issues with transitive dependencies; but will cause compilation failure. + +#### CBOR: fix for `BigDecimal` encoding + +A fix to CBOR encoding of `BigDecimal` values in [dataformats-binary#139](https://github.com/FasterXML/jackson-dataformats-binary/issues/139) is, technically speaking, a compatibility-breaking change. +Since former encoding was incorrect, no option was added to allow producing (or accepting) old format. + +#### JDK 8: Module info + +``` +I just tried to run my tests. When my application server tried to start, I got errors: + + Suppressed: java.lang.RuntimeException: Error scanning entry module-info.class from jar file:/home/ruwen/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.10.0.pr1/jackson-core-2.10.0.pr1.jar + at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:913) + at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:831) + at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:163) + at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:548) + at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) + at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) + at java.lang.Thread.run(Thread.java:748) + Caused by: java.lang.IllegalArgumentException + at org.objectweb.asm.ClassReader.(Unknown Source) + at org.eclipse.jetty.annotations.AnnotationParser.scanClass(AnnotationParser.java:973) + at org.eclipse.jetty.annotations.AnnotationParser.parseJarEntry(AnnotationParser.java:956) + at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:909) + ... 6 more + +11:05 xxx@yyy:~$ java -version +openjdk version "1.8.0_212" +OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-2~deb9u1-b03) +OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode) + +The blame was on an older version of Jetty. Since this was used only in test, the version was quite old. But other people might get similar problems with byte-code manipulating libraries. +``` + +## New Modules, status changes + +### Datatype: Eclipse-collection + +First official version of the `jackson-datatype-eclipse-collections` (for [Eclipse Collections](https://www.eclipse.org/collections/) was introduced in 2.10 (preview version included since 2.9.5) + +## Major features of 2.10 + +Much of additional functionality mirrors changes that 3.0 developments are making, in form that will get some of the benefits, and should ease migration to 3.0. + +### Safe Default typing + +Due to numerous CVEs for one specific kind of Polymorphic Deserialization (see [this blog post](https://medium.com/@cowtowncoder/on-jackson-cves-dont-panic-here-is-what-you-need-to-know-54cd0d6e8062) for details), block-list approach has proven insufficient to prevent issues. +As a result, [#2195](../../jackson-databind/issues/2195) -- add abstraction `PolymorphicTypeValidator`, for limiting allowed polymorphic subtypes -- was added. + +### Builder-based construction of streaming factories and `ObjectMapper` + +Although full moved to immutable factories, mappers, by (only) using builder-style construction will only be included in 3.0, 2.10 does introduce builder-pattern itself (but does not force strict immutability beyond what 2.x API supports). The main benefits of this addition are: + +* Easier migration to 3.0 since change to builder-based construction can be made in 2.10 already +* More convenient configurability; ability to expose format-specific configuration beyond simple on/off features + +Example of builder style: + +```java +JsonFactory f = JsonFactory.builder() + // Change per-factory setting to prevent use of `String.intern()` on symbols + .disable(JsonFactory.Feature.INTERN_FIELD_NAMES, false) + // Disable json-specific setting to produce non-standard "unquoted" field names: + .disable(JsonWriteFeature.QUOTE_FIELD_NAMES, true) + .build(); +ObjectMapper mapper = JsonMapper.builder(f) + .configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false) + .build(); +``` + +### Separation of general / JSON-specific features + +Another change geared towards 3.0 compatibility is the creation of 4 new format feature types, to replace 2 existing features (`JsonParser.Feature`, `JsonGenerator.Feature`): + +* `StreamReadFeature`: format-agnostic (general) features for stream readers (parsers) +* `StreamWriteFeature`: format-agnostic (general) features for stream writers (generators) +* `JsonReadFeature`: JSON-specific stream reader (parser) features +* `JsonWriteFeature`: JSON-specific stream writer (generator) features + +For 2.10 these features will act as aliases to matching `JsonParser.Feature`s and `JsonGenerator.Feature`s: in 3.0 they will be the only stream-level features (`JsonParser.Feature`s, `JsonGenerator.Feature` being removed) + +Example of using new configuration features: + +```java +JsonFactory f = JsonFactory.builder() + .disable(JsonWriteFeature.QUOTE_FIELD_NAMES, true) + .build(); +``` + +### JDK 9 Module info + +All standard components will include `module-info.class`, generated using Moditect Maven plug-in. +Resulting jars will therefore have proper module information for Java 9 and beyond but still be usable on JDK 7 (or, in case of `jackson-core` and `jackson-annotations`, JDK 6) + +### "Most Improved" non-core modules + +Beyond core functionality most modules got some updates; here's a sampling of most notable + +#### Jackson-jr + +Root value sequence reading; reading typed `Map`s; ability to plug-in custom `ValueReader`s and `ValueWriter`s (similar to databind `JsonSerializer`, `JsonDeserializer` + +#### `jackson-dataformat-xml` + +A bunch of fixes, plus support of XML Schema `xsi:nil` concept. + +----- + +## Change list + +### Changes, core + +#### [Annotations](../../jackson-annotations) + +* [#138](../../jackson-annotations/issues/138): Add basic Java 9+ module info +* [#141](../../jackson-annotations/issues/141): Add `JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES` +* [#159](../../jackson-annotations/issues/159): Add `JsonFormat.Shape.BINARY` + +#### [Streaming](../../jackson-core) + +* [#433](../../jackson-core/issues/433): Add Builder pattern for creating configured Stream factories +* [#464](../../jackson-core/issues/464): Add "maximum unescaped char" configuration option for `JsonFactory` via builder +* [#467](../../jackson-core/issues/467): Create `JsonReadFeature` to move JSON-specific `JsonParser.Feature`s to +* [#479](../../jackson-core/issues/479): Improve thread-safety of buffer recycling +* [#480](../../jackson-core/issues/480): `SerializableString` value can not directly render to Writer +* [#481](../../jackson-core/issues/481): Create `JsonWriteFeature` to move JSON-specific `JsonGenerator.Feature`s to +* [#484](../../jackson-core/issues/484): Implement `UTF8JsonGenerator.writeRawValue(SerializableString)` (and + `writeRaw(..)`) more efficiently +* [#495](../../jackson-core/issues/495): Create `StreamReadFeature` to move non-json specific `JsonParser.Feature`s to +* [#496](../../jackson-core/issues/496): Create `StreamWriteFeature` to take over non-json-specific `JsonGenerator.Feature`s +* [#502](../../jackson-core/issues/502): Make `DefaultPrettyPrinter.createInstance()` to fail for sub-classes +* [#506](../../jackson-core/issues/506): Add missing type parameter for `TypeReference` in `ObjectCodec` +* [#508](../../jackson-core/issues/508): Add new exception type `InputCoercionException` to be used for failed coercions like overflow for `int` +* [#517](../../jackson-core/issues/517): Add `JsonGenerator.writeStartObject(Object, int)` (needed by CBOR, maybe Avro) +* [#527](../../jackson-core/issues/527): Add simple module-info for JDK9+, using Moditect +* [#533](../../jackson-core/issues/533): UTF-8 BOM not accounted for in JsonLocation.getByteOffset() +* [#539](../../jackson-core/issues/539): Reduce max size of recycled byte[]/char[] blocks by `TextBuffer`, `ByteArrayBuilder` +* [#547](../../jackson-core/issues/547): `CharsToNameCanonicalizer`: Internal error on `SymbolTable.rehash()` with high number of hash collisions +* [#548](../../jackson-core/issues/548): ByteQuadsCanonicalizer: ArrayIndexOutOfBoundsException in addName +* [#549](../../jackson-core/issues/549): Add configurability of "quote character" for JSON factory +* [#561](../../jackson-core/issues/561): Misleading exception for unquoted String parsing +* [#563](../../jackson-core/issues/563): Async parser does not keep track of Array context properly + +#### [Databind](../../jackson-databind) + +* [#18](../../jackson-databind/issues/18): Make `JsonNode` serializable +* [#1675](../../jackson-databind/issues/1675): Remove "impossible" `IOException` in `readTree()` and `readValue()` `ObjectMapper` methods which accept Strings +* [#1954](../../jackson-databind/issues/1954): Add Builder pattern for creating configured `ObjectMapper` instances + * also add `JsonMapper` as explicit type, through which builders are created and that exposes JSON-specific configuration +* [#1995](../../jackson-databind/issues/1995): Limit size of `DeserializerCache`, auto-flush on exceeding +* [#2059](../../jackson-databind/issues/2059): Remove `final` modifier for `TypeFactory` +* [#2077](../../jackson-databind/issues/2077): `JsonTypeInfo` with a subtype having `JsonFormat.Shape.ARRAY` and no fields generates `{}` not `[]` +* [#2115](../../jackson-databind/issues/2115): Support naive deserialization of `Serializable` values as "untyped", same as `java.lang.Object` +* [#2116](../../jackson-databind/issues/2116): Make NumberSerializers.Base public and its inherited classes not final +* [#2126](../../jackson-databind/issues/2126): `DeserializationContext.instantiationException()` throws `InvalidDefinitionException` +* [#2129](../../jackson-databind/issues/2129): Add `SerializationFeature.WRITE_ENUM_KEYS_USING_INDEX`, separate from value setting +* [#2149](../../jackson-databind/issues/2149): Add `MapperFeature.ACCEPT_CASE_INSENSITIVE_VALUES` +* [#2153](../../jackson-databind/issues/2153): Add `JsonMapper` to replace generic `ObjectMapper` usage +* [#2187](../../jackson-databind/issues/2187): Make `JsonNode.toString()` use shared `ObjectMapper` to produce valid json +* [#2195](../../jackson-databind/issues/2195): Add abstraction `PolymorphicTypeValidator`, for limiting subtypes allowed by default typing, `@JsonTypeInfo` +* [#2204](../../jackson-databind/issues/2204): Add `JsonNode.isEmpty()` as convenience alias +* [#2211](../../jackson-databind/issues/2211): Change of behavior (2.8 -> 2.9) with `ObjectMapper.readTree(input)` with no content +* [#2220](../../jackson-databind/issues/2220): Force serialization always for `convertValue()`; avoid short-cuts +* [#2223](../../jackson-databind/issues/2223): Add `missingNode()` method in `JsonNodeFactory` +* [#2230](../../jackson-databind/issues/2230): `WRITE_BIGDECIMAL_AS_PLAIN` is ignored if `@JsonFormat` is used +* [#2236](../../jackson-databind/issues/2236): Type id not provided on `Double.NaN`, `Infinity` with `@JsonTypeInfo` +* [#2237](../../jackson-databind/issues/2237): JsonNode improvements: "required" +* [#2241](../../jackson-databind/issues/2241): Add `PropertyNamingStrategy.LOWER_DOT_CASE` for dot-delimited names +* [#2273](../../jackson-databind/issues/2273): Add basic Java 9+ module info +* [#2309](../../jackson-databind/issues/2309): READ_ENUMS_USING_TO_STRING doesn't support null values +* [#2331](../../jackson-databind/issues/2331): `JsonMappingException` through nested getter with generic wildcard return type +* [#2336](../../jackson-databind/issues/2336): `MapDeserializer` can not merge `Map`s with polymorphic values +* [#2348](../../jackson-databind/issues/2348): Add sanity checks for `ObjectMapper.readXXX()` methods +* [#2390](../../jackson-databind/issues/2390): `Iterable` serialization breaks when adding `@JsonFilter` annotation +* [#2392](../../jackson-databind/issues/2392): `BeanDeserializerModifier.modifyDeserializer()` not applied to custom bean deserializers +* [#2393](../../jackson-databind/issues/2393): `TreeTraversingParser.getLongValue()` incorrectly checks `canConvertToInt()` +* [#2398](../../jackson-databind/issues/2398): Replace recursion in `TokenBuffer.copyCurrentStructure()` with iteration +* [#2415](../../jackson-databind/issues/2415): Builder-based POJO deserializer should pass builder instance, not type, to `handleUnknownVanilla()` +* [#2416](../../jackson-databind/issues/2416): Optimize `ValueInstantiator` construction for default `Collection`, `Map` types +* [#2422](../../jackson-databind/issues/2422): `scala.collection.immutable.ListMap` fails to serialize since 2.9.3 +* [#2424](../../jackson-databind/issues/2424): Add global config override setting for `@JsonFormat.lenient()` +* [#2430](../../jackson-databind/issues/2430): Change `ObjectMapper.valueToTree()` to convert `null` to `NullNode` +* [#2432](../../jackson-databind/issues/2432): Add support for module bundles +* [#2442](../../jackson-databind/issues/2442): `ArrayNode.addAll()` adds raw `null` values which cause NPE on `deepCopy()` +* [#2458](../../jackson-databind/issues/2458): `Nulls` property metadata ignored for creators +* [#2467](../../jackson-databind/issues/2467): Accept `JsonTypeInfo.As.WRAPPER_ARRAY` with no second argument to +deserialize as "null value" + +### Changes, data formats + +#### Avro + +* [#168](../../jackson-dataformats-binary/issues/168): `JsonMappingException` for union types with multiple Record types +* [#174](../../jackson-dataformats-binary/issues/173): Improve Union type serialization performance +* [#177](../../jackson-dataformats-binary/issues/177): Deserialization of "empty" Records as root values fails + +#### CBOR + +* [#139](../../jackson-dataformats-binary/issues/139): Incorrect `BigDecimal` fraction representation +* [#155](../../jackson-dataformats-binary/issues/155): Inconsistent support for FLUSH_PASSED_TO_STREAM + +#### CSV + +* [#108](../../jackson-dataformats-text/issues/108): Add new `CsvParser.Feature.ALLOW_COMMENTS` to replace use of deprecated + `JsonParser.Feature.ALLOW_YAML_COMMENTS` +* [#134](../../jackson-dataformats-text/issues/134): `CSVParserBootstrapper` creates `UTF8Reader` which is incorrectly not auto-closed + (reported by iuliu-b@github) + +#### Properties + +* [#100](../../jackson-dataformats-text/issues/100): Add an option to specify properties prefix +* [#139](../../jackson-dataformats-text/issues/139): Support for Map in `JavaPropsMapper` + +#### Protobuf + +* [#148](../../jackson-dataformats-binary/issues/148): Add `ProtobufMapper.generateSchemaFor(TypeReference)` overload + +#### XML + +* [#242](../../jackson-dataformat-xml/issues/242): Deserialization of class inheritance depends on attributes order +* [#336](../../jackson-dataformat-xml/issues/336): WRITE_BIGDECIMAL_AS_PLAIN Not Used When Writing Pretty +* [#350](../../jackson-dataformat-xml/issues/350): Wrap Xerces/Stax (JDK-bundled) exceptions during parser initialization +* [#351](../../jackson-dataformat-xml/issues/351): XmlBeanSerializer serializes AnyGetters field even with FilterExceptFilter +* [#354](../../jackson-dataformat-xml/issues/354): Support mapping `xsi:nil` marked elements as `null`s (`JsonToken.VALUE_NULL`) + +#### YAML + +* [#50](../../jackson-dataformats-text/issues/50): Empty string serialized without quotes if MINIMIZE_QUOTES is enabled +* [#101](../../jackson-dataformats-text/issues/101): Use latest SnakeYAML version 1.24 and get rid of deprecated methods +* [#116](../../jackson-dataformats-text/issues/116): Error handling "null" String when Feature.MINIMIZE_QUOTES is active +* [#129](../../jackson-dataformats-text/issues/129): Convert YAML string issue +* [#140](../../jackson-dataformats-text/issues/140): Implement `JsonGenerator.writeFieldId(...)` for `YAMLGenerator` + +### Changes, datatypes + +#### [Collections](../../jackson-datatypes-collections) + +* [#34](../../jackson-datatypes-collections/issues/34): (guava) Allow use of Guava versions up to 25 (from 22) +* [#37](../../jackson-datatypes-collections/issues/37): (eclipse-collections) Implement pair deserialization +* [#48](../../jackson-datatypes-collections/issues/48): (all) Add simple module-info for JDK9+, using Moditect +* [#50](../../jackson-datatypes-collections/issues/50): (guava) Add Serializer and Deserializer for `RangeSet` +* [#53](../../jackson-datatypes-collections/issues/53): (guava) GuavaImmutableCollectionDeserializer` cannot deserialize an empty `Optional` from null +* [#56](../../jackson-datatypes-collections/issues/56): (guava) Range property name (de)serialisation doesn't respect property naming strategy +* [#58](../../jackson-datatypes-collections/issues/58): (guava) Drop support for Guava v10 - v13 to simplify `RangeFactory` + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#125](../../jackson-datatype-hibernate/issues/125): Ignore missing entities when lazy loading is enabled, if newly added `Feature.WRITE_MISSING_ENTITIES_AS_NULL` is enabled + +### Changes, JVM languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#239](../../jackson-module-kotlin/issues/239): Auto-detect sealed classes (similar to `@JsonSubTypes`) + +#### [Scala](../../jackson-module-scala) + +Full support for Scala 2.13 (and still supports 2.10, 2.11, 2.12). +Fixes from [2.9.10](Jackson-release-2.9.10) merged, plus: + +* (via `databind#2422`) `scala.collection.immutable.ListMap` fails to serialize since 2.9.3 + +### Changes, other modules + +#### Java 8 support + +* [#51](../../jackson-modules-java8/issues/51): (datetime) `YearKeyDeserializer` doesn't work with non-padded year values +* [#69](../../jackson-modules-java8/issues/69): (datetime) `ZonedDateTime` for times before the epoch do not serialize correctly +* [#75](../../jackson-modules-java8/issues/75): (datetime) Use `SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS` for configuring `Duration` serialization +* [#82](../../jackson-modules-java8/issues/82): (datetime) Typo in YearMothKeyDeserializer class name +* [#105](../../jackson-modules-java8/issues105/): `LocalTime` should generate "time" schema instead of "date-time" +* [#121](../../jackson-modules-java8/issues/121): Array representation of `MonthDay` can not be deserialized +* [#126](../../jackson-modules-java8/issues/126): Change auto-registration in 2.10 to provide "new" (JavaTimeModule) instead of legacy module +* [#129](../../jackson-modules-java8/issues/129): Support `lenient` setting with `LocalDateDeserializer` + +#### Mr Bean + +* [#52](../../jackson-modules-base/issues/52): Interfaces may have non-abstract methods (since java8) + +### Changes, JAX-RS + +#### JAX-RS, base + +* [#111](../../jackson-jaxrs-providers/issues/111): AnnotationBundleKey equality fails for Parameter Annotations + +### Changes, jackson-jr + +* [#60](../../jackson-jr/issues/60): Add support for reading "root value" streams (linefeed separated/concatenated) +* [#63](../../jackson-jr/issues/63): Change default for `JSON.Feature.USE_FIELDS` to `true` (from false) in 2.10 +* [#65](../../jackson-jr/issues/65): Allow registration of custom readers, writers (to support 3rd party, custom types) +* [#66](../../jackson-jr/issues/66): Add `Json.mapOfFrom(Class)` to support binding POJO-valued maps diff --git a/Jackson-Release-2.11.1.md b/Jackson-Release-2.11.1.md new file mode 100644 index 000000000..12df037cb --- /dev/null +++ b/Jackson-Release-2.11.1.md @@ -0,0 +1,47 @@ +Patch version of [2.11](Jackson-Release-2.11), released 25th June 2020. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +#### [Databind](../../jackson-databind) + +* [#2486](../../jackson-databind/issues/2486): Builder Deserialization with JsonCreator Value vs Array +* [#2725](../../jackson-databind/issues/2725): JsonCreator on static method in Enum and Enum used as key in map fails randomly +* [#2755](../../jackson-databind/issues/2755): `StdSubtypeResolver` is not thread safe (possibly due to copy not being made with `ObjectMapper.copy()`) +* [#2757](../../jackson-databind/issues/2757): "Conflicting setter definitions for property" exception for `Map` subtype during deserialization +* [#2758](../../jackson-databind/issues/2758): Fail to deserialize local Records +* [#2759](../../jackson-databind/issues/2759): Rearranging of props when property-based generator is in use leads to incorrect output +* [#2767](../../jackson-databind/issues/2767): `DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS` don't support `Map` type field +* [#2770](../../jackson-databind/issues/2770): JsonParser from MismatchedInputException cannot getText() for floating-point value + +### Changes, data formats + +#### [XML](../../jackson-dataformat-xml) + +* [#86](../../jackson-dataformat-xml/issues/86): Can not deserialize unwrapped list when `@JacksonXmlProperty` localName matches `@JacksonXmlRootElement` localName +* [#294](../../jackson-dataformat-xml/issues/294): XML parser error with nested same element names +* [#301](../../jackson-dataformat-xml/issues/301): Problem deserializing POJO with unwrapped `List`, ignorable attribute value +* [#389](../../jackson-dataformat-xml/issues/389): Exception when serializing with type via mapper.writerFor(type).write(...) +* [#393](../../jackson-dataformat-xml/issues/393): `MismatchedInputException` for nested repeating element name in `List` +* [#399](../../jackson-dataformat-xml/issues/399): Can not deserialize unwrapped list when `@JacksonXmlProperty` localName matches the parent's localName +* [#404](../../jackson-dataformat-xml/issues/404): Make `@JacksonXmlElementWrapper` indicate XML property + +#### [YAML](../../jackson-dataformats-text/yaml) + +* [#51](../../jackson-dataformats-text/issues/51): `YAMLParser._locationFor()` does not use index available from `Mark` +* [#201](../../jackson-dataformats-text/issues/201): Improve `MINIMIZE_QUOTES` handling to avoid quoting for some uses of `#` and `:` + +### Changes, other modules + +#### Afterburner + +* [#97](../../jackson-modules-base/issues/97): (partial fix) Afterburner breaks serialization of ObjectMapper + +### Changes, other + +#### [jackson-jr](../../jackson-jr) + +* [#72](../../jackson-jr/issues/72): Duplicate classes from `com.fasterxml.jackson.jr.ob` and `com.fasterxml.jackson.jr.type` in 2.11.0 diff --git a/Jackson-Release-2.11.2.md b/Jackson-Release-2.11.2.md new file mode 100644 index 000000000..74e206938 --- /dev/null +++ b/Jackson-Release-2.11.2.md @@ -0,0 +1,40 @@ +Patch version of [2.11](Jackson-Release-2.11), released on 02-Aug-2020. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +No changes + +#### [Databind](../../jackson-databind) + +* [#2783](../../jackson-databind/issues/2783): Parser/Generator features not set when using `ObjectMapper.createParser()`, `createGenerator()` +* [#2785](../../jackson-databind/issues/2785): Polymorphic subtypes not registering on copied ObjectMapper (2.11.1) +* [#2789](../../jackson-databind/issues/2789): Failure to read `AnnotatedField` value in Jackson 2.11 +* [#2796](../../jackson-databind/issues/2796): `TypeFactory.constructType()` does not take `TypeBindings` correctly + +### Changes, data formats + +#### [Avro](../../jackson-dataformats-binary/) + +* [#216](../../jackson-dataformats-binary/issues/216): Avro null deserialization + +### Changes, datatypes + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#97](../../jackson-datatype-hibernate/issues/97): `@JsonUnwrapped` fails for HibernateProxy instances + +### Changes, JVM Languages + +#### [Scala](../../jackson-module-scala) + +* [#454](../../jackson-module-scala/issues/454): Jackson module scala potentially breaks serialization for swagger Model + +### Changes, other + +#### [jackson-jr](../../jackson-jr) + +* [#71](../../jackson-jr/issues/71): jackson-jr-stree-2.11.1.jar is missing util package classes diff --git a/Jackson-Release-2.11.3.md b/Jackson-Release-2.11.3.md new file mode 100644 index 000000000..3db647e8f --- /dev/null +++ b/Jackson-Release-2.11.3.md @@ -0,0 +1,44 @@ +Patch version of [2.11](Jackson-Release-2.11), released October 2nd, 2020. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +#### [Databind](../../jackson-databind) + +* [#2795](../../jackson-databind/issues/2795): Cannot detect creator arguments of mixins for JDK types +* [#2815](../../jackson-databind/issues/2815): Add `JsonFormat.Shape` awareness for UUID serialization (`UUIDSerializer`) +* [#2821](../../jackson-databind/issues/2821): Json serialization fails or a specific case that contains generics and static methods with generic parameters (2.11.1 -> 2.11.2 regression) +* [#2822](../../jackson-databind/issues/2822): Using JsonValue and JsonFormat on one field does not work as expected +* [#2840](../../jackson-databind/issues/2840): `ObjectMapper.activateDefaultTypingAsProperty()` is not using parameter `PolymorphicTypeValidator` +* [#2846](../../jackson-databind/issues/2846): Problem deserialization "raw generic" fields (like `Map`) in 2.11.2 + +### Changes, data formats + +#### [Avro](../../jackson-dataformats-binary/) + +* [#219](../../jackson-dataformats-binary/issues/219): Cache record names to avoid hitting class loader + +#### [CSV](../../jackson-dataformats-text/) + +* [#217](../../jackson-dataformats-text/issues/217): Should quote strings with line separator under STRICT_CHECK_FOR_QUOTING mode + +### Changes, datatypes + +#### [Collections](../../jackson-datatypes-collections) + +* [#71](../../jackson-datatypes-collections/issues/71): (eclipse-collections) can not deserialize concrete class instance inside nested immutable eclipse-collection + +### Changes, other modules + +#### Mr Bean + +* [#109](../../jackson-modules-base/issues/109): Fix detection of inherited default method in Java 8+ interface + +### Changes, JVM Languages + +#### [Scala](../../jackson-module-scala) + +* [#472](../../jackson-module-scala/issues/472): `Either` deserializers `Option[T]` with value None as `null`. diff --git a/Jackson-Release-2.11.4.md b/Jackson-Release-2.11.4.md new file mode 100644 index 000000000..ecd7f260b --- /dev/null +++ b/Jackson-Release-2.11.4.md @@ -0,0 +1,22 @@ +Patch version of [2.11](Jackson-Release-2.11), released December 12, 2020. + +It may be the last full minor version for 2.11.x since 2.12.0 has been released. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#647](../../jackson-core/issues/647): Fix NPE in `writeNumber(String)` method of `UTF8JsonGenerator`, `WriterBasedJsonGenerator` + +#### [Databind](../../jackson-databind) + +* [#2894](../../jackson-databind/issues/2894): Fix type resolution for static methods (regression in 2.11.3) +* [#2944](../../jackson-databind/issues/2944): `@JsonCreator` on constructor not compatible with `@JsonIdentityInfo`, `PropertyGenerator` + +### Changes, data formats + +#### CBOR + +* [#186](../../jackson-dataformats-binary/issues/186): Eager allocation of byte buffer can cause `java.lang.OutOfMemoryError` exception (CVE-2020-28491) diff --git a/Jackson-Release-2.11.md b/Jackson-Release-2.11.md new file mode 100644 index 000000000..afe9e952d --- /dev/null +++ b/Jackson-Release-2.11.md @@ -0,0 +1,206 @@ +Version 2.11 of Jackson was released on April 26, 2020. + +This wiki page gives a list of links to all changes (with brief descriptions); there is also [Jackson 2.11 features](https://medium.com/@cowtowncoder/jackson-2-11-features-40cdc1d2bdf3) blog post that covers some of the highlights. + +## Status + +Branch is still open for new minor versions as of March 2020, but it is likely that 2.11.4 will be the last full patch set released. + +## Patches + +Beyond initial 2.11.0 (described here), following patch releases have been made: + +* [2.11.1](Jackson-Release-2.11.1) (25-Jun-2020) +* [2.11.2](Jackson-Release-2.11.2) (02-Aug-2020) +* [2.11.3](Jackson-Release-2.11.3) (02-Oct-2020) +* [2.11.4](Jackson-Release-2.11.4) (12-Dec-2020) + +## Micro-patches + +None released yet. + +## Documentation + +* [Jackson 2.11 features](https://medium.com/@cowtowncoder/jackson-2-11-features-40cdc1d2bdf3) + +## Changes, JDK requirements + +No changes to minimum JDK baselines for use since [2.10](Jackson-Release-2.10) + +JDK 8 is required to build all components, however, as module info inclusion plug-in requires it (note: publishing to Maven Central also requires JDK 8), but runtime environment of JDK/JVM 7 is needed with exception of: + +* `jackson-annotations`, `jackson-core`, `jackson-jr` only require JDK/JVM 6 +* Kotlin, Scala and Java 8 modules require JDK/JVM 8 or higher + +## Changes, behavior + +* Default serialization ordering now considers `@JsonProperty(index = )` (see `databind#2555` below) +* `Avro` format backend now identifies as capable of embedding binary data: will change schema type indicated for `byte[]`, `java.util.UUID` (see `dataformats-binary/avro#179` below) +* Timezone offset in default `java.util.Date`, `java.util.Calendar` serialization will now include colon (like `+00:00`) by default (see `databind#2643` below) + +## New Modules, status changes + +* New datatype module -- `jackson-datatype-joda-money` for [Joda Money](https://www.joda.org/joda-money/) datatypes + * Added as part of multi-project [Jackson Misc Datatypes](https://github.com/FasterXML/jackson-datatypes-misc) (https://github.com/FasterXML/jackson-datatypes-misc) repo + * Contributed by Iurii Ignatko +* `jackson-jr` now has one more component, `jr-annotation-support` (see issue `jackson-jr#32` below) + +## Major features of 2.11 + +### Improve handling of `java.util.UUID`, binary types + +Need to properly serialize/deserialize `UUID`s in Avro was determined late, but will also affect Protobuf. +Beyond more compact binary representation, generating usable schema, it would be nice to also allow Shape +overrides in case textual representation is needed. + +### More support for safe Polymorphic deserialization + +New `MapperFeature`, `BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES` added (see [#2587](../../jackson-databind/issues/2587)): if enabled, will impose limits on allowed base types for: + +1. Legacy Default Typing enabling methods (`ObjectMapper.enableDefaultTyping()`), which, while deprecated may still be in use +2. Polymorphic deserialization using `@JsonTypeInfo` with class name as is, without explicitly configured `PolymorphicTypeValidator` + +This is basically a one-line addition that can force safe defaults, similar to ones that Jackson 3.0 will have by default: overridable as needed, but strict(er) by default. + +``` +ObjectMapper mapper = JsonMapper.builder() + .enable(MapperFeature.BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES) + .build(); +``` + +### Jackson-jr support for (some of) core Jackson annotations + +With new `jr-annotation-support` component (`JacksonAnnotationExtension`), it is now possible use some of core Jackson annotations for changing basic property inclusion/ignoral and naming rules. +See `jackson-jr#32` below for details; basic usage is by registering extension like so: + +``` +JSON j = JSON.builder().register(JacksonAnnotationExtension.std).build(); +MyValue v = j.beanFrom(source, MyValue.class); +``` + +## Significant other features of 2.11 + +Databind: + +* `@JsonAlias` works for Enums ([2352](../../jackson-databind/issues/2352)) +* `@JsonSerialize(keyUsing)` and `@JsonDeserialize(keyUsing)` work on (Map) key class ([#2503](../../jackson-databind/issues/2503)) + +----- + +## Full Change list + +### Changes, core + +#### [Annotations](../../jackson-annotations) + +No changes since 2.10. + +#### [Streaming](../../jackson-core) + +* [#504](../../jackson-core/issues/504): Add a String Array write method in the Streaming API +* [#565](../../jackson-core/issues/565): Synchronize variants of `JsonGenerator#writeNumberField` with `JsonGenerator#writeNumber` +* [#587](../../jackson-core/issues/587): Add JsonGenerator#writeNumber(char[], int, int) method +* [#606](../../jackson-core/issues/606): Do not clear aggregated contents of `TextBuffer` when `releaseBuffers()` called +* [#609](../../jackson-core/issues/609): `FilteringGeneratorDelegate` does not handle `writeString(Reader, int)` +* [#611](../../jackson-core/issues/611): Optionally allow leading decimal in float tokens + +#### [Databind](../../jackson-databind) + +* [#953](../../jackson-databind/issues/953): i-I case conversion problem in Turkish locale with case-insensitive deserialization +* [#962](../../jackson-databind/issues/962): `@JsonInject` fails on trying to find deserializer even if inject-only +* [#1983](../../jackson-databind/issues/1983): Polymorphic deserialization should handle case-insensitive Type Id property name if `MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES` is enabled +* [#2049](../../jackson-databind/issues/2049): `TreeTraversingParser` and `UTF8StreamJsonParser` create contexts differently +* [#2352](../../jackson-databind/issues/2352): Support use of `@JsonAlias` for enum values +* [#2365](../../jackson-databind/issues/2365): `declaringClass` of "enum-as-POJO" not removed for `ObjectMapper` with a naming strategy +* [#2480](../../jackson-databind/issues/2480): Fix `JavaType.isEnumType()` to support sub-classes +* [#2487](../../jackson-databind/issues/2487): `BeanDeserializerBuilder` Protected Factory Method for Extension +* [#2503](../../jackson-databind/issues/2503): Support `@JsonSerialize(keyUsing)` and `@JsonDeserialize(keyUsing)` on Key class +* [#2511](../../jackson-databind/issues/2511): Add `SerializationFeature.WRITE_SELF_REFERENCES_AS_NULL` +* [#2515](../../jackson-databind/issues/2515): `ObjectMapper.registerSubtypes(NamedType...)` doesn't allow to register the same POJO for two different type ids +* [#2522](../../jackson-databind/issues/2522): `DeserializationContext.handleMissingInstantiator()` throws `MismatchedInputException` for non-static inner classes +* [#2525](../../jackson-databind/issues/2525): Incorrect `JsonStreamContext` for `TokenBuffer` and `TreeTraversingParser` +* [#2527](../../jackson-databind/issues/2527): Add `AnnotationIntrospector.findRenameByField()` to support Kotlin's "is-getter" naming convention +* [#2555](../../jackson-databind/issues/2555): Use `@JsonProperty(index)` for sorting properties on serialization +* [#2565](../../jackson-databind/issues/2565): Java 8 `Optional` not working with `@JsonUnwrapped` on unwrappable type +* [#2587](../../jackson-databind/issues/2587): Add `MapperFeature.BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES` to allow blocking use of unsafe base type for polymorphic deserialization +* [#2589](../../jackson-databind/issues/2589): `DOMDeserializer`: setExpandEntityReferences(false) may not prevent external entity expansion in all cases [CVE-2020-25649] +* [#2592](../../jackson-databind/issues/2592): `ObjectMapper.setSerializationInclusion()` is ignored for `JsonAnyGetter` +* [#2608](../../jackson-databind/issues/2608): `ValueInstantiationException` when deserializing using a builder and `UNWRAP_SINGLE_VALUE_ARRAYS` +* [#2627](../../jackson-databind/issues/2627): JsonIgnoreProperties(ignoreUnknown = true) does not work on field and method level +* [#2632](../../jackson-databind/issues/2632): Failure to resolve generic type parameters on serialization +* [#2636](../../jackson-databind/issues/2636): ObjectReader readValue lacks Class argument +* [#2643](../../jackson-databind/issues/2643): Change default textual serialization of `java.util.Date`/`Calendar` to include colon in timezone offset +* [#2647](../../jackson-databind/issues/2647): Add `ObjectMapper.createParser()` and `createGenerator()` methods +* [#2657](../../jackson-databind/issues/2657): Allow serialization of `Properties` with non-String values +* [#2663](../../jackson-databind/issues/2663): Add new factory method for creating custom `EnumValues` to pass to `EnumDeserializer +* [#2668](../../jackson-databind/issues/2668): `IllegalArgumentException` thrown for mismatched subclass deserialization +* [#2693](../../jackson-databind/issues/2693): Add convenience methods for creating `List`, `Map` valued `ObjectReader`s (ObjectMapper.readerForListOf()) + +### Changes, data formats + +#### [Avro](../../jackson-dataformats-binary/) + +* [#179](../../jackson-dataformats-binary/issues/179): Add `AvroGenerator.canWriteBinaryNatively()` to support binary writes, fix `java.util.UUID` representation +* [#195](../../jackson-dataformats-binary/issues/195): Remove dependencies upon Jackson 1.X and Avro's JacksonUtils + +#### [CBOR](../../jackson-dataformats-binary/) + +* [#201](../../jackson-dataformats-binary/issues/201): `CBORGenerator.Feature.WRITE_MINIMAL_INTS` does not write most compact form for all integers + +#### [CSV](../../jackson-dataformats-text/) + +* [#7](../../jackson-dataformats-text/issues/7): Add `CsvParser.Feature.EMPTY_STRING_AS_NULL` to allow coercing empty Strings into `null` values +* [#115](../../jackson-dataformats-text/issues/115): JsonProperty index is not honored by CsvSchema builder +(actually fixed by `databind#2555`) +* [#174](../../jackson-dataformats-text/issues/174): `CsvParser.Feature.SKIP_EMPTY_LINES` results in a mapping error +* [#191](../../jackson-dataformats-text/issues/191): `ArrayIndexOutOfBoundsException` when skipping empty lines, comments +* [#195](../../jackson-dataformats-text/issues/195): Add schema creating csv schema with View + +#### [Ion](../../jackson-dataformats-binary/) + +* [#192](../../jackson-dataformats-binary/pull/192): Allow `IonObjectMapper` with class name annotation introspector to deserialize generic subtypes + +#### [YAML](../../jackson-dataformats-text/) + +* [#180](../../jackson-dataformats-text/issues/180): YAMLGenerator serializes string with special chars unquoted when using `MINIMIZE_QUOTES` mode + +### Changes, datatypes + +#### [Java 8 date/time](../../jackson-modules-java8/datetime) + +* [#58](../../jackson-modules-java8/issues/58): Should not parse `LocalDate`s from number (timestamp), or at least should have an option preventing +* [#128](../../jackson-modules-java8/issues/128): Timestamp keys from `ZonedDateTime` +* [#138](../../jackson-modules-java8/issues/138): Prevent deserialization of "" as `null` for `Duration`, `Instant`, `LocalTime`, `OffsetTime` and `YearMonth` in "strict" (non-lenient) mode +* [#148](../../jackson-modules-java8/issues/148): Allow strict `LocalDate` parsing +* Add explicit `ZoneId` serializer to force use of `ZoneId` as Type Id, and not inaccessible subtype (`ZoneRegion`): this to avoid JDK9+ Module Access problem + +#### [Joda)](../../jackson-datatype-joda) + +* [#104](../../jackson-datatype-joda/issues/104): Deserializing Interval discards timezone information + +#### [JSR-353 (JSON-P)](../../jackson-datatype-jsr353) + +* [#13](../../jackson-datatype-jsr353/issues/13): Support for `JsonPatch` and `JsonMergePatch` defined in JSON-P 1.1 + +### Changes, JVM Languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#281](../../jackson-module-kotlin/issues/281): Hide singleton deserialization support behind a setting on the module, `singletonSupport` and enum `SingletonSupport`. Defaults to pre-2.10 behavior. +* [#284](../../jackson-module-kotlin/issues/284): Use `AnnotationIntrospector.findRenameByField()` to support "is properties" +* [#321](../../jackson-module-kotlin/issues/321): `MissingKotlinParameterException` should extend `MismatchedInputException` +* Add Builder for KotlinModule + +#### [Scala](../../jackson-module-scala) + +* [#87](../../../../jackson-module-scala/87): Support for default parameter values + +### Changes, other + +#### [jackson-jr](../../jackson-jr) + +* [#32](../../jackson-jr/issues/32): Add support for subset of jackson annotations +* [#70](../../jackson-jr/issues/70): Add extension point (`ReaderWriterModifier`) to allow more customization of +POJO readers, writers + + diff --git a/Jackson-Release-2.12.1.md b/Jackson-Release-2.12.1.md new file mode 100644 index 000000000..95cb428a5 --- /dev/null +++ b/Jackson-Release-2.12.1.md @@ -0,0 +1,69 @@ +Patch version of [2.12](Jackson-Release-2.12), released on January 8th, 2021. + +Following fixes are be included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +#### [Databind](../../jackson-databind) + +* [#2962](../../jackson-databind/issues/2962): Auto-detection of constructor-based creator method skipped if there is an annotated factory-based creator method (regression from 2.11) +* [#2972](../../jackson-databind/issues/2972): `ObjectMapper.treeToValue()` no longer invokes `JsonDeserializer.getNullValue()` +* [#2973](../../jackson-databind/issues/2973): DeserializationProblemHandler is not invoked when trying to deserializing String +* [#2978](../../jackson-databind/issues/2978): Fix failing `double` JsonCreators in jackson 2.12.0 +* [#2979](../../jackson-databind/issues/2979): Conflicting in POJOPropertiesCollector when having namingStrategy +* [#2990](../../jackson-databind/issues/2990): Breaking API change in `BasicClassIntrospector` (2.12.0) +* [#3005](../../jackson-databind/issues/3005): `JsonNode.requiredAt()` does NOT fail on some path expressions +* [#3009](../../jackson-databind/issues/3009): Exception thrown when `Collections.synchronizedList()` is serialized with type info, deserialized + +### Changes, data formats + +#### [Ion](../../jackson-dataformats-binary) + +* [#282](../../jackson-dataformats-binary/issues/282): Allow disabling native type ids in IonMapper + +#### [XML](../../jackson-dataformat-xml/) + +* [#435](../../jackson-dataformat-xml/issues/435): After upgrade to 2.12.0, NPE when deserializing an empty element to `ArrayList` + +### Changes, datatypes + +#### [Java 8 date/time](../../jackson-modules-java8) + +* [#196](../../jackson-modules-java8/issues/196): `@JsonFormat` overriden features don't apply when there are no other +options while deserializing ZonedDateTime + +#### [Joda](../../jackson-datatype-joda) + +* [#120](../../jackson-datatype-joda/issues/120): Cache formatter with offset parsed (performance improvement) + +#### [JSR-353](../../jackson-datatypes-misc) + +* [#7](../../jackson-datatypes-misc/issues/7): Jackson JSR353 library is using wrong module name for javax json api + +### Changes, other modules + +#### Afterburner + +* [#120](../../jackson-modules-base/issues/120): Afterburner does not support the new CoercionConfig (and same with Blackbird) + +#### Blackbird + +* [#123](../../jackson-modules-base/issues/123): BlackBird not support fluent setter + +### Changes, JVM Languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#402](../../jackson-module-kotlin/issues/402): Remove implicitly-included `java.base` dep in `module-info.java` + +#### [Scala](../../jackson-module-scala) + +* No functionality changes but `ScalaObjectMapper` has been deprecated because it relies on `Manifest`s and these are not supported in Scala3. + +### Changes, other + +#### [jackson-jr](../../jackson-jr) + +* [#76](../../jackson-jr/issues/76): Annotation-based introspector does not include super-class fields diff --git a/Jackson-Release-2.12.2.md b/Jackson-Release-2.12.2.md new file mode 100644 index 000000000..3a60191d1 --- /dev/null +++ b/Jackson-Release-2.12.2.md @@ -0,0 +1,80 @@ +Patch version of [2.12](Jackson-Release-2.12) was released on March 3, 2021. + +Following fixes are included in this patch release. + +### Changes, core + +#### [Streaming](../../jackson-core) + +No changes since 2.12.1 + +#### [Databind](../../jackson-databind) + +* [#3008](../../jackson-databind/issues/3008): String property deserializes null as "null" for `JsonTypeInfo.As.EXTERNAL_PROPERTY` +* [#3022](../../jackson-databind/issues/3022): Property ignorals cause `BeanDeserializer `to forget how to read from arrays (not copying `_arrayDelegateDeserializer`) +* [#3025](../../jackson-databind/issues/3025): `UntypedObjectDeserializer` mixes multiple unwrapped collections +* [#3038](../../jackson-databind/issues/3038): Two cases of incorrect error reporting about `DeserializationFeature` +* [#3045](../../jackson-databind/issues/3045): Bug in polymorphic deserialization with `@JsonCreator`, `@JsonAnySetter`, +`JsonTypeInfo.As.EXTERNAL_PROPERTY` +* [#3055](../../jackson-databind/issues/3055): Polymorphic subtype deduction ignores `defaultImpl` attribute +* [#3056](../../jackson-databind/issues/3056): MismatchedInputException: Cannot deserialize instance of +`com.fasterxml.jackson.databind.node.ObjectNode` out of VALUE_NULL token +* [#3060](../../jackson-databind/issues/3060): Missing override for `hasAsKey()` in `AnnotationIntrospectorPair` +* [#3062](../../jackson-databind/issues/3062): Creator lookup fails with `InvalidDefinitionException` for conflict between single-double/single-Double arg constructo +* [#3068](../../jackson-databind/issues/3068): `MapDeserializer` forcing `JsonMappingException` wrapping even if WRAP_EXCEPTIONS set to false + +### Changes, data formats + +#### CBOR + +* [#236](../../jackson-dataformats-binary/issues/236): `ArrayIndexOutOfBoundsException` in `CBORParser` for invalid UTF-8 String +* [#240](../../jackson-dataformats-binary/issues/240): Handle invalid CBOR content like `[ 0x84 ]` (incomplete array) + +#### Ion + +* [#241](../../jackson-dataformats-binary/issues/241): Respect `WRITE_ENUMS_USING_TO_STRING` in `EnumAsIonSymbolSerializer` +* [#242](../../jackson-dataformats-binary/issues/242): Add support for generating IonSexps +* [#244](../../jackson-dataformats-binary/issues/244): Add support for deserializing IonTimestamps and IonBlobs +* [#247](../../jackson-dataformats-binary/issues/247): Enabling pretty-printing fails Ion serialization + +#### [XML](../../jackson-dataformat-xml) + +* [#445](../../jackson-dataformat-xml/issues/445): `XmlMapper`/`UntypedObjectDeserializer` mixes multiple unwrapped collections +* [#451](../../jackson-dataformat-xml/issues/451): Xml type resolver fails with NPE when property name is not specified in +polymorphic (de)serialization + +### Changes, datatypes + +#### [Java 8 date/time](../../jackson-modules-java8) + +* [#202](../../jackson-modules-java8/issues/202): Unable to deserialize `YearMonth` when running as java9 module, + added with `@JsonDeserialize` annotation + +#### [JSR-353/JSON-P](../../jackson-datatypes-misc) + +* [#6](../../jackson-datatypes-misc/issues/6): Add `jakarta` classifier version of `jackson-datatype-jsr353` to work with new Jakarta-based JSON-P + +### Changes, other modules + +#### Java 8 / parameter names + +* [#206](../../jackson-modules-java8/issues/206): `@JsonKey`is ignored with parameter-names module registered + +#### JAX-RS Providers + +* [#132](../../jackson-jaxrs-providers/issues/132): jaxrs jakarta versions have javax.ws references in OSGi manifest + +### Changes, JVM Languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#182](../../jackson-module-kotlin/issues/182): Nullable unsigned numbers do not serialize correctly +* [#409](../../jackson-module-kotlin/issues/409): `module-info.java` missing "exports" + +#### [Scala](../../jackson-module-scala) + +* [#330](../../jackson-module-scala/issues/330): try to fix issue where wrong constructor can be chosen +* [#438](../../jackson-module-scala/issues/438): fix issues with handling field names that have dashes +* [#495](../../jackson-module-scala/issues/495): Fix regression since v2.12.0 where Scala objects (as opposed to case objects) were not serializing correctly. +* [#497](../../jackson-module-scala/issues/497): allow DescriptorCache to be replaced with custom implementation +* [#505](../../jackson-module-scala/issues/505): Fix regression since v2.12.0 where `@JsonCreator` annotations on companion classes were not always been handled. Had to reintroduce the dependency on paranamer jar to fix this diff --git a/Jackson-Release-2.12.3.md b/Jackson-Release-2.12.3.md new file mode 100644 index 000000000..98c5beafc --- /dev/null +++ b/Jackson-Release-2.12.3.md @@ -0,0 +1,48 @@ +Patch version of [2.12](Jackson-Release-2.12), released 12-Apr-2021. + +Following fixes will be included in this patch release. + +### Changes, core + +#### [Streaming](../../jackson-core) + +No changes since 2.12.2 + +#### [Databind](../../jackson-databind) + +* [#3108](../../jackson-databind/issues/3108): `TypeFactory` cannot convert `Collection` sub-type without type parameters +to canonical form and back + +### Changes, data formats + +#### CBOR + +* [#259](../../jackson-dataformats-binary/issues/259): Failed to handle case of alleged String with length of Integer.MAX_VALUE +* [#261](../../jackson-dataformats-binary/issues/261): `CBORParser` need to validate zero-length byte[] for `BigInteger` +* [#269](../../jackson-dataformats-binary/issues/269): CBOR loses `Map` entries with specific `long` Map key values (32-bit boundary) + +#### Ion + +* [#270](../../jackson-dataformats-binary/issues/270): Ion Polymorphic deserialization in 2.12 breaks wrt use of Native Type Ids +when upgrading from 2.8 + +#### Smile + +* [#257](../../jackson-dataformats-binary/issues/257): Uncaught validation problem wrt Smile `BigDecimal` type +* [#258](../../jackson-dataformats-binary/issues/258): `ArrayIndexOutOfBoundsException` for malformed Smile header +* [#260](../../jackson-dataformats-binary/issues/260): Allocate `byte[]` lazily for longer Smile binary data payloads +* [#263](../../jackson-dataformats-binary/issues/263): Handle invalid chunked-binary-format length gracefully +* [#265](../../jackson-dataformats-binary/issues/265): Allocate `byte[]` lazily for longer Smile binary data payloads +* [#266](../../jackson-dataformats-binary/issues/266): `ArrayIndexOutOfBoundsException` in `SmileParser._decodeShortUnicodeValue()` +* [#268](../../jackson-dataformats-binary/issues/268): Handle sequence of Smile header markers without recursion + +##### XML + +* [#456](../../jackson-dataformat-xml/issues/456): Fix JsonAlias with unwrapped lists +* [#460](../../jackson-dataformat-xml/issues/460): Deserialization from blank (not empty) String fails for Collections + +### Changes, other modules + +#### Java 8 date/time + +* [#207](../../jackson-modules-java8/issues/207): Fail to serialize `TemporalAdjuster` type with 2.12 diff --git a/Jackson-Release-2.12.4.md b/Jackson-Release-2.12.4.md new file mode 100644 index 000000000..259f7774d --- /dev/null +++ b/Jackson-Release-2.12.4.md @@ -0,0 +1,47 @@ +Patch version of [2.12](Jackson-Release-2.12), released 06-Jul-2021. + +Following fixes will be included in this patch release. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#702](../../jackson-core/issues/702): `ArrayOutOfBoundException` at `WriterBasedJsonGenerator.writeString(Reader, int)` + +#### [Databind](../../jackson-databind) + +* [#3139](../../jackson-databind/issues/3139): Deserialization of "empty" subtype with `DEDUCTION` failed +* [#3146](../../jackson-databind/issues/3146): Merge findInjectableValues() results in AnnotationIntrospectorPair +* [#3171](../../jackson-databind/issues/3171): READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE doesn't work with empty strings + +### Changes, data formats + +#### [CBOR](../../jackson-dataformats-binary) + +* [287](../../jackson-dataformats-binary/issues/287): Uncaught exception in CBORParser._nextChunkedByte2() (by ossfuzzer) +* [288](../../jackson-dataformats-binary/issues/288): Uncaught exception in CBORParser._findDecodedFromSymbols() (by ossfuzzer) + +#### [XML](../../jackson-dataformat-xml) + +* [#469](../../jackson-dataformat-xml/issues/469): Empty tags cause incorrect deserialization of unwrapped lists +* [#473](../../jackson-dataformat-xml/issues/473): Parsing of null Integer fields changed behavior between version 2.11 and 2.12 +* [#482](../../jackson-dataformat-xml/issues/482): Use of non-Stax2-compatible Stax2 implementation fails when reading from byte[] + +#### [YAML](../../jackson-dataformats-text) + +* [#274](../../jackson-dataformats-text/issues/274): YAMLGenerator does not quote tilde (~) characters when MINIMIZE_QUOTES is enabled + +### Changes, Java 8 modules + +* [#214](../../jackson-modules-java8/issues/214): readerForUpdating(objectToUpdate).readValue(json) behaves unexpectedly +on Optional + +### Changes, other modules + +#### Afterburner + +* [#131](../../jackson-modules-base/issues/131): Failing to serialize `Thread` returned by `Thread.currentThread()` when Afterburner or Blackbird registered + +#### Mr Bean + +* [#132](../../jackson-modules-base/issues/132): (partial fix) Prevent materialization of `java.util.TimeZone` diff --git a/Jackson-Release-2.12.5.md b/Jackson-Release-2.12.5.md new file mode 100644 index 000000000..7ec82fbec --- /dev/null +++ b/Jackson-Release-2.12.5.md @@ -0,0 +1,22 @@ +Patch version of [2.12](Jackson-Release-2.12), released on 27-Aug-2021. +It may be the last full patch release for 2.12 minor version. + +Following fixes will be included in this patch release. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#712](../../jackson-core/issues/712): (partial) Optimize array allocation by JsonStringEncoder +* [#713](../../jackson-core/issues/713): Add back accidentally removed `JsonStringEncoder` related methods in `BufferRecyclers` (like `getJsonStringEncoder()`) + +#### [Databind](../../jackson-databind) + +* [#3220](../../jackson-databind/issues/3220): (regression) Factory method generic type resolution does not use Class-bound type parameter + +### Changes, other modules + +#### [Blackbird](../../jackson-modules-base) + +* [#141](../../jackson-modules-base/issues/141): Blackbird fails to deserialize varargs array + diff --git a/Jackson-Release-2.12.6.md b/Jackson-Release-2.12.6.md new file mode 100644 index 000000000..579ad77ae --- /dev/null +++ b/Jackson-Release-2.12.6.md @@ -0,0 +1,26 @@ +Patch version of [2.12](Jackson-Release-2.12), released on December 15, 2021. +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#713](../../jackson-core/issues/713): Incorrect parsing of single-quoted surrounded String values containing double quotes + +#### [Databind](../../jackson-databind) + +* [#3280](../../jackson-databind/issues/3280): Can not deserialize json to enum value with Object-/Array-valued input, + `@JsonCreator` +* [#3305](../../jackson-databind/issues/3305): ObjectMapper serializes `CharSequence` subtypes as POJO instead of + as String (JDK 15+) +* [#3328](../../jackson-databind/issues/3328): Possible DoS if using JDK serialization to serialize `JsonNode` + +### Changes, data formats + +#### [Ion](../../jackson-dataformats-binary) + +* [#302](../../jackson-dataformats-binary/issues/302): `IllegalArgumentException` in `IonParser.getEmbeddedObject()` + +#### [XML](../../jackson-dataformat-xml) + +* [#490](../../jackson-dataformat-xml/issues/490): Problem when using defaultUseWrapper(false) in combination with polymorphic types diff --git a/Jackson-Release-2.12.7.md b/Jackson-Release-2.12.7.md new file mode 100644 index 000000000..efcafa8c1 --- /dev/null +++ b/Jackson-Release-2.12.7.md @@ -0,0 +1,10 @@ +Patch version of [2.12](Jackson-Release-2.12), released on May 26, 2022. +It will be the last full patch release for 2.12 series. + +The main reason for releasing one more "full" patch release was to include the one CVE-related fix from micro-patch `2.12.6.1`. + +### Changes, core + +#### [Databind](../../jackson-databind) + +* [#2816](../../jackson-databind/issues/2816): Optimize UntypedObjectDeserializer wrt recursion (CVE-2020-36518) diff --git a/Jackson-Release-2.12.md b/Jackson-Release-2.12.md new file mode 100644 index 000000000..225a02a07 --- /dev/null +++ b/Jackson-Release-2.12.md @@ -0,0 +1,426 @@ +[Jackson Version](Jackson-Releases) 2.12 was released on November 28, 2020: two release candidates (`2.12.0-rc1`, `2.12.0-rc2`) were released prior to the final 2.12.0. + +This wiki page gives a list of links to all changes (with brief descriptions) included. + +Aside from detailed change notes below, there is a separate [2.12 Acknowledgements](Acknowledgements-2.12) page for special thanks. + +## Status + +Branch is nominally open but it is not likely that there will be full patch releases beyond (2.12.7). +Micro-patches are possible. + +## Patches + +* [2.12.1](Jackson-Release-2.12.1) (08-Jan-2021) +* [2.12.2](Jackson-Release-2.12.2) (03-Mar-2021) +* [2.12.3](Jackson-Release-2.12.3) (12-Apr-2021) +* [2.12.4](Jackson-Release-2.12.4) (06-Jul-2021) +* [2.12.5](Jackson-Release-2.12.5) (27-Aug-2021) +* [2.12.6](Jackson-Release-2.12.6) (15-Dec-2021) +* [2.12.7](Jackson-Release-2.12.7) (26-May-2022) + +### Micro-patches + +Following micro-patches have been released: + +* `jackson-databind` `2.12.6.1` (26-Mar-2022) -- with `jackson-bom` version `2.12.6.20220326` + * [#2816](../../jackson-databind/issues/2816): Optimize UntypedObjectDeserializer wrt recursion (CVE-2020-36518) +* `jackson-databind` `2.12.7.1` (12-Oct-2022) -- with `jackson-bom` version `2.12.7.20221012` + * [#3582](../../jackson-databind/issues/3582): Add check in `BeanDeserializer._deserializeFromArray()` to prevent use of deeply nested arrays [CVE-2022-42004] + * [#3590](../../jackson-databind/issues/3590): Add check in primitive value deserializers to avoid deep wrapper array nesting wrt `UNWRAP_SINGLE_VALUE_ARRAYS` [CVE-2022-42003] + +----- + +## Documentation + +* [Jackson 2.12 features](https://cowtowncoder.medium.com/jackson-2-12-features-eee9456fec75) (Overview) + * [Jackson 2.12: Deduction-based Polymorphism](https://cowtowncoder.medium.com/jackson-2-12-most-wanted-1-5-deduction-based-polymorphism-c7fb51db7818) + * [Jackson 2.12: @JsonIncludeProperties](https://cowtowncoder.medium.com/jackson-2-12-most-wanted-2-5-bc45ef53ede7) + * [Jackson 2.12: `ConstructorDetector`](https://cowtowncoder.medium.com/jackson-2-12-most-wanted-3-5-246624e2d3d0) + * [Jackson 2.12: `CoercionConfig` system](https://cowtowncoder.medium.com/jackson-2-12-most-wanted-4-5-cbc91c00bcd2) + * [Jackson 2.12: Support `java.lang.Record`](https://cowtowncoder.medium.com/jackson-2-12-most-wanted-5-5-a32c28c345b5) +* [Jackson 2.12: Improved XML handling](https://cowtowncoder.medium.com/jackson-2-12-improved-xml-b9487889a23f) + +## Changes, compatibility + +### Compatibility: JDK requirements + +JDK baseline for use since [2.11](Jackson-Release-2.11) is retained with following exceptions: + +1. `Ion` dataformat module (part of `jackson-dataformats-binary`) now requires Java 8 due to new optional `IonJavaTimeModule` +2. `Eclise-collections` datatype module (part of `jackson-datatypes-collections`) requires Java 8 (was the case before but not documented) +3. `Guava` datatype module (part of `jackson-datatypes-collections`) requires Java 8 due to Guava 21 dependency upgrades baseline + +JDK 8 is required to build all components, however, as module info inclusion plug-in requires it (note: publishing to Maven Central also requires JDK 8), but the minimum runtime version is JDK/JVM 7, with following exceptions: + +* `jackson-annotations`, `jackson-core`, `jackson-jr` only require JDK/JVM 6 +* JDK/JVM 8 higher needed for: + * Kotlin and Scala language modules + * Java 8 modules (datatypes, parameter-names, jsr310 date/time) + * Ion dataformat module + * Eclipse-collections datatype module + +### Compatibility: other + +#### Android 4.4 (API Level 19) + +Due to use of `java.util.Objects`, part of JDK 7, minimum Android version supported appears to be 4.4 / API Level 19: + + https://developer.android.com/reference/kotlin/java/util/Objects + +#### Kotlin (`jackson-module-kotlin`) + +Jackson Kotlin module is now compiled against (and is designed to work with) Kotlin 1.4. + +#### Scala support (`jackson-module-scala_VERSION`) + +Support for Scala 2.10 is dropped (so that Jackson 2.11 is the last version of with Scala 2.10 support): Jackson 2.12 will support following Scala versions: + +* 2.11 +* 2.12 +* 2.13 + +## Changes, behavior + +### Databind + +#### 1-field Record types + +Addition of explicit support for `java.lang.Record` changes handling slightly for one specific case: if you have a `Record` type with 1 property, like: + +```java +public record MyValueRecord(String value) {} +``` + +it would be assumed to use "Delegating" style of parameter passing, and would (only) accept JSON String to bind. With 2.12 all `Records` default to "Properties" style binding so a single-property JSON Object is expected instead. Note that it is possible to annotate constructor explicitly: + +```java +public record MyValueRecord(String value) { + @JsonCreator(mode = JsonCreator.Mode.DELEGATING) + public MyValueRecord(String value) { + this.value = value; + } +} +``` + +to produce pre-2.12 behavior, as necessary. +See [jackson-databind#2980](https://github.com/FasterXML/jackson-databind/issues/2980) for details. + +### XML module + +Default for `FromXmlParser.Feature.EMPTY_ELEMENT_AS_NULL` changed from `true` (2.9 - 2.11) to `false`, so that no automatic coercion done from empty elements like `` into `null` + +* see [jackson-dataformat-xml#411](https://github.com/FasterXML/jackson-dataformat-xml/issues/411) + +It also looks like handling of "empty values" (zero-length String) for scalar values like numbers changed, as per [jackson-dataformat-xml#473](https://github.com/FasterXML/jackson-dataformat-xml/issues/473), but this issue should be resolved in 2.12.4. + +### JSR-353 + +* Input `null` value will be deserialized as `JsonValue.NULL` + * see [datatypes-misc#2](https://github.com/FasterXML/jackson-datatypes-misc/issues/2) + +## New Modules, status changes + +* New Base module -- [jackson-datatype-blackbird](https://github.com/FasterXML/jackson-modules-base/tree/master/blackbird) + * (Future) Replacement for Afterburner module: solves same use case, speeding up of POJO databind + * Works better than Afterbuern with newer JVMs (Java 9 and later) + * Contributed by Steven Schlansker (@stevenschlansker) +* Alternate jars with `jakarta` classifier for modules that rely on JAX-xxx APIs, to support new "Jakarta" namespaced apis: + * JAX-RS modules (`jackson-jaxrs-XXX-provider`) and JAXB annotations module (`jackson-module-jaxb-annotations`) have both "regular" jar and variant with classifier of `jakarta` + * Existing ("old") jars rely on 2.x version of JAX-WS, JAX-RS APIs, in existing `javax.` namespace + * New "jakarta" variants (with classifier of `jakarta`) will refer to repackaged "Jakarta" variants of APIs + * Users will need to specify classifier, for now, if they want/need to use newer dependencies + +## Major features of 2.12 + +### `CoercionConfig` system + +[#2113](../../jackson-databind/issues/2113) adds `CoercionConfig` system which allows indicating which of 4 `CoercionAction`s to take for given input shape, target type: + +* `Fail`: not allowed, throw exception +* `AsNull`: allow, coerce to `null` (although may be further mapped via other mechanisms) +* `AsEmpty`: allow, coerce to "empty" value of type (empty `Collection`, POJO with no properties set) +* `TryConvert`: allow if there is logical conversion (for example String "123" can be parsed, converted to `int` value `123`) + +Input shapes are defined with `CoercionInputShape` enum which roughly corresponds to `JsonToken` values, but also has 3 logical types for "empty" String, Array and Object as special cases. + +Target type is specific both by concrete (specific type), `Class` and new `LogicalType` that has a smaller set of values. + +Rules can be targeted at 3 levels: + +1. For specific concrete type (`Class`), input shape +2. For logical type (like `LogicalType.Boolean`) -- covers `boolean`, `Boolean`, elements in `boolean[]`, `AtomicBoolean` -- and input shape +3. Default action for coercions from input shape, used if no per-type (concrete or logical) specified -- most commonly used for input shape of `EmptyString` + +This feature allows defining coercion rules like: + +* Let empty String value become POJO similar to being deserialized from `{ }` JSON Input (especially useful for XML) +* Let empty String value become `null` for specified type(s) +* Prevent coercion from JSON Numbers into Java `boolean`s (by default non-zero JSON Integers map to Boolean values as `true`) + +### `@JsonIncludeProperties` + +This is issue [databind#1296](https://github.com/FasterXML/jackson-databind/issues/1296): explained in bit more detail on [Jackson 2.12: @JsonIncludeProperties](https://cowtowncoder.medium.com/jackson-2-12-most-wanted-2-5-bc45ef53ede7) blog post + +### XML handling improvements + +* Support for "Arrays" with Tree Model, `JsonNode`, "untyped"/`List`/`Map` (nominal `java.lang.Object`) + * [dataformat-xml#205](https://github.com/FasterXML/jackson-dataformat-xml/issues/205): `XmlMapper`/`UntypedObjectDeserializer` swallows duplicated elements in + * [dataformat-xml#403](https://github.com/FasterXML/jackson-dataformat-xml/issues/403): Make `JsonNode` implicitly create `ArrayNode`s for repeated XML Elements (aka "Make JsonNode work with XML") +* Basic support for "Mixed Content" (element(s) AND text for given XML element) + * [dataformat-xml#405](https://github.com/FasterXML/jackson-dataformat-xml/issues/405): Mixed content not exposed through `FromXmlParser`, lost by `JsonNode` + * As with array support, usable via `JsonNode` and "untyped" (`Map`/`List`/`Object`) + * Does not retain full ordering so further work needed for 100% high fidelity mapping +* Fully support root values, including scalar types + * [dataformat-xml#121](https://github.com/FasterXML/jackson-dataformat-xml/issues/121): `XmlMapper` not deserializing root-level Enums + * [dataformat-xml#254](https://github.com/FasterXML/jackson-dataformat-xml/issues/254): No String-argument constructor/factory method to deserialize from String value when it is a Integer + * [dataformat-xml#412](https://github.com/FasterXML/jackson-dataformat-xml/issues/412): Coercion from element-with-attribute-and-text only works for `String`, not other scalar types +* Support deserialization of scalars even for elements that contain additional attributes + +### Java 14 Record type support + +Pretty much as expected, see [https://github.com/FasterXML/jackson-databind/issues/2709](https://github.com/FasterXML/jackson-databind/issues/2709) for details: +reading and writing of `java.lang.Record` should work when running on Java 14 or later, using expected accessors, +constructors, and annotation overrides (if any). + +### Polymorphic type by deduction (field existence) + +The oldest open issue, [databind#43](../../jackson-databind/issues/43) is now implemented. +It basically allows omitting of actual Type Id field or value, as long as the subtype can be deduced +(`@JsonTypeInfo(use=DEDUCTION)`) from existence of fields. That is, every subtype has a distinct set of fields they included, and so during deserialization type can be uniquely and reliably detected. + +See [Jackson 2.12: Deduction-based Polymorphism](https://cowtowncoder.medium.com/jackson-2-12-most-wanted-1-5-deduction-based-polymorphism-c7fb51db7818) for longer explanation. + +### Annotation-less Constructor Auto-Detection + +Issue [databind#1498](https://github.com/FasterXML/jackson-databind/issues/1498) addresses one remaining case where Creator (constructor) auto-detection was not possible: that of single-argument Constructors (due to ambiguity between Properties-based and Delegating choices). +2.12 allows configuration of `ContructorDetector` to resolve this aspect. + +See [Jackson 2.12: `ConstructorDetector`](https://cowtowncoder.medium.com/jackson-2-12-most-wanted-3-5-246624e2d3d0) for longer explanation. + +## Significant other features of 2.12 + +### Ion + +* [dataformats-binary#213](../../jackson-dataformats-binary/213): There is new optional `IonJavaTimeModule` that allows use of native Ion datatypes with Java 8 Date/Time types (JSR-310) + +----- + +## Planned features for 2.12 -- but postponed till 2.13+ + +### Planned features: Considered important + +* `JsonNodeFeature`/`-Config` [JSTEP-3](https://github.com/FasterXML/jackson-future-ideas/wiki/JSTEP-3): configuring reading/writing of `JsonNode` +* `@PreSerialize` / `@PostDeserialize` method annotations (https://github.com/FasterXML/jackson-databind/issues/2045) +* Other format module fixes: + * Protobuf: proto3, use of [Wire/schema](https://github.com/square/wire/tree/master/wire-library/wire-schema) for protoc parsing + * CSV, structured? + * Logical types: Avro, CBOR + +----- + +## Full Change list + +### Changes, core + +#### [Annotations](../../jackson-annotations) + +* [#171](../../jackson-annotations/pull/171): `JsonSubType.Type` should accept array of names +* [#173](../../jackson-annotations/pull/173): Jackson version alignment with Gradle 6 +* [#174](../../jackson-annotations/pull/174): Add `@JsonIncludeProperties` +* [#175](../../jackson-annotations/pull/175): Add `@JsonTypeInfo(use=DEDUCTION)` +* [#177](../../jackson-annotations/pull/177): Ability to use `@JsonAnyGetter` on fields +* [#179](../../jackson-annotations/pull/179): Add `@JsonKey` annotation +* [#180](../../jackson-annotations/pull/180): Allow repeated calls to `SimpleObjectIdResolver.bindItem()` for same mapping +* [#181](../../jackson-annotations/pull/181): Add `namespace` property for `@JsonProperty` (for XML module) + +#### [Streaming](../../jackson-core) + +* [#500](../../jackson-core/issues/500): Allow "optional-padding" for `Base64Variant` +* [#573](../../jackson-core/issues/573): More customizable TokenFilter inclusion (using `Tokenfilter.Inclusion`) +* [#618](../../jackson-core/issues/618): Publish Gradle Module Metadata +* [#619](../../jackson-core/issues/619): Add `StreamReadCapability` for further format-based/format-agnostic handling improvements +* [#627](../../jackson-core/issues/627): Add `JsonParser.isExpectedNumberIntToken()` convenience method +* [#630](../../jackson-core/issues/630): Add `StreamWriteCapability` for further format-based/format-agnostic +handling improvements +* [#631](../../jackson-core/issues/631): Add `JsonParser.getNumberValueExact()` to allow precision-retaining buffering +* [#639](../../jackson-core/issues/639): Limit initial allocated block size by `ByteArrayBuilder` to max block size + +#### [Databind](../../jackson-databind) + +* [#43](../../jackson-databind/issues/43): Add option to resolve type from multiple existing properties, `@JsonTypeInfo(use=DEDUCTION)` +* [#921](../../jackson-databind/issues/921): Deserialization Not Working Right with Generic Types and Builders +* [#1296](../../jackson-databind/issues/1296): Add `@JsonIncludeProperties(propertyNames)` (reverse of `@JsonIgnoreProperties`) +* [#1458](../../jackson-databind/issues/1458): `@JsonAnyGetter` should be allowed on a field +* [#1498](../../jackson-databind/issues/1498): Allow handling of single-arg constructor as property based by default +* [#1852](../../jackson-databind/issues/1852): Allow case insensitive deserialization of String value into `boolean`/`Boolean` (esp for Excel) +* [#1886](../../jackson-databind/issues/1886): Allow use of `@JsonFormat(with=JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES)` on Class +* [#1919](../../jackson-databind/issues/1919): Abstract class included as part of known type ids for error message +* [#2091](../../jackson-databind/issues/2091): `ReferenceType` does not expose valid containedType +* [#2113](../../jackson-databind/issues/2113): : Add `CoercionConfig[s]` mechanism for configuring allowed coercions +* [#2118](../../jackson-databind/issues/2118): `JsonProperty.Access.READ_ONLY` does not work with "getter-as-setter" `Collection`s +* [#2215](../../jackson-databind/issues/2215): Support `BigInteger` and `BigDecimal` creators in `StdValueInstantiator` +* [#2283](../../jackson-databind/issues/2283): `JsonProperty.Access.READ_ONLY` fails with collections when a property name is specified +* [#2675](../../jackson-databind/issues/2675): Support use of `Void` valued properties (`MapperFeature.ALLOW_VOID_VALUED_PROPERTIES`) +* [#2683](../../jackson-databind/issues/2683): Explicitly fail (de)serialization of `java.time.*` types in absence of registered custom (de)serializers +* [#2707](../../jackson-databind/issues/2707): Improve description included in by `DeserializationContext.handleUnexpectedToken()` +* [#2709](../../jackson-databind/issues/2709): Support for JDK 14 record types +* [#2715](../../jackson-databind/issues/2715): `PropertyNamingStrategy` class initialization depends on its subclass, this can lead to class loading deadlock +* [#2719](../../jackson-databind/issues/2719): `FAIL_ON_IGNORED_PROPERTIES` does not throw on `READONLY` properties with an explicit name +* [#2726](../../jackson-databind/issues/2726): Jackson version alignment with Gradle 6 +* [#2732](../../jackson-databind/issues/2732): Allow `JsonNode` auto-convert into `ArrayNode` if duplicates found (for XML) +* [#2733](../../jackson-databind/issues/2733): Allow values of "untyped" auto-convert into `List` if duplicates found (for XML) +* [#2775](../../jackson-databind/issues/2775): Disabling `FAIL_ON_INVALID_SUBTYPE` breaks polymorphic deserialization of Enums +* [#2804](../../jackson-databind/issues/2804): Throw `InvalidFormatException` instead of `MismatchedInputException` for ACCEPT_FLOAT_AS_INT coercion failures +* [#2871](../../jackson-databind/issues/2871): Add `@JsonKey` annotation (similar to `@JsonValue`) for customizable +serialization of Map keys +* [#2873](../../jackson-databind/issues/2873): `MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS` should work for enum as keys +* [#2879](../../jackson-databind/issues/2879): Add support for disabling special handling of "Creator properties" wrt alphabetic property ordering +* [#2885](../../jackson-databind/issues/2885): Add `JsonNode.canConvertToExactIntegral()` to indicate whether floating-point/BigDecimal values could be converted to integers losslessly +* [#2895](../../jackson-databind/issues/2895): Improve static factory method generic type resolution logic +* [#2909](../../jackson-databind/issues/2909): `@JsonValue` not considered when evaluating inclusion +* [#2910](../../jackson-databind/issues/2910): Make some java platform modules optional +* [#2925](../../jackson-databind/issues/2925): Add support for serializing `java.sql.Blob` +* [#2928](../../jackson-databind/issues/2928): `AnnotatedCreatorCollector` should avoid processing synthetic static (factory) methods +* [#2932](../../jackson-databind/issues/2932): Problem with implicit creator name detection for constructor detection + +### Changes, data formats + +#### [Avro](../../jackson-dataformats-binary/avro) + +#### [CBOR](../../jackson-dataformats-binary/cbor) + +* [#222](../../jackson-dataformats-binary/issues/222): Add `CBORGenerator.Feature.LENIENT_UTF_ENCODING` for lenient handling of Unicode surrogate pairs on writing +* [#228](../../jackson-dataformats-binary/issues/228): Add support for decoding unassigned "simple values" (type 7) + +#### [CSV](../../jackson-dataformats-text/csv) + +* [#199](../../jackson-dataformats-text/issues/199): Empty Lists can only be String-typed in CSV +* [#222](../../jackson-dataformats-text/issues/222): `JsonParser.Feature.EMPTY_STRING_AS_NULL` does not work when text is parsed as `String[]` + +#### [Ion](../../jackson-dataformats-binary) + +* [#212](../../jackson-dataformats-binary/212): Optimize `IonParser.getNumberType()` using `IonReader.getIntegerSize()` +* [#213](../../jackson-dataformats-binary/213): Add support to (de)serialize Ion timestamps to/from `java.time` classes + +#### [XML](../../jackson-dataformat-xml) + +* [#97](../../jackson-dataformat-xml/issues/97): Weird Exception during read with Type info +* [#121](../../jackson-dataformat-xml/issues/121): `XmlMapper` not deserializing root-level Enums +* [#124](../../jackson-dataformat-xml/issues/124): Deserialization of an empty list (with empty XML tag) results in `null` +* [#205](../../jackson-dataformat-xml/issues/205): `XmlMapper`/`UntypedObjectDeserializer` swallows duplicated elements in XML documents +* [#226](../../jackson-dataformat-xml/issues/226): XML to JSON - IOException when parsing XML with XMLMapper +* [#252](../../jackson-dataformat-xml/issues/252): Empty (or self-closing) Element representing `List` is incorrectly deserialized as null, not Empty List +* [#254](../../jackson-dataformat-xml/issues/254): No String-argument constructor/factory method to deserialize from +String value when it is a Integer +* [#257](../../jackson-dataformat-xml/issues/257): Deserialization fails of lists containing elements with `xml:space` attribute +* [#262](../../jackson-dataformat-xml/issues/262): Make `ToXmlGenerator` non-final +* [#273](../../jackson-dataformat-xml/issues/273): Input mismatch with case-insensitive properties +* [#307](../../jackson-dataformat-xml/issues/307): Missing collection item when they are not wrapped during unmarshal +with multiple namespaces +* [#314](../../jackson-dataformat-xml/issues/314): Jackson gets confused by parent list element +* [#318](../../jackson-dataformat-xml/issues/318): `XMLMapper` fails to deserialize null (POJO reference) from blank tag +* [#319](../../jackson-dataformat-xml/issues/319): Empty root tag into `List` deserialization bug +* [#360](../../jackson-dataformat-xml/issues/360): Add a feature to support writing `xsi:nil` attribute for `null` values +* [#374](../../jackson-dataformat-xml/issues/374): Deserialization fails with `XmlMapper` and `DeserializationFeature.UNWRAP_ROOT_VALUE` +* [#377](../../jackson-dataformat-xml/issues/377): `ToXmlGenerator` ignores `Base64Variant` while serializing `byte[]` +* [#380](../../jackson-dataformat-xml/issues/380): Unable to deserialize root-level `Instant` value from XML +* [#390](../../jackson-dataformat-xml/issues/390): Unexpected attribute at string fields causes extra objects to be created in parent list +* [#397](../../jackson-dataformat-xml/issues/397): `XmlReadContext` does not keep track of array index +* [#403](../../jackson-dataformat-xml/issues/403): Make `JsonNode` implicitly create `ArrayNode`s for repeated XML Elements +* [#405](../../jackson-dataformat-xml/issues/405): Mixed content not exposed through `FromXmlParser`, lost by `JsonNode` +* [#411](../../jackson-dataformat-xml/issues/411): Change default setting of `FromXmlParser.Feature.EMPTY_ELEMENT_AS_NULL` from `true` to `false` +* [#412](../../jackson-dataformat-xml/issues/412): Coercion from element-with-attribute-and-text only works for `String` not other scalar types +* [#422](../../jackson-dataformat-xml/issues/422): Elements containing parsed incorrectly when at the end of another element +* [#434](../../jackson-dataformat-xml/issues/434): Add missing `ElementType.ANNOTATION_TYPE` for Jackson xml annotations to allow bundling +* Add Gradle Module Metadata (https://blog.gradle.org/alignment-with-gradle-module-metadata) +* Upgrade Woodstox dependency to 6.2.3 (<- 6.2.1) + +#### [YAML](../../jackson-dataformats-text/yaml) + +* [#71](../../jackson-dataformats-text/issues/71): Hex number as an entry of an Object causing problem(s) with binding to POJO +* [#130](../../jackson-dataformats-text/issues/130): Empty String deserialized as `null` instead of empty string +* [#175](../../jackson-dataformats-text/issues/175): Add `YAMLGenerator.Feature.INDENT_ARRAYS_WITH_INDICATOR` to indent by 2 spaces +* [#226](../../jackson-dataformats-text/issues/226): Quote 'y'/'Y'/'n'/'N' as names too (to avoid problems with Boolean keys) +* [#229](../../jackson-dataformats-text/issues/229): Allow configuring the way "must quote" is determined for property names, String values +* [#231](../../jackson-dataformats-text/issues/231): Typed object with anchor throws Already had POJO for id (note: actual fix in `jackson-annotations`) +* [#232](../../jackson-dataformats-text/issues/232): Typed object throws "Missing type id" when annotated with '@JsonIdentityInfo' +* [#233](../../jackson-dataformats-text/issues/233): Support decoding Binary, Octal and Hex numbers as integers + +### Changes, datatypes + +#### [Collections](../../jackson-datatypes-collections) + +* [#25](../../jackson-datatypes-collections/issues/25): (guava) SetMultimap should be deserialized to a LinkedHashMultimap by default +* [#79](../../jackson-datatypes-collections/issues/79): (guava) Guava's RangeHelper causing NPE in PropertyNamingStrategy +* (guava) Update "preferred" Guava version to 21.0 +* (guava) Require Java 8 due to Guava 21 baseline (JRE variant) + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#136](../../jackson-datatype-hibernate/issues/136): Add feature `WRAP_IDENTIFIER_IN_OBJECT` to allow disabling of wrapping + of "id" attribute + +#### [Java 8 date/time](../../jackson-modules-java8/datetime) + +* [#94](../../jackson-modules-java8/issues/94): Deserialization of timestamps with UTC timezone to LocalDateTime doesn't yield correct time +* [#165](../../jackson-modules-java8/issues/165): Problem in serializing negative Duration values +* [#166](../../jackson-modules-java8/issues/166): Cannot deserialize `OffsetDateTime.MIN` or `OffsetDateTime.MAX` with `ADJUST_DATES_TO_CONTEXT_TIME_ZONE` enabled +* [#175](../../jackson-modules-java8/issues/175): ObjectMapper#setTimeZone ignored by jsr-310/datetime types during serialization when using `@JsonFormat` annotation +* [#184](../../jackson-modules-java8/issues/184): `DurationDeserializer` should use `@JsonFormat.pattern` (and config override) to support configurable `ChronoUnit` +* [#189](../../jackson-modules-java8/issues/189): Support use of "pattern" (`ChronoUnit`) for `DurationSerializer` too + +#### [Joda](../../jackson-datatype-joda) + +* [#116](../../jackson-datatype-joda/issues/116): Improve schema support for DateTimeZone type +* [#117](../../jackson-datatype-joda/issues/117): Timestamp deserialization not working for CSV, Properties or XML + +#### [JSR-353 (JSON-P)](../../jackson-datatype-jsr353) + +### Changes, Other modules + +#### Afterburner + +* [#117](../../jackson-modules-base/issues/117): Use of `ToStringSerializer` via `@JsonSerialize` on `int`/`long` property does not work +* [#118](../../jackson-modules-base/issues/118): Using `@JsonFormat(shape = JsonFormat.Shape.STRING)` on `int`, `long` properties not working + +#### JAXB Annotations + +* [#115](../../jackson-modules-base/issues/115): Remove ` java.beans.Introspector` dependency from JAXB module (to + get rid of `java.desktop` module dep) +* [#116](../../jackson-modules-base/issues/116): Jakarta Namespace Support + * See notes earlier on "Jakarta" variants of module jars: users will need to opt-in by using Maven classifier `jakarta` for version with "new" JAX-WS/JAXB dependencies + +#### Mr Bean + +* [#100](../../jackson-modules-base/issues/100): Prevent "double-prefixing" Mr Bean generated classes + +### Changes, JVM Languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#322](../../jackson-module-kotlin/issues/322): Added extension methods to SimpleModule addSerializer and addDeserializer to support KClass arguments that register the serializer/deserializer for both the java type and java class. +* [#356](../../jackson-module-kotlin/issues/356): Kotlin 1.4 support +* [#385](../../jackson-module-kotlin/issues/385): Add Moditect, source module info, to allow Kotlin module usage with Java Module system +- Add Gradle Module Metadata (https://blog.gradle.org/alignment-with-gradle-module-metadata) + + +#### [Scala](../../jackson-module-scala) + +* [#370](../../jackson-module-scala/issues/370): Support jackson feature @JsonMerge +* [#449](../../jackson-module-scala/issues/449): Remove `jackson-module-paranamer` dependency. Scala 2.11 variant uses Paranamer directly still but Scala 2.12 and 2.13 releases no longer use Paranamer. +* [#455](../../jackson-module-scala/issues/455): get `ScalaAnnotationIntrospector` to ignore non-Scala classes +* [#462](../../jackson-module-scala/issues/462): Unable to deserialize Seq or Map with AS_EMPTY null handling +* [#466](../../jackson-module-scala/issues/466): Add support for `WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED` +* [#467](../../jackson-module-scala/issues/467): Serializer for Scala Iterable/Iterator converts to Java Collection - avoid this conversion +* [#480](../../jackson-module-scala/issues/480): Drop Scala 2.10 support + +### Changes, other + +#### [JAX-RS](../../jackson-jaxrs-providers) + +* [#127](../../jackson-jaxrs-provider/issues/127): Allow multiple implementations of JAX-RS for all providers +* [#128](../../jackson-jaxrs-provider/issues/128): Module-Info Enhancements - JAX-RS updates for Jakarta Release version + +#### [jackson-jr](../../jackson-jr) + diff --git a/Jackson-Release-2.13.1.md b/Jackson-Release-2.13.1.md new file mode 100644 index 000000000..94956539d --- /dev/null +++ b/Jackson-Release-2.13.1.md @@ -0,0 +1,52 @@ +Patch version of [2.13](Jackson-Release-2.13), released 19-Dec-2021. + +Following fixes are included in this patch release. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#721](../../issues/jackson-core/issues/721): Incorrect parsing of single-quoted surrounded String values containing double quotes +* [#733](../../issues/jackson-core/issues/733): Add `StreamReadCapability.EXACT_FLOATS` to indicate whether parser reports exact floating-point values or not + +#### [Databind](../../jackson-databind) + +* [#3006](../../jackson-databind/issues/3006): Argument type mismatch for `enum` with `@JsonCreator` that takes String, + gets JSON Number +* [#3299](../../jackson-databind/issues/3299): Do not automatically trim trailing whitespace from `java.util.regex.Pattern` values +* [#3305](../../jackson-databind/issues/3305): ObjectMapper serializes `CharSequence` subtypes as POJO instead of as String (JDK 15+) +* [#3308](../../jackson-databind/issues/3308): `ObjectMapper.valueToTree()` fails when `DeserializationFeature.FAIL_ON_TRAILING_TOKENS` is enabled +* [#3328](../../jackson-databind/issues/3328): Possible DoS if using JDK serialization to serialize `JsonNode` + +### Changes, data formats + +#### [CSV](../../jackson-dataformats-text) + +* [#288](../../jackson-dataformats-text): Caching conflict when creating CSV schemas with different views for the same POJO + +#### [Ion](../../jackson-dataformats-binary) + +* [#302](../../jackson-dataformats-binary/issues/302): `IllegalArgumentException` in `IonParser.getEmbeddedObject()` + +#### XML + +* [#493](../../jackson-dataformat-xml/issues/493): SequenceWriter returns NPE when trying XML serialization + +### Changes, JVM Languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#449](../../jackson-module-kotlin/issues/449): Refactor AnnotatedMethod.hasRequiredMarker() +* [#456](../../jackson-module-kotlin/issues/456): Refactor KNAI.findImplicitPropertyName() +* [#521](../../jackson-module-kotlin/issues/521): Fixed lookup of instantiators + +#### [Scala](../../jackson-module-scala) + +* [#561](../../jackson-module-scala/561): Move ScalaAnnotationIntrospector state to ScalaAnnotationIntrospectorModule + +### Changes, Other modules + +#### No-Ctor Deser + +* [#155](../../jackson-modules-base/issues/155): Fix SPI metadata for `jackson-module-no-ctor-deser` +* [#159](../../jackson-modules-base/issues/159): NoCtorDeserModule missing - Do you mean NoCtorModule diff --git a/Jackson-Release-2.13.2.md b/Jackson-Release-2.13.2.md new file mode 100644 index 000000000..7dafb5126 --- /dev/null +++ b/Jackson-Release-2.13.2.md @@ -0,0 +1,58 @@ +Patch version of [2.13](Jackson-Release-2.13), being released on March 6, 2022. +(2.13.1 was released on 19-Dec-2021). + +Following fixes are included in this patch release. + +### Changes, core + +#### [BOM/Base](../../jackson-bom) + +* [#46](../../jackson-bom/issues/46): `module-info.java` is in `META-INF/versions/11` instead of `META-INF/versions/9` + +#### [Streaming](../../jackson-core) + +* [#732](../../jackson-core/issues/732): Update Maven wrapper +* [#739](../../jackson-core/issues/739): `JsonLocation` in 2.13 only uses identity comparison for "content reference" + +#### [Databind](../../jackson-databind) + +* [#3293](../../jackson-databin/issues/3293): Use Method.getParameterCount() where possible +* [#3344](../../jackson-databin/issues/3344): `Set.of()` (Java 9) cannot be deserialized with polymorphic handling +* [#3368](../../jackson-databin/issues/3368): `SnakeCaseStrategy` causes unexpected `MismatchedInputException` during deserialization +* [#3369](../../jackson-databin/issues/3369): Deserialization ignores other Object fields when Object or Array value used for enum +* [#3380](../../jackson-databin/issues/3380): `module-info.java` is in `META-INF/versions/11` instead of `META-INF/versions/9` + +### Changes, [JAX-RS providers](../../jackson-jakarta-providers) + +* [#161](../../jackson-jakarta-providers/issues/161): Module name in `jakarta-xmlbind/src/moditect/module-info.java` is invalid + +### Changes, data formats + +#### CSV + +* [#303](../../jackson-dataformats-text/issues/308): `CsvMapper.typedSchemaForWithView()` with `DEFAULT_VIEW_INCLUSION` + +#### YAML + +* [#303](../../jackson-dataformats-text/issues/303): Update to SnakeYAML 1.30 +* [#306](../../jackson-dataformats-text/issues/306): Error when generating/serializing keys with multilines and colon + +### Changes, JVM Languages + +#### [Scala](../../jackson-module-scala) + +* [#566](../../jackson-module-scala/issues/566): when paranamer fails, fail over to using java reflection + +### Changes, Other modules + +#### Blackbird + +* [#138](../../jackson-modules-base/issues/138): Blackbird doesn't work on Java 15+ + +#### Jakarta XMLBind Annotations + +* [#152](../../jackson-modules-base/issues/152): jakarta.activation version conflict in 2.13 + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#146](../../jackson-module-jsonSchema/issues/146): `JsonSchema.equals()` implementation wrong diff --git a/Jackson-Release-2.13.3.md b/Jackson-Release-2.13.3.md new file mode 100644 index 000000000..f776ddd3f --- /dev/null +++ b/Jackson-Release-2.13.3.md @@ -0,0 +1,31 @@ +Patch version of [2.13](Jackson-Release-2.13), released on May 14, 2022. + +Following fixes are included in this patch release. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#744](../../jackson-core/issues/744): Limit size of exception message in `BigDecimalParser` + +None yet + +#### [Databind](../../jackson-databind) + +* [#2816](../../jackson-databind/issues/2816): Optimize UntypedObjectDeserializer wrt recursion [CVE-2020-36518] +* [#3412](../../jackson-databind/issues/3412): Version 2.13.2 uses `Method.getParameterCount()` which is not supported on Android before API 26 +* [#3419](../../jackson-databind/issues/3419): Improve performance of `UnresolvedForwardReference` for forward reference resolution +* [#3446](../../jackson-databind/issues/3446): `java.lang.StringBuffer` cannot be deserialized +* [#3450](../../jackson-databind/pull/3450): DeserializationProblemHandler is not working with wrapper type when returning null + +### Changes, data formats + +#### Ion + +* [#317](../../jackson-dataformats-binary/issues/317): IonValueDeserializer does not handle getNullValue correctly for a missing property + +### Changes, Other modules + +#### Blackbird + +* [#169](../../jackson-modules-base/issues/169): Blackbird fails with LinkageError when the same class is used across two separate classloaders diff --git a/Jackson-Release-2.13.4.md b/Jackson-Release-2.13.4.md new file mode 100644 index 000000000..2f73ec262 --- /dev/null +++ b/Jackson-Release-2.13.4.md @@ -0,0 +1,44 @@ +Patch version of [2.13](Jackson-Release-2.13), released on September 3, 2022. + +Following fixes are included in this patch release. + +### Changes, core + +#### [Databind](../../jackson-databind) + +* [#3275](../../jackson-databind/issues/3275): JDK 16 Illegal reflective access for `Throwable.setCause()` with `PropertyNamingStrategy.UPPER_CAMEL_CASE` +* [#3565](../../jackson-databind/issues/3565): `Arrays.asList()` value deserialization has changed from mutable to immutable in 2.13 +* [#3582](../../jackson-databind/issues/3582): Add check in `BeanDeserializer._deserializeFromArray()` to prevent use of deeply nested arrays [CVE-2022-42004] + +### Changes, data formats + +#### XML + +* [#536](../../jackson-dataformat-xml/issues/536): Upgrade Woodstox to 6.3.1 to get OSGi metadata + +#### YAML + +* [#329](../../jackson-dataformats-text/issues/329): Update to SnakeYAML 1.31 + +### Changes, datatypes + +#### [Collections](../../jackson-datatypes-collections) + +* [#94](../../jackson-datatypes-collection/issues/94): Eclipse Collection serialization for Pairs does not work when upgrading to EC version 11.0.0 + +### Changes, Other modules + +#### Jakarta XmlBind + +* [#175](../../jackson-modules-base/issues/175): `jackson-module-jakarta-xmlbind-annotations` should use a Jakarta namespaced Activation API + +### Changes, JVM Languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#556](../../jackson-module-kotlin/issues/556): Broken Kotlin 1.4 support in 2.13.2 + +#### [Scala](../../jackson-module-scala) + +* [#588](../../jackson-module-scala/issues/588): support immutable ArraySeq deserialization +* [#599](../../jackson-module-scala/issues/599): ScalaAnnotationIntrospectorModule.registerReferencedValueType didn't work properly when fields have default value diff --git a/Jackson-Release-2.13.5.md b/Jackson-Release-2.13.5.md new file mode 100644 index 000000000..2fc40f08f --- /dev/null +++ b/Jackson-Release-2.13.5.md @@ -0,0 +1,34 @@ +Possible patch version of [2.13](Jackson-Release-2.13), released on January 23, 2023. +This will likely be the last full patch release from 2.13.x branch. + +Following fixes are included in this patch release. + +### Changes, core + +#### [Databind](../../jackson-databind) + +* [#3590](../../jackson-databind/issues/3590): Add check in primitive value deserializers to avoid deep wrapper array nesting wrt `UNWRAP_SINGLE_VALUE_ARRAYS` [CVE-2022-42003] +* [#3659](../../jackson-databind/issues/3659): Improve testing (likely via CI) to try to ensure compatibility with specific Android SDKs +* [#3661](../../jackson-databind/issues/3661): Jackson 2.13 uses Class.getTypeName() that is only available on Android SDK 26 + +### Changes, data formats + +#### CSV + +* [#343](../../jackson-dataformats-text/issues-343): Incorrect output buffer boundary check in `CsvEncoder` + +#### XML + +* Upgrade Woodstox to 6.4.0 for a fix to [CVE-2022-40152] + +### Changes, datatypes + +#### [Jakarta-JSONP / JSR-353](../../jackson-datatypes-misc) + +* [#27](../../jackson-datatypes-misc/issues/27): Deserializing a JSON Merge Patch fails when the input is not a JSON object + +### Changes, other + +#### [Jackson-jr](../../jackson-jr) + +* [#98](../../jackson-jr/issues/98): `module-info.java` of `jr-stree` refers to module `com.fasterxml.jackson.jr.ob.api`, which is not defined diff --git a/Jackson-Release-2.13.md b/Jackson-Release-2.13.md new file mode 100644 index 000000000..e2df8e097 --- /dev/null +++ b/Jackson-Release-2.13.md @@ -0,0 +1,381 @@ +[Jackson Version](Jackson-Releases) 2.13 was released on September 30, 2021. Two release candidates (2.13.0-rc1, 2.13.0-rc2) were released prior to the final 2.13.0. + +This wiki page gives a list of links to all changes (with brief descriptions) that were included. + +----- +## Status + +Branch is closed as of January 2023: only micro-patches are expected after `2.13.5` release. + +## Patches + +* [2.13.1](Jackson-Release-2.13.1) (19-Dec-2021) +* [2.13.2](Jackson-Release-2.13.2) (06-Mar-2022) +* [2.13.3](Jackson-Release-2.13.3) (14-May-2022) +* [2.13.4](Jackson-Release-2.13.4) (03-Sep-2022) +* [2.13.5](Jackson-Release-2.13.5) (23-Jan-2023) + +### Micro-patches + +Following micro-patches have been released: + +* `jackson-databind` `2.13.2.1` (24-Mar-2022) -- with `jackson-bom` version `2.13.2.20220324` + * [#2816](../../jackson-databind/issues/2816): Optimize `UntypedObjectDeserializer` wrt recursion (CVE-2020-36518) + * **NOTE!** As per #3465 any code that sub-classes `UntypedObjectDeserializer` may break due to unintended removal of existing methods (that is, a change to add a new argument). +* `jackson-databind` `2.13.2.2` (28-Mar-2022) -- with `jackson-bom` version `2.13.2.20220328` + * Same as `2.13.2.1` above, but correct Gradle Module Metadata (2.13.2.1 had invalid reference to parent, `jackson-bom`) + * ^^^ See [jackson-bom#52](https://github.com/FasterXML/jackson-bom/issues/52) for details + * **NOTE!** As per #3465 any code that sub-classes `UntypedObjectDeserializer` may break due to unintended removal of existing methods (that is, a change to add a new argument). +* `jackson-databind` `2.13.4.1` (12-Oct-2022) -- with `jackson-bom` version `2.13.4.20221012` + * [#3590](../../jackson-databind/issues/3590) Add check in primitive value deserializers to avoid deep wrapper array nesting wrt `UNWRAP_SINGLE_VALUE_ARRAYS` [CVE-2022-42003] +* `jackson-databind` `2.13.4.2` (13-Oct-2022) -- with `jackson-bom` version `2.13.4.20221013` + * [#3627](../../jackson-databind/issues/3627): Fix a Gradle Module Metadata problem + * Only relevant to Gradle users + +## Documentation + +* [Sneak Peek at Jackson 2.13](https://cowtowncoder.medium.com/sneak-peek-at-jackson-2-13-6f3009ce2d79) + +## Changes, compatibility + +### Compatibility: JDK requirements + +JDK baseline for most components has been raised to Java 8 for `jackson-databind` and other components that so far +(up until 2.12) had only required Java 7 (but not including ones that only require Java 6 -- `jackson-annotations`, `jackson-core` and `jackson-jr` -- which will retain Java 6 minimum). + +Benefits include: + +1. Ability to embed one or both of "Java 8 datatypes" (`Optional` and related) and "Java 8 parameter names" (auto-discovery of constructor parameters) -- eventually, but not in 2.13 +2. Convergence with 3.0 plans: can add configuration methods that take closures (modifications of "Config Overrides" and "Coercion Configs" in particular) +3. Ability to use Java 8 functional aspects in API in general for both 2.x and 3.0 + +### Compatibility: Build changes + +The new `jackson-jakarta-rs-providers` requires JDK 11 to build (due to Jetty test dependency); other modules still only need JDK 8. + +### Compatibility: Module changes + +* `jackson-jaxrs-providers` no longer has a work-around to (try to) allow use with JAX-RS 1.x implementations (see issue #134 below). It is doubtful usage would work regardless, but complex hack was is removed from 2.13.0. +* `module-info.class` is now included under `META-INF/versions/11/` in jars, instead of at root level (see [jackson-bom#39](https://github.com/FasterXML/jackson-bom/issues/39)) +* `jackson-dataformat-xml` no longer has direct dependency on `jackson-module-jaxb-annotations`! + * Helps resolve issues wrt "JAXB vs Jakarta" problems + +### Compatibility: Dependency changes + +* Jackson jr `jr-stree` dependency to `jr-objects` now optional, as per [jackson-jr#88](../../jackson-jr/issues/88) (since there is only one reference, and that from a class use for which means caller already uses `jr-objects` directly anyway) + +## Changes, behavior + +### Databind + +* Change [databind#3117](../../jackson-databind/issues/3117) reduces introspection visibility for "JDK Types" (classes in `java.*` and `javax.*` packages) to "only public fields, accessors" (see issue for details) to improve JDK compatibility with newer JDKs. This results in the following reported observable changes: + * [databind#3493](../../jackson-databind/issues/3493): `java.io.ByteArrayOutputStream` happened to serialize previously, as a POJO (with properties `buf` and `count`); it will no longer be serializable out-of-the-box. + * A follow-up issue [databind#3522](../../jackson-databind/issues/3522) filed for possibly allowing serialization, but as proper Binary value +* To fix [databind#3130](../../jackson-databind/issues/3130) (StackOverflow on JDK 11+ when serializing `java.lang.Thread`), serialization of `java.lang.ClassLoader` is now empty Object (`{ }`) -- if users want different serialization, need to add custom serializer +* To fix [databind#3244](../../jackson-databind/issues/3244) a set of formerly unserializable Jackson types like `ObjectMapper` are now serialized as Empty Object value (see [databind#3302](../../jackson-databind/issues/3302) for details) +* Fix for [databind#3271](../../jackson-databind/issues/3271) to remove unintended coercion of JSON `null` into Java String "null" (in context of reading Type Id) had the downstream effect of breakage for DropWizard (reported as [databind#3313](../../jackson-databind/issues/3313)). + * New behavior is considered correct and will remain in 2.13 and later versions. +* As reported in [databind#3510](../../jackson-databind/issues/3510) earlier "accidental" support for deserializing `javax.mail.internet.InternetAddress` no longer exists (likely removed from 2.12.0 already) due to security improvements. Since this type is nore part of Core JDK, support would need to be added as a Module (cannot add new library dependencies in `jackson-databind`) + * No module currently exists: users will need to, for now, provide a custom deserializer to deserialize this type. + +## New Modules + +### TOML Dataformat Module + +New module -- `jackson-dataformat-toml` -- now included in [jackson-dataformats-text](https://github.com/FasterXML/jackson-dataformats-text), supports [TOML](https://en.wikipedia.org/wiki/TOML). + +### Jakarta variants to replace Javax modules + +To allow working around the Oracle-created "Javax vs Jakarta" problem, Jackson 2.13 introduces hard forks of 3 kinds of existing +modules (see below). You (or your platform/framework) will need to change dependencies appropriately, to get the module +needed for your Jakarta-or-Javax APIs (hooray for interoperability). + +Note that these modules will obsolete Jackson 2.12 use of "-jakarta" classifier for JAXB and JAX-RS provider modules. + +#### Jakarta XML Bind (`jakarta.xml.bind`) annotations + +New module -- `jackson-module-jakarta-xmlbind-annotations` -- added in "jackson-modules-base", as alternative to existing +"old" JAXB Annotations module. + +#### Jakarta-RS providers + +New modules with names like `jackson-jakarta-rs-json-provider` (for `cbor`, `smile`, `xml` and `yaml`) as alternatives to +existing "jackson-jaxrs-[FORMAT]-provider" providers. + +#### Jakarta JSONP datatype + +New module, `jackson-datatype-jakarta-jsonp` added as the replacement for Javax/JSON-P supporting `jackson-datatype-jsr353`. + +#### Jakarta Mail datatype + +New module, `jackson-datatype-jakarta-mail` added to support a small subset (one class, `jakarta.mail.internet.InternetAddress`) of Jakarta Mail (ex "Java Mail") library. + +### "No Constructor" Deserializer module + +New module -- `jackson-module-no-ctor-deser` -- now included in [jackson-modules-base](https://github.com/FasterXML/jackson-modules-base) -- added to support a very specific use case of POJOs that do not have either: + +1. No-arguments ("default") constructor, nor +2. `@JsonCreator` annotated constructor or factory method + +in which case module can force instantiation of values without using any constructor, using JDK-internal implementation (included to support JDK serialization itself). +Note that this module may stop functioning in future, but appears to work at least until JDK 14. + +## Module deprecation, removal + +### Hibernate 3 module: drop + +Due to low-to-no usage of Hibernate 3 module (as compared to Hibernate 4 and 5), Hibernate 3 module +(`jackson-datatype-hibernate3`) +will be dropped from 2.13, as per [datatype-hibernate#139](https://github.com/FasterXML/jackson-datatype-hibernate/issues/139). + +(NOTE: whether Hibernate module will be released for Jackson 3.x is an open question too, due to the lack of maintainers) + +----- + +## Major focus areas planned -- but postponed due to lack of time + +### (Finally) Rewrite Creator Detection wrt Property Discovery + +A class of impossible-to-fix problems related to Creator methods (constructors, factory methods) is due to "duality" of Creator discovery and General property discovery. Problem is that the process goes like this: + +1. General property discovery is performance by `POJOPropertiesCollector`: this is based on finding regular accessors (Fields, Getter/Setter methods) using both name-based auto-discovery and annotations, but also includes (annotated) Creator property parameters -- but notably not parameters of possible implicit (auto-discovered) Constructors. Accessors are combined into logical properties, expressed as (and accessed through) `BasicBeanDescription` container. +2. `BeanDeserializerFactory` takes `BasicBeanDescription` and introspect possible Creators: this starts from scratch and finds potential Creators both by explicit annotations and possible auto-discovery. It will also try to combine already known Properties (from step 1) with now-located Creator parameters. + +... and the problem is that "implicit" Creators -- ones with no explicitly annotated parameters (note: Not related to annotation of Creators method itself, but to parameter annotations!) -- will not be known during step (1) and as such will: + +* Not be renamed by `PropertyNamingStrategy` +* Not get annotations from related accessors (normally annotation in one of accessors is essentially applied to all), nor contribute annotations to be used for others + +Fixing this general problem by either: + +1. Moving Creator discovery as part of `POJOPropertiesCollector` (preferred), or +2. Trying to combine pieces in step 2 more throughly (could resolve some of the issues) + +would fix some of existing failing tests, and in particular help with newly found problems with `Record` handling (added in 2.12). + +### Configurability ideas similarly deferred + +Separate configuration settings for: + +#### JsonNode config/feature + +Part of/related to [JSTEP-3](https://github.com/FasterXML/jackson-future-ideas/wiki/JSTEP-3), it'd be good to have a set of simple on/off features to configure read/write/transform aspects of `JsonNode`, distinct from POJOs. + +These settings should ideally be per-call, similar to `[De]SerializationFeature`. + +#### Date/Time config/feature(s) + +Part of/related to [JSTEP-5](https://github.com/FasterXML/jackson-future-ideas/wiki/JSTEP-5) (and [JSTEP-6](https://github.com/FasterXML/jackson-future-ideas/wiki/JSTEP-6)), there are things that should be easily configurable as on/off "features", or similar configuration object(s). + +One challenging part is that some of the settings should probably be per-call ones (i.e. can change on specific read/write); whereas others must be per-mapper (unchangeable after construction) + +#### Enum read/write features + +Handling of `Enum` value reading, writing, is currently configured with a hodge-podge of `SerializationFeature` / `DeserialiationFeature`s, but as with `JsonNode` and Date/Time values, that's not a good place as those should be for more general aspects of handling. +This is covered to some degree in [JSTEP-6](https://github.com/FasterXML/jackson-future-ideas/wiki/JSTEP-6). + +So we should like have `EnumFeature`s too, changeable on per-call basis; partly to replace existing `[De]SerializationFeature`s (for 3.0), and partly to expose new ones. + +### Processing Limits (deferred as well) + +Mentioned as one future JSTEP on https://github.com/FasterXML/jackson-future-ideas/wiki/JSTEP, there really should be limits to maximum size and/or complexity of input to process, mostly to prevent potential DoS attacks (as well as accidental "intern brought down our system by broken script" cases). There is some prior art in Woodstox, for example (see [Woodstox-specific settings ("limits")](https://cowtowncoder.medium.com/configuring-woodstox-xml-parser-woodstox-specific-properties-1ce5030a5173)). + +----- + +Full set of changes included in 2.13.0 release. + +## Full Change list + +### Changes, core + +#### [Annotations](../../jackson-annotations) + +No changes since 2.12 + +#### [Streaming](../../jackson-core) + +* [#652](../../jackson-core/issues/652): Misleading exception for input source when processing byte buffer +with start offset +* [#658](../../jackson-core/issues/658): Escape contents of source document snippet for `JsonLocation._appendSourceDesc()` +* [#664](../../jackson-core/issues/664): Add `StreamWriteException` type to eventually replace `JsonGenerationException` +* [#671](../../jackson-core/issues/671): Replace `getCurrentLocation()`/`getTokenLocation()` with `currentLocation()`/`currentTokenLocation()` in `JsonParser` +* [#673](../../jackson-core/issues/673): Replace `JsonGenerator.writeObject()` (and related) with `writePOJO()` +* [#674](../../jackson-core/issues/674): Replace `getCurrentValue()`/`setCurrentValue()` with `currentValue()`/`assignCurrentValue()` in `JsonParser`/`JsonGenerator` +* [#677](../../jackson-core/issues/677): Introduce O(n^1.5) BigDecimal parser implementation +* [#687](../../jackson-core/issues/687): ByteQuadsCanonicalizer.addName(String, int, int) has incorrect handling +for case of q2 == null +* [#692](../../jackson-core/issues/692): UTF32Reader ArrayIndexOutOfBoundsException +* [#694](../../jackson-core/issues/694): Improve exception/JsonLocation handling for binary content: don't +show content, include byte offset +* [#700](../../jackson-core/issues/700): Unable to ignore properties when deserializing. TokenFilter seems broken + +#### [Databind](../../jackson-databind) + +* [#1850](../../jackson-databind/issues/1850): `@JsonValue` with integer for enum does not deserialize correctly +* [#2509](../../jackson-databind/issues/2509): `AnnotatedMethod.getValue()/setValue()` doesn't have useful exception message +* [#2828](../../jackson-databind/issues/2828): Add `DatabindException` as intermediate subtype of `JsonMappingException` +* [#2900](../../jackson-databind/issues/2900): Jackson does not support deserializing new Java 9 unmodifiable collections +* [#2989](../../jackson-databind/issues/2989): Allocate TokenBuffer instance via context objects (to allow format-specific buffer types) +* [#3001](../../jackson-databind/issues/3001): Add mechanism for setting default `ContextAttributes` for `ObjectMapper` +* [#3002](../../jackson-databind/issues/3002): Add `DeserializationContext.readTreeAsValue()` methods for more convenient conversions for deserializers to use +* [#3011](../../jackson-databind/issues/3011): Clean up support of typed "unmodifiable", "singleton" Maps/Sets/Collections +* [#3033](../../jackson-databind/issues/3033): `MapperFeature` to use `long` internally +* [#3035](../../jackson-databind/issues/3035): Add `removeMixIn()` method in `MapperBuilder` +* [#3036](../../jackson-databind/issues/3036): Backport `MapperBuilder` lambda-taking methods: `withConfigOverride()`, `withCoercionConfig()`, `withCoercionConfigDefaults()` +* [#3080](../../jackson-databind/issues/3080): configOverrides(boolean.class) silently ignored, whereas .configOverride(Boolean.class) +works for both primitives and boxed boolean values +* [#3082](../../jackson-databind/issues/3082): Dont track unknown props in buffer if `ignoreAllUnknown` is true +* [#3091](../../jackson-databind/issues/3091): Should allow deserialization of java.time types via opaque +`JsonToken.VALUE_EMBEDDED_OBJECT` +* [#3101](../../jackson-databind/issues/3101): Add AnnotationIntrospector.XmlExtensions interface for decoupling javax dependencies +* [#3110](../../jackson-databind/issues/3110): Custom SimpleModule not included in list returned by ObjectMapper.getRegisteredModuleIds() after registration +* [#3117](../../jackson-databind/issues/3117): Use more limiting default visibility settings for JDK types (java.*, javax.*) +* [#3122](../../jackson-databind/issues/3122): Deep merge for `JsonNode` using `ObjectReader.readTree()` +* [#3125](../../jackson-databind/issues/3125): IllegalArgumentException: Conflicting setter definitions for property +with more than 2 setters +* [#3130](../../jackson-databind/issues/3130): Serializing `java.lang.Thread` fails on JDK 11+ +* [#3143](../../jackson-databind/issues/3143): String-based `Map` key deserializer is not deterministic when there is no single arg constructor +* [#3154](../../jackson-databind/issues/3154): Add ArrayNode#set(int index, primitive_type value) +* [#3160](../../jackson-databind/issues/3160): JsonStreamContext "currentValue" wrongly references to @JsonTypeInfo annotated object +* [#3174](../../jackson-databind/issues/3174): DOM `Node` serialization omits the default namespace declaration +* [#3177](../../jackson-databind/issues/3177): Support `suppressed` property when deserializing `Throwable` +* [#3187](../../jackson-databind/issues/3187): `AnnotatedMember.equals()` does not work reliably +* [#3193](../../jackson-databind/pulls/3193): Add MapperFeature.APPLY_DEFAULT_VALUES, initially for Scala module +* [#3214](../../jackson-databind/pulls/3214): For an absent property Jackson injects `NullNode` instead of `null` to a JsonNode-typed constructor argument of a `@ConstructorProperties`-annotated constructor +* [#3217](../../jackson-databind/pulls/3217): `XMLGregorianCalendar` doesn't work with default typing +* [#3227](../../jackson-databind/pulls/3227): Content `null` handling not working for root values +* [#3234](../../jackson-databind/pulls/3234): StdDeserializer rejects blank (all-whitespace) strings for ints +* [#3235](../../jackson-databind/pulls/3235): `USE_BASE_TYPE_AS_DEFAULT_IMPL` not working with `DefaultTypeResolverBuilder` +* [#3238](../../jackson-databind/pulls/3238): Add PropertyNamingStrategies.UpperSnakeCaseStrategy (and UPPER_SNAKE_CASE constant) +* [#3244](../../jackson-databind/pulls/3244): StackOverflowError when serializing JsonProcessingException +* [#3259](../../jackson-databind/pulls/3259): Support for BCP 47 `java.util.Locale` serialization/deserialization +* [#3271](../../jackson-databind/pulls/3271): String property deserializes null as "null" for JsonTypeInfo.As.EXISTING_PROPERTY +* [#3302](../../jackson-databind/pulls/3302): Serialize formerly unserializable Jackson types like ObjectMapper as Empty Object value +* [#3397](../../jackson-databind/pulls/3397): Optimize `JsonNodeDeserialization` wrt recursion + +### Changes, data formats + +#### Avro + +* [#283](../../jackson-dataformats-binary/issues/283): Add `logicalType` support for some `java.time` types; add `AvroJavaTimeModule` for native ser/deser +* [#290](../../jackson-dataformats-binary/issues/290): Generate logicalType switch + +#### CBOR + +* [#239](../../jackson-dataformats-binary/issues/239): Should validate UTF-8 multi-byte validity for short decode path too +* [#253](../../jackson-dataformats-binary/issues/253): Make `CBORFactory` support `JsonFactory.Feature.CANONICALIZE_FIELD_NAMES` +* [#264](../../jackson-dataformats-binary/issues/264): Handle case of BigDecimal with Integer.MIN_VALUE for scale gracefully +* [#272](../../jackson-dataformats-binary/issues/272): Uncaught exception in CBORParser._nextChunkedByte2 (by ossfuzze +* [#273](../../jackson-dataformats-binary/issues/273): Another uncaught exception in CBORParser._nextChunkedByte2 (by ossfuzzer) +* [#284](../../jackson-dataformats-binary/issues/284): Support base64 strings in `getBinaryValue()` for CBOR and Smile +* [#289](../../jackson-dataformats-binary/issues/289): `ArrayIndexOutOfBounds` for truncated UTF-8 name + +#### CSV + +* [#240](../../jackson-dataformats-text/issues/240): Split `CsvMappingException` into `CsvReadException`/`CsvWriteException` +* [#270](../../jackson-dataformats-text/issues/270): Should not quote with strict quoting when line starts with `#` but comments are disabled +* [#283](../../jackson-dataformats-text/issues/283): `CsvSchema.getColumnDesc()` returns unpaired square bracket when columns are empty + +#### Ion + +* [#295](../../jackson-dataformats-binary/issues/295): `jackson-dataformat-ion` does not handle null.struct deserialization correctly + +#### Smile + +* [#252](../../jackson-dataformats-binary/issues/252): Make `SmileFactory` support `JsonFactory.Feature.CANONICALIZE_FIELD_NAMES` +* [#276](../../jackson-dataformats-binary/issues/276): Add `SmileGenerator.Feature.LENIENT_UTF_ENCODING` for lenient handling of broken Unicode surrogate pairs on writing +* [#284](../../jackson-dataformats-binary/issues/284): Support base64 strings in `getBinaryValue()` for CBOR and Smile +* [#291](../../jackson-dataformats-binary/issues/291): `ArrayIndexOutOfBounds` for truncated UTF-8 name + +#### TOML + +* [#219](../../jackson-dataformats-text/issues/219): Add TOML (https://en.wikipedia.org/wiki/TOML) support! + +#### XML + +* [#441](../../jackson-dataformat-xml/issues/441): Add `ToXmlGenerator.Feature.UNWRAP_ROOT_OBJECT_NODE` (to avoid root `ObjectNode` wrapper element) +* [#442](../../jackson-dataformat-xml/issues/442): Missing START_OBJECT token in complex element starting with text +* [#462](../../jackson-dataformat-xml/issues/462): Remove `jackson-module-jaxb-annotations` runtime dependency (leave as a test dep). Also upgrade to use new "Jakarta" variety of annotations +* [#463](../../jackson-dataformat-xml/issues/463): NPE via boundary condition, document with only XML declaration +* [#465](../../jackson-dataformat-xml/issues/465): ArrayIndexOutOfBoundsException in UTF8Reader (ossfuzz) +* [#467](../../jackson-dataformat-xml/issues/467): Ignore contents of elements annotated with xsi:nil="true" (when xsi:nil handling enabled) +* [#468](../../jackson-dataformat-xml/issues/468): Add `FromXmlParser.Feature.PROCESS_XSI_NIL` to allow disabling processing of `xsi:nil` attributes on reading +* [#474](../../jackson-dataformat-xml/issues/474): Empty String ("") parsed as 0 for int even if DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES enabled (note: actual fix in `jackson-databind) +* [#483](../../jackson-dataformat-xml/issues/483): Explicitly pass ClassLoader of XmlFactory when creating Stax input/output factory, + instead of context ClassLoader +* [#485](../../jackson-dataformat-xml/issues/485): Deserialization with XmlMapper and DeserializationFeature.UNWRAP_ROOT_VALUE no longer works in 2.12 + +### Changes, datatypes + +#### [Hibernate](../../jackson-datatypes-hibernate) + +* [#139](../jackson-datatype-hibernate/issues/139): Drop support for Hibernate 3.x from Jackson 2.13 +* [#144](../jackson-datatype-hibernate/issues/144): Add new module (`jackson-datatype-hibernate5-jakarta`) to support Jakarta EE for Hibernate 5.5 + +#### [Java 8 date/time](../../jackson-modules-java8/datetime) + +* [#131](../../jackson-modules-java8/issues/131): Deserializing ZonedDateTime with basic TZ offset notation (0000) +* [#212](../../jackson-modules-java8/issues/212): Make LocalDateDeserializer consider strict/lenient on accepting (or not) +of "time" part + +#### [Joda Money](../../jackson-datatypes-misc) + +* [#8](../../jackson-datatypes-misc/issues/8): Improve error handling of "joda-money" `MoneyDeserializer`, `CurrencyUnitDeserializer` + +### Changes, Other modules + +#### Blackbird + +* [#141](../../jackson-modules-base/issues/141): Blackbird fails to deserialize varargs array + +#### JAXB + +* [#130](../../jackson-modules-base/issues/130): Addition of new `jackson-module-jakarta-xmlbind-annotations` module + * Supports `jakarta.xml.bind` flavor of "new" JAXB annotations, instead of old `javax.xml.bind` annotations (which are still covered by existing "old" `jackson-module-jaxb-annotations` module) + +### Changes, [JAX-RS providers](../../jackson-jaxrs-providers) + +* [#134](../../jackson-jaxrs-providers/issues/134): Remove work-around for JAX-RS 1.x wrt JAX-RS 2 type `NoContentException` +* [#146](../../jackson-jaxrs-providers/issues/146): Add separate "Jakarta [format] provider"s for 2.13 + * Provides new `jakarta.ws.rs` ("Jakarta-RS") provider implementations; replacements for "javax"/JAX-RS providers + +### Changes, JVM Languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#438](../../jackson-module-kotlin/issues/438): Fixed mapping failure when `private` `companion object` is named +* [#447](../../jackson-module-kotlin/issues/447): Fix edge case when dealing with sealed classes +* [#468](../../jackson-module-kotlin/issues/468): Improved support for value classes +* [#477](../../jackson-module-kotlin/issues/477): Improved documentation for KotlinFeature +* [#489](../../jackson-module-kotlin/issues/489): Extension functions for JsonNode, ArrayNode and ObjectNode +* [#490](../../jackson-module-kotlin/issues/490): Fix deserialization of missing value (was `NullNode`, now literal `null`) +* [#494](../../jackson-module-kotlin/issues/494): Improved documentation for ProGuard users +* [#496](../../jackson-module-kotlin/issues/496): Fix type erasure in treeToValue() extension function + +#### [Scala](../../jackson-module-scala) + +* [#211](../../jackson-module-scala/issues/211): Deserialization of case object creates a new instance of case object +* [#296](../../jackson-module-scala/issues/296): JsonSerializable gets ignored on classes implementing Map +* [#382](../../jackson-module-scala/issues/382): Option field deserialization failure +* [#443](../../jackson-module-scala/issues/443): Objects in tuples are not serialized as ids +* [#479](../../jackson-module-scala/issues/479): Scala3 support +* [#503](../../jackson-module-scala/issues/503): big improvement to ClassTagExtensions, the Scala3 friendly replacement for ScalaObjectMapper. Big thanks to Gaël Jourdan-Weil. +* [#512](../../jackson-module-scala/issues/512): add support for recognising Scala3 classes (TastyUtil) +* [#514](../../jackson-module-scala/issues/514): support MapperFeature.APPLY_DEFAULT_VALUES (defaults to true) +* [#545](../../jackson-module-scala/issues/545): (Experimental) support for registering reference types (when they can't be inferred) + +### Changes, other + +#### [Jackson-jr](../../jackson-jr) + +* [#79](../../jackson-jr/issues/79): Reuse of ClassKey in ValueWriterLocator not working +* [#80](../../jackson-jr/issues/80): Case-insensitive property, enum deserialization should be supported +* [#81](../../jackson-jr/issues/81): `JsrValue` should implement `equals()` +* [#83](../../jackson-jr/issues/83): Support `@JsonProperty` annotation on enum values +* [#84](../../jackson-jr/issues/84): Public static fields are included in serialized output +* [#88](../../jackson-jr/issues/88): Make `jr-stree` dependency to `jr-objects` optional + + + + + diff --git a/Jackson-Release-2.14.1.md b/Jackson-Release-2.14.1.md new file mode 100644 index 000000000..d40de0b15 --- /dev/null +++ b/Jackson-Release-2.14.1.md @@ -0,0 +1,27 @@ +Patch version of [2.14](Jackson-Release-2.14), released on November 21st, 2022. + +Following fixes are included in this patch release. + +### Changes, core + +#### [Databind](../../jackson-databind) + +* [#3655](../../jackson-databind/issues/3655): `Enum` values can not be read from single-element array even with `DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS` +* [#3665](../../jackson-databind/issues/3665): `ObjectMapper` default heap consumption increased significantly from 2.13.x to 2.14.0 + +### Changes, data formats + +#### CSV + +* [#352](../../jackson-dataformats-text/issues/352): Disabling `CsvParser.Feature.FAIL_ON_MISSING_HEADER_COLUMNS` has no effect + +#### Smile + +* [#342](../../jackson-dataformats-binary/issues/342): Possible performance improvement on jdk9+ for Smile decoding + +### Changes, datatypes + +#### [Jakarta-JSONP / JSR-353](../../jackson-datatypes-misc) + +* [#27](../../jackson-datatypes-misc/issues/27): Deserializing a JSON Merge Patch fails when the input is not a JSON object + diff --git a/Jackson-Release-2.14.2.md b/Jackson-Release-2.14.2.md new file mode 100644 index 000000000..f3d99e4f4 --- /dev/null +++ b/Jackson-Release-2.14.2.md @@ -0,0 +1,42 @@ +Patch version of [2.14](Jackson-Release-2.14), released January 28, 2023. + +Following fixes are included in this patch release. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#854](../../jackson-core/issues/854): Backport schubfach changes from v2.15 +* [#882](../../jackson-core/issues/882): Allow TokenFIlter to skip last elements in arrays +* [#886](../../jackson-core/issues/886): Avoid instance creations in fast parser code +* [#890](../../jackson-core/issues/890): `FilteringGeneratorDelegate` does not create new `filterContext` if `tokenFilter` is null + +#### [Databind](../../jackson-databind) + +* [#1751](../../jackson-databind/issues/1751): `@JsonTypeInfo` does not work if the Type Id is an Integer value +* [#3063](../../jackson-databind/issues/3063): `@JsonValue` fails for Java Record +* [#3699](../../jackson-databind/issues/3699): Allow custom `JsonNode` implementations +* [#3711](../../jackson-databind/issues/3711): Enum polymorphism not working correctly with DEDUCTION +* [#3741](../../jackson-databind/issues/3741): `StdDelegatingDeserializer` ignores `nullValue` of `_delegateDeserializer`. + +### Changes, data formats + +#### TOML + +* [#356](../../jackson-dataformats-text/pull/356): Fix TOML parse failure when number token hits buffer edge + +### Changes, datatypes + +#### JSONP/JSR-353 + +* [#28](../../jackson-datatypes-misc/issues/28): Add delegating serializers for `JsonPatch` and `JsonMergePatch` + +### Changes, other modules + +#### JAX-RS Providers + +* [#167](../../jackson-jaxrs-providers/issues/166): `ProviderBase` class shows contention on synchronized block using `LRUMap` _writers instance + +#### Jakarta RS Providers + +* [#12](../../jackson-jakarta-rs-providers/pulls/12): Remove unnecessary synchronization from endpoint reader/writer caches diff --git a/Jackson-Release-2.14.3.md b/Jackson-Release-2.14.3.md new file mode 100644 index 000000000..c862c7588 --- /dev/null +++ b/Jackson-Release-2.14.3.md @@ -0,0 +1,54 @@ +Patch version of [2.14](Jackson-Release-2.14), released on March 5, 2023. + +Following fixes are included in this patch release. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#909](../../jackson-core/issues/909): Revert schubfach changes in #854 +* [#912](../../jackson-core/issues/912): Optional padding Base64Variant still throws exception on missing padding character +* [#967](../../jackson-core/issues/967): Address performance issue with `BigDecimalParser` +* [#990](../../jackson-core/pull/990): Backport removal of BigDecimal to BigInt conversion +* [#1004](../../jackson-core/pull/1004): FastDoubleParser license +* [#1012](../../jackson-core/pull/1012): Got `NegativeArraySizeException` when calling `writeValueAsString()` + +#### [Databind](../../jackson-databind) + +* [#3784](../../jackson-databind/issues/3784): `PrimitiveArrayDeserializers$ByteDeser.deserialize` ignores `DeserializationProblemHandler` for invalid Base64 content +* [#3837](../../jackson-databind/pull/3837): Set transformer factory attributes to improve protection against XXE + +### Changes, data formats + +#### Binary Formats (Avro, CBOR, Ion, Protobuf, Smile) + +* [#354](../../jackson-dataformats-binary/issues/354): Some artifacts missing `NOTICE`, `LICENSE` files + +#### Textual Formats (CSV, Properties, TOML, YAML) + +* [#378](../../jackson-dataformats-text/issues/378): Some artifacts missing `NOTICE`, `LICENSE` files + +#### CBOR + +* [#366](../../jackson-dataformats-binary/issues/366): `CBORGenerator.writeRawUTF8String()` seems to ignore offset + +### Changes, datatypes + +#### Guava + +* [#92](../../jackson-datatypes-collections/issues/92): `@JsonDeserialize.contentConverter` does not work for non-builtin collections +* [#104](../../jackson-datatypes-collections/issues/104): `ArrayListMultimapDeserializer` does not support multimaps inside another object as a property + +### Changes, Other modules + +#### JAXB + +* [#199](../../jackson-modules-base/issues/199): jaxb and jakarta-xmlbind put module-info in versions/11 +* Fix Gradle Module Metadata for Afterburner, Blackbird + +### Changes, other + +#### [Jackson-jr](../../jackson-jr) + +* [#102](../../jackson-jr/issues/102): Missing module-info dependency from `jackson-jr-annotation-support` +* [#103](../../jackson-jr/issues/103): Some artifacts missing `NOTICE`, `LICENSE` files diff --git a/Jackson-Release-2.14.4.md b/Jackson-Release-2.14.4.md new file mode 100644 index 000000000..260af17f7 --- /dev/null +++ b/Jackson-Release-2.14.4.md @@ -0,0 +1,12 @@ +Possible patch version of [2.14](Jackson-Release-2.14), not yet under development as of May 2023. + +Following fixes will be included in this patch release, if released. + +### Changes, core + +#### [Streaming](../../jackson-core) + +#### [Databind](../../jackson-databind) + +* [#3882](../../jackson-databind/issues/3882): Error in creating nested `ArrayNode`s with `JsonNode.withArray()` +* [#4121](../../jackson-databind/pulls/4121): Preserve the original component type in merging to an array diff --git a/Jackson-Release-2.14.md b/Jackson-Release-2.14.md new file mode 100644 index 000000000..f0d6f98ba --- /dev/null +++ b/Jackson-Release-2.14.md @@ -0,0 +1,267 @@ +[Jackson Version](Jackson-Releases) 2.14 was released on November 5, 2022. Three release candidates (2.14.0-rc1, -rc2 and -rc3) were released prior to the final 2.14.0. + +This wiki page gives a list of links to all changes (with brief descriptions) that are included, as well as about original plans for bigger changes (and in some cases changes to plans, postponing). + +## Status + +Branch is open (as of April 2023) and new patch releases are expected. + +## Patches + +* [2.14.1](Jackson-Release-2.14.1) (21-Nov-2022) +* [2.14.2](Jackson-Release-2.14.2) (28-Jan-2023) +* [2.14.3](Jackson-Release-2.14.3) (05-May-2023) +* [2.14.4](Jackson-Release-2.14.4) (not yet released) + +## Documentation + +### Blog posts, artcles + +* [Jackson 2.14 sneak peek](https://cowtowncoder.medium.com/jackson-2-14-sneak-peek-79859babaa4) -- preview of 2.14 features before release + +## Changes, compatibility + +### Compatibility: JDK requirements + +JDK baseline has been raised to Java 8 for `jackson-core` and `jackson-jr` components, leaving `jackson-annotations` the only component that only requires Java 6: all other components already required Java 8. + +### Compatibility: min Android SDK + +Due to changes after 2.13 (see [databind#3412](../../jackson-databind/pull/3412)) the minimum Android SDK version required is now 26 +(released in 2017; see https://en.wikipedia.org/wiki/Android_version_history for details). + +Older Android SDK versions are still supported by Jackson 2.13 (TODO: figure out exact supported Android SDK version). + +## Changes, behavior + +### Planned changes + +None + +### Observed/Reported changes + +* Handling of conflicting/ambiguous `@JsonIgnore`/`@JsonProperty` annotations for a single property (but possible across inheritance hierarchy, different accessors) changed with [databind#3357](../../jackson-databind/issues/3357) + * Reported as [#3722](../../jackson-databind/issues/3722) + * Formerly (2.13.x and before) `@JsonIgnore` would have been often ignored giving `@JsonProperty` priority; with 2.14 active `@JsonIgnore` will have predence ("ignoral wins") + +----- + +## Major focus areas planned + +### Configurability ideas + +Separate configuration settings for `JsonNode`, `Enum`, Date/Time. + +NOTE: Covered in-detail here: + +* https://github.com/FasterXML/jackson-future-ideas/wiki/JSTEP-7 + +----- + +## Major focus areas planned -- but postponed due to lack of time + +Unfortunately 2 major features were again postponed from 2.14 due to other work. + +### Rewrite Creator Detection wrt Property Discovery (postponed already from 2.13) + +A class of impossible-to-fix problems related to Creator methods (constructors, factory methods) is due to "duality" of Creator discovery and General property discovery. Problem is that the process goes like this: + +1. General property discovery is performance by `POJOPropertiesCollector`: this is based on finding regular accessors (Fields, Getter/Setter methods) using both name-based auto-discovery and annotations, but also includes (annotated) Creator property parameters -- but notably not parameters of possible implicit (auto-discovered) Constructors. Accessors are combined into logical properties, expressed as (and accessed through) `BasicBeanDescription` container. +2. `BeanDeserializerFactory` takes `BasicBeanDescription` and introspect possible Creators: this starts from scratch and finds potential Creators both by explicit annotations and possible auto-discovery. It will also try to combine already known Properties (from step 1) with now-located Creator parameters. + +... and the problem is that "implicit" Creators -- ones with no explicitly annotated parameters (note: Not related to annotation of Creators method itself, but to parameter annotations!) -- will not be known during step (1) and as such will: + +* Not be renamed by `PropertyNamingStrategy` +* Not get annotations from related accessors (normally annotation in one of accessors is essentially applied to all), nor contribute annotations to be used for others + +Fixing this general problem by either: + +1. Moving Creator discovery as part of `POJOPropertiesCollector` (preferred), or +2. Trying to combine pieces in step 2 more throughly (could resolve some of the issues) + +would fix some of existing failing tests, and in particular help with newly found problems with `Record` handling (added in 2.12). + +### Processing Limits + +Mentioned as one future JSTEP on https://github.com/FasterXML/jackson-future-ideas/wiki/JSTEP, there really should be limits to maximum size and/or complexity of input to process, mostly to prevent potential DoS attacks (as well as accidental "intern brought down our system by broken script" cases). There is some prior art in Woodstox, for example (see [Woodstox-specific settings ("limits")](https://cowtowncoder.medium.com/configuring-woodstox-xml-parser-woodstox-specific-properties-1ce5030a5173)). + +NOTE: these limits are becoming more and more important over time -- a few DoS style issues have been resolved, but eventually it'd be good to have such "guard rails" built in core processing, as a baseline protection. + +----- + +Changes included in the release + +## Full Change list + +### Changes, core + +#### [Annotations](../../jackson-annotations) + +* [#204](../../jackson-annotations/issues/204): Allow explicit `JsonSubTypes` repeated names check + +#### [Streaming](../../jackson-core) + +* [#478](../../jackson-core/issues/478): Provide implementation of async JSON parser fed by `ByteBufferFeeder` +* [#577](../../jackson-core/issues/577): Allow use of faster floating-point number parsing (Schubfach) with `StreamReadFeature.USE_FAST_DOUBLE_PARSER` +* [#684](../../jackson-core/issues/684): Add "JsonPointer#appendProperty" and "JsonPointer#appendIndex" +* [#715](../../jackson-core/issues/715): Allow `TokenFilter`s to keep empty arrays and objects +* [#717](../../jackson-core/issues/717): Hex capitalization for JsonWriter should be configurable (add `JsonWriteFeature.WRITE_HEX_UPPER_CASE`) +* [#733](../../jackson-core/issues/733): Add `StreamReadCapability.EXACT_FLOATS` to indicate whether parser reports exact floating-point values +* [#736](../../jackson-core/pull/736): `JsonPointer` quadratic memory use: OOME on deep inputs +* [#745](../../jackson-core/pull/745): Change minimum Java version to 8 +* [#749](../../jackson-core/pull/749): Allow use of faster floating-point number serialization (`StreamWriteFeature.USE_FAST_DOUBLE_WRITER`) +* [#751](../../jackson-core/issues/751): Remove workaround for old issue with a particular double +* [#753](../../jackson-core/issues/753): Add `NumberInput.parseFloat()` +* [#762](../../jackson-core/pull/762): Make `JsonPointer` `java.io.Serializable` +* [#763](../../jackson-core/issues/763): `JsonFactory.createParser()` with `File` may leak `InputStream`s +* [#764](../../jackson-core/issues/764): `JsonFactory.createGenerator()` with `File` may leak `OutputStream`s +* [#773](../../jackson-core/pull/773): Add option to accept non-standard trailing decimal point (`JsonReadFeature.ALLOW_TRAILING_DECIMAL_POINT_FOR_NUMBERS`) +* [#774](../../jackson-core/pull/774): Add a feature to allow leading plus sign (`JsonReadFeature.ALLOW_LEADING_PLUS_SIGN_FOR_NUMBERS`) +* [#788](../../jackson-core/pull/788): `JsonPointer.empty()` should NOT indicate match of a property with key of "" +* [#798](../../jackson-core/pull/798): Avoid copy when parsing `BigDecimal` +* [#811](../../jackson-core/pull/811): Add explicit bounds checks for `JsonGenerator` methods that take `byte[]`/`char[]`/String-with-offsets input +* [#814](../../jackson-core/pull/814): Use `BigDecimalParser` for BigInteger parsing very long numbers +* [#818](../../jackson-core/pull/818): Calling `JsonPointer.compile(...)` on very deeply nested expression throws `StackOverflowErrror` +* [#828](../../jackson-core/pull/828): Make `BigInteger` parsing lazy +* [#830](../../jackson-core/pull/830): Make `BigDecimal` parsing lazy + +#### [Databind](../../jackson-databind) + +* [#1980](../../jackson-databind/issues/1980): Add method(s) in `JsonNode` that works like combination of `at()` and `with()`: `withObject(...)` and `withArray(...)` +* [#2541](../../jackson-databind/issues/2541): Cannot merge polymorphic objects +* [#3013](../../jackson-databind/issues/3013): Allow disabling Integer to String coercion via `CoercionConfig` +* [#3212](../../jackson-databind/issues/3212): Add method `ObjectMapper.copyWith(JsonFactory)` +* [#3311](../../jackson-databind/issues/3311): Add serializer-cache size limit to avoid Metaspace issues from caching Serializers +* [#3338](../../jackson-databind/issues/3338): `configOverride.setMergeable(false)` not supported by `ArrayNode` +* [#3357](../../jackson-databind/issues/3357): `@JsonIgnore` does not work if together with `@JsonProperty` or `@JsonFormat` +* [#3373](../../jackson-databind/issues/3373): Change `TypeSerializerBase` to skip `generator.writeTypePrefix()` for `null` typeId +* [#3394](../../jackson-databind/issues/3394): Allow use of `JsonNode` field for `@JsonAnySetter` +* [#3405](../../jackson-databind/issues/3405): Create `DataTypeFeature` abstraction (for JSTEP-7) with placeholder features +* [#3417](../../jackson-databind/issues/3417): Allow (de)serializing records using Bean(De)SerializerModifier even when reflection is unavailable +* [#3419](../../jackson-databind/issues/3419): Improve performance of `UnresolvedForwardReference` for forward reference resolution +* [#3421](../../jackson-databind/issues/3421): Implement `JsonNodeFeature.READ_NULL_PROPERTIES` to allow skipping of JSON `null` values on reading +* [#3443](../../jackson-databind/issues/3443): Do not strip generic type from `Class` when resolving `JavaType` +* [#3447](../../jackson-databind/issues/3447): Deeply nested JsonNode throws StackOverflowError for toString() +* [#3475](../../jackson-databind/issues/3475): Support use of fast double parser +* [#3476](../../jackson-databind/issues/3476): Implement `JsonNodeFeature.WRITE_NULL_PROPERTIES` to allow skipping JSON `null` values on writing +* [#3481](../../jackson-databind/issues/3481): Filter method only got called once if the field is null when using `@JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = SomeFieldFilter.class)` +* [#3484](../../jackson-databind/issues/3484): Update `MapDeserializer` to support `StreamReadCapability.DUPLICATE_PROPERTIES` +* [#3497](../../jackson-databind/issues/3497): Deserialization of Throwables with PropertyNamingStrategy does not work +* [#3500](../../jackson-databind/issues/3500): Add optional explicit `JsonSubTypes` repeated names check +* [#3503](../../jackson-databind/issues/3503): `StdDeserializer` coerces ints to floats even if configured to fail +* [#3503](../../jackson-databind/pull/3505): Fix deduction deserializer with `DefaultTypeResolverBuilder` +* [#3528](../../jackson-databind/issues/3528): `TokenBuffer` defaults for parser/stream-read features neither passed from parser nor use real defaults +* [#3530](../../jackson-databind/issues/3530): Change LRUMap to just evict one entry when maxEntries reached +* [#3530](../../jackson-databind/issues/3533): Deserialize missing value of `EXTERNAL_PROPERTY` type using custom `NullValueProvider` +* [#3535](../../jackson-databind/issues/3535): Replace `JsonNode.with()` with `JsonNode.withObject()` +* [#3559](../../jackson-databind/issues/3559): Support `null`-valued `Map` fields with "any setter" +* [#3568](../../jackson-databind/issues/3568): Change `JsonNode.with(String)` and `withArray(String)` to consider argument as `JsonPointer` if valid expression +* [#3590](../../jackson-databind/issues/3590): Add check in primitive value deserializers to avoid deep wrapper array nesting wrt `UNWRAP_SINGLE_VALUE_ARRAYS` [CVE-2022-42003] +* [#3609](../../jackson-databind/issues/3609): Allow non-boolean return type for "is-getters" with `MapperFeature.ALLOW_IS_GETTERS_FOR_NON_BOOLEAN` +* [#3613](../../jackson-databind/issues/3613): Implement `float` and `boolean` to `String` coercion config +* [#3624](../../jackson-databind/issues/3624): Legacy `ALLOW_COERCION_OF_SCALARS` interacts poorly with Integer to Float coercion +* [#3633](../../jackson-databind/issues/3633): Expose `translate()` method of standard `PropertyNamingStrategy` implementations + +### Changes, data formats + +#### Avro + +* [#310](../../jackson-dataformats-binary/issues/310): Avro schema generation: allow override namespace with new `@AvroNamespace` annotation + +#### CBOR + +* [#301](../../jackson-dataformats-binary/issues/301): Missing configuration methods for format-specific parser/generator features +* [#312](../../jackson-dataformats-binary/issues/312): Short NUL-only keys incorrectly detected as duplicates +* [#338](../../jackson-dataformats-binary/issues/338): Use passed "current value" in `writeStartObject()` overload + +#### CSV + +* [#285](../../jackson-dataformats-text/issues/285): Missing columns from header line (compare to `CsvSchema`) not detected when reordering columns (add `CsvParser.Feature.FAIL_ON_MISSING_HEADER_COLUMNS`) +* [#297](../../jackson-dataformats-text/issues/297): CSV schema caching POJOs with different views +* [#314](../../jackson-dataformats-text/issues/314): Add fast floating-point parsing, generation support +* [#351](../../jackson-dataformats-text/issues/351): Make CSVDecoder use lazy parsing of BigInteger/BigDecimal + +#### Ion + +* [#311](../../jackson-dataformats-binary/issues/311): `IonObjectMapper` does not throw JacksonException for some invalid Ion +* [#325](../../jackson-dataformats-binary/pull/325): Ensure `IonReader` instances created within `IonFactory` are always resource-managed + +#### Properties + +* [#169](../../jackson-dataformats-text/issues/169): Need a way to escape dots in property keys (add path separator configuration) + +#### Smile + +* [#301](../../jackson-dataformats-binary/issues/301): Missing configuration methods for format-specific parser/generator features +* [#312](../../jackson-dataformats-binary/issues/312): Short NUL-only keys incorrectly detected as duplicates + +#### XML + +* [#491](../../jackson-dataformat-xml/issues/491): `XmlMapper` 2.12 regression: no default no-arg ctor found +* [#498](../../jackson-dataformat-xml/issues/498): `XmlMapper` fails to parse XML array when the array only has one level +* [#531](../../jackson-dataformat-xml/issues/531): Add mechanism for processing invalid XML names (transforming to valid ones) +* [#538](../../jackson-dataformat-xml/issues/538): Required attribute of `@JsonProperty` is ignored when deserializing from XML +* [#545](../../jackson-dataformat-xml/issues/545): `@JacksonXmlText` does not work when paired with `@JsonRawValue` + +#### YAML + +* [#244](../../jackson-dataformats-text/issues/244): Add `YAMLGenerator.Feature.ALLOW_LONG_KEYS` to allow writing keys longer than 128 characters (default) +* [#335](../../jackson-dataformats-text/issues/335)/[#346](../../jackson-dataformats-text/issues/346): Update to SnakeYAML 1.33 +* [#337](../../jackson-dataformats-text/issues/337): Allow overriding of file size limit for YAMLParser by exposing SnakeYAML `LoaderOptions` +* [#345](../../jackson-dataformats-text/issues/345): Support configuring SnakeYAML DumperOptions directly + +### Changes, datatypes + +#### [Java 8 date/time](../../jackson-modules-java8/datetime) + +* [#224](../../jackson-modules-java8/issues/224): `DurationSerializer` ignores format pattern if nano-second serialization enabled +* [#230](../../jackson-modules-java8/issues/230): Change `LocalDateTimeSerializer` constructor protected from private +* [#240](../../jackson-modules-java8/issues/240): `LocalDateDeserializer` should consider coercionConfig settings +* [#242](../../jackson-modules-java8/issues/242): Fix InstantSerializer ignoring the JsonFormat shape +* [#249](../../jackson-modules-java8/issues/249): `YearMonthDeserializer` fails for year > 9999 + +#### [Joda Date/time](../../jackson-datatype-joda) + +* [#124](../../jackson-datatype-joda/issues/124): Add no-arg constructor for DateTimeDeserializer + +#### [Joda Money](../../jackson-datatypes-misc) + +* [#17](https://github.com/FasterXML/jackson-datatypes-misc/pull/17): Add configurable amount representations for Joda Money module + +#### [JSR-353/JSONP](../../jackson-datatypes-misc) + +* [#19](../../jackson-datatypes-misc/issues/19): `JsonValue.NULL` deserialization has different behaviours with constructor properties vs public properties + +### Changes, JVM Languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#582](../../jackson-module-kotlin/issues/582): Ignore open-ended ranges in `KotlinMixins.kt` (to help with Kotlin 1.7.20+) + +#### [Scala](../../jackson-module-scala) + +* [#572](../../jackson-module-scala/issues/572): reuse Java code to parse Scala BigDecimal and BigInt +* [#576](../../jackson-module-scala/issues/576): add flag in type cache to track which c +lasses are not Scala (to avoid having to check them again) +* [#590](../../jackson-module-scala/issues/590): support BitSet deserialization (disabled by default) - enabling this is strongly discouraged as BitSets can use a lot of memory +* [#593](../../jackson-module-scala/issues/593): support IntMap/LongMap deserialization +* [#594](../../jackson-module-scala/issues/594): make scala 3.2 the minimum supported scala 3 version +* [#603](../../jackson-module-scala/issues/603): ignore generated methods for defaulted parameters + +### Changes, Other modules + +#### Blackbird + +* [#138](../../jackson-modules-base/issues/138): Blackbird doesn't work on Java 15+ +* [#187](../../jackson-modules-base/issues/187): Remove stack trace from Blackbirds warnings wrt missing `MethodHandles.lookup()` (on Java 8) + +#### [JDK 8](../../jackson-modules-java8/datetime) (`Optional` etc) + +* [#251](../../jackson-modules-java8/issues/251): Allow `Optional` deserialization for "absent" value as Java `null` (like other Reference types), not "empty" + +### Changes, other + +#### [Jackson-jr](../../jackson-jr) + +* [#91](../../jackson-jr/issues/91): Annotation support should allow `@JsonValue`/`JsonCreator` on `enum` + diff --git a/Jackson-Release-2.15.1.md b/Jackson-Release-2.15.1.md new file mode 100644 index 000000000..f00d3c099 --- /dev/null +++ b/Jackson-Release-2.15.1.md @@ -0,0 +1,33 @@ +Patch version of [2.15](Jackson-Release-2.15), released on May 16, 2023. + +Following fixes are included in this patch release. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#999](../../jackson-core/issues/999): Gradle metadata for `jackson-core` `2.15.0` adds dependency on `ch.randelshofer:fastdoubleparser` +* [#1003](../../jackson-core/pull/1003): Add FastDoubleParser section to `NOTICE` +* [#1014](../../jackson-core/pull/1014): Increase default max allowed String value length from 5 megs to 20 megs +* [#1023](../../jackson-core/pull/1023): Problem with `FilteringGeneratorDelegate` wrt `TokenFilter.Inclusion.INCLUDE_NON_NULL` + +#### [Databind](../../jackson-databind) + +* [#3882](../../jackson-databind/issues/3882): Error in creating nested `ArrayNode`s with `JsonNode.withArray()` +* [#3894](../../jackson-databind/issues/3894): Only avoid Records fields detection for deserialization +* [#3895](../../jackson-databind/issues/3895): 2.15.0 breaking behaviour change for records and Getter Visibility +* [#3897](../../jackson-databind/issues/3897): 2.15.0 breaks deserialization when POJO/Record only has a single field and is marked `Access.WRITE_ONLY` +* [#3913](../../jackson-databind/issues/3913): Issue with deserialization when there are unexpected properties (due to null `StreamReadConstraints`) +* [#3914](../../jackson-databind/issues/3914): Fix TypeId serialization for `JsonTypeInfo.Id.DEDUCTION`, native type ids + +### Changes, data formats + +#### YAML + +* [#404](../../jackson-dataformats-text/issues/404): Cannot serialize YAML with Deduction-Based Polymorphism + +### Changes, Other modules + +#### Afterburner + +* [#204](../../jackson-modules-base/issues/204): Gradle metadata for `jackson-module-afterburner` and `jackson-module-mrbean` `2.15.0` adds dependency on shaded `org.ow2.asm:asm` diff --git a/Jackson-Release-2.15.2.md b/Jackson-Release-2.15.2.md new file mode 100644 index 000000000..2948386ea --- /dev/null +++ b/Jackson-Release-2.15.2.md @@ -0,0 +1,39 @@ +Patch version of [2.15](Jackson-Release-2.15), released on May 30th, 2023. + +Following fixes are included in this patch release. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#1019](../../jackson-core/pull/1019): Allow override of `StreamReadContraints` default with `overrideDefaultStreamReadConstraints()` +* [#1027](../../jackson-core/issues/1027): Extra module-info.class in 2.15.1 +* [#1028](../../jackson-core/issues/1028): Wrong checksums in `module.json` (2.15.0, 2.15.1) +* [#1032](../../jackson-core/issues/1032): `LICENSE` misssing from 2.15.1 jar + +#### [Databind](../../jackson-databind) + +* [#3938](../../jackson-databind/issues/3938): Record setter not included from interface (2.15 regression) + +### Changes, data formats + +#### Avro + +* [#379](../../jackson-dataformats-binary/issues/379): `logback-test.xml` in wrong place (avro/src/main/resources) + +### Changes, JVM Languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#675](../../jackson-module-kotlin/issues/675): Modified to use Converter in Sequence serialization. This change allows serialization-related annotations, such as `JsonSerialize(contentUsing = ...)`, to work on `Sequence`. Also fixes [#674](../jackson-module-kotlin/issues/674). + +### Changes, Other modules + +#### Afterburner + +* `Asm` dependency updated to 9.5 (from 9.4) + +#### Mr Bean + +* [#207](../../jackson-modules-base/issues/207): Mr Bean exposing `Asm` as Maven dependency despite shading +* `Asm` dependency updated to 9.5 (from 9.4) diff --git a/Jackson-Release-2.15.3.md b/Jackson-Release-2.15.3.md new file mode 100644 index 000000000..da44c789c --- /dev/null +++ b/Jackson-Release-2.15.3.md @@ -0,0 +1,32 @@ +Patch version of [2.15](Jackson-Release-2.15), under development as of October 2023. + +Following fixes will be included in this patch release. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#1111](../../jackson-core/pull/1111): Call the right `filterFinishArray()`/`filterFinishObject()` from `FilteringParserDelegate` + +#### [Databind](../../jackson-databind) + +* [#3968](../../jackson-databind/issues/3968): Records with additional constructors failed to deserialize + +### Changes, dataformats + +#### Smile + +* [#384](../../jackson-dataformats-binary/issues/384): `Smile` decoding issue with `NonBlockingByteArrayParser`, concurrency + +#### YAML + +* [#400](../../jackson-dataformats-text/issues/400): `IllegalArgumentException` when attempting to decode invalid UTF-8 surrogate by SnakeYAML +* [#406](../../jackson-dataformats-text/issues/406): `NumberFormatException` from SnakeYAML due to int overflow for corrupt YAML version +* [#426](../../jackson-dataformats-text/issues/426): Update to SnakeYAML 2.1 + +### Changes, other + +#### [Jackson-jr](../../jackson-jr) + +* [#107](../../jackson-jr/issues/107): Cannot deserialize `byte[]` from JSON `null` value + diff --git a/Jackson-Release-2.15.md b/Jackson-Release-2.15.md new file mode 100644 index 000000000..dd2494ff0 --- /dev/null +++ b/Jackson-Release-2.15.md @@ -0,0 +1,312 @@ +[Jackson Version](Jackson-Releases) 2.15 was released on April 23, 2023. +Three release candidates (2.15.0-rc1, -rc2 and -rc3) were released prior to the final 2.15.0. + +This wiki page gives a list of links to all changes (with brief descriptions) that are included, as well as about original plans for bigger changes (and in some cases changes to plans, postponing). + +## Status + +Branch is open (as of May 2023) and new patch releases are expected. + +## Patches + +* [2.15.1](Jackson-Release-2.15.1) (2023-05-16) +* [2.15.2](Jackson-Release-2.15.2) (2023-05-30) +* [2.15.3](Jackson-Release-2.15.3) (not yet released) + +## Documentation + +### Articles, Blog posts + +* [Jackson 2.15 Overview](https://cowtowncoder.medium.com/jackson-2-15-release-overview-ecd10926aa83) + * [Jackson 2.15 floating-point read performance improvements](https://cowtowncoder.medium.com/jackson-2-15-yet-faster-floating-point-reads-fd6d5a0b769a) + * [Jackson 2.15 floating-point write performance improvements](https://medium.com/@cowtowncoder/jackson-2-15-faster-floating-point-writes-too-19958e310185) + +## New Modules + +### Hibernate 6 + +[Hibernate](../../jackson-datatype-hibernate) repo now provides `jackson-datatype-hibernate6` to work with Hibernate 6: it requires JDK 11. + +### Jakarta-variant of JSON-Schema + +[JSON Schema](../../jackson-module-jsonSchema/) module now provides both JAXB API-based "old" `jackson-module-jsonSchema` and new `jackson-module-jsonSchema-jakarta` (Jakarta API) modules. + +## Changes, compatibility + +### Compatibility: platform requirements + +#### JDK + +Same as [Jackson 2.14](Jackson-Release-2.14) + +#### Kotlin + +Jackson 2.15 no longer supports Kotlin 1.4 -- supported versions are 1.5 - 1.8 + +jackson-module-kotlin changes the serialization result of getter-like functions starting with 'is'. For example, a function defined as `fun isValid(): Boolean`, which was previously output with the name valid, is now output with the name `isValid` ([KOTLIN#670](https://github.com/FasterXML/jackson-module-kotlin/issues/670)). + +### Compatibility: transitive dependencies + +#### YAML format module + +As per [YAML#390](../../jackson-dataformats-text/pull/390) `SnakeYAML` dependency upgrade to Snakeyaml 2.0 from 1.33, to resolve [CVE-2022-1471](https://nvd.nist.gov/vuln/detail/CVE-2022-1471). + +Despite seeming major version upgrade, should NOT affect compatibility of Jackson YAML format module -- SnakeYAML version scheme only uses 2 digits so this is more like a minor version upgrade, affecting API that Jackson does not use. +Jackson YAML module will still work with older version of SnakeYAML (such as 1.33) so if necessary, users can forcible downgrade it if necessary for compatibility reasons with other libraries, frameworks. + +##### Guava Module + +Default/baseline Guava dependency now `23.6.1-jre` (was `21.0` in 2.14), but module still works with full range of Guava versions from `14.0` to the latest (`31.1-jre` as of writing this) + +### Compatibility: build/artifact changes + +#### Build JDK changes + +* Hibernate module build now requires JDK 11 (due to Hibernate 6 module) + +#### Jar changes + +* jackson-core is now a [Multi-Release jar](https://openjdk.org/jeps/238) to support more optimal handling for newer JDKs wrt number parsing. + +## Changes, behavior + +### Processing Limits + +#### General + +2.15 adds maximum processing limits for certain aspects of parsing as described below. +Issues were included under umbrella issue [#637](../../jackson-core/issues/637). + +Implemented limits are: + +* Expressed in input units -- `byte`s or `char`s -- depending on input source +* Defined as longest allowed length, but not necessarily imposed at 100% accuracy: that is, if maximum allowed length is specified as 1000 units, something with length of, say 1003 may not cause exception (but 1500 would) +* Defined in new `StreamReadConstraints` class, configurable on per-`JsonFactory` basis + +#### Maximum number token lengths + +Implementation of [jackson-core#815](../../jackson-core/issues/815) sets up upper limit on maximum length of numeric tokens read from input. +Default limit is: + +* Maximum 1000 for both integral and floating-point numbers. + +Note that dataformat modules need to add support for enforcing the limits so coverage may vary: as usual, JSON parser will have the widest coverage initially. + +#### Maximum String value length + +Implementation of [jackson-core#863](../../jackson-core/issues/863) sets upper limit on maximum length of String values read from input. Default limit is: + +* 20_000_000 (20 million) input units bytes/chars depending on input source) in 2.15.1, via [jackson-core#1014](../../jackson-core/issues/1014) + * Initial maximum was 5_000_000 (5 million) input units in 2.15.0 relase + +#### Maximum Input nesting depth + +Implementation of [jackson-core#943](../../jackson-core/pull/943) sets upper limit on maximum input nesting (Objects, Arrays) read from input. Default limit is: + +* 1000 levels + +### Changes, behavior, other + +* Java 8 Date/Time handling: + * https://github.com/FasterXML/jackson-modules-java8/pull/267: Normalize zone id during ZonedDateTime deserialization + +----- + +## Major focus areas, features included + +### Processing limits + +* Implemented limits -- as explained earlier -- for + * Maximum Number and String token lengths ([core#815](../../jackson-core/issues/815), [core#863](../../jackson-core/issues/863)) + * Maximum input nesting ([core#943](../../jackson-core/pull/943)) + +### Further number decoding performance optimizations + +Use of [FastDoubleParser](https://github.com/wrandelshofer/FastDoubleParser) library in more places, more widely (2.14 already used it in some places) may yield incremental performance improvements. Also uses the latest release of FDP. + +### Other Most Wanted Issues included + +* [#2667](../../jackson-databind/issues/2667): Add `@EnumNaming`, `EnumNamingStrategy` to allow use of naming strategies for Enums +* [#2968](../../jackson-databind/issues/2968): Deserialization of `@JsonTypeInfo` annotated type fails with missing type id even for explicit concrete subtypes + +## Major focus areas planned -- but postponed due to lack of time + +### Rewrite Creator Detection wrt Property Discovery + +Postponed already since at least 2.13, needs to become priority for 2.16 + +### Some other processing limits + +* Writer-side max-nesting was planned, did not make it +* Maximum input (input doc) size also planned but not included + +----- + +## Full Change list + +### Changes, core + +#### [Annotations](../../jackson-annotations) + +* [#211](../../jackson-annotations/issues/211): Add `JsonFormat.Feature`s: READ_UNKNOWN_ENUM_VALUES_AS_NULL, READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE +* [#214](../../jackson-annotations/issues/214): Add NOTICE file with copyright information +* [#221](../../jackson-annotations/issues/221): Add `JsonFormat.Feature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS` + +#### [Streaming](../../jackson-core) + +* [#815](../../jackson-core/issues/815): Add numeric value size limits via `StreamReadConstraints` (fixes `sonatype-2022-6438`) +* [#844](../../jackson-core/issues/844): Add SLSA provenance via build script +* [#851](../../jackson-core/pull/851): Add `StreamReadFeature.USE_FAST_BIG_NUMBER_PARSER` to enable faster `BigDecimal`, `BigInteger` parsing +* [#863](../../jackson-core/issues/863): Add `StreamReadConstraints` limit for longest textual value to allow (default: 5M) +* [#865](../../jackson-core/issues/865): Optimize parsing 19 digit longs +* [#897](../../jackson-core/issues/897): Note that jackson-core 2.15 is now a multi-release jar (for more optimized number parsing for JDKs beyond 8) +* [#898](../../jackson-core/issues/898): Possible flaw in `TokenFilterContext#skipParentChecks()` +* [#902](../../jackson-core/issues/902): Add `Object JsonParser.getNumberValueDeferred()` method to allow for deferred decoding in some cases +* [#921](../../jackson-core/issues/921): Add `JsonFactory.Feature.CHARSET_DETECTION` to disable charset detection +* [#943](../../jackson-core/pull/943): Add `StreamReadConstraints.maxNestingDepth()` to constraint max nesting depth (default: 1000) +* [#948](../../jackson-core/issues/948): Use `StreamConstraintsException` in name canonicalizers +* [#962](../../jackson-core/issues/962): Offer a way to directly set `StreamReadConstraints` via `JsonFactory` (not just Builder) +* [#968](../../jackson-core/issues/968): Prevent inefficient internal conversion from `BigDecimal` to `BigInteger` wrt ultra-large scale +* [#984](../../jackson-core/issues/984): Add `JsonGenerator.copyCurrentEventExact` as alternative to `copyCurrentEvent()` +* Build uses package type "jar" but still produces valid OSGi bundle (changed needed to keep class timestamps with Reproducible Build) + +#### [Databind](../../jackson-databind) + +* [#2536](../../jackson-databind/issues/2536): Add `EnumFeature.READ_ENUM_KEYS_USING_INDEX` to work with existing "WRITE_ENUM_KEYS_USING_INDEX" +* [#2667](../../jackson-databind/issues/2667): Add `@EnumNaming`, `EnumNamingStrategy` to allow use of naming strategies for Enums +* [#2968](../../jackson-databind/issues/2968): Deserialization of `@JsonTypeInfo` annotated type fails with missing type id even for explicit concrete subtypes +* [#2974](../../jackson-databind/issues/2974): Null coercion with `@JsonSetter` does not work with `java.lang.Record` +* [#2992](../../jackson-databind/issues/2992): Properties naming strategy do not work with Record +* [#3053](../../jackson-databind/issues/3053): Allow serializing enums to lowercase (`EnumFeature.WRITE_ENUMS_TO_LOWERCASE`) +* [#3180](../../jackson-databind/issues/3180): Support `@JsonCreator` annotation on record classes +* [#3262](../../jackson-databind/issues/3262): `InvalidDefinitionException` when calling `mapper.createObjectNode().putPOJO` +* [#3297](../../jackson-databind/issues/3297): `@JsonDeserialize(converter = ...)` does not work with Records +* [#3342](../../jackson-databind/issues/3342): `JsonTypeInfo.As.EXTERNAL_PROPERTY` does not work with record wrappers +* [#3352](../../jackson-databind/issues/3352): Do not require the usage of opens in a modular app when using records +* [#3566](../../jackson-databind/issues/3566): Cannot use both `JsonCreator.Mode.DELEGATING` and `JsonCreator.Mode.PROPERTIES` static creator factory methods for Enums +* [#3637](../../jackson-databind/issues/3637): Add enum features into `@JsonFormat.Feature` +* [#3638](../../jackson-databind/issues/3638): Case-insensitive and number-based enum deserialization are (unnecessarily) mutually exclusive +* [#3651](../../jackson-databind/issues/3651): Deprecate "exact values" setting from `JsonNodeFactory`, replace with `JsonNodeFeature.STRIP_TRAILING_BIGDECIMAL_ZEROES` +* [#3654](../../jackson-databind/issues/3654): Infer `@JsonCreator(mode = Mode.DELEGATING)` from use of `@JsonValue`) +* [#3676](../../jackson-databind/issues/3676): Allow use of `@JsonCreator(mode = Mode.PROPERTIES)` creator for POJOs with "empty String" coercion +* [#3680](../../jackson-databind/issues/3680): Timestamp in classes inside jar showing 02/01/1980 +* [#3682](../../jackson-databind/issues/3682): Transient `Field`s are not ignored as Mutators if there is visible Getter +* [#3690](../../jackson-databind/issues/3690): Incorrect target type for arrays when disabling coercion +* [#3708](../../jackson-databind/issues/3708): Seems like `java.nio.file.Path` is safe for Android API level 26 +* [#3730](../../jackson-databind/issues/3730): Add support in `TokenBuffer` for lazily decoded (big) numbers +* [#3736](../../jackson-databind/issues/3736): Try to avoid auto-detecting Fields for Record types +* [#3742](../../jackson-databind/issues/3742): schemaType of `LongSerializer` is wrong +* [#3745](../../jackson-databind/issues/3745): Deprecate classes in package `com.fasterxml.jackson.databind.jsonschema` +* [#3748](../../jackson-databind/issues/3748): `DelegatingDeserializer` missing override of `getAbsentValue()` (and couple of other methods) +* [#3771](../../jackson-databind/issues/3771): Classloader leak: DEFAULT_ANNOTATION_INTROSPECTOR holds annotation reference +* [#3791](../../jackson-databind/pull/3791): Flush readonly map together with shared on `SerializerCache.flush()` +* [#3796](../../jackson-databind/issues/3796): Enum Deserialisation Failing with Polymorphic type validator +* [#3809](../../jackson-databind/issues/3809): Add Stream-friendly alternative to `JsonNode.fields()`: `Set> properties()` +* [#3814](../../jackson-databind/issues/3814): Enhance `StdNodeBasedDeserializer` to support `readerForUpdating` +* [#3816](../../jackson-databind/issues/3816): `TokenBuffer`does not implement `writeString(Reader reader, int len)` +* [#3819](../../jackson-databind/pull/3819): Add convenience method `SimpleBeanPropertyFilter.filterOutAll()` as symmetric counterpart of `serializeAll()` +* [#3836](../../jackson-databind/issues/3836): `Optional` is not recognized as boolean field +* [#3853](../../jackson-databind/issues/3853): Add `MapperFeature.REQUIRE_TYPE_ID_FOR_SUBTYPES` to enable/disable strict subtype Type Id handling +* [#3876](../../jackson-databind/issues/3876): `TypeFactory` cache performance degradation with `constructSpecializedType()` + +### Changes, data formats + +#### CBOR + +* [#347](../../jackson-dataformats-binary/issues/347): Add support for CBOR stringref extension (`CBORGenerator.Feature.STRINGREF`) +* [#356](../../jackson-dataformats-binary/issues/356): Add `CBORGenerator.Feature.WRITE_MINIMAL_DOUBLES` for writing `double`s as `float`s if safe to do so +* [#373](../../jackson-dataformats-binary/issues/373): Remove optimized `CBORParser.nextTextValue()` implementation + +#### TOML + +* [#387](../../jackson-dataformats-text/issues/387): Stack overflow (50083) found by OSS-Fuzz +* [#411](../../jackson-dataformats-text/issues/411): Fuzzer-found issue #57237 (buffer boundary condition) + +#### [XML](../../jackson-dataformat-xml) + +* [#286](../../jackson-dataformat-xml/issues/286): Conflict between `@JsonIdentityInfo` and Unwrapped Lists +* [#533](../../jackson-dataformat-xml/issues/533): (Android) java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/xml/stream/XMLInputFactory +* [#542](../../jackson-dataformat-xml/issues/542): `XmlMapper` does not find no-argument record constructor for deserialization of empty XML +* [#547](../../jackson-dataformat-xml/issues/547): Parsing empty tags without default no-arguments constructor fails in 2.14 +* [#560](../../jackson-dataformat-xml/issues/560): Add `DefaultXmlPrettyPrinter.withCustomNewLine()` to configure linefeed for XML pretty-printing +* [#578](../../jackson-dataformat-xml/issues/578): `XmlMapper` serializes `@JsonAppend` property twice +* [#584](../../jackson-dataformat-xml/issues/584): Deserialization of `null` String values in Arrays / `Collection`s not working as expected + +#### YAML + +* [#373](../../jackson-dataformats-text/issues/373): Positive numbers with plus sign not quoted correctly with `ALWAYS_QUOTE_NUMBERS_AS_STRINGS` +* [#388](../../jackson-dataformats-text/issues/388): Add `YAMLParser.Feature.PARSE_BOOLEAN_LIKE_WORDS_AS_STRINGS` to allow parsing "boolean" words as strings instead of booleans +* [#390](../../jackson-dataformats-text/pull/390): Upgrade to Snakeyaml 2.0 (resolves CVE-2022-1471) +* [#415](../../jackson-dataformats-text/pull/415): Use `LoaderOptions.allowDuplicateKeys` to enforce duplicate key detection + +### Changes, datatypes + +#### Guava + +* [#7](../../jackson-datatypes-collections/issues/7): Add support for `WRITE_SORTED_MAP_ENTRIES` for Guava `Multimap`s +* [#92](../../jackson-datatypes-collections/issues/92): `@JsonDeserialize.contentConverter` does not work for non-builtin collections +* [#102](../../jackson-datatypes-collections/issues/102): accept lowerCase enums for `Range` `BoundType` serialization +* [#105](../../jackson-datatypes-collections/issues/105): Update default Guava dependency for Jackson 2.15 from Guava 21.0 to 23.6.1-jre + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#158](../../jackson-datatype-hibernate/issues/158): Add `jackson-datatype-hibernate6` for Hibernate 6 + +#### [Java 8 date/time](../../jackson-modules-java8/datetime) + +* [#259](../../jackson-modules-java8/issues/259): Wrong module auto-registered when using JPMS +* [#266](../../jackson-modules-java8/pull/266): Optimize `InstantDeserializer` method `replaceZeroOffsetAsZIfNecessary()` +* [#267](../../jackson-modules-java8/pull/267): Normalize zone id during ZonedDateTime deserialization + +#### [JSONP/JSR-353](../../jackson-datatypes-misc) + +* [#31](../../jackson-datatypes-misc/pull/31): Fix issue with `BigInteger` handling +* [#34](../../jackson-datatypes-misc/pull/34): Upgrade `jakarta.json-api` dependency to 2.1.1 (from 2.0.0) + +#### [org.json](../../jackson-datatypes-misc) + +* [#35](../../jackson-datatypes-misc/issues/35): Update `org.json` dependency from `20190722` to `20230227` + + +### Changes, Other modules + +#### Afterburner + +* [#190](../../jackson-modules-base/issues/190): Filter annotated by JsonInclude.Include.CUSTOM does not get called if the field is null with Afterburner/Blackbird module registered + +#### [JSON Schema](../../jackson-module-jsonSchema/) + +* [#151](../../jackson-module-jsonSchema/pull/151): Support jakarta EE 9: split into 2 modules, old `jackson-module-jsonSchema` and new `jackson-module-jsonSchema-jakarta` + +### Changes, JVM Languages + +#### [Kotlin](../../jackson-module-kotlin) + +* [#396](../../jackson-module-kotlin/issues/396): (regression) no default no-arguments constructor found +* [#554](../../jackson-module-kotlin/issues/554): Add extension function for addMixin. +* [#580](../../jackson-module-kotlin/issues/580): Lazy load UNIT_TYPE +* [#627](../../jackson-module-kotlin/issues/627): Merge creator cache for Constructor and Method +* [#628](../../jackson-module-kotlin/issues/628): Remove unnecessary cache +* [#629](../../jackson-module-kotlin/issues/629): Changed to not cache valueParameters +* [#631](../../jackson-module-kotlin/issues/631): Fix minor bugs in SimpleModule.addSerializer/addDeserializer +* [#634](../../jackson-module-kotlin/issues/634): Fix ReflectionCache to be serializable +* [#641](../../jackson-module-kotlin/issues/641): Fixed is-getter names to match parameters and fields (NB: this changes behavior for some use cases) +* [#646](../../jackson-module-kotlin/issues/646): Drop Kotlin 1.4 support from Kotlin module 2.15 +* [#647](../../jackson-module-kotlin/issues/647): Added deprecation to MissingKotlinParameterException +* [#654](../../jackson-module-kotlin/issues/654): Change MKPE.parameter property to transient(fixes #572) + +#### [Scala](../../jackson-module-scala) + +* [#622](../../jackson-module-scala/pull/622): Remove use of `ClassKey` +* [#628](../../jackson-module-scala/issues/628): Cannot deserialize `None` values in a tuple + +### Changes, Providers + +#### [JAX-RS Providers](../../jackson-jaxrs-providers) + +* [#170](../../jackson-jaxrs-providers/issues/170): Add `JaxRsFeature.READ_FULL_STREAM` to consume all content, on by default + +#### [Jakarts-RS Providers](../../jackson-jakarta-rs-providers) + +* [#16](../../jackson-jakarta-rs-providers/issues/16): Add `JakartaRsFeature.READ_FULL_STREAM` to consume all content, on by default + diff --git a/Jackson-Release-2.16.md b/Jackson-Release-2.16.md new file mode 100644 index 000000000..774ec0649 --- /dev/null +++ b/Jackson-Release-2.16.md @@ -0,0 +1,242 @@ +[Jackson Version](Jackson-Releases) 2.16 development started in May 2023, after release of [2.15](Jackson-Release-2.15). + +This wiki page gives a list of links to all changes (with brief descriptions) that will be included, as well as about plans for bigger changes. + +## Status + +Branch is under development as of September 2023. + +## Patches + +No release yet + +## Documentation + +### Articles, Blog posts + +## New Modules + +#### "Jakarta" variant of Guice module + +[Guice 7](https://github.com/FasterXML/jackson-modules-base/tree/2.16/guice7) module is a "Jakarta" variant with `jakarta.inject` instead of `javax.inject`): needed to work with Guice 7. + +## Changes, compatibility + +### Compatibility: platform requirements + +#### JDK + +Same as [Jackson 2.15](Jackson-Release-2.15) + +#### Kotlin + +`kotlin-core` versions supported changed, as follows (see [module-kotlin#684](../../jackson-module-kotlin/pull/684) for details) + +* Jackson 2.15.x: Kotlin-core 1.5 - 1.8 +* Jackson 2.16.x: Kotlin-core 1.6 - 1.9 + +that is, support for `1.5` was dropped and support for `1.9` now verified. + +jackson-module-kotlin removes MissingKotlinParameterException and replaces it with MismatchedInputException, which was its parent class([KOTLIN#617](https://github.com/FasterXML/jackson-module-kotlin/issues/617)). + +## Changes, behavior + +### Streaming (`jackson-core`) + +* Default setting for `StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` (aka `JsonParser.Feature.INCLUDE_SOURCE_IN_LOCATION`) changed to `false` for improved defaults wrt security (less information leakage by default). + * See [jackson-core#991](../../jackson-core/issues/991) for details. + * Message for non-included source now "REDACTED" (instead of "UNKNOWN"), see [jackson-core#1039](../../jackson-core/issues/1039) for details. +* Behavior of `Version` (accessible by `JsonFactory.version()` and similar accessors in `JsonParser`, `JsonGenerator` etc) comparsion (`Version.compareTo()`) changed to consider Snapshot version, if any, + +### Databind + +* `java.util.Locale` coercion from empty String will now result in `Locale.ROOT` (and not `null`) even if `DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT` is enabled (see [databind#4009](../../jackson-databind/issues/4009)) + +### Processing Limits (for jackson-core, format modules) + +#### General + +2.16 adds maximum processing limits for certain aspects of content generation (writing, serialization) as described below. +Addition of the general feature (and one of limits) was included under [jackson-core#1048](../../jackson-core/issues/1048). + +Implemented limits are: + +* Expressed in input units -- `byte`s or `char`s -- depending on input source +* Defined as longest allowed length, but not necessarily imposed at 100% accuracy: that is, if maximum allowed length is specified as 1000 units, something with length of, say 1003 may not cause exception (but 1500 would) +* Defined in new `StreamWriteConstraints` class, configurable on per-`JsonFactory` basis + +#### Maximum Document length + +Implementation of [jackson-core#1046](../../jackson-core/pull/1046) sets upper limit of longest accepted input for parsing. +Default limits is: + +* Unlimited (marked as `-1`) -- no maximum length specified for input + +#### Maximum Output nesting depth + +Implementation of [jackson-core#1055](../../jackson-core/pull/1055) sets upper limit on maximum output nesting (Objects, Arrays) when generating output (writing JSON etc). Default limit is: + +* 1000 levels + +#### Maximum Property name length + +Implementation of [jackson-core#1047](../../jackson-core/issues/1047) sets maximum length of allowed Property names when parsing input. +Default limit is: + +* 50,000 units (bytes or chars, depending on input source) + +----- + +## Major focus areas, features included + +### Improved/Extended Processing Limits + +Implemented, See Above. + +### Canonical JSON Output + +Partial work, including: + +* [#1042](../../jackson-core/pull/1042): Allow configuring spaces before and/or after the colon in `DefaultPrettyPrinter` +* [#3965](../../jackson-databind/issues/3965): Add `JsonNodeFeature.WRITE_PROPERTIES_SORTED` for sorting `ObjectNode` properties on serialization + +### Rewrite of Property Introspection (internal) + +Not Started Yet (same old story...) + +----- + +## Full Change list + +### Changes, core + +#### [Annotations](../../jackson-annotations) + +* [#223](../../jackson-annotations/pull/223): Add new `OptBoolean` valued property in `@JsonTypeInfo` to allow per-type configuration of strict type id handling +* [#229](../../jackson-annotations/pull/229): Add `JsonTypeInfo.Value` object (backport from 3.0) +* [#234](../../jackson-annotations/pull/234): Add new `JsonTypeInfo.Id.SIMPLE_NAME` + +#### [Streaming](../../jackson-core) + +* [#991](../../jackson-core/issues/991): Change `StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` default to `false` in Jackson 2.16 +* [#1007](../../jackson-core/issues/1007): Improve error message for `StreamReadConstraints` violations +* [#1015](../../jackson-core/issues/1015): `JsonFactory` implementations should respect `CANONICALIZE_FIELD_NAMES` +* [#1035](../../jackson-core/issues/1035): Root cause for failing test for `testMangledIntsBytes()` in `ParserErrorHandlingTest` +* [#1036](../../jackson-core/pull/1036): Allow all array elements in `JsonPointerBasedFilter` +* [#1039](../../jackson-core/issues/1039): Indicate explicitly blocked sources as "REDACTED" instead of "UNKNOWN" in `JsonLocation` +* [#1041](../../jackson-core/issues/1041): Start using AssertJ in unit tests +* [#1042](../../jackson-core/pull/1042): Allow configuring spaces before and/or after the colon in `DefaultPrettyPrinter` (for Canonical JSON) +* [#1046](../../jackson-core/issues/1046): Add configurable limit for the maximum number of bytes/chars of content to parse before failing +* [#1047](../../jackson-core/issues/1047): Add configurable limit for the maximum length of Object property names to parse before failing +* [#1048](../../jackson-core/issues/1048): Add configurable processing limits for JSON generator (`StreamWriteConstraints`) +* [#1050](../../jackson-core/issues/1050): Compare `_snapshotInfo` in `Version` +* [#1051](../../jackson-core/pull/1051): Add `JsonGeneratorDecorator` to allow decorating `JsonGenerator`s +* [#1064](../../jackson-core/pull/1064): Add full set of `BufferRecyclerPool` implementations +* [#1066](../../jackson-core/issues/1066): Add configurable error report behavior via `ErrorReportConfiguration` +* [#1081](../../jackson-core/pull/1081): Make `ByteSourceJsonBootstrapper` use `StringReader` for < 8KiB byte[] inputs +* [#1089](../../jackson-core/issues/1089): Allow pluggable buffer recycling via new `BufferRecyclerPool` extension point + +#### [Databind](../../jackson-databind) + +* [#2502](../../jackson-databind/issues/2502): Add a way to configure caches Jackson uses +* [#2787](../../jackson-databind/issues/2787): Mix-ins do not work for `Enum`s +* [#3251](../../jackson-databind/issues/3251): Generic class with generic field of runtime type `Double` is deserialized as `BigDecimal` when used with `@JsonTypeInfo` and `JsonTypeInfo.As.EXISTING_PROPERTY` +* [#3647](../../jackson-databind/issues/3647): `@JsonIgnoreProperties` not working with `@JsonValue` +* [#3780](../../jackson-databind/issues/3780): Deprecated JsonNode.with(String) suggests using JsonNode.withObject(String) but it is not the same thing +* [#3838](../../jackson-databind/issues/3838): Difference in the handling of `ObjectId-property` in `JsonIdentityInfo` depending on the deserialization route +* [#3877](../../jackson-databind/issues/3877): Add new `OptBoolean` valued property in `@JsonTypeInfo`, handling, to allow per-polymorphic type loose Type Id handling +* [#3906](../../jackson-databind/issues/3906): Regression: 2.15.0 breaks deserialization for records when `mapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE)` +* [#3924](../../jackson-databind/issues/3924): Incorrect target type when disabling coercion, trying to deserialize String from Array/Object +* [#3928](../../jackson-databind/issues/3928): `@JsonProperty` on constructor parameter changes default field serialization order +* [#3950](../../jackson-databind/issues/3950): Create new `JavaType` subtype `IterationType` (extending `SimpleType`) +* [#3953](../../jackson-databind/pull/3953): Use `JsonTypeInfo.Value` for annotation handling +* [#3965](../../jackson-databind/issues/3965): Add `JsonNodeFeature.WRITE_PROPERTIES_SORTED` for sorting `ObjectNode` properties on serialization (for Canonical JSON) +* [#4008](../../jackson-databind/pull/4008): Optimize `ObjectNode` findValue(s) and findParent(s) fast paths +* [#4009](../../jackson-databind/issues/4009): Locale "" is deserialised as `null` if `ACCEPT_EMPTY_STRING_AS_NULL_OBJECT` is enabled +* [#4011](../../jackson-databind/issues/4011): Add guardrail setting for `TypeParser` handling of type parameters +* [#4036](../../jackson-databind/pull/4036): Use `@JsonProperty` for Enum values also when `READ_ENUMS_USING_TO_STRING` enabled +* [#4037](../../jackson-databind/pull/4037): Fix `Enum` deserialization to use `@JsonProperty`, `@JsonAlias` even if `EnumNamingStrategy` used +* [#4039](../../jackson-databind/pull/4039): Use `@JsonProperty` and lowercase feature when serializing Enums despite using toString() +* [#4040](../../jackson-databind/pull/4040): Use `@JsonProperty` over `EnumNamingStrategy` for Enum serialization +* [#4041](../../jackson-databind/pull/4041): Actually cache EnumValues#internalMap +* [#4047](../../jackson-databind/issues/4047): `ObjectMapper.valueToTree()` will ignore the configuration `SerializationFeature.WRAP_ROOT_VALUE` +* [#4056](../../jackson-databind/pull/4056): Provide the "ObjectMapper.treeToValue(TreeNode, TypeReference)" method +* [#4060](../../jackson-databind/pull/4060): Expose `NativeImageUtil.isRunningInNativeImage()` method +* [#4061](../../jackson-databind/issues/4061): Add JsonTypeInfo.Id.SIMPLE_NAME which defaults type id to `Class.getSimpleName()` +* [#4071](../../jackson-databind/issues/4071): Impossible to deserialize custom `Throwable` sub-classes that do not have single-String constructors +* [#4078](../../jackson-databind/issues/4078): `java.desktop` module is no longer optional +* [#4082](../../jackson-databind/issues/4082): `ClassUtil` fails with `java.lang.reflect.InaccessibleObjectException` trying to setAccessible on `OptionalInt` with JDK 17+ +* [#4090](../../jackson-databind/pull/4090): Support sequenced collections (JDK 21) +* [#4095](../../jackson-databind/issues/4095): Add `withObjectProperty(String)`, `withArrayProperty(String)` in `JsonNode` +* [#4096](../../jackson-databind/issues/4096): Change `JsonNode.withObject(String)` to work similar to `withArray()` wrt argument +* [#4144](../../jackson-databind/pull/4144): Log WARN if deprecated subclasses of `PropertyNamingStrategy` is used +* [#4145](../../jackson-databind/issues/4145): NPE when transforming a tree to a model class object, at `ArrayNode.elements()` +* [#4153](../../jackson-databind/issues/4153): Deprecated `ObjectReader.withType(Type)` has no direct replacement; need `forType(Type)` + +### Changes, data formats + +#### [Smile](../../jackson-dataformats-binary) + +* [#403](../../jackson-dataformats-binary/issues/403): Remove Smile-specific buffer-recycling + +#### [XML](../../jackson-dataformat-xml) + +* [#148](../../jackson-dataformat/issues/148): `@JacksonXmlElementWrapper` not respected when serializing `Iterator`s / `Iterable`s +* [#302](../../jackson-dataformat/issues/302): Unable to serialize top-level Java8 Stream +* [#329](../../jackson-dataformat/issues/329): `@JacksonXmlElementWrapper` ignored on `Stream` +* [#599](../../jackson-dataformat/pull/599): Use `IterationType` in `TypeUtil` + +#### YAML + +* [#400](../../jackson-dataformats-text/issues/400): `IllegalArgumentException` when attempting to decode invalid UTF-8 surrogate by SnakeYAML +* [#406](../../jackson-dataformats-text/issues/406): `NumberFormatException` from SnakeYAML due to int overflow for corrupt YAML version +* [#426](../../jackson-dataformats-text/issues/426): Update to SnakeYAML 2.1 + +### Changes, datatypes + +#### [Java 8 date/time](../../jackson-modules-java8/datetime) + +* [#272](../../jackson-modules-java8/issues/272): `JsonFormat.Feature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS` not respected when deserialising `Instant`s + +#### Guava + +* [#90](../../jackson-datatypes-collections/issues/90): Cache Serialization serializes empty contents +* [#113](../../jackson-datatypes-collections/issues/113): Update default Guava dependency for Jackson 2.16 from Guava 23.x to 25.x +* [#116](../../jackson-datatypes-collections/pull/116): Suppport simple deserialization of `Cache` +* [#117](../../jackson-datatypes-collections/issues/117): `ImmutableRangeSet` fails to deserialize without explicit deserializer + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#140](../../jackson-datatype-hibernate/issues/140): `HibernateModule.REPLACE_PERSISTENT_COLLECTIONS` not working when `FetchType.EAGER` + +#### [JSONP/JSR-353](../../jackson-datatypes-misc) + +* [#37](../../jackson-datatypes-misc/pull/37): Fix class path scaning on each deserialization + +### Changes, Other modules + +#### Afterburner + +* [#216](../../jackson-modules-base/pull/216): Disable when running in native-image + +#### Blackbird + +* [#181](../../jackson-modules-base/pull/181): BlackBird proxy object error in Java 17 +* [#216](../../jackson-modules-base/pull/216): Disable when running in native-image + +#### Guice + +* [#209](../../jackson-modules-base/pull/209): Add guice7 (`jakarta.inject`) module + +#### Jakarta XML Bind Annotations + +* [#219](../../jackson-modules-base/issues/219): Using `jackson-module-jakarta-xmlbind-annotations` 2.15.2 fails in OSGi Environment with JAXB 4 + +### Changes, JVM Languages + +#### [Kotlin](../../jackson-module-kotlin) + +### Changes, Providers + +... + diff --git a/Jackson-Release-2.3.1.md b/Jackson-Release-2.3.1.md new file mode 100644 index 000000000..058549224 --- /dev/null +++ b/Jackson-Release-2.3.1.md @@ -0,0 +1,38 @@ +Patch release was made in 28-Dec-2013 and contains following fixes + +### Changes, core + +#### [Core Streaming](../../jackson-core) + +No functional changes. + +#### [Core Databind](../../jackson-databind) + +* [#346](../../jackson-databind/issues/346): Fix problem deserializing `ObjectNode`, with `@JsonCreator`, empty JSON Object +* [#358](../../jackson-databind/issues/358): `IterableSerializer` ignoring annotated content serializer +* [#361](../../jackson-databind/issues/361): Reduce sync overhead for `SerializerCache` by using `volatile`, double-locking +* [#362](../../jackson-databind/issues/362): UUID output as Base64 String with `ObjectMapper.convertValue()` +* [#367](../../jackson-databind/issues/367): Make `TypeNameIdResolver` call `TypeResolver` for resolving base type. +* Related: fix for [Afterburner#38](../../jackson-module-afterburner/issues/38) -- need to remove `@JacksonStdImpl` from `RawSerializer`, to avoid accidental removal of proper handling. + +### Changes, [JAX-RS](../../jackson-jaxrs-providers) + +* [#37](../../jackson-jaxrs-providers/issues/37): Enable use of JAX-RS 2.0 API + +### Changes, Data formats + +#### [XML](../../jackson-dataformat-xml) + +* [#84](../../jackson-dataformat-xml/issues/84): Problem with `@JacksonXmlText` when property output is suppressed + +### Changes, Datatypes + +#### [Joda](../../jackson-datatype-joda) + +* [#21](../../jackson-datatype-joda/issues/21): `DateTimeSerializer` should take the configured time zone into account + +### Changes, other modules + +#### [Afterburner](../../jackson-module-afterburner) + +* [#38](../../jackson-module-afterburner/issues/38): Handling of `@JsonRawValue` broken (requires 2.3.1 of `jackson-databind` as well) diff --git a/Jackson-Release-2.3.2.md b/Jackson-Release-2.3.2.md new file mode 100644 index 000000000..39e7068aa --- /dev/null +++ b/Jackson-Release-2.3.2.md @@ -0,0 +1,48 @@ +Patch version released on 01-Mar-2014. Following changes included. + +### Changes, core + +#### [Core Streaming](../../jackson-core) + +* [#126](../../jackson-core/issues/126): Revert some 1.6 back to make core lib work with Android 2.2 (FroYo) (NOTE: temporary; not merged in 2.4) +* [#129](../../jackson-core/issues/129): Missing delegation method, `JsonParserDelegate.isExpectedStartArrayToken()` + +#### [Core Databind](../../jackson-databind) + +* [#378](../../jackson-databind/issues/378): Fix a problem with custom `Enum` deserializer construction +* [#379](../../jackson-databind/issues/379): Fix a problem with (re)naming of Creator properties; needed to make [Paranamer](../../jackson-module-paranamer/) module work with `NamingStrategy` +* [#398](../../jackson-databind/issues/398): Should deserialize empty (not null) URI from empty String +* [#406](../../jackson-databind/issues/406): `@JsonTypeIdResolver` not working with external type ids +* [#411](../../jackson-databind/issues/411): `NumberDeserializers` throws exception with `NaN` and +/- Infinity +* [#412](../../jackson-databind/issues/412): `ObjectMapper.writerWithType()` does not change root name being used +* Added `BeanSerializerBase._serializeObjectId()` needed by modules that override standard BeanSerializer; specifically, XML module. + +### Changes, [JAX-RS](../../jackson-jaxrs-providers) + +* [#40](../../jackson-jaxrs-providers/issues/40): Allow use of "text/x-json" content type by default +* [#42](../../jackson-jaxrs-providers/issues/42): Add CBOR provider (using new [Jackson CBOR module](../../jackson-dataformat-cbor)) +* [#43](../../jackson-jaxrs-providers/issues/43): Verify that format-specific mappers are properly overridden (like `XmlMapper` for xml) + +### Changes, Data formats + +#### [CSV](../../jackson-dataformat-csv) + +* [#15](../../jackson-dataformat-csv/issues/15): Problem with SmileGenerator._writeBytes(...), bounds checks + +#### [XML](../../jackson-dataformat-xml) + +* [#81](../../jackson-dataformat-xml/issues/81): Serialization of a polymorphic class As.Property with Identity info doesn't work (NOTE! Depends on a related fix #129 in `jackson-databind`, see above) +* [#91](../../jackson-dataformat-xml/issues/91): `@JsonPropertyOrder` not working correctly with attributes +* [#103](../../jackson-dataformat-xml/issues/103): Serialize wrapped 'null' Lists correctly + +### Changes, Data types + +#### [Joda](../../jackson-datatype-joda) + +* [#16](../../jackson-datatype-joda/issues/16): Adjust existing Date/Time deserializers to support `DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE` + +### Changes, other modules + +#### Afterburner + +* [#39](../../jackson-module-afterburner/issues/39): Afterburner does not respect `JsonInclude.Include.NON_EMPTY` diff --git a/Jackson-Release-2.3.3.md b/Jackson-Release-2.3.3.md new file mode 100644 index 000000000..fbde155e5 --- /dev/null +++ b/Jackson-Release-2.3.3.md @@ -0,0 +1,69 @@ +Patch version released on 10-Apr-2014. Following changes included. + +Here are accumulated changes so far. + +### Changes, core + +#### [Core Databind](../../jackson-databind) + +* [#420](../../jackson-databind/issues/420): Remove 'final' modifier from `BeanDeserializerBase.deserializeWithType` +* [#422](../../jackson-databind/issues/422): Allow use of "True" and "False" as aliases for booleans when coercing from JSON String +* [#423](../../jackson-databind/issues/423): Fix `CalendarSerializer` to work with custom format +* [#433](../../jackson-databind/issues/433): `ObjectMapper.valueToTree()` wraps `JsonSerializable` objects into a `POJONode` + +### Changes, [JAX-RS](../../jackson-jaxrs-providers) + +* [#41](../../jackson-jaxrs-providers/issues/41): Try to resolve problems with RESTeasy, missing `_configForWriting` override. + +### Changes, data formats + +#### [Avro](../../jackson-dataformat-avro) + +* [#6] (../../jackson-dataformat-avro/issues/6): Nested Map type fields do not work +* [#7] (../../jackson-dataformat-avro/issues/7): Add `AvroGenerator.Feature.IGNORE_UNKWNOWN` to allow filtering of properties that are not defined in Schema, during output + +#### [CSV](../../jackson-dataformat-csv) + +* [#33](../../jackson-dataformat-csv/issues/33): CSV is written without column separators if first column is null +* Fix a minor problem with `CsvSchema` defaults: was setting default escape char to be same as default quote (i.e. double-quote) + +#### [CBOR](../../jackson-dataformat-cbor) + +* [#2](../../jackson-dataformat-cbor/issues/2): Negative Long values written as zero + +#### [XML](../../jackson-dataformat-xml) + +* [#101](../../jackson-dataformat-xml/issues/101): Invalid index error when deserializing unwrapped list element with multiple attributes + +### Changes, data types + +#### [Guava](../../jackson-datatype-guava) + +* [#37](../../jackson-datatype-guava/issues/37): `Optional` not correctly deserialized from JSON null, if inside a Collection +* [#41](../../jackson-datatype-guava/issues/41): `Multimap` serializer does not honor `@JsonInclude(JsonInclude.Include.NON_EMPTY)` + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#47](../../jackson-datatype-hibernate/issues/47): Feature.USE_TRANSIENT_ANNOTATION does not work + +#### [Joda](../../jackson-datatype-joda) + +* [#32](../../jackson-datatype-joda/issues/32): Support use of `@JsonFormat(shape=...)` for timestamp/string choice + +### Changes, other modules + +#### [Afterburner](../../jackson-module-afterburner) + +* [#28](../../jackson-module-afterburner/issues/28): JsonCreator deser with single-String-argument constructor fails + +#### [JAXB Annotations](../../jackson-module-jaxb-annotations) + +* [#27](../../jackson-module-jaxb-annotations/issues/27): Try to make `JaxbAnnotationIntrospector` work with Jackson XML module in determining whether property is output as attribute + +#### [Mr Bean](../../jackson-module-mrbean) + +* [#12](../../jackson-module-mrbean/issues/12): Fix problem with `Number` as Map value (and probably other types too) + +#### [Scala](../../jackson-module-scala) + +See [Scala module Issue Tracker](../../jackson-module-scala/issues/) diff --git a/Jackson-Release-2.3.4.md b/Jackson-Release-2.3.4.md new file mode 100644 index 000000000..be4218d74 --- /dev/null +++ b/Jackson-Release-2.3.4.md @@ -0,0 +1,30 @@ +Patch version released on 17-Jul-2014. Following changes are included. + +### Core components + +#### [Core Databind](../../jackson-databind) + +* [#459](../../jackson-databind/issues/459): `BeanDeserializerBuilder` copy constructor not copying `_injectables` +* [#462](../../jackson-databind/issues/462): Annotation-provided Deserializers are not contextualized inside CreatorProperties + +### Data formats + +#### [Avro](../../jackson-dataformat-avro) + +* [#8](../../jackson-dataformat-avro/issues/8): Error in creating Avro Schema for `java.util.Date` (and related) type. + +#### [CSV](../../jackson-dataformat-csv) + +* [#38](../../jackson-dataformat-csv/issues/38): Extra column delimiter added when column is escaped and follows empty column +* [#41](../../jackson-dataformat-csv/issues/41): `CvsParser.getText()` not working for field name (causing failures for "untyped" deserialization) +* [#47](../../jackson-dataformat-csv/issues/47): UTF-8 BOM handling not working (reported by andrealexandre@github) + +#### [Smile](../../jackson-dataformat-smile) + +* [#18](../../jackson-dataformat-smile/issues/18): Shared keys can cause unescaped write of `BYTE_MARKER_END_OF_CONTENT` + +### Datatypes + +#### [Guava](../../jackson-datatype-guava) + +* [#42](../../jackson-datatype-guava/issues/42): Polymorphic deserialization involving Guava Optional is broken diff --git a/Jackson-Release-2.3.5.md b/Jackson-Release-2.3.5.md new file mode 100644 index 000000000..d63050513 --- /dev/null +++ b/Jackson-Release-2.3.5.md @@ -0,0 +1,25 @@ +Patch version of [2.3](Jackson Release 2.3), released on January 13th, 2015. + +[2.3](Jackson Release 2.3) branch as it is still open, being the last branch for both JDK 1.5 and Scala 2.9. + +Following changes are included in this release. + +### Core components + +#### [Streaming](../../jackson-core) + +* [#152](../../jackson-core/issues/152): Exception for property names longer than 256k +* [#173](../../jackson-core/issues/173): An exception is thrown for a valid JsonPointer expression +* [#176](../../jackson-core/issues/176): `JsonPointer` should not consider "00" to be valid index + +#### [Core Databind](../../jackson-databind) + +* [#496](../../jackson-databind/issues/496): Wrong result for `TextNode("false").asBoolean(true)` +* [#543](../../jackson-databind/issues/543): Problems resolving self-referential generic types. +* [#656](../../jackson-databind/issues/656): `defaultImpl` configuration is ignored for WRAPPER_OBJECT + +### Datatypes + +#### [Guava](../../jackson-datatype-guava) + +* [#46](../../jackson-datatype-guava/issues/46): Can not serialize Guava `Iterable`s (backported from 2.4.2) diff --git a/Jackson-Release-2.3.6.md b/Jackson-Release-2.3.6.md new file mode 100644 index 000000000..31479d01a --- /dev/null +++ b/Jackson-Release-2.3.6.md @@ -0,0 +1,17 @@ +Potential patch version of [2.3](Jackson Release 2.3); not yet released, but may be released if critical bug fixes are needed. + +Following changes would be included in this release. + +### Core components + +#### [Core Databind](../../jackson-databind) + +* [#707](../../jackson-databind/issues/707): Error in getting string representation of an `ObjectNode` with a float number value + +### Data formats + +#### [Smile](../../jackson-dataformat-smile) + +(from `2.3.5-1` patch release) + +* [#25](../../jackson-dataformat-smile/pull/25): Buffer overflow when writing unescaped binary content diff --git a/Jackson-Release-2.3.md b/Jackson-Release-2.3.md new file mode 100644 index 000000000..3a8bafa77 --- /dev/null +++ b/Jackson-Release-2.3.md @@ -0,0 +1,134 @@ +Version 2.3[.0] was released in November, 2013. It is a "minor" Jackson Releases following 2.2, meaning that it adds new functionality but be backwards compatible with earlier 2.x releases. + +## Status + +Branch is closed for all new releases (including micro-patches) + +### Patches + +Beyond initial 2.3.0 (described here), following patch releases have been made. + +* [2.3.1](Jackson-Release-2.3.1) (28-Dec-2013) +* [2.3.2](Jackson-Release-2.3.2) (01-Mar-2014) +* [2.3.3](Jackson-Release-2.3.3) (10-Apr-2014) +* [2.3.4](Jackson-Release-2.3.4) (17-Jul-2014) +* [2.3.5](Jackson-Release-2.3.5) (13-Jan-2015) +* [2.3.6](Jackson-Release-2.3.6): not released as of December 2015. + +Beyond latest release, following critical micro-patches have also been released + +* `jackson-dataformat-smile` 2.3.5.1 (15-Jul-2015), with critical fixes: + * [#25](https://github.com/FasterXML/jackson-dataformat-smile/pull/25): Buffer overflow when writing unescaped binary content + +### Notes on maintenance + +This branch is special in 2.x hierarchy in that it is planned to be long-living branch (similar to 1.9), and stay open even when 2.4 and later minor versions are released. This is because it is: + +* Last version to support older Android versions (it specifically omits use of certain methods from `java.util.Arrays`) +* Last version to support Scala 2.9 (2.4 only supports 2.10 and above) + +### Changes: compatibility + +While initial decision had been made to require JDK 1.6 as the baseline, team decided to make an exception for version `2.3.2`, so that old Android versions could use it -- basically this means that some changes were reverted for just that version. 2.4 will fully require JDK 1.6. + +### Changes: packaging + +Another packaging change was to reduce amount of debug information for core (streaming, annotations, databind) packages. While this did result in significant reduction in jar sizes (20-25% smaller), it did lead to problems with developers: 2.4 will revert to full debug information for the default jars, and we will try to figure out a way to offer alternative 'minimal' packages with no debug information. + +### Changes, core + +#### [Core Annotations](../../jackson-annotations) + +* [#13](https://github.com/FasterXML/jackson-annotations/issues/13): Add `@JsonPropertyDescription` (mostly to support descriptions in JSON Schema) + +#### [Core Streaming](../../jackson-core) + +* [#8](https://github.com/FasterXML/jackson-core/issues/8) Add methods in `JsonParser`/`JsonGenerator` for reading/writing "native" Object Ids (initially, to support YAML anchors, aliases) +* [#47](https://github.com/FasterXML/jackson-core/issues/47): Support YAML-style comments with `JsonParser.Feature.ALLOW_YAML_COMMENTS` +* [#60](https://github.com/FasterXML/jackson-core/issues/60): Add feature `JsonParser.Feature.STRICT_DUPLICATE_DETECTION` to allow strict verification of uniqueness of property names during streaming parsing. +* [#91](https://github.com/FasterXML/jackson-core/issues/91): Add methods in `JsonParser`/`JsonGenerator` for reading/writing "native" Type Ids (initially, to support YAML "tags") + +#### [Core Databind](../../jackson-databind) + +* [#215](https://github.com/FasterXML/jackson-databind/issues/215): Allow registering `CharacterEscapes` via `ObjectWriter` +* [#227](https://github.com/FasterXML/jackson-databind/issues/227): Allow registering "general" Enum serializers, deserializers, via `SimpleModule` +* [#237](https://github.com/FasterXML/jackson-databind/issues/237): Add `DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY` to throw `JsonMappingException` on duplicate keys, tree model (`JsonNode`) +* [#238](https://github.com/FasterXML/jackson-databind/issues/238): Allow existence of overlapping getter, is-getter (choose 'regular' getter) +* [#269](https://github.com/FasterXML/jackson-databind/issues/269): Add support for new `@JsonPropertyDescription` via `AnnotationIntrospector` +* [#270](https://github.com/FasterXML/jackson-databind/issues/270): Add `SerializationFeature.USE_EQUALITY_FOR_OBJECT_ID` to allow use of equality (instead of identity) for figuring out when to use Object Id + +### Changes, Data Formats + +#### [CSV](../../jackson-dataformat-csv) + +* [#20](../../jackson-dataformat-csv/issues/20): Support filtering with `@JsonView`, `@JsonFilter` + +#### [XML](../../jackson-dataformat-xml) + +* [#38](../../jackson-dataformat-xml/issues/38): Support root-level Collection serialization +* [#64](../../jackson-dataformat-xml/issues/64): Problems deserializing unwrapped lists, with optional (and missing) attribute. +* [#71](../../jackson-dataformat-xml/issues/71): Fix issues with `XmlMapper.convertValue()` +* Add support for `JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN` + +#### [YAML](../../jackson-dataformat-yaml) + +* [#17](../../jackson-dataformat-yaml/issues/17): Add support for `YAML` native type ids ("tags") + +### Changes, Data Types + +#### [Guava](../../jackson-datatype-guava) + +* [#29](../../jackson-datatype-guava/issues/29): Empty ImmutableMap not deserialized correctly, when type info included +* Add support for `DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY` for `ImmutableSet` and `MultiSet` + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#36](../../jackson-datatype-hibernate/issues/36): Support `@ElementCollection` for specifying lazy-loading +* [#44](../../jackson-datatype-hibernate/issues/44): NullPointerException when @OneToMany map is encountered +* Support handling of `JsonInclude(Include.NON_EMPTY)` for lazy-loaded Collections (partially addresses #21) + +#### [Joda](../../jackson-datatype-joda) + +* [#18](../../jackson-datatype-joda/issues/18): Add `JodaMapper`, sub-class of basic `ObjectMapper` that auto-registers Joda module + +### Changes, JAX-RS + +* [#24](../../jackson-jaxrs-providers/issues/24): Allow defining default view to use for endpoints without View annotation +* [#33](../../jackson-jaxrs-providers/issues/33): Provide a way to customize `ObjectReader` / `ObjectWriter` used by end points + +### Changes, Other modules + +#### [JAXB Annotations](../../jackson-module-jaxb-annotations) + +* [#25](../../jackson-module-jaxb-annotations/issues/25): `@XmlElementWrapper()` should work with USE_WRAPPER_NAME_AS_PROPERTY_NAME, use underlying "default" property name + +#### [Afterburner](../../jackson-module-afterburner) + +* [#33](../../jackson-module-afterburner/issues/33): `SuperSonicBeanDeserializer` not working (missing optimization) +* [#34](../../jackson-module-afterburner/34): Needs to skip private creators, can not access even from sub-class. + +#### [Guice](../../jackson-module-guice) + +First official release! + +#### [JAXB Annotations](../../jackson-module-jaxb-annotations) + +* [#25](../../jackson-module-jaxb-annotations/issues/25): @XmlElementWrapper() should work wrt USE_WRAPPER_NAME_AS_PROPERTY_NAME, use underlying "default" property name + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#14](../../jackson-module-jsonSchema/issues/14): Generated schema contains multiple 'type' values +* [#18](../../jackson-module-jsonSchema/issues/18): Add mechanism to customize schema for property +* [#24](../../jackson-module-jsonSchema/issues/25): Improved Schema generation for Maps + +#### [Paranamer](../../jackson-module-paranamer) + +* [#3](../../jackson-module-paranamer/issues/3): Should not throw an exception if name not found + +#### [Scala](../../jackson-module-scala) + +* [#103](https://github.com/FasterXML/jackson-module-scala/issues/103): (Regression) Serialization of a class containing Option[JsonNode] fails +* [#103](https://github.com/FasterXML/jackson-module-scala/issues/103): (Regression) Serialization of a class containing Option[JsonNode] fails +* [#102](https://github.com/FasterXML/jackson-module-scala/issues/102): (Regression) JsonMappingException Argument of constructor has no property name annotation +* [#101](https://github.com/FasterXML/jackson-module-scala/issues/101): version 2.2.3 can't deserialize some class that version 2.2.2 can +* [#100](https://github.com/FasterXML/jackson-module-scala/issues/100): Deserializing SortedSets \ No newline at end of file diff --git a/Jackson-Release-2.4.1.md b/Jackson-Release-2.4.1.md new file mode 100644 index 000000000..72e9ff420 --- /dev/null +++ b/Jackson-Release-2.4.1.md @@ -0,0 +1,36 @@ +Patch released 16-Jun-2014 + +### Changes, core + +#### [Streaming API](../../jackson-core) + +* [#143](../../jackson-core/issues/143): Flaw in `BufferRecycler.allocByteBuffer(int,int)` that results in performance regression (at least for CBOR format module). + +#### [Core Databind](../../jackson-databind) + +* [#479](../../jackson-databind/issues/479): NPE on trying to deserialize a `String[]` from JSON Array that contains a `null` value (regression from 2.3) + +### Changes, data formats + +#### [Avro](../../jackson-dataformat-avro) + +* [#8](../../jackson-dataformat-avro/issues/8): Error in creating Avro Schema for `java.util.Date` (and related) type. + +#### [CBOR](../../jackson-dataformat-cbor) + +* Change `#143` (see above) for `jackson-core` lead to sub-par performance: with fix in 2.4.1, write-performance throughput up to 40% higher for small/medium-sized documents. + + +#### [Smile](../../jackson-dataformat-smile) + +* [#17](../../jackson-dataformat-smile/issues/17): `ArrayIndexOutOfBounds` for large data with `float` values + +#### [XML](../../jackson-dataformat-xml) + +* [#117](../../jackson-dataformat-xml/issues/117): `@JsonAnyGetter` + `@JsonTypeInfo` combination prevents serialization of properties as elements + +### Changes, other modules + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#4](../../jackson-module-jsonSchema): JSON schema generation with Jackson goes into infinite loop diff --git a/Jackson-Release-2.4.2.md b/Jackson-Release-2.4.2.md new file mode 100644 index 000000000..bf9111238 --- /dev/null +++ b/Jackson-Release-2.4.2.md @@ -0,0 +1,47 @@ +Patch release in August 15, 2014. + +### Micro-patches + +Between 2.4.1 and 2.4.2, following micro-patches have been released: + +* `jackson-databind`: + * 2.4.1.1 (18-Jun-2014): #491 (see below) + * 2.4.1.2 (12-Jul-2014): #503 (see below) +* `jackson-core` 2.4.1.1 (09-Jul-2014): #145 (see below) +* `jackson-dataformat-smile` 2.4.1.1 (15-Jul-2014): #18 (see below) + +these patches are stand-alone ones in that their dependencies point to 2.4.1 for other components; they are meant to be used for emergency-patching for critical issues. Most users should not need to use these patches, and should instead just upgrade to 2.4.2 when it is available. + +### Changes, core + +#### [Streaming API](../../jackson-core) + +* [#145](../../jackson-core/issues/145): NPE at BytesToNameCanonicalizer (NOTE: part of 2.4.1.1 micro-patch) +* [#146](../../jackson-core/issues/146): Error while parsing negative floats at the end of the input buffer + +#### [Databind](../../jackson-databind) + +* [#491](../../jackson-databind/issues/491): Work around for issue [#490](../../jackson-databind/issues/490), problems with deserialization of Object Ids. (NOTE: part of 2.4.1.1 micro-patch) +* [#503](../../jackson-databind/issues/503): Concurrency issue inside com.fasterxml.jackson.databind.util.LRUMap.get(Object) (NOTE: part of 2.4.1.2 micro-patch) +* [#506](../../jackson-databind/issues/506): Index is never set for Collection and Array in `InvalidFormatException.Reference` + +### Changes, data formats + +#### [CSV](../../jackson-dataformat-csv) + +* [#47](../../jackson-dataformat-csv/issues/47): UTF-8 BOM handling not working + +#### [Smile](../../jackson-dataformat-smile) + +* [#18](../../jackson-dataformat-smile/issues/18): Shared keys can cause unescaped write of BYTE_MARKER_END_OF_CONTENT +* [#19](../../jackson-dataformat-smile/issues/19): Exception when deserializing ObjectIds generated by ObjectIdGenerators.UUIDGenerator + +### Changes, data types + +#### [Guava](../../jackson-datatype-guava) + +* [#46](../../jackson-datatype-guava/issues/46): Can not serialize guava `Iterables` + +### Changes, other modules + +* [#30](../../jackson-module-jaxb-annotations/30): Need a way to override name `@XmlValue` induces when not doing XML diff --git a/Jackson-Release-2.4.3.md b/Jackson-Release-2.4.3.md new file mode 100644 index 000000000..fc59da451 --- /dev/null +++ b/Jackson-Release-2.4.3.md @@ -0,0 +1,47 @@ +Patch version of [2.4](Jackson Release 2.4), most components released on October 4th, 2014. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#152](../../jackson-core/issues/152): Exception for property names longer than 256k + +#### [Databind](../../jackson-databind) + +* [#496](../../jackson-databind/issues/496): Wrong result with `new TextNode("false").asBoolean(true)` +* [#511](../../jackson-databind/issues/511): `DeserializationFeature.FAIL_ON_INVALID_SUBTYPE` does not work +* [#523](../../jackson-databind/issues/523): `MapDeserializer` and friends do not report the field/key name for mapping exceptions +* [#524](../../jackson-databind/issues/524): `@JsonIdentityReference(alwaysAsId = true)` Custom resolver +is reset to `SimpleObjectIdResolver`. +* [#541](../../jackson-databind/issues/541): `@JsonProperty` in `@JsonCreator` is conflicting with POJOs getters/attributes +* [#543](../../jackson-databind/issues/543): Problem resolving self-referential generic types (work-around, not full fix) +* [#570](../../jackson-databind/issues/570): Add Support for parsing more compliant ISO-8601 Date Formats + +### Changes, data formats + +#### [CBOR](../../jackson-dataformat-cbor) + +* [#5](../../jackson-dataformat-cbor/issues/5): Support binary (byte[]) Object keys (assuming UTF-8 encoding) +* [#6](../../jackson-dataformat-cbor/issues/6): Support 'self-describe' CBOR tag + +### Changes, datatypes + +#### [Joda](../../jackson-datatype-joda) + +* [#45](../../jackson-datatype-joda/issues/45): Can't use `LocalTime`, `LocalDate` & `LocalDateTime` as Key type for a MapInterval deserialization fails for negative start instants +* [#46](../../jackson-datatype-joda/issues/46): `Interval` deserialization fails for negative start instants + +#### [Guava](../../jackson-datatype-guava) + +* [#50](../../jackson-datatype-guava/issues/50): Add support for `InternetDomainName` + +### Changes, other modules + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#34](../../jackson-module-jsonSchema/issues/34): NPE when generating schema for class with `@JsonValue` annotation over `array`/`Collection` + +#### [Afterburner](../../jackson-module-afterburner) + +* [#42](../../jackson-module-afterburner/issues/42): Exception trying to deserialize into `final` field +* [#43](../../jackson-module-afterburner/issues/43): Problem deserializing type with one polymorphic property that uses inclusion of `As.EXTERNAL_PROPERTY` diff --git a/Jackson-Release-2.4.4.md b/Jackson-Release-2.4.4.md new file mode 100644 index 000000000..820a0879f --- /dev/null +++ b/Jackson-Release-2.4.4.md @@ -0,0 +1,45 @@ +Patch version of [2.4](Jackson Release 2.4), released on November 24, 2014. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#157](../../jackson-core/issues/157): `ArrayIndexOutOfBoundsException` for numbers longer than 200 characters (NOTE: regression, not affecting 2.3) +* [#158](../../jackson-core/issues/158): Setter confusion on assignable types (actually, belongs under `databind`) + +#### [Databind](../../jackson-databind) + +* [#245](../../jackson-databind/issues/245): Calls to `ObjectMapper.addMixInAnnotations()` on an instance returned by `ObjectMapper.copy()` don't work +* [#580](../../jackson-databind/issues/580): delegate deserializers choke on a (single) abstract/polymorphic parameter +* [#590](../../jackson-databind/issues/590): Binding invalid `Currency` gives nonsense at end of the message +* [#592](../../jackson-databind/issues/592): Wrong `TokenBuffer` delegate deserialization using `@JsonCreator` +* [#601](../../jackson-databind/issues/592): ClassCastException for a custom serializer for enum key in `EnumMap` +* [#604](../../jackson-databind/issues/604): `Map` deserializers were not being cached, causing performance issues due to lock congestion. +* [#610](../../jackson-databind/issues/610): Fix forward (Object Id) reference in hierarchies + +### Changes, data formats + +#### [CSV](../../jackson-dataformat-csv) + +* [#54](../../jackson-dataformat-csv/issues/54): Encounter `ArrayIndexOutOfBoundsException` in the corner case delimiter or end-of-line happened to be the leading character of a segment buffer + +#### [YAML](../../jackson-dataformat-yaml) + +* [#27](../../jackson-dataformat-yaml/issues/27): OSGI bundle does not work due to shading + +### Changes, other modules + +#### [JAXB Annotations](../../jackson-module-jaxb-annotations) + +* [#33](../../jackson-module-jaxb-annotations/issues/33) + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#46](../../jackson-module-jsonSchema/issues/46): Incorrect number type for `Double`, `Float` and `BigDecimal` +* [#47](../../jackson-module-jsonSchema/issues/47): Static `VisitorContext` results in incomplete JSON schema output + +#### [Scala](../../jackson-module-scala) + +* [#149](../../jackson-module-scala/issues/149): Use type information to deser `Option` (courtesy of @orac) +* [#148](../../jackson-module-scala/issues/148): Performance regression in 2.2.3 +* [#145](../../jackson-module-scala/issues/145): readValue for `Map[String, Any]` or `List[Any]` is very slow \ No newline at end of file diff --git a/Jackson-Release-2.4.5.md b/Jackson-Release-2.4.5.md new file mode 100644 index 000000000..60963d4a5 --- /dev/null +++ b/Jackson-Release-2.4.5.md @@ -0,0 +1,31 @@ +Patch version of [2.4](Jackson Release 2.4), released on January 13th, 2015. +May be the last release version of 2.4.x branch, since 2.5.0 was released before this release; and since 2.3 will be a long-running branch (due to compatibility reasons). 2.4.x on the other hand may be retired after (or around time) 2.5.1 is released. + +### Changes, core + +#### [Core Databind](../../jackson-databind) + +* [#635](../../jackson-databind/issues/635): Reduce cachability of `Map` deserializers, to avoid problems with per-property config changes +* [#656](../../jackson-databind/issues/656): `defaultImpl` configuration is ignored for `WRAPPER_OBJECT` + +### Changes, data formats + +#### [YAML](../../jackson-dataformat-yaml/) + +* [#30](../../jackson-dataformat-yaml/issues/30): `YamlFactory.writeValue(File, Object)` busted + +### Changes, data types + +#### [Guava](../../jackson-datatype-guava) + +* [#58](../../jackson-datatype-guava/issues/58): `FluentIterable` serialization doesn't work for Bean properties + +#### [JSR-353](../../jackson-datatype-jsr353) + +* [#5](../../jackson-datatype-jsr353/issues/5): binary nodes not supported during deserialization + +### Changes, other modules + +#### [Afterburner](../../jackson-module-afterburner) + +* [#48](../../jackson-module-afterburner/issues/48): Problem passing custom `JsonSerializer`, causing an NPE diff --git a/Jackson-Release-2.4.6.md b/Jackson-Release-2.4.6.md new file mode 100644 index 000000000..3298e8ba6 --- /dev/null +++ b/Jackson-Release-2.4.6.md @@ -0,0 +1,56 @@ +Patch version of [2.4](Jackson+Release+2.4), released on 23-Apr-2015. + +This is planned to be the last release version of 2.4.x branch, since 2.5.2 was released before this release; and since 2.3 will be a long-running branch (due to compatibility reasons). + +### Micro-releases + +#### 2.4.5.1 + +Before 2.4.6 (but after 2.4.5), a critical fix needed to be released quickly (for `#735`). +As a result, version `2.4.5.1` of `jackson-databind` was released on March 26, 2015. + +It contains following fixes: + +* [#706](../../jackson-databind/issues/706): Add support for `@JsonUnwrapped` via JSON Schema module +* [#707](../../jackson-databind/issues/707): Error in getting string representation of an `ObjectNode` with a float number value +* [#735](../../jackson-databind/issues/735): `@JsonDeserialize` on Map with `contentUsing` custom deserializer overwrites default behavior (for other Map instances) + +#### 2.4.6.1 + +After `2.4.6`, a few important fixes were still merged, and since there are no plans for a full release, another micro-patch was cut instead, on 09-Jun-2015. It contains following fixes: + +* [#676](../../jackson-databind/issues/676): Deserialization of class with generic collection inside depends on how is was deserialized first time +* [#785](../../jackson-databind/issues/785): Add handling for classes which are available in `Thread.currentThread().getContextClassLoader()` +* [#793](../../jackson-databind/issues/793): `ObjectMapper.readTree()` does not work with defaultTyping enabled + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#184](../../jackson-core/issues/184): `WRITE_NUMBERS_AS_STRINGS` disables `WRITE_BIGDECIMAL_AS_PLAIN` +* [#191](../../jackson-core/issues/191): Longest collision chain in symbol table now exceeds maximum + +#### [Core Databind](../../jackson-databind) + +* Fixes from `2.4.5.1` -- `#706`, `#707`, `#735` -- see above. +* [#744](../../jackson-databind/issues/744): Custom deserializer with parent object update failing + +### Changes, data formats + +#### [CBOR](../../jackson-dataformat-cbor) + +* [#9](../../jackson-dataformat-cbor/issues/9): Infinite loop when trying to write binary data using CBORGenerator + +#### [Smile](../../jackson-dataformat-smile) + +* [#23](../../jackson-dataformat-smile/issues/23): Current location does not always updated properly + +### Changes, datatypes + +#### [Guava](../../jackson-datatype-guava) + +* [#61](../../jackson-datatype-guava/issues/61): NPE serializing `Multimap`s with null values + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#65](../../jackson-datatype-hibernate/issues/65): Registered hibernateModule lead to 'NON_EMPTY' failure diff --git a/Jackson-Release-2.4.md b/Jackson-Release-2.4.md new file mode 100644 index 000000000..17fd59018 --- /dev/null +++ b/Jackson-Release-2.4.md @@ -0,0 +1,117 @@ +Version 2.4.0 was released in June 2014. +It is a "minor" release following 2.3, meaning that it adds new functionality but be backwards compatible with earlier 2.x releases. + +## Status + +Branch is closed for all new releases (including micro-patches) + +### Patches + +Beyond initial 2.4.0 (described here), following patch releases were made: + +* [2.4.1](Jackson-Release-2.4.1) (16-Jun-2014) +* [2.4.2](Jackson-Release-2.4.2) (15-Aug-2014) +* [2.4.3](Jackson-Release-2.4.3) (04-Oct-2014) +* [2.4.4](Jackson-Release-2.4.4) (24-Nov-2014) +* [2.4.5](Jackson-Release-2.4.5) (13-Jan-2015) +* [2.4.6](Jackson-Release-2.4.6) (23-Apr-2015) + +### Changes: compatibility + +Support for oldest Android versions (2.x) will not be continued, as Jackson modules may use full feature set of JDK 1.6. + +[Scala module](../../jackson-module-scala) will only support Scala 2.10 and above (and will support 2.11 for the first time) + +### Changes: functional, high-level + +The biggest improvement with 2.4 is the ability to finally resolve so-called Object Id Forward References between objects: that is, declaration of an Object Id need not come before reference in document order (or be directly reference from within same object). + +Resolution of property name conflicts has been improved: "cleaved" properties are not considered to be conflicts, as long there are no ambiguities in renaming (with 2.3 and earlier some cases with alternate names are considered errors even if intent can be decuded and there is no actual ambiguity). +Part of the fix includes distinguishing between implicit and explicit names for parameters as well, in cases where implicit names can be introspector (using Paranameter, or JDK8 feature). + +### Changes, core + +#### [Core Annotations](../../jackson-annotations) + +* [#31](../../jackson-annotations/issues/31): Allow use of `@JsonPropertyOrder` for properties (not just classes) +* [#32](../../jackson-annotations/issues/32): Add `@JsonProperty.index` for indicating optional numeric index of the property. +* Add `JsonFormat.Value#timeZoneAsString` (needed by Joda module) +* Add `@JsonRootName.namespace` to allow specifying of namespace with standard Jackson annotations (not just XML-specific ones that dataformat-xml provides) + +#### [Core Streaming](../../jackson-core) + +* [#121](https://github.com/FasterXML/jackson-core/issues/121): Increase size of low-level byte[]/char[] input/output buffers (from 4k->8k for bytes, 2k->4k for chars) +* [#127](https://github.com/FasterXML/jackson-core/issues/127): Add `JsonGenerator.writeStartArray(int size)` for binary formats +* [#138](https://github.com/FasterXML/jackson-core/issues/138): Add support for using `char[]` as input source; optimize handling of `String` input as well. + +#### [Core Databind](../../jackson-databind) + +* [#88](../../jackson-databind/issues/88): Prevent use of type information for `JsonNode` via default typing +* [#149](../../jackson-databind/issues/149): Allow use of "stringified" indexes for Enum values +* [#176](../../jackson-databind/issues/176): Allow use external Object Id resolver (to use with @JsonIdentityInfo etc) +* [#335](../../jackson-databind/issues/335): Allow use of `@JsonPropertyOrder(alphabetic=true)` for Map properties +* [#351](../../jackson-databind/issues/351): ObjectId does not properly handle forward references during deserialization +* [#353](../../jackson-databind/issues/353): Problems with polymorphic types, `JsonNode` (related to #88) +* [#359](../../jackson-databind/issues/359): Converted object not using explicitly annotated serializer +* [#369](../../jackson-databind/issues/369): Incorrect comparison for renaming in `POJOPropertyBuilder` +* [#375](../../jackson-databind/issues/375): Add `readValue()`/`readPropertyValue()` methods in `DeserializationContext` +* [#381](../../jackson-databind/issues/381): Allow inlining/unwrapping of value from single-component JSON array +* [#390](../../jackson-databind/issues/390): Change order in which managed/back references are resolved (now back-ref first, then forward) +* [#407](../../jackson-databind/issues/407): Properly use null handlers for value types when serializer Collection and array types +* [#428](../../jackson-databind/issues/428): `PropertyNamingStrategy` will rename even explicit name from `@JsonProperty` +* [#434](../../jackson-databind/issues/434): Ensure that DecimalNodes with mathematically equal values are equal + +### Changes, Data Formats + +#### [CSV](../../jackson-dataformat-csv) + +* [#26](../../jackson-dataformat-csv/issues/26): Inconsistent quoting of headers, values; add + `CsvGenerator.Feature.STRICT_CHECK_FOR_QUOTING` to allow more optimal checks. +* [#32](../../jackson-dataformat-csv/issues/32): Allow disabling of quoteChar + (suggested by Jason D) +* [#40](../../jackson-dataformat-csv/issues/40): Allow (re)ordering of columns of Schema, using `CsvSchema.sortedBy(...)` +* [#45](../../jackson-dataformat-csv/issues/45): Change outputting behavior to include final commas even if values are missing; also add `CsvGenerator.OMIT_MISSING_TAIL_COLUMNS` + +#### [XML](../../jackson-dataformat-xml) + +* [#76](https://github.com/FasterXML/jackson-dataformat-xml/issues/76): UnrecognizedPropertyException when containing object is a Collection +* [#83](https://github.com/FasterXML/jackson-dataformat-xml/issues/83): Add support for `@JsonUnwrapped` +* [#99](https://github.com/FasterXML/jackson-dataformat-xml/issues/99): Problem with `DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES`, Lists +* [#108](https://github.com/FasterXML/jackson-dataformat-xml/issues/108): Unwrapped list ignore attributes if 2 lists in sequence +* [#111](https://github.com/FasterXML/jackson-dataformat-xml/issues/111): Make vanilla `JaxbAnnotationIntrospector` work, without having to use `XmlJaxbAnnotationIntrospector` + +### Changes, Data Types + +#### [Guava](../../jackson-datatype-guava) + +* [#43](../../jackson-datatype-guava/43): Add support for `HostAndPort` + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#53](../../jackson-datatype-hibernate/53): When JPA annotations are not used, collections are always loaded (added `Hibernate4Module.Feature.REQUIRE_EXPLICIT_LAZY_LOADING_MARKER` with default value of `false`) + +#### [JDK7 data types](../../jackson-datatype-jdk7) + +The very first official release: + +* Supports `java.nio.file.Path` + +### Changes, JAX-RS + +* [#49](https://github.com/FasterXML/jackson-jaxrs-providers/issues/49): Add `JaxRSFeature.ALLOW_EMPTY_INPUT`, disabling of which can prevent mapping of empty input into Java null value + +### Changes, [Jackson jr](https://github.com/FasterXML/jackson-jr) + +The very first official release! + +### Changes, Other modules + +#### [JAXB Annotations](../../jackson-module-jaxb-annotations) + +#### [Parameter Names](../../jackson-module-parameter-names) (JDK8 only) + +The very first official release! + +* Support discovery of parameter names for JSON Creator methods. + +#### [Scala](../../jackson-module-scala) \ No newline at end of file diff --git a/Jackson-Release-2.5.1.md b/Jackson-Release-2.5.1.md new file mode 100644 index 000000000..9c21ecc80 --- /dev/null +++ b/Jackson-Release-2.5.1.md @@ -0,0 +1,45 @@ +Patch version of [2.5](Jackson Release 2.5), released on February 6, 2015. + +Also includes all fixes in 2.4.x up until [2.4.5](Jackson-Release-2.4.5). + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#178](../../jackson-core/issues/178): Add `Lf2SpacesIndenter.withLinefeed` back to restore binary-compatibility with 2.4.x + +#### [Core Databind](../../jackson-databind) + +* [#667](../../jackson-databind/issues/667): Problem with bogus conflict between single-arg-String vs `CharSequence` constructor +* [#669](../../jackson-databind/issues/669): #669: JSOG usage of `@JsonTypeInfo` and `@JsonIdentityInfo(generator=JSOGGenerator.class)` fails +* [#671](../../jackson-databind/issues/671): Adding `java.util.Currency` deserialization support for maps +* [#674](../../jackson-databind/issues/674): Spring CGLIB proxies not handled as intended +* [#682](../../jackson-databind/issues/682): Class-valued Map keys not serialized properly +* [#684](../../jackson-databind/issues/684): `FAIL_ON_NUMBERS_FOR_ENUMS` does not fail when integer value is quoted +* [#696](../../jackson-databind/issues/696): Copy constructor does not preserve `_injectableValues` + +### Dataformats + +#### [XML](../../jackson-dataformat-xml) + +* [#133](../../jackson-dataformat-xml/issues/133): Performance regression (2.4->2.5), 10% slower write via databind + +#### [CSV](../../jackson-dataformat-csv) + +* [#65](../../jackson-dataformat-csv/issues/65): Buffer recycling not always working + +### Datatypes + +#### [Guava](../../jackson-datatype-guava) + +* [#61](../../jackson-datatype-guava/issues/61): NPE serializing `Multimap`s with null values + +#### [Joda](../../jackson-datatype-joda) + +* [#51](../../jackson-datatype-joda/issues/51): Calling `JodaDateSerializerBase.isEmpty()` results in a `StackOverflowError`. + +### Other modules + +#### [Afterburner](../../jackson-module-afterburner) + +* [#47](../../jackson-module-afterburner/issues/47): java.lang.VerifyError (Illegal type in constant pool ...) diff --git a/Jackson-Release-2.5.2.md b/Jackson-Release-2.5.2.md new file mode 100644 index 000000000..6699bb5b0 --- /dev/null +++ b/Jackson-Release-2.5.2.md @@ -0,0 +1,47 @@ +Patch version of [2.5](Jackson Release 2.5). Released on March 30, 2015. + +### Changes, core + +#### [Core Databind](../../jackson-databind) + +* [#609](../../jackson-databind/issues/609): Problem resolving locally declared generic type +* [#691](../../jackson-databind/issues/691): `NullSerializer` for `MapProperty` failing +* [#703](../../jackson-databind/issues/703): Multiple calls to `ObjectMapper#canSerialize(Object.class)` return different values +* [#705](../../jackson-databind/issues/705): `JsonAnyGetter` doesn't work with `@JsonSerialize` (except with keyUsing) +* [#728](../../jackson-databind/issues/728): `TypeFactory._fromVariable()` returns `unknownType()` even though it has enough information to provide a more specific type +* [#733](../../jackson-databind/issues/733): `MappingIterator` should move past errors or not return hasNext() == true + +### Changes, dataformat modules + +#### [CSV](./../jackson-dataformat-csv) + +* [#66](../../jackson-dataformat-csv/issues/66): Deserializing an empty string as an array field return a non-empty list of one empty String +* [#69](../../jackson-dataformat-csv/issues/69): `SequenceWriter#write(null)` writes a single null, not an entire row of nulls + +### Changes, datatype modules + +#### [Guava](../../jackson-datatype-guava) + +* [#62](../../jackson-datatype-guava/issues/62): Add `com.google.common.hash` to OSGi import list + +#### [Java8 Date](../../jackson-datatype-jsr310) + +* [#20](../../jackson-datatype-jsr310/issues/20): Enhance YearMonth Serialization/Deserialization to allow custom formatting with `@JsonFormat` + +### Changes, JAX-RS provide + +* [#61](../../jackson-jaxrs-providers/pull/61): Fix disabling of `JaxRSFeature` (was always enabling features) + +### Changes, other modules + +#### [Afterburner](../../jackson-module-afterburner) + +* [#52](../../jackson-module-afterburner/issues/52): Invalidating `SerializationInclusion.NON_NULL` of other modules + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#20](../../jackson-module-jsonSchema/issues/20): Support handling of "unwrapped" POJOs + +#### [Mr Bean](../../jackson-module-mrbean) + +* [#20](../../jackson-module-mrbean/issues/20): Serialized beans have extra parameters in JSON diff --git a/Jackson-Release-2.5.3.md b/Jackson-Release-2.5.3.md new file mode 100644 index 000000000..2b27f731f --- /dev/null +++ b/Jackson-Release-2.5.3.md @@ -0,0 +1,38 @@ +Patch version of [2.5](Jackson Release 2.5). Was released on 24-Apr-2015. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#191](../../jackson-core/issues/191): Longest collision chain in symbol table now exceeds maximum, for single-quoted-character symbols + +#### [Core Databind](../../jackson-databind) + +* [#731](../../jackson-databind/issues/731): `XmlAdapter` result marshaling error in case of ValueType == `Object.class` +* [#742](../../jackson-databind/issues/742): Allow deserialization of `null` Object Id (missing already allowed) +* [#744](../../jackson-databind/issues/744): Custom deserializer with parent object update failing +* [#745](../../jackson-databind/issues/745): `EnumDeserializer.deserializerForCreator()` fails when used to deserialize a Map key +* [#761](../../jackson-databind/issues/761): Builder deserializer: in-compatible type exception when return type is super type +* [#766](../../jackson-databind/issues/766): Fix Infinite recursion (StackOverflowError) when serializing a SOAP object + +### Changes, datatypes + +#### [JSR-310](../../jackson-datatype-jsr310) + +* [#21](../../jackson-datatype-jsr310/issues/21): `ClassNotFoundException` in OSGi + +### Changes, data formats + +#### [CSV](../../jackson-dataformat-csv) + +* [#75](../../jackson-dataformat-csv/issues/75): Support escapes at beginning of the file + +### Changes, other modules + +#### [Scala](../../jackson-module-scala) + +* [#202](../../jackson-module-scala/issues/202): Getter is not detected correctly when method name is identical to variable name + +#### [JAXB Annotations](../../jackson-module-jaxb-annotations) + +* [#40](../../jackson-module-jaxb-annotations/issues/40): XmlElementRef ignored if inside XmlElementWrapper diff --git a/Jackson-Release-2.5.4.md b/Jackson-Release-2.5.4.md new file mode 100644 index 000000000..2a6a620e9 --- /dev/null +++ b/Jackson-Release-2.5.4.md @@ -0,0 +1,29 @@ +Patch version of [2.5](Jackson Release 2.5), released Jun 9, 2015. + +### Changes, core + +#### [Databind](../../jackson-databind) + +* [#676](../../jackson-databind/issues/676): Deserialization of class with generic collection inside depends on how is was deserialized first time +* [#771](../../jackson-databind/issues/771): Annotation bundles ignored when added to Mixin +* [#774](../../jackson-databind/issues/774): `NPE` from `SqlDateSerializer` as `_useTimestamp` is not checked for being null +* [#785](../../jackson-databind/issues/785): Add handling for classes which are available in `Thread.currentThread().getContextClassLoader()` +* [#792](../../jackson-databind/issues/792): Ensure Constructor Parameter annotations are linked with those of Field, Getter, or Setter +* [#793](../../jackson-databind/issues/793): `ObjectMapper.readTree()` does not work with defaultTyping enabled +* [#801](../../jackson-databind/issues/801): Using `@JsonCreator` cause generating invalid path reference in `JsonMappingException` +* [#815](../../jackson-databind/issues/815): Presence of `PropertyNamingStrategy` makes deserialization fail +* [#816](../../jackson-databind/issues/816): Allow date-only ISO strings to have no time zone. + +### Changes, datatypes + +#### [Joda](../../jackson-datatype-joda) + +* [#60](../../jackson-datatype-joda/issues/60): Configured date/time format not considered when serializing Joda Instant + +#### [JSR-310](../../jackson-datatype-jsr310) + +* [#24](../../jackson-datatype-jsr310/24): ZoneId type information improperly handled when default typing enabled + +### Changes, JAX-RS + +* [#63](../../jackson-jaxrs-providers/issues/63): Support JAX-RS 2.0 in OSGi environment for Smile, CBOR too diff --git a/Jackson-Release-2.5.5.md b/Jackson-Release-2.5.5.md new file mode 100644 index 000000000..40b98b2c1 --- /dev/null +++ b/Jackson-Release-2.5.5.md @@ -0,0 +1,22 @@ +Patch version of [2.5](Jackson Release 2.5), released 07-Dec-2015. +This is the last planned full patch release; it is possible that targeted micro-releases (2.5.5-1 and so on) may be made if critical problems are found. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#220](../../jackson-core/issues/220): Problem with `JsonParser.nextFieldName(SerializableString)` for byte-backed parser (affects Afterburner) +* [#221](../../jackson-core/issues/221): Fixed `ArrayIndexOutOfBounds` exception for character-based `JsonGenerator` + +#### [Databind](../../jackson-databind) + +* [#844](../../jackson-databind/issues/844): Using `@JsonCreator` still causes invalid path references in JsonMappingException +* [#852](../../jackson-databind/issues/852): Accept scientific number notation for quoted numbers too +* [#878](../../jackson-databind/issues/878): `serializeWithType` on `BeanSerializer` does not `setCurrentValue` + +### Changes, other modules + +#### [Mr Bean](../../jackson-module-mrbean) + +* [#25](../../jackson-module-mrbean/25): Should ignore `static` methods (setter/getter) + diff --git a/Jackson-Release-2.5.md b/Jackson-Release-2.5.md new file mode 100644 index 000000000..c84f9265f --- /dev/null +++ b/Jackson-Release-2.5.md @@ -0,0 +1,97 @@ +Version 2.5.0 was released January 1st, 2015. +It is a "minor" release following 2.4, meaning that it adds new functionality but be backwards compatible with earlier 2.x releases. + +## Status + +Branch is closed for all new releases (including micro-patches) + +## Patches + +Beyond initial 2.5.0 (described here), following patch releases were made: + +* [2.5.1](Jackson-Release-2.5.1) (06-Feb-2015) +* [2.5.2](Jackson-Release-2.5.2) (29-Mar-2015) +* [2.5.3](Jackson-Release-2.5.3) (24-Apr-2015) +* [2.5.4](Jackson-Release-2.5.4) (09-Jun-2015) +* [2.5.5](Jackson-Release-2.5.5) (07-Dec-2015) + +### Changes: compatibility + +No changes to JDK requirements or baseline requirements/supports for external platforms (like Android or Scala versions). + +One accidental change is with serialization of `Map.Entry` (see [#565](../../jackson-databind/issues/565) for details): before 2.5, serialization used default POJO approach, resulting in something like: + +``` +{ "key" : , "value" : } +``` + +but with #565 output was simplified to be: + +``` +{ : } +``` + +to support more natural serialization of things like `List`. +It is worth noting that before 2.5 only serialization would work; deserialization was not supported. +With 2.5, both serialization and deserialization work. + +### Changes, core + +#### [Core Annotations](../../jackson-annotations) + +* [#47](../../jackson-annotations/issues/47): Add `@JsonCreator.mode` property to explicitly choose between delegating- and property-based creators +* [#48](../../jackson-annotations/issues/48): Allow `@JsonView` for (method) parameters too (not used by Jackson itself, but requested by frameworks) +* Added `@JsonInclude.content` to allow specifying inclusion criteria for `java.util.Map` entries separate from inclusion of `Map` values + +#### [Core Streaming](../../jackson-core) + +* [#47](../../jackson-core/issues/47): Support `@JsonValue` for (Map) key serialization +* [#148](../../jackson-core/issues/148): `BytesToNameCanonicalizer` can mishandle leading null byte(s). +* [#164](../../jackson-core/issues/164): Add `JsonGenerator.Feature.IGNORE_UNKNOWN` (but support via individual data format modules) + +#### [Core Databind](../../jackson-databind) + +* [#113](../../jackson-databind/issues/113): Problem deserializing polymorphic types with `@JsonCreator` +* [#165](../../jackson-databind/issues/165): Give custom Deserializers access to the resolved target Class of the currently deserialized object (via `DeserializationContext.getContextualType()` during `createContextual()` callback) +* [#421](../../jackson-databind/issues/421): `@JsonCreator` not used in case of multiple creators with parameter names +* [#521](../../jackson-databind/issues/521): Keep bundle annotations, prevent problems with recursive +* [#527](../../jackson-databind/issues/527): Add support for `@JsonInclude(content=Include.NON_NULL)` (and others) for Maps +* [#528](../../jackson-databind/issues/528): Add support for `JsonType.As.EXISTING_PROPERTY` +* [#539](../../jackson-databind/issues/539): Problem with post-procesing of "empty bean" serializer +* [#540](../../jackson-databind/issues/540): Support deserializing `[]` as null or empty collection when the java type is a not an object (aka "work around PHP issues") +* [#543](../../jackson-databind/issues/543): Problem resolving self-referential recursive types +* [#552](../../jackson-databind/issues/552): Improved handling for ISO-8601 (date) format +* [#560](../../jackson-databind/issues/560): `@JsonCreator` to deserialize BigInteger to Enum +* [#565](../../jackson-databind/issues/565): Add support for handling `Map.Entry` +* [#566](../../jackson-databind/issues/566): Add support for case-insensitive deserialization (`MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES`) +* [#571](../../jackson-databind/issues/571): Add support in ObjectMapper for custom `ObjectReader`, `ObjectWriter` (sub-classes) +* [#607](../../jackson-databind/issues/607): Allow (re)config of `JsonParser.Feature`s via `ObjectReader` +* [#608](../../jackson-databind/issues/608): Allow (re)config of `JsonGenerator.Feature`s via `ObjectWriter` +* [#622](../../jackson-databind/issues/622): Support for non-scalar `ObjectId` Reference deserialization (like JSOG) +* [#631](../../jackson-databind/issues/631): Update `current value` of `JsonParser`, `JsonGenerator` from standard serializers, deserializers +* [#638](../../jackson-databind/issues/638): Add annotation-based method(s) for injecting properties during serialization (using `@JsonAppend`, `VirtualBeanPropertyWriter`) +* [#654](../../jackson-databind/issues/654): Add support for (re)configuring `JsonGenerator.setRootValueSeparator()` via `ObjectWriter` +* [#653](../../jackson-databind/issues/653): Added `MapperFeature.USE_STD_BEAN_NAMING` (by default, Jackson property name handling differs from std if 2 first chars are upper case) +* [#655](../../jackson-databind/issues/655): Add `ObjectWriter.writeValues()` for writing value sequences +* [#660](../../jackson-databind/issues/660) `@JsonCreator`-annotated factory method is ignored if constructor exists + +### Changes, Data Formats + +#### [CSV](../../jackson-dataformat-csv) + +* [#50](../../jackson-dataformat-csv/issues/50): Support `JsonGenerator.Feature.IGNORE_KNOWN` for CSV, to ignoring extra columns +* [#53](../../jackson-dataformat-csv/issues/53): Add a way to specify "null value" (String) for `CsvGenerator` to use when writing `null`s (part of `CsvSchema`; method `withNullValue()`) +* [#56](../../jackson-dataformat-csv/issues/56): Support comments (either via `CsvSchema`, or using std `JsonParser.Feature.ALLOW_YAML_COMMENTS. +* [#57](../../jackson-dataformat-csv/issues/57): Support simple array values +* [#61](../../jackson-dataformat-csv/issues/61): Add a feature to always quote non-numeric values: `CsvGenerator.Feature.ALWAYS_QUOTE_STRINGS` + +#### [YAML](../../jackson-dataformat-yaml) + +* [#22](../../jackson-dataformat-yaml/issues/22): Add support for disabling use of YAML native Type Ids +* [#23](../../jackson-dataformat-yaml/issues/23): Add support for disabling use of YAML native Object Ids + +### Changes, other modules + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#32](../../jackson-module-jsonSchema/issues/32): Add support for Bean Validation (JSR-303) annotations \ No newline at end of file diff --git a/Jackson-Release-2.6.1.md b/Jackson-Release-2.6.1.md new file mode 100644 index 000000000..162c42554 --- /dev/null +++ b/Jackson-Release-2.6.1.md @@ -0,0 +1,43 @@ +Patch version of [2.6](Jackson-Release-2.6), released Aug 9, 2015. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#207](../../jackson-core/issues/207): `ArrayIndexOutOfBoundsException` in `ByteQuadsCanonicalizer` + +#### [Databind](../../jackson-databind) + +* [#873](../../jackson-databind/issues/873): add missing OSGi import +* [#881](../../jackson-databind/issues/881): BeanDeserializerBase having issues with non-CreatorProperty properties. +* [#884](../../jackson-databind/issues/884): ArrayIndexOutOfBoundException in 2.6.0 for `BeanPropertyMap` +* [#889](../../jackson-databind/issues/889): Configuring `ObjectMapper`'s `DateFormat` changes `TimeZone` configuration as well (backwards incompatible with 2.5) +* [#890](../../jackson-databind/issues/890): Exception deserializing a `byte[]` when the target type comes from an annotation + +#### Changes, [JAX-RS](../../jackson-jaxrs-providers) + +* [#71](../../jackson-jaxrs-providers/issues/71): add missing OSGi import (for `json`) + +### Changes, data formats + +#### [CSV](../../jackson-dataformat-csv) + +* [#87](../../jackson-dataformat-csv/issues/87): Serialization of single Float or Double value leads to incorrect CSV when schema is used + +### Changes, datatypes + +#### [Java8 Date](../../jackson-datatype-jsr310) (aka JSR-310) + +* [#34](../../jackson-datatype-jsr310/issues/34): Allow direct instantiation of standards deserializers, with explicit `DateTimeFormatter` to use, to allow for registering custom-formatter variants +* [#35](../../jackson-datatype-jsr310/issues/35): `LocalTimeDeserializer` does not use configured formatter +* [#37](../../jackson-datatype-jsr310/issues/37): Cannot parse Javascript date using `LocalDateDeserializer` + +#### [Joda](../../jackson-datatype-joda) + +* [#70](../../jackson-datatype-joda/issues/70): Default DateTime parser format is stricter than previous versions, causing incompatibility + +### Changes, other modules + +#### [Parameter names](../../jackson-module-parameter-names) (java 8) + + * [#24](../../jackson-module-parameter-names/issues/24): Remove override of json creator mode \ No newline at end of file diff --git a/Jackson-Release-2.6.2.md b/Jackson-Release-2.6.2.md new file mode 100644 index 000000000..ce275c29f --- /dev/null +++ b/Jackson-Release-2.6.2.md @@ -0,0 +1,57 @@ +Patch version of [2.6](Jackson-Release-2.6), released on September 15, 2015. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#213](../../jackson-core/issues/213): Parser is sometimes wrong when using `CANONICALIZE_FIELD_NAMES` +* [#216](../../jackson-core/issues/216): `ArrayIndexOutOfBoundsException` when repeatedly serializing to a byte array + +#### [Databind](../../jackson-databind) + +* [#894](../../jackson-databind/issues/894): When using `withFactory` on `ObjectMapper`, the created Factory has a `TypeParser` which still has the original `TypeFactory` +* [#899](../../jackson-databind/issues/899): Problem serializing `ObjectReader` (and possibly `ObjectMapper`) +* [#913](../../jackson-databind/issues/913): `ObjectMapper.copy()` does not preserve `MappingJsonFactory` features +* [#922](../../jackson-databind/issues/922): `ObjectMapper.copy()` does not preserve `_registeredModuleTypes` +* [#928](../../jackson-databind/issues/928): Problem deserializing External Type Id if type id comes before POJO + +### Changes, data formats + +#### [CBOR](../../jackson-dataformat-cbor) + +* [#13](../../jackson-dataformat-cbor/issues/13): Bug in boundary checking in `CBORParser` + +#### [Smile](../../jackson-dataformat-smile) + +* [#26](../../jackson-dataformat-smile/issues/26): Bug in boundary checking in `SmileParser` + +### Changes, datatypes + +#### [Guava](../../jackson-datatype-guava) + +* [#52](../../jackson-datatype-guava/issues/52): Guava collection types do not allow null values +* [#80](../../jackson-datatype-guava/issues/80): Relax OSGi version constraints for Guava dependency. +* [#82](../../jackson-datatype-guava/issues/82): Problem with polymorphic value types for `Optional`, with 2.6 + +#### [JDK8](../../jackson-datatype-jdk8) + +* [#14](../../jackson-datatype-jdk8/issues/14): Missing `@type` when serializing `Optional` + +#### [Joda](../../jackson-datatype-joda) + +* [#71](../../jackson-datatype-joda/issues/71): Adjust LocalDate / LocalDateTime deserializer to support `DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE` + +### Changes, other modules + +#### [Afterburner](../../jackson-module-afterburner) + +* [#56](../../jackson-module-afterburner/issues/56): Afterburner does not respect `DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS` +* [#57](../../jackson-module-afterburner/issues/57): `@JsonAppend` causes `NullPointerException` + +#### [JAXB Annotations](../../jackson-module-jaxb-annotations) + +* [#47](../../jackson-module-jaxb-annotations/issues/47): `JaxbAnnotationIntrospector` does not pick up 'required' property of `@XmlAttribute` + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#27](../../jackson-module-jsonSchema/issues/27): Object schema properties should adhere to `@JsonPropertyOrder` and `@XmlType(propOrder)` \ No newline at end of file diff --git a/Jackson-Release-2.6.3.md b/Jackson-Release-2.6.3.md new file mode 100644 index 000000000..8dc9bc30f --- /dev/null +++ b/Jackson-Release-2.6.3.md @@ -0,0 +1,50 @@ +Patch version of [2.6](Jackson-Release-2.6), released on October 12, 2015. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#220](../../jackson-core/issues/220): Problem with `JsonParser.nextFieldName(SerializableString)` for byte-backed parser +* [#221](../../jackson-core/issues/221): Fixed `ArrayIndexOutOfBounds` exception for character-based `JsonGenerator` + +#### [Databind](../../jackson-databind) + +* [#749](../../jackson-databind/issues/749): `EnumMap` serialization ignores `SerializationFeature.WRITE_ENUMS_USING_TO_STRING` +* [#938](../../jackson-databind/issues/938): Regression: `StackOverflowError` with recursive types that contain `Map.Entry` +* [#939](../../jackson-databind/issues/939): Regression: DateConversionError in 2.6.x +* [#940](../../jackson-databind/issues/940): Add missing `hashCode()` implementations for `JsonNode` types that did not have them +* [#941](../../jackson-databind/issues/941): Deserialization from `{}` to `ObjectNode` field causes "out of END_OBJECT token" error +* [#942](../../jackson-databind/issues/942): Handle null type id for polymorphic values that use external type id +* [#943](../../jackson-databind/issues/943): Incorrect serialization of `enum` `Map` key +* [#944](../../jackson-databind/issues/944): Failure to use custom deserializer for key deserializer +* [#949](../../jackson-databind/issues/949): Report the offending substring when number parsing fails +* [#965](../../jackson-databind/issues/965): BigDecimal values via @JsonTypeInfo/@JsonSubTypes get rounded + +### Changes, data types + +#### [Guava](../../jackson-datatype-guava) + +* [#83](../../jackson-datatype-guava/issues/83): Generic type information for `Optional` wrapped generic type lost in visitor +* [#84](../../jackson-datatype-guava/issues/84): Class not found exception in OSGi (`com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanPropertyWriter`) +* (no separate issue): Allow use of `@JsonDeserialize(contentAs=XXX)` with `Optional` + +#### [Java 8 Date/Time](../../jackson-datatype-jsr310) + +* [#44](../../jackson-datatype-jsr310/issues/44): Allows users to pass a custom DateTimeFormatter for the ZonedDateTimeSerializer +* [#45](../../jackson-datatype-jsr310/issues/45): Problem Deserializing `java.time.OffsetTime` from JSON Array + +#### [JDK8](../../jackson-datatype-jdk8) + +* [#13](../../jackson-datatype-jdk8/issues/13): Allow use of `@JsonDeserialize(contentAs=XXX)` with `Optional` + +### Changes, other modules + +#### [Afterburner](../../jackson-module-afterburner) + +* [#59](../../jackson-module-afterburner/issues/59): Cannot customize String deserialization behavior +* [#60](../../jackson-module-afterburner/issues/60): Cannot read some "pretty" documents + * NOTE: actually fixed by `jackson-core / #220` (see above) + +#### [Mr Bean](../../jackson-module-mrbean) + +* [#25](../../jackson-module-mrbean/issues/25): Should ignore `static` methods (setter/getter) diff --git a/Jackson-Release-2.6.4.md b/Jackson-Release-2.6.4.md new file mode 100644 index 000000000..4ae4ee8fb --- /dev/null +++ b/Jackson-Release-2.6.4.md @@ -0,0 +1,50 @@ +Patch version of [2.6](Jackson-Release-2.6), released on December 7, 2015. + +### Changes, core + +#### [Databind](../../jackson-databind) + +* [#984](../../jackson-databind/issues/984): JsonStreamContexts are not build the same way for write.. and convert methods +* [#989](../../jackson-databind/issues/989): Deserialization from "{}" to java.lang.Object causes "out of END_OBJECT token" error +* [#1003](../../jackson-databind/issues/1003): `JsonTypeInfo.As.EXTERNAL_PROPERTY` does not work with a Delegate +* [#1004](../../jackson-databind/issues/1004): Synthetic constructors confusing Jackson data binding +* [#1013](../../jackson-databind/issues/1013): `@JsonUnwrapped` is not treated as assuming `@JsonProperty("")` +* [#1031](../../jackson-databind/issues/1036): Problem with case-insensitive deserialization + +### Changes, dataformats + +#### [Avro](../../jackson-dataformat-avro) + +* [#23](../../jackson-dataformat-avro/issues/23): `MapWriteContext.createChildObjectContext()` should call `_schema.getValueType()` +* [#26](../../jackson-dataformat-avro/issues/26): Should indicate type that was requested when complaining about Any not being supported +* [#27](../../jackson-dataformat-avro/issues/27): Support serialization of `BigDecimal` values + +#### [CSV](../../jackson-dataformat-csv) + +* [#90](../../jackson-dataformat-csv/issues/90): Unexpected output with arrays starting with a null/empty element +* [#98](../../jackson-dataformat-csv/issues/98): Escape char is not being escaped during serialization + +#### [XML](../../jackson-dataformat-xml) + +* [#171](../../jackson-dataformat-xml/issues/171): `@JacksonXmlRootElement` malfunction in multi-thread environment +* [#172](../../jackson-dataformat-xml/issues/172): XML INDENT_OUTPUT property fails to add newline/indent initial elements + +### Changes, datatypes + +#### [JDK8](../../jackson-datatype-jdk8) + +* [#20](../../jackson-datatype-jdk8/issues/20): fails to serialize empty Optional with `@JsonUnwrapped` annotation +* [#21](../../jackson-datatype-jdk8/issues/21): Manifest file missing OSGi import for `com.fasterxml.jackson.databind.introspect` +* [#23](../../jackson-datatype-jdk8/issues/23): Fix an NPE for `Optional` when coercing from empty JSON String +* [#25](../../jackson-datatype-jdk8/issues/25): `OptionalDoubleSerializer` does not override `acceptJsonFormatVisitor` +* [#26](../../jackson-datatype-jdk8/issues/26): `@JsonUnwrapped` on Optional value does not propagate prefix to schema + +#### [Java 8 Date/Time](../../jackson-datatype-jsr310) + +* [#50](../../jackson-datatype-jsr310/issues/50): `Instant` schema representation is incorrect for timestamps serialization + +### Changes, other + +#### [Jackson jr](../../jackson-jr) + +* [#27](../../jackson-jr/issues/27): `JSON.Feature.READ_JSON_ARRAYS_AS_JAVA_ARRAYS` does not work diff --git a/Jackson-Release-2.6.5.md b/Jackson-Release-2.6.5.md new file mode 100644 index 000000000..801de7796 --- /dev/null +++ b/Jackson-Release-2.6.5.md @@ -0,0 +1,35 @@ +Patch version of [2.6](Jackson-Release-2.6), released January 19, 2016. + +### Changes, core + +#### [Databind](../../jackson-databind/issues) + +* [#1052](../../jackson-databind/issues/1052): Don't generate a spurious `NullNode` after parsing an embedded object +* [#1061](../../jackson-databind/issues/1061): Problem with Object Id and Type Id as Wrapper Object +* [#1073](../../jackson-databind/issues/1073): Add try-catch around `java.sql` type serializers + +### Changes, dataformats + +#### [CBOR](../../jackson-dataformat-cbor) + +* [#15](../../jackson-dataformat-cbor/issues/15): `CBORParser.getNumberType()` returns `DOUBLE` even if the generator has been fed with a float + +#### [CSV](../../jackson-dataformat-csv) + +* [#93](../../jackson-dataformat-csv/issues/93): CSV mapper does not support Views or filtering correctly for serialization +* [#96](../../jackson-dataformat-csv/issues/96): SortedBy only apply to headers and actual data +* [#100](../../jackson-dataformat-csv/issues/100): trim spaces: don't trim/strip separator character + +#### [Smile](../../jackson-dataformat-smile) + +* [#30](../../jackson-dataformat-smile/issues/30): Problem decoding "empty" Map key (String with length 0) with `nextFieldName()` + +#### [XML](../../jackson-dataformat-xml) + +* [#177](../../jackson-dataformat-xml/issues/177): Failure to deserialize unwrapped list where entry has empty content, attribute(s) + +### Changes, datatypes + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#70](../../jackson-datatype-hibernate/issues/70): Infinite recursion due to `@JsonIgnoreProperties` not passed to property diff --git a/Jackson-Release-2.6.6.md b/Jackson-Release-2.6.6.md new file mode 100644 index 000000000..514c3d4b1 --- /dev/null +++ b/Jackson-Release-2.6.6.md @@ -0,0 +1,49 @@ +Patch version of [2.6](Jackson-Release-2.6), released April 5th, 2016. + +This is planned to be the last full 2.6 release of all components: further releases, if any, will be micro-releases (like next hypothetical one, `2.6.6.1`) of specific components with issues. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#248](../../jackson-core/issues/248): VersionUtil.versionFor() unexpectedly return null instead of Version.unknownVersion() + +#### [Databind](../../jackson-databind) + +* [#1088](../../jackson-databind/1088): NPE possibility in `SimpleMixinResolver` +* [#1099](../../jackson-databind/1099): Fix custom comparator container node traversal +* [#1108](../../jackson-databind/1108): Jackson not continue to parse after `DeserializationFeature.FAIL_ON_INVALID_SUBTYPE` error +* [#1112](../../jackson-databind/1112): Detailed error message from custom key deserializer is discarded +* [#1120](../../jackson-databind/1120): String value omitted from weirdStringException +* [#1123](../../jackson-databind/1123): Serializing and Deserializing Locale.ROOT + +### Changes, dataformats + +#### [Avro](../../jackson-dataformat-avro) + +* [#41](../../jackson-dataformat-avro/issues/41): Problems with type `Number`, with schema + +#### [CBOR](../../jackson-dataformat-cbor) + +* [#18](../../jackson-dataformat-cbor/issues/18): Correct parsing of zero length byte strings + +#### [Smile](../../jackson-dataformat-smile) + +* [#34](../../jackson-dataformat-smile/issues/34): Deserialize error "Invalid type marker byte" for 'long' field names (57 characters or longer) + +### Changes, data types + +#### [Joda](../../jackson-datatype-joda) + +* [#82](../../jackson-datatype-joda/issues/82): Can't deserialize a serialized DateTimeZone with default typing + +#### [Java 8 Date/Time](../../jackson-datatype-jsr310) + +* [#16](../../jackson-datatype-jsr310/issues/16): Instant is serialized as String by some dataformats/libs but can't be deserialized (unless manually converted to float) +* [#69](../../jackson-datatype-jsr310/issues/69): Serialization of `Instant` seems to throw exceptions when when `@JsonFormat` is used + +### Changes, other + +#### [Jackson-jr](../../jackson-jr) + +* [#40](../../jackson-jr/issues/40): Cannot read empty or singleton arrays with JSON.arrayOfFrom diff --git a/Jackson-Release-2.6.7.md b/Jackson-Release-2.6.7.md new file mode 100644 index 000000000..9e17244e8 --- /dev/null +++ b/Jackson-Release-2.6.7.md @@ -0,0 +1,20 @@ +Patch version of [2.6](Jackson-Release-2.6), released June 5th, 2016. + +This is planned to be the last full 2.6 release of all components: further releases, if any, will be micro-releases of specific components with issues. They will be listed under [2.6.7.x](Jackson-Release-2.6.7.x). + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#280](../../jackson-core/issues/280): FilteringGeneratorDelegate.writeUTF8String() should delegate to writeUTF8String() + +#### [Databind](../../jackson-databind) + +* [#1194](../../jackson-databind/issues/1194): Incorrect signature for generic type via `JavaType.getGenericSignature()` +* [#1228](../../jackson-databind/issues/1228): `@JsonAnySetter` does not deserialize null to Deserializer's NullValue +* [#1255](../../jackson-databind/issues/1255): `@JsonIdentityInfo` incorrectly serializing forward references + +### [Kotlin](../../jackson-module-kotlin) + +* Various fixes + diff --git a/Jackson-Release-2.6.7.x.md b/Jackson-Release-2.6.7.x.md new file mode 100644 index 000000000..263c3462b --- /dev/null +++ b/Jackson-Release-2.6.7.x.md @@ -0,0 +1,91 @@ +After last full version of [2.6](Jackson-Release-2.6), [2.6.7](Jackson-Release-2.6.7), was released branch was closed. + +Following micro-patches have been released since. + +As of June, 2021, the branch is fully closed for micro-patches as well: 2.6.7.5 is the very last release. + +## Databind, 2.6.7.1 (11-Jul-2017) + +An important security fix (see `1599` below) was backported into 2.6.x branch, resulting in patch version with following fixes: + +* [#1383](../../jackson-databind/issues/1383): Problem with `@JsonCreator` with 1-arg factory-method, implicit param names +* [#1599](../../jackson-databind/issues/1599): Backport the extra safety checks for polymorphic deserialization + +## Databind, 2.6.7.2 (13-Nov-2018) + +As per earlier cases, CVE-related backport(s): + +* [#1737](../../jackson-databind/issues/1737): Block more JDK types from polymorphic deserialization + +## Databind, 2.6.7.3 (16-Oct-2019) + +Backported all CVE fixes up to 2.9.10 + +* [#1680](../../jackson-databind/issues/1680): Block more JDK gadget types (com.sun.rowset) +* [#1855](../../jackson-databind/issues/1855): Block more serialization gadgets (dbcp/tomcat, spring / CVE-2017-17485] +* [#1899](../../jackson-databind/issues/1899): Another two gadgets to exploit default typing issue in jackson-databind (CVE-2018-5968) +* [#2032](../../jackson-databind/issues/2032): Block one more gadget type (mybatis, CVE-2018-11307) +* [#2052](../../jackson-databind/issues/2052): Block one more gadget type (jodd-db, CVE-2018-12022) +* [#2058](../../jackson-databind/issues/2058): Block one more gadget type (oracle-jdbc, CVE-2018-12023) +* [#2097](../../jackson-databind/issues/2097): Block more classes from polymorphic deserialization (CVE-2018-14718 - CVE-2018-14721) +* [#2186](../../jackson-databind/issues/2186): Block more classes from polymorphic deserialization (CVE-2018-19360, CVE-2018-19361, CVE-2018-19362) +* [#2326](../../jackson-databind/issues/2326): Block one more gadget type (mysql, CVE-2019-12086) +* [#2334](../../jackson-databind/issues/2334): Block one more gadget type (logback, CVE-2019-12384) +* [#2341](../../jackson-databind/issues/2341): Block yet another gadget type (jdom, CVE-2019-12814) +* [#2387](../../jackson-databind/issues/2387): Block one more gadget type (ehcache, CVE-2019-14379) +* [#2389](../../jackson-databind/issues/2389): Block one more gadget type (logback, CVE-2019-14439) +* [#2410](../../jackson-databind/issues/2410): Block one more gadget type (HikariCP, CVE-2019-14540) +* [#2420](../../jackson-databind/issues/2420): Block one more gadget type (cxf-jax-rs, no CVE allocated yet) +* [#2449](../../jackson-databind/issues/2449): Block one more gadget type (HikariCP, CVE-2019-14439 / CVE-2019-16335) +* [#2462](../../jackson-databind/issues/2462): Block two more gadget types (commons-configuration/-2) +* [#2478](../../jackson-databind/issues/2478): Block two more gadget types (commons-dbcp, p6spy, CVE-2019-16942 / CVE-2019-16943) +* [#2498](../../jackson-databind/issues/2498): Block one more gadget type (apache-log4j-extras/1.2, CVE-2019-17531) + +## Databind, 2.6.7.4 (25-Oct-2020) + +Backported all CVE fixes up to 2.9.10.6 + +* [#1279](../../jackson-databind/issues/1279): Ensure DOM parsing defaults to not expanding external entities +* [#2469](../../jackson-databind/issues/2469): Block one more gadget type (xalan2) +* [#2526](../../jackson-databind/issues/2526): Block two more gadget types (ehcache/JNDI - CVE-2019-20330) +* [#2589](../../jackson-databind/issues/2589): `DOMDeserializer`: setExpandEntityReferences(false) may not prevent external entity expansion in all cases [CVE-2020-25649] +* [#2620](../../jackson-databind/issues/2620): Block one more gadget type (xbean-reflect/JNDI - CVE-2020-8840) +* [#2631](../../jackson-databind/issues/2631): Block one more gadget type (shaded-hikari-config, CVE-2020-9546) +* [#2634](../../jackson-databind/issues/2634): Block two more gadget types (ibatis-sqlmap, anteros-core; CVE-2020-9547 / CVE-2020-9548) +* [#2642](../../jackson-databind/issues/2642): Block one more gadget type (javax.swing, CVE-2020-10969) +* [#2648](../../jackson-databind/issues/2648): Block one more gadget type (shiro-core) +* [#2653](../../jackson-databind/issues/2653): Block one more gadget type (shiro-core, 2nd class) +* [#2658](../../jackson-databind/issues/2658): Block one more gadget type (ignite-jta, CVE-2020-10650) +* [#2659](../../jackson-databind/issues/2659): Block one more gadget type (aries.transaction.jms, CVE-2020-10672) +* [#2660](../../jackson-databind/issues/2660): Block one more gadget type (caucho-quercus, CVE-2020-10673) +* [#2662](../../jackson-databind/issues/2662): Block one more gadget type (bus-proxy, CVE-2020-10968) +* [#2664](../../jackson-databind/issues/2664): Block one more gadget type (activemq-pool[-jms], CVE-2020-11111) +* [#2666](../../jackson-databind/issues/2666): Block one more gadget type (apache/commons-proxy, CVE-2020-11112) +* [#2670](../../jackson-databind/issues/2670): Block one more gadget type (openjpa, CVE-2020-11113) +* [#2680](../../jackson-databind/issues/2680): Block one more gadget type (SSRF, spring-jpa, CVE-2020-11619) +* [#2682](../../jackson-databind/issues/2682): Block one more gadget type (commons-jelly, CVE-2020-11620) +* [#2688](../../jackson-databind/issues/2688): Block one more gadget type (apache-drill, CVE-2020-14060) +* [#2698](../../jackson-databind/issues/2698): Block one more gadget type (weblogic/oracle-aqjms, CVE-2020-14061) +* [#2704](../../jackson-databind/issues/2704): Block one more gadget type (jaxp-ri, CVE-2020-14062) +* [#2765](../../jackson-databind/issues/2765): Block one more gadget type (org.jsecurity, CVE-2020-14195) +* [#2798](../../jackson-databind/issues/2798): Block one more gadget type (com.pastdev.httpcomponents, CVE-2020-24750) +* [#2814](../../jackson-databind/issues/2814): Block one more gadget type (Anteros-DBCP, CVE-2020-24616) +* [#2826](../../jackson-databind/issues/2826): Block one more gadget type (com.nqadmin.rowset) +* [#2827](../../jackson-databind/issues/2827): Block one more gadget type (org.arrahtec:profiler-core) + +## Databind, 2.6.7.5 (21-Jun-2021) + +The Very Last 2.6 Micro-Patch ever. + +* [#1931](../../jackson-databind/issues/1931): Block two more gadgets to exploit default typing issue (c3p0, CVE-2018-7489) +* [#2798](../../jackson-databind/issues/2798): Block one more gadget type (com.pastdev.httpcomponents, CVE-2020-24750) +* [#2854](../../jackson-databind/issues/2854): Block one more gadget type (javax.swing, CVE-2021-20190) +* [#2986](../../jackson-databind/issues/2986): Block 2 more gadget types (commons-dbcp2, CVE-2020-35490 / CVE-2020-35491) +* [#2996](../../jackson-databind/issues/2996): Block 2 more gadget types (newrelic-agent, CVE-2020-36188 / CVE-2020-36189) +* [#2997](../../jackson-databind/issues/2997): Block 2 more gadget types (tomcat/naming-factory-dbcp, CVE-2020-36186 / CVE-2020-36187) +* [#2998](../../jackson-databind/issues/2998): Block 2 more gadget types (org.apache.tomcat/tomcat-dbcp, CVE-2020-36184 / CVE-2020-36185) +* [#2999](../../jackson-databind/issues/2999): Block one more gadget type (org.glassfish.web/javax.servlet.jsp.jstl, CVE-2020-35728) +* [#3003](../../jackson-databind/issues/3003): Block one more gadget type (org.docx4j.org.apache:xalan-interpretive, CVE-2020-36183) +* [#3004](../../jackson-databind/issues/3004): Block some more DBCP-related potential gadget classes (CVE-2020-36179 / CVE-2020-36182) + + diff --git a/Jackson-Release-2.6.md b/Jackson-Release-2.6.md new file mode 100644 index 000000000..d0ce1af75 --- /dev/null +++ b/Jackson-Release-2.6.md @@ -0,0 +1,197 @@ +Version 2.6.0 was released July 17th, 2015. +It is a "minor" release following 2.5, meaning that it adds new functionality but be backwards compatible with earlier 2.x releases. + +## Status + +Branch is closed for all new releases: the last micro-patches will be released by end of 2020, after which no releases will be made. + +## New Modules + +This version introduced 2 new FasterXML-maintained standard modules: + +* [Protobuf](../../jackson-dataformat-protobuf) data format module for handling [Protocol Buffers](https://en.wikipedia.org/wiki/Protocol_Buffers) encoded data +* [OSGi](../../jackson-module-osgi) module for injecting helper objects (via `@JacksonInject`) using OSGi registry + +## Patches + +Beyond initial 2.6.0 (described here), following patch releases have been made or are planned: + +* [2.6.1](Jackson-Release-2.6.1) (09-Aug-2015) +* [2.6.2](Jackson-Release-2.6.2) (15-Sep-2015) +* [2.6.3](Jackson-Release-2.6.3) (12-Oct-2015) +* [2.6.4](Jackson-Release-2.6.4) (07-Dec-2015) +* [2.6.5](Jackson-Release-2.6.5) (19-Jan-2016) +* [2.6.6](Jackson-Release-2.6.6) (05-Apr-2016) +* [2.6.7](Jackson-Release-2.6.7) (05-Jun-2016) + +At this point, branch was officially closed for full releases, but there are further micro-patches of: + +* [Databind 2.6.7.x](Jackson-Release-2.6.7.x) + +### Changes: compatibility + +No changes to JDK requirements or baseline requirements/supports for external platforms (like Android or Scala versions) + +### Changes, core + +#### [Annotations](../../jackson-annotations) + +* [#43](../../jackson-annotations/issues/43): Add `@JsonFormat(with=Feature.xxx)` to support things like `DeserializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED` on per-property basis. +* [#58](../../jackson-annotations/issues/58): Add new properties for `@JsonIgnoreProperties`, "allowGetters", "allowSetters" +* [#60](../../jackson-annotations/issues/60): Add new value type, `OptBoolean`, for "optional booleans", to support proper handling and usage of default values, not just explicit true/false. +* [#61](../../jackson-annotations/issues/61): Add new property, `@JsonProperty.access` (and matching enum) to support read-only/write-only properties +* [#64](../../jackson-annotations/issues/64): Add `@Documented` for `@JsonPropertyDescription` + +#### [Streaming](../../jackson-core) + +* [#137](../../jackson-core/issues/137): Allow filtering content read via `JsonParser` by specifying `JsonPointer`; uses new class `com.fasterxml.jackson.core.filter.FilteringParserDelegate` (and related, `TokenFilter`) +* [#177](../../jackson-core/issues/177): Add a check so `JsonGenerator.writeString()` won't work if `writeFieldName()` expected. +* [#182](../../jackson-core/issues/182): Inconsistent `TextBuffer.getTextBuffer()` behavior +* [#185](../../jackson-core/issues/185): Allow filtering content written via `JsonGenerator` by specifying `JsonPointer`; uses new class `com.fasterxml.jackson.core.filter.FilteringGeneratorDelegate` (and related, `TokenFilter`) +* [#188](../../jackson-core/issues/188): `JsonParser.getValueAsString()` should return field name for `JsonToken.FIELD_NAME`, not `null` +* [#189](../../jackson-core/issues/189): Add `JsonFactory.Feature.USE_THREAD_LOCAL_FOR_BUFFER_RECYCLING` (default: true), which may be disabled to prevent use of ThreadLocal-based buffer recyling. +* [#195](../../jackson-core/issues/#195): Add `JsonGenerator.getOutputBuffered()` to find out amount of content buffered, not yet flushed. +* [#196](../../jackson-core/issues/196): Add support for `FormatFeature` extension, for format-specifc Enum-backed parser/generator options +* Other: + * 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 + +#### [Databind](../../jackson-databind) + +* [#77](../../jackson-databind/issues/77): Allow injection of 'transient' fields +* [#95](../../jackson-databind/issues/95): Allow read-only properties with `@JsonIgnoreProperties(allowGetters=true)` +* [#296](../../jackson-databind/issues/296): Serialization of transient fields with public getters (add `MapperFeature.PROPAGATE_TRANSIENT_MARKER`) +* [#312](../../jackson-databind/issues/312): Support Type Id mappings where two ids map to same Class +* [#348](../../jackson-databind/issues/348): `ObjectMapper.valueToTree()` does not work with `@JsonRawValue` +* [#504](../../jackson-databind/issues/504): Add `DeserializationFeature.USE_LONG_FOR_INTS` +* [#624](../../jackson-databind/issues/624): Allow setting external `ClassLoader` to use, via `TypeFactory` +* [#649](../../jackson-databind/issues/649): Make `BeanDeserializer` use new `parser.nextFieldName()` and `.hasTokenId()` methods +* [#664](../../jackson-databind/issues/664): Add `DeserializationFeature.ACCEPT_FLOAT_AS_INT` to prevent coercion of floating point numbers int `int`/`long`/`Integer`/`Long` +* [#677](../../jackson-databind/issues/677): Specifying `Enum` value serialization using `@JsonProperty` +* [#688](../../jackson-databind/issues/688): Provide a means for an ObjectMapper to discover mixin annotation classes on demand +* [#689](../../jackson-databind/issues/689): Add `ObjectMapper.setDefaultPrettyPrinter(PrettyPrinter)` +* [#696](../../jackson-databind/issues/696): Copy constructor does not preserve `_injectableValues` +* [#698](../../jackson-databind/issues/698): Add support for referential types (`ReferenceType`) +* [#700](../../jackson-databind/issues/700): Cannot Change Default Abstract Type Mapper from LinkedHashMap +* [#725](../../jackson-databind/issues/725): Auto-detect multi-argument constructor with implicit names if it is the only visible creator +* [#727](../../jackson-databind/issues/727): Improve `ObjectWriter.forType()` to avoid forcing base type for container types +* [#734](../../jackson-databind/issues/734): Add basic error-recovery for `ObjectReader.readValues()` +* [#737](../../jackson-databind/issues/737): Add support for writing raw values in `TokenBuffer` +* [#740](../../jackson-databind/issues/740): Ensure proper `null` (as empty) handling for `AtomicReference` +* [#743](../../jackson-databind/issues/743): Add `RawValue` helper type, for piping raw values through `TokenBuffer` +* [#756](../../jackson-databind/issues/756): Disabling SerializationFeature.FAIL_ON_EMPTY_BEANS does not affect `canSerialize()` +* [#762](../../jackson-databind/issues/762): Add `ObjectWriter.withoutRootName()`, `ObjectReader.withoutRootName()` +* [#777](../../jackson-databind/issues/777): Allow missing build method if its name is empty ("") +* [#781](../../jackson-databind/issues/781): Support handling of `@JsonProperty.required` for Creator methods +* [#787](../../jackson-databind/issues/787): Add `ObjectMapper setFilterProvider(FilterProvider)` to allow chaining +* [#790](../../jackson-databind/issues/790): Add `JsonNode.equals(Comparator, JsonNode)` to support configurable/external equality comparison +* [#794](../../jackson-databind/issues/794): Add `SerializationFeature.WRITE_DATES_WITH_ZONE_ID` to allow inclusion/exclusion of timezone id for date/time values (as opposed to timezone offset) +* [#795](../../jackson-databind/issues/795): Converter annotation not honored for abstract types +* [#810](../../jackson-databind/issues/810): Force value coercion for `java.util.Properties`, so that values are `String`s +* [#811](../../jackson-databind/issues/811): Add new option, `JsonInclude.Include.NON_ABSENT` (to support exclusion of JDK8/Guava Optionals) +* [#813](../../jackson-databind/issues/813): Add support for new property of `@JsonProperty.access` to support read-only/write-only use cases +* [#820](../../jackson-databind/issues/820): Add new method for `ObjectReader`, to bind from JSON Pointer position +* [#824](../../jackson-databind/issues/824): Contextual `TimeZone` changes don't take effect wrt `java.util.Date`, `java.util.Calendar` serialization +* [#827](../../jackson-databind/issues/827): Fix for polymorphic custom map key serializer +* [#840](../../jackson-databind/issues/840): Change semantics of `@JsonPropertyOrder(alphabetic)` to only count `true` value +* [#848](../../jackson-databind/issues/848): Custom serializer not used if POJO has `@JsonValue` +* [#849](../../jackson-databind/issues/849): Possible problem with `NON_EMPTY` exclusion, `int`s, `Strings` +* [#868](../../jackson-databind/issues/868): Annotations are lost in the case of duplicate methods + +### Changes, Data formats + +#### [CSV](../../jackson-dataformat-csv) + +* [#72](../../jackson-dataformat-csv/issues/72): Recognize the configured "null value" (String) also in reader-infrastructure. +* [#74](../../jackson-dataformat-csv/issues/74): Problems with ordering, `@JsonPropertyOrder` losing alphabetic ordering +* [#83](../../jackson-dataformat-csv/issues/83): Serializing List with null values leads to corrupt CSV + +#### [Protobuf](../../jackson-dataformat-protobuf) + +**The very first official release!** + +#### [YAML](../../jackson-dataformat-yaml) + +* [#35](../../jackson-dataformat-yaml/issues/35): Add `YAMLGenerator.Feature.SPLIT_LINES` to allow controlling whether `SnakeYAML` splits longer text blocks with line breaks or not + * Also: upgrade to SnakeYAML 1.15 + +### Changes, Data types + +#### [Guava](../../jackson-datatype-guava) + +* [#64](../../jackson-datatype-guava/issues/64): `@JsonUnwrapped` annotation is ignored when a field is an `Optional` +* [#66](../../jackson-datatype-guava/issues/66): Add `GuavaModule.configureAbsentsAsNulls(boolean)` to change whether `Optional.absent()` is to be handled same as Java null during serialization (default: true) or not. +* [#67](../../jackson-datatype-guava/issues/67): Support deserializing `ImmutableSetMultimap`s +* [#68](../../jackson-datatype-guava/issues/68): Add support for `JsonInclude.Include.NON_ABSENT`, to compensate for #66 +* [#70](../../jackson-datatype-guava/issues/70): Change OSGi manifest entries to import guava 15.0 or greater +* [#74](../../jackson-datatype-guava/issues/74): Multimap serializer ignores `_valueTypeSerializer` + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#67](../../jackson-datatype-hibernate/issues/67): Provide support for Hibernate 5.x (hibernate5 maven sub-module; Hibernate5Module Jackson module) + +#### [HPPC](../../jackson-datatype-hppc) + +* Update hppc dependency to 0.7.1 + * NOTE! Due to HPPC API incompatibilities, this means that module can NOT be used with HPPC versions earlier than 0.7.0. +* Minimum JDK version now 1.7, as per minimum by HPPC + +#### [JDK8](../../jackson-datatype-jdk8) + +* [#8](../../jackson-datatype-jdk8/issues/8): JDK8 module should respect JsonInclude.Include.NON_ABSENT +* [#11](../../jackson-datatype-jdk8/issues/11): Add `configureAbsentsAsNulls` config setting, for better compatibility with Guava module + +#### [Joda](../../jackson-datatype-joda) + +* [#49](../../jackson-datatype-joda/issues/49): testDateMidnightSerWithTypeInfo test dependent on $TZ +* [#58](../../jackson-datatype-joda/issues/58): Support timezone configuration for Interval deserializer +* [#62](../../jackson-datatype-joda/issues/62): Allow use of numbers-as-Strings for LocalDate (in array) +* [#64](../../jackson-datatype-joda/issues/64): Support `@JsonFormat(pattern=...)` for deserialization +* [#66](../../jackson-datatype-joda/issues/66): Support `SerializationFeature.WRITE_DATES_WITH_ZONE_ID` +* [#68](../../jackson-datatype-joda/issues/68): TimeZone in DeserializationContext is ignored with `SerializationFeature.WRITE_DATES_WITH_ZONE_ID` + +#### [JSR-310](../../jackson-datatype-jsr310) (aka Java8 Dates) + +* [#18](../../jackson-datatype-jsr310/issues/18): Support serializing and deserializing Maps with jsr310 types as keys +* [#26](../../jackson-datatype-jsr310/issues/26): ISO strings with time-component cause exception when deserializing to LocalDate +* [#29](../../jackson-datatype-jsr310/issues/29): Add support for `@JsonFormat` for `Instant` +* [#30](../../jackson-datatype-jsr310/issues30/): Make `ZonedDateTime` serializer support `SerializationFeature.WRITE_DATES_WITH_ZONE_ID` + +### Changes, Jackson jr + +* [#24](../../jackson-jr/issues/24): `String`/`byte[]` composers can not write POJOs (ObjectCodec not linked) +* Other + * Minor performance optimizations (+10-20% throughput), using new jackson-core 2.6 methods for reading, writing + +### Changes, JAX-RS + +* [#39](../../jackson-jaxrs-providers/issues/39): Build alternate jars with qualifier "no-metainf-services", which do NOT include `META-INF/services` metadata for auto-registration + +### Changes, other modules + +#### [Afterburner](../../jackson-module-afterburner) + +* [#46](../../jackson-module-afterburner/issues/46): Log-warning "Disabling Afterburner deserialization for type" using wrong logger-name +* [#53](../../jackson-module-afterburner/issues/53): Include checksum in generated class names (to resolve #52) + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#53](../../jackson-module-jsonSchema/issues/53): Add support to oneOf +* [#57](../../jackson-module-jsonSchema/issues/57): Enum types should generate a schema that includes the possible enum values +* [#60](../../jackson-module-jsonSchema/issues/60): Add `readonly` property to `JsonSchema` +* [#67](../../jackson-module-jsonSchema/issues/67): Unable to deserialize (extended/custom) Schema +* [#69](../../jackson-module-jsonSchema/issues/69): Add support for @Pattern annotations in String schemas +* Added `JsonSchemaGenerator(ObjectWriter)` to allow use of (re-)configured `ObjectWriter` instead of `ObjectMapper` which can not be configured. + +#### [Mr Bean](../../jackson-module-mrbean) + +* [#21](../../jackson-module-mrbean/issues/21): Change default package used for materialized classes to reflect Jackson 2.x + +#### [OSGi](../../jackson-module-osgi) + +**The very first official release!** + +#### [Parameter Names](../../jackson-module-parameter-names) (Java 8 parameter names) + +* [#21](../../jackson-module-parameter-names/issues/21): Unable to associate parameter name with single non-annotated constructor argument diff --git a/Jackson-Release-2.7.1.md b/Jackson-Release-2.7.1.md new file mode 100644 index 000000000..1e7ce2ee7 --- /dev/null +++ b/Jackson-Release-2.7.1.md @@ -0,0 +1,34 @@ +Patch version of [2.7](Jackson-Release-2.7), released February 2nd, 2016. + +### Changes, core + +#### [Databind](../../jackson-databind) + +* [#1079](../../jackson-databind/issues/1079): Add back `TypeFactory.constructType(Type, Class)` as "deprecated" in 2.7.1 +* [#1083](../../jackson-databind/issues/1083): Field in base class is not recognized, when using `@JsonType.defaultImpl` +* [#1095](../../jackson-databind/issues/1095): Prevent coercion of `int` from empty String to `null` if `DeserializationFeature .FAIL_ON_NULL_FOR_PRIMITIVES` is `true` +* [#1102](../../jackson-databind/issues/1102): Handling of deprecated `SimpleType.construct()` too minimalistic +* [#1109](../../jackson-databind/issues/1109): `@JsonFormat` is ignored by `DateSerializer` unless either a custom pattern or a timezone are specified + +### Changes, dataformats + +#### [CBOR](../../jackson-dataformat-cbor) + +* [#19](../../jackson-dataformat-cbor/issues/19): Fix reported location after non-stream input has been parsed. + +### Changes, datatypes + +#### [Guava](../../jackson-datatype-guava) + +* [#87](../../jackson-datatype-guava/issues/87): OSGi import missing for `com.fasterxml.jackson.annotation.JsonInclude$Value` + +#### [Java 8 Dates](../../jackson-datatype-jsr310) + +* [#56](../../jackson-datatype-jsr310/issues/56): Handle JSON serialized Dates from JavaScript in LocalDateDeserializer (follow up for earlier `#28`) +* [#57](../../jackson-datatype-jsr310/issues/57): Add support for `@JsonFormat` for `MonthDay` + +### Changes, other modules + +#### [Afterburner](../../jackson-module-afterburner) + +* [#63](../../jackson-module-afterburner/issues/63): Revert back expansion of `NON_EMPTY` handling diff --git a/Jackson-Release-2.7.2.md b/Jackson-Release-2.7.2.md new file mode 100644 index 000000000..69a5950bc --- /dev/null +++ b/Jackson-Release-2.7.2.md @@ -0,0 +1,31 @@ +Patch version of [2.7](Jackson-Release-2.7), released February 27th, 2016. + +### Changes, core + +#### [Databind](../../jackson-databind) + +* [#1115](../../jackson-databind/issues/1115): Problems with deprecated `TypeFactory.constructType(type, ctxt)` methods if `ctxt` is `null` +* [#1124](../../jackson-databind/issues/1124): JsonAnyGetter ignores JsonSerialize(contentUsing=...) +* [#1128](../../jackson-databind/issues/1128): UnrecognizedPropertyException in 2.7.1 for properties that work with version 2.6.5 +* [#1129](../../jackson-databind/issues/1129): When applying type modifiers, don't ignore container types. +* [#1130](../../jackson-databind/issues/1130): NPE in `StdDateFormat` hashCode and equals +* [#1134](../../jackson-databind/issues/1134): Jackson 2.7 doesn't work with jdk6 due to use of `Collections.emptyIterator()` + +### Changes, dataformats + +#### [CBOR](../../jackson-dataformat-cbor) + +* [#22](../../jackson-dataformat-cbor/issues/22): `CBORGenerator.copyCurrentStructure()` and `copyCurrentEvent()` do not copy tags + +#### [Smile](../../jackson-dataformat-smile) +* [#34](../../jackson-dataformat-smile/issues/34): Deserialize error "Invalid type marker byte" for 'long' field names (57 characters or longer) + +### Changes, datatypes + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#86](../../jackson-datatype-hibernate/issues/86): NoClassDefFoundError: org/hibernate/bytecode/internal/javassist/FieldHandler with hibernate 5.1 + +#### [Joda](../../jackson-datatype-joda) + +* [#81](../../jackson-datatype-joda/issues/81): Add key deserializers for `Duration` and `Period` classes diff --git a/Jackson-Release-2.7.3.md b/Jackson-Release-2.7.3.md new file mode 100644 index 000000000..abfd21a06 --- /dev/null +++ b/Jackson-Release-2.7.3.md @@ -0,0 +1,37 @@ +Patch version of [2.7](Jackson-Release-2.7), being released on March 15, 2016 + +### Changes, core + +#### [Databind](../../jackson-databind) + +* [#1125](../../jackson-databind/issues/1125): Problem with polymorphic types, losing properties from base type(s) +* [#1150](../../jackson-databind/issues/1150): Problem with Object id handling, explicit `null` token +* [#1154](../../jackson-databind/issues/1154): `@JsonFormat.pattern` on dates is now ignored if shape is not explicitely provided +* [#1161](../../jackson-databind/issues/1161): `DeserializationFeature.READ_ENUMS_USING_TO_STRING` not dynamically changeable with 2.7 + +### Changes, data formats + +#### [Avro](../../jackson-dataformat-avro) + +* [#35](../../jackson-dataformat-avro/issues/35): Not able to serialize avro generated object having schema$ object + +#### [YAML](../../jackson-dataformat-yaml) + +* [#59](../../jackson-dataformat-yaml/issues/59): Avoid exposing SnakeYAML exception types (wrap) + +### Changes, datatypes + +#### [Java 8 Date](../../jackson-datatype-jsr310) + +* [#63](../../jackson-datatype-jsr310/issues/63): Should not leak `DateTimeException`s to caller + +### Changes, other modules + +#### [Jackson Jr](../../jackson-jr) + +* [#37](../../jackson-jr/issues/37): Update Jackson Jr Retrofit 2 Converter for Retrofit 2.0.0 +* [#38](../../jackson-jr/issues/38): `PRETTY_PRINT_OUTPUT` with composer doesn't work + +#### [Java 8 Parameter Names](../../jackson-module-parameter-names) + +* [#32](../../jackson-module-parameter-names/issues/32): `@JsonProperty` annotations on enums are not respected if parameter names module is registered \ No newline at end of file diff --git a/Jackson-Release-2.7.4.md b/Jackson-Release-2.7.4.md new file mode 100644 index 000000000..e5337641a --- /dev/null +++ b/Jackson-Release-2.7.4.md @@ -0,0 +1,66 @@ +Patch version of [2.7](Jackson-Release-2.7), released on April 29, 2016. +Following fixes were included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#209](../../jackson-core/issues/209): Make use of `_allowMultipleMatches` in `FilteringParserDelegate` + +#### [Databind](../../jackson-databind) + +* [#1178](../../jackson-databind/issues/1178): `@JsonSerialize(contentAs=superType)` behavior disallowed in 2.7 +* [#1186](../../jackson-databind/issues/1186): `SimpleAbstractTypeResolver` breaks generic parameters +* [#1189](../../jackson-databind/issues/1189): Converter called twice results in ClassCastException +* [#1191](../../jackson-databind/issues/1191): Non-matching quotes used in error message for date parsing +* [#1194](../../jackson-databind/issues/1194): Incorrect signature for generic type via `JavaType.getGenericSignature +* [#1195](../../jackson-databind/issues/1195): `JsonMappingException `not Serializable due to 2.7 reference to source (parser) +* [#1198](../../jackson-databind/issues/1198): Problem with `@JsonTypeInfo.As.EXTERNAL_PROPERTY`, `defaultImpl`, missing type id, NPE + +### Changes, dataformats + +#### [Avro](../../jackson-dataformat-avro) + +* [#39](../../jackson-dataformat-avro/issues/39): Byte arrays are represented as strings in generated avro schema + +#### [XML](../../jackson-dataformat-xml) + +* [#178](../../jackson-dataformat-xml/issues/178): Problem with polymorphic serialization, inclusion type of +`As.WRAPPER_OBJECT`, extra tag +* [#190](../../jackson-dataformat-xml/issues/190): Ensure that defaults for `XMLInputFactory` have expansion of external parsed general entities disabled +* [#191](../../jackson-dataformat-xml/issues/191): Strange behaviour of an empty item (but with whitespace between start/end tags) in List + +### Changes, datatypes + +#### [JDK8](../../jackson-datatype-jdk8) + +* [#31](../../jackson-datatype-jdk8/issues/31): Support `@JsonSerialize(contentUsing=)` and `@JsonDeserialize(contentUsing=)` for `Optional` +* [#34](../../jackson-datatype-jdk8/issues/34): Fix OptionalSerializer.isEmpty() from an incorrect class cast exception + +#### [Java 8 Date](../../jackson-datatype-jsr310) + +* [#68](../../jackson-datatype-jsr310/issues/68): Handle JSON serialized Dates from JavaScript in `LocalDateTimeDeserializer` +* [#76](../../jackson-datatype-jsr310/issues/76): Use `InvalidFormatException` for deserialization parse failures + +### Changes, [JAX-RS](../../jackson-jaxrs-providers) + +* [#80](../../jackson-jaxrs-providers/issues/80): Non-JSON providers don't support custom MIME types with extensions + +### Changes, other modules + +#### [Afterburner](../../jackson-modules-base) + +* [#4](../../jackson-modules-base/issues/4): Serialization with Afterburner causes Java VerifyError for generic with String as type + +#### [Mr Bean](../../jackson-modules-base) + +* [#8](../../jackson-modules-base/issues/8): Problem with `Optional`, `AtomicReference` valued properties + +#### [Parameter Names (Java 8)](../../jackson-module-parameter-names) + +* [#33](../../jackson-module-parameter-names/issues/33): Calls to Executable.getParameters() should guard against MalformedParametersException + +#### [Scala module](../../jackson-module-scala) + +* [#252](../../jackson-module-scala/issues/252): Upgrade Option support to use ReferenceType + diff --git a/Jackson-Release-2.7.5.md b/Jackson-Release-2.7.5.md new file mode 100644 index 000000000..036a73461 --- /dev/null +++ b/Jackson-Release-2.7.5.md @@ -0,0 +1,47 @@ +Patch version of [2.7](Jackson-Release-2.7), released on Jun 11th, 2016. + +Following fixes were included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#280](../../jackson-core/issues/280): `FilteringGeneratorDelegate.writeUTF8String()` should delegate to `writeUTF8String()` + +#### [Databind](../../jackson-databind) + +* [#1098](../../jackson-databind/issues/1098): DeserializationFeature.FAIL_ON_INVALID_SUBTYPE does not work with `JsonTypeInfo.Id.CLASS` +* [#1223](../../jackson-databind/issues/1223): `BasicClassIntrospector.forSerialization(...).findProperties` should respect MapperFeature.AUTO_DETECT_GETTERS/SETTERS +* [#1225](../../jackson-databind/issues/1225): `JsonMappingException` should override `getProcessor()` +* [#1228](../../jackson-databind/issues/1228): `@JsonAnySetter` does not deserialize null to Deserializer's `NullValue` +* [#1231](../../jackson-databind/issues/1231): `@JsonSerialize(as=superType)` behavior disallowed in 2.7.4 +* [#1248](../../jackson-databind/issues/1248): `Annotated` returns raw type in place of Generic Type in 2.7.x +* [#1253](../../jackson-databind/issues/1253): Problem with context handling for `TokenBuffer`, field name +* [#1255](../../jackson-databind/issues/1255): JsonIdentityInfo incorrectly serializing forward references + +### Data formats + +#### [CSV](../../jackson-dataformat-csv) + +* [#124](../../jackson-dataformat-csv/issues/124): jackson-annotations are not included as a dependency within jackson-dataformat-csv + +### Datatypes + +#### [Java 8 Datetime](../../jackson-datatype-jsr310) + +* [#79](../../jackson-datatype-jsr310/issues/79): Can't deserialize `Instant` from JSON of serialized `java.util.Date` + +### [Jackson jr](../../jackson-jr) + +* [#42](../../jackson-jr/issues/42): Incorrect `jackson-core` dependency form parent pom leads to inclusion of non-shaded core jar in `jr-all` + +### Changes, other modules + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#104](../../jackson-module-jsonSchema/issues/104): HyperSchema does not generate links for nested objects + +#### [Kotlin Module](https://github.com/FasterXML/jackson-module-kotlin) + +* Update to Kotlin 1.0.2 +* [Pull Request #5](https://github.com/FasterXML/jackson-module-kotlin/pull/5): Any fields present in the constructor do not have to be null \ No newline at end of file diff --git a/Jackson-Release-2.7.6.md b/Jackson-Release-2.7.6.md new file mode 100644 index 000000000..a86cfc7bf --- /dev/null +++ b/Jackson-Release-2.7.6.md @@ -0,0 +1,20 @@ +Patch version of [2.7](Jackson-Release-2.7), released on 23-Jul-2016 + +Following fixes will be included. + +### Changes, core + +#### [Databind](../../jackson-databind/) + +* [#1215](../../jackson-databind/issues/1215): Problem with type specialization for Maps with `@JsonDeserialize(as=subtype)` +* [#1279](../../jackson-databind/issues/1279): Ensure DOM parsing defaults to not expanding external entities +* [#1288](../../jackson-databind/issues/1288): Type id not exposed for `JsonTypeInfo.As.EXTERNAL_PROPERTY` even when `visible` set to `true` +* [#1301](../../jackson-databind/issues/1301): Problem with `JavaType.toString()` for recursive (self-referential) types + +### Changes, other modules + +#### [Base](../../jackson-modules-base) + +* [#7](../../jackson-modules-base/issues/7): (afterburner) Afterburner excludes serialization of some `null`-valued Object properties +* [#12](../../jackson-modules-base/issues/12): (mrbean) Problem deserializing Long into Calendar with mrBean +* [#13](../../jackson-modules-base/issues/13): (paranamer) Make `ParanamerAnnotationIntrospector` serializable diff --git a/Jackson-Release-2.7.7.md b/Jackson-Release-2.7.7.md new file mode 100644 index 000000000..e584f0eb0 --- /dev/null +++ b/Jackson-Release-2.7.7.md @@ -0,0 +1,35 @@ +Patch version of [2.7](Jackson-Release-2.7), released on 27-Aug-2016, + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#307](../../jackson-core/issues/307): JsonGenerationException: Split surrogate on writeRaw() input thrown for input of certain size +* [#315](../../jackson-core/issues/315): `OutOfMemoryError` when writing `BigDecimal` + +#### [Databind](../../jackson-databind/) + +* [#1322](../../jackson-databind/1322): `EnumMap` keys not using enum's `@JsonProperty` values unlike Enum values +* [#1332](../../jackson-databind/1332): `ArrayIndexOutOfBoundException` for enum by index deser +* [#1344](../../jackson-databind/1344): Deserializing locale assumes JDK separator (underscore), does not accept RFC specified (hyphen) + +### Changes, data formats + +#### [CSV](../../jackson-dataformat-csv) + +* [#128](../../jackson-dataformat-csv/issues/128): Write out headers even if no data rows written +* [#132](../../jackson-dataformat-csv/issues/132): Invalid UTF8-character in non-UTF8 file is detected too early, so parsing can not be continued + +#### Protobuf + +* [#27](https://github.com/FasterXML/jackson-dataformats-binary/pull/27): Fixed long deserialization problem for longs of ~13digit length + +#### [XML](../../jackson-dataformat-xml) + +* [#204](../../jackson-dataformat-xml/issues/204): `FromXMLParser.nextTextValue()` incorrect for attributes + +#### [YAML](../../jackson-dataformat-yaml) + +* [#69](../../jackson-dataformat-yaml/issues/69): Problem to parse time values as string diff --git a/Jackson-Release-2.7.8.md b/Jackson-Release-2.7.8.md new file mode 100644 index 000000000..10816dbe0 --- /dev/null +++ b/Jackson-Release-2.7.8.md @@ -0,0 +1,38 @@ +Patch version of [2.7](Jackson-Release-2.7), released on 26-Sep-2016. + +Following fixes are included. + +### General notes: + +As usual, this patch contains multiple fixes. But while all are important for some user or use case, some are considered more general important: + +* Fix for [Immutables][https://github.com/immutables/immutables) library, regarding use of generated single-argument `@JsonCreator` annotated Delegating Creator. See `databind#1383` below for details +* Fix for XML processing defaults, regarding DTD processing: See `dataformat-xml#211` below for details + +Because of these fixes, an upgrade from earlier 2.7.x patch versions is strongly recommended. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#317](../../jackson-core/issues/317): `ArrayIndexOutOfBoundsException`: 200 on floating point number with exactly 200-length decimal part + +#### [Databind](../../jackson-databind) + +* [#877](../../jackson-databind/issues/877): `@JsonIgnoreProperties`: ignoring the "cause" property of `Throwable` on GAE +* [#1359](../../jackson-databind/issues/1359): Improve `JsonNode` deserializer to create `FloatNode` if parser supports +* [#1362](../../jackson-databind/issues/1362): `ObjectReader.readValues()` ignores offset and length when reading an array +* [#1363](../../jackson-databind/issues/1363): The static field `ClassUtil.sCached` can cause a class loader leak +* [#1368](../../jackson-databind/issues/1368): Problem serializing `JsonMappingException` due to addition of non-ignored `processor` property (added in 2.7) +* [#1383](../../jackson-databind/issues/1383): Problem with `@JsonCreator` with 1-arg factory-method, implicit param names + +### Changes, data formats + +#### [XML](../../jackson-dataformat-xml) + +* [#210](../../jackson-dataformat-xml/issues/210): `ToXmlGenerator` WRITE_BIGDECIMAL_AS_PLAIN is used the wrong way round +* [#211](../../jackson-dataformat-xml/issues/211): Disable `SUPPORT_DTD` for `XMLInputFactory` unless explicitly overridden + +#### [YAML](../../jackson-dataformat-yaml) + +* [#70](../../jackson-dataformat-yaml/issues/70): `UTF8Reader` is unsafe if a Jackson-annotated class itself deserializes a Jackson-annotated class diff --git a/Jackson-Release-2.7.9.md b/Jackson-Release-2.7.9.md new file mode 100644 index 000000000..46973ff3a --- /dev/null +++ b/Jackson-Release-2.7.9.md @@ -0,0 +1,42 @@ +Patch version of [2.7](Jackson-Release-2.7), released on 04 February 2017. + +This is planned to be the last full 2.7 release of all components: further releases, if any, will be micro-releases (like next hypothetical one, `2.7.9.1`) of specific components with issues. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +#### [Databind](../../jackson-databind) + +* [#1367](../../jackson-databind/issues/1367): No Object Id found for an instance when using `@ConstructorProperties` +* [#1392](../../jackson-databind/issues/1392): Custom UnmodifiableSetMixin Fails in Jackson 2.7+ but works in +Jackson 2.6 +* [#1411](../../jackson-databind/issues/1411): MapSerializer._orderEntries should check for null keys +* [#1432](../../jackson-databind/issues/1432): Off by 1 bug in PropertyValueBuffer +* [#1439](../../jackson-databind/issues/1439): NPE when using with filter id, serializing `java.util.Map` types +* [#1456](../../jackson-databind/issues/1456): `TypeFactory` type resolution broken in 2.7 for generic types when using `constructType` with context +* [#1476](../../jackson-databind/issues/1476): Wrong constructor picked up when deserializing object +* [#1506](../../jackson-databind/issues/1506): Missing `KeyDeserializer` for `CharSequence` + +### Changes, dataformats + +#### [Avro](../../jackson-dataformat-avro) + +* Support multiple root-level value writes (via `SequenceWriter`) +* Support multiple root-level value reads (via `MappingIterator`) + +#### [YAML](../../jackson-dataformat-yaml) + +* [#80](../../jackson-dataformat-yaml/issues/80): Fix UTF8Writer when used in same thread + +### Changes, [Jackson jr](../../jackson-jr) + +* [#49](../../jackson-jr/issues/49): `ArrayIndexOutOfBoundsException` when parsing large Map + +### Changes, other + +#### [JAXB Annotations](../../jackson-module-jaxb-annotations) + +* [#63](../../jackson-module-jaxb-annotations/issues/63): Error in type resolution of reference type (`Optional`) diff --git a/Jackson-Release-2.7.md b/Jackson-Release-2.7.md new file mode 100644 index 000000000..fb19f706f --- /dev/null +++ b/Jackson-Release-2.7.md @@ -0,0 +1,234 @@ +Version 2.7 development started in August 2015; and the first official release happened on January 10, 2016. + +## Status + +Branch is closed and no new releases are planned, including micro-patches: the firm end-of-life for all kinds of releases is end of 2020. + +## New Modules, status changes + +* New datatype module: [jackson-datatype-pcollections](../../jackson-datatype-pcollections) +* Kotlin module become official with 2.7.2, as that is the first version based on the official Kotlin 1.0 +* [jackson-module-jdk7](../../jackson-module-jdk7) was deprecated: all functionality was dynamically added directly in `jackson-databind`, as explained below. + * no 2.7.x version was released (in retrospect, a no-op version might have made more sense) + +## Patches + +Beyond initial 2.7.0 (described here), following patch releases have been made: + +* [2.7.1](Jackson-Release-2.7.1) (02-Feb-2016) +* [2.7.2](Jackson-Release-2.7.2) (27-Feb-2016) +* [2.7.3](Jackson-Release-2.7.3) (16-Mar-2016) +* [2.7.4](Jackson-Release-2.7.4) (29-Apr-2016) +* [2.7.5](Jackson-Release-2.7.5) (11-Jun-2016) +* [2.7.6](Jackson-Release-2.7.6) (23-Jul-2016) +* [2.7.7](Jackson-Release-2.7.7) (27-Aug-2016) +* [2.7.8](Jackson-Release-2.7.8) (26-Sep-2016) +* [2.7.9](Jackson-Release-2.7.9) (04-Feb-2017) + +At this point branch is not open any more (that is, no more full patch releases are planned). + +Following micro-patches have been released: + +* `jackson-databind` + * `2.7.9.1` (18-Apr-2017) + * [#1599](../../jackson-databind/issues/1599): Jackson Deserializer security vulnerability + * Minor robustification of method resolution in `AnnotatedClass` + * `2.7.9.2` (20-Dec-2017) + * [#1607](../../jackson-databind/issues/1607): `@JsonIdentityReference` not used when setup on class only + * [#1628](../../jackson-databind/issues/1628): Don't print to error stream about failure to load JDK 7 types + * [#1680](../../jackson-databind/issues/1680): Blacklist couple more types for deserialization + * [#1737](../../jackson-databind/issues/1737): Block more JDK types from polymorphic deserialization + * [#1855](../../jackson-databind/issues/1855): Blacklist for more serialization gadgets (dbcp/tomcat, spring) + * `2.7.9.3` (11-Feb-2018) + * [#1872](../../jackson-databind/issues/1872): `NullPointerException` in `SubTypeValidator.validateSubType` when validating Spring interface + * [#1931](../../jackson-databind/issues/1931): Two more `c3p0` gadgets to exploit default typing issue + * `2.7.9.4` (08-Jun-2018) + * [#2032](../../jackson-databind/issues/2032): CVE-2018-11307: Potential information exfiltration with default typing, serialization gadget from MyBatis + * [#2052](../../jackson-databind/issues/2052): CVE-2018-12022: Block polymorphic deserialization of types from Jodd-db library + * [#2058](../../jackson-databind/issues/2058): CVE-2018-12023: Block polymorphic deserialization of types from Oracle JDBC driver + * `2.7.9.5` (23-Nov-2018) + * [#1899](../../jackson-databind/issues/1899): Another two gadgets to exploit default typing issue in jackson-databind + * [#2097](../../jackson-databind/issues/2097): Block more classes from polymorphic deserialization (CVE-2018-14718 - CVE-2018-14721) + * [#2186](../../jackson-databind/issues/2186): Block more classes from polymorphic deserialization (CVE-2018-19360, CVE-2018-19361, CVE-2018-19362) + * `2.7.9.6` (26-Jul-2019) + * [#2326](../../jackson-databind/issues/2326): Block class for CVE-2019-12086 + * [#2334](../../jackson-databind/issues/2334): Block class for CVE-2019-12384 + * [#2341](../../jackson-databind/issues/2341): Block class for CVE-2019-12814 + * [#2387](../../jackson-databind/issues/2387): Block class for CVE-2019-14379 + * [#2389](../../jackson-databind/issues/2389): Block class for (CVE-2019-14439 + * `2.7.9.7` (10-Mar-2020) + * [#2526](../../jackson-databind/issues/2526): Block two more gadget types (ehcache/JNDI - CVE-2019-20330) + * [#2620](../../jackson-databind/issues/2620): Block one more gadget type (xbean-reflect/JNDI - CVE-2020-8840) + * [#2631](../../jackson-databind/issues/2631): Block one more gadget type (shaded-hikari-config, CVE-2020-9546) + * [#2634](../../jackson-databind/issues/2634): Block two more gadget types (ibatis-sqlmap, anteros-core; CVE-2020-9547 / CVE-2020-9548) + * [#2642](../../jackson-databind/issues/2642): Block one more gadget type (javax.swing, CVE-to-be-allocated) + * [#2648](../../jackson-databind/issues/2648): Block one more gadget type (shiro-core, CVE-to-be-allocated) +* `jackson-module-kotlin` `2.7.9.1` (10-Feb-2018) + * Upgrade to work Kotlin 1.2(.21) + +## Changes: compatibility + +Starting with 2.7, JDK baseline will be Java 7 / JDK 7, with following exceptions: + +* `jackson-annotations` and `jackson-core` (streaming) will remain Java 6 +* No new language features are yet used (diamond pattern, try-with-resources); only JDK types +* All JDK 7 types are accessed dynamically + * Deserializer for `java.nio.file.Path` + * Handling of new annotations under `java.beans`: `@ConstructorProperties`, `@Transient` via `JacksonAnnotationIntrospector`, but + +So it should still be possible to use Jackson 2.7 on Java 6, but not compile, build. +With Jackson 2.8, Java 7 languages features will be allowed + +Other compatibility changes: + +* `ObjectMapper` default timezone now `UTC`, not `GMT` (as with 2.6 and prior): usually the two behave the same, but may cause minor variation in serialized form +* As per `#952` (see below), behavior of `JsonInclude.Include.NON_EMPTY` will be reverted to 2.5 level: it only applies to `Collection`s, `Map`s, arrays and `String`s: default scalar values (like `0` for `int`) will NOT be considered "empty". + * Behavior of `NON_EMPTY` was different only for 2.6: prior to that behavior was the same as with 2.7 and onwards + +## Implemented major features + +### Add support for dataformat-specific features + +With Jackson 2.6, `ObjectReader` allows passing of `JsonParser.Feature` overrides, and `ObjectWriter` similarly `JsonGenerator.Feature` overrides. But there are some format-specific features for formats like `CSV` which were not being passed before 2.7. + +Since `ObjectReader` and `ObjectWriter` are not easy to sub-class (an attempt to do so pointed out a few inconvenient quirks Java typing would impose), it would be most convenient to be able to pass opaque bitflags to actual parser/generator implementation, and this is what has been added. + +### Fix (generic) type resolution mechanism + +While Jackson has the best support for generic types of all Java JSON libraries, there are certain tricky edge cases that do not work. Specifically, type variable aliasing (case where variable name like `T` binds to different types at different points in hierarchy) is not correctly resolved, as variable binding is constructed globally and not hierarchically. + +`java-classmate` library which was built based on my experiences with Jackson does handle all these cases correctly (to my knowledge), and could be used as a blueprint for improved system. It can not necessarily be used directly because Jackson's type system is more complicated and adds semantics that classmate does not use (like `Map` and `Collection` types being special), but should help as an example. + +### Revert back expansion of `NON_EMPTY` handling + +Although the intent has always been that `Include.NON_EMPTY` would apply not just to empty arrays, `Collection`s , `Map`s and `String`s, to include things like numbers with default values (`0` for `int`, for example). But since many `JsonSerializer`s did NOT properly check for these conditions, before Jackson 2.6 `NON_EMPTY` exclusion did not work as extensively as intended, and many users came to depend on this specific behavior. + +With 2.6 serializers were improved to handle "emptiness" as originally envisioned. This confused some +of users, leading to confusion and frustration on what seemed like arbitrary changes. + +After lengthy discussions over this issue, it seems that instead of using extended definition of what is empty, it makes more sense to use another value, `NON_DEFAULT` for such concept, and keep `NON_EMPTY` to strictly ONLY exclude: + +* Anything that is `null` (that is, a superset of `NON_NULL`) +* Anything that is "absent" (for `Optional`s and other "Reference Types" -- superset of `NON_ABSENT`) +* Empty container types with no elements: + * `java.util.Collection` + * `java.util.Map` + * Java arrays +* Empty Strings + +With that, `NON_DEFAULT` will have two modes: + +* When applied on containing class, it will try to compare actual defaults values of the POJO for given properties +* Otherwise (when `NON_DEFAULT` is either default global or per-type value; or used as per-property override), use per-type criteria, where: + * anything that would be considered "empty" is excluded, but also + * default values for primitives (like `0` for `int`) and their wrappers (`Integer.valueOf(0)` for `Integer`) are also excluded + + +----- + +### Changes, core + +#### [Annotations](../../jackson-annotations) + +* [#37](../../jackson-annotations/issues/37): Add `@JsonClassDescription` +* [#77](../../jackson-annotations/issues/77): Add a new `ObjectIdGenerator`, `StringIdGenerator`, to allow arbitrary `String` Object Id usage +* Major rewrite of merging of `JsonFormat.Value` and `JsonInclude.Value`, to allow for better multi-level defaults (global, per-type, property) + +#### [Streaming](../../jackson-core) + +* [#37](../../jackson-core/issues/37): `JsonParser.getTokenLocation()` doesn't update after field names +* [#198](../../jackson-core/issues/198): Add back-references to `JsonParser` / `JsonGenerator` for low-level parsing issues (via `JsonParseException`, `JsonGenerationException`) +* [#211](../../jackson-core/issues/211): Fix typo of function name `com.fasterxml.jackson.core.Version.isUknownVersion()` (add `isUnknownVersion()`, deprecated misspelled variant) +* [#229](../../jackson-core/issues/229): Array element and field token spans include previous comma. + +#### [Databind](../../jackson-databind) + +* [76](../../jackson-databind/issues/76): Problem handling datatypes Recursive type parameters +* [432](../../jackson-databind/issues/432): `StdValueInstantiator` unwraps exceptions, losing context +* [497](../../jackson-databind/issues/497): Add new JsonInclude.Include feature to exclude maps after exclusion removes all elements +* [803](../../jackson-databind/issues/803): Allow use of `StdDateFormat.setLenient()` +* [819](../../jackson-databind/issues/819): Add support for setting `FormatFeature` via `ObjectReader`, `ObjectWriter` +* [857](../../jackson-databind/issues/857): Add support for `java.beans.Transient` +* [905](../../jackson-databind/issues/905): Add support for `@ConstructorProperties` +* [909](../../jackson-databind/issues/909): Rename PropertyNamingStrategy `CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES` as `SNAKE_CASE`, `PASCAL_CASE_TO_CAMEL_CASE` as `UPPER_CAMEL_CASE` +* [915](../../jackson-databind/issues/915): ObjectMapper default timezone is GMT, should be UTC +* [918](../../jackson-databind/issues/918): Add `MapperFeature.ALLOW_EXPLICIT_PROPERTY_RENAMING` +* [924](../../jackson-databind/issues/924): `SequenceWriter.writeAll()` could accept `Iterable` +* [948](../../jackson-databind/issues/948): Support leap seconds, any number of millisecond digits for ISO-8601 Dates. +* [952](../../jackson-databind/issues/952): Revert non-empty handling of primitive numbers wrt `NON_EMPTY`; make `NON_DEFAULT` use extended criteria +* [957](../../jackson-databind/issues/957): Merge `datatype-jdk7` stuff in (java.nio.file.Path handling) +* [959](../../jackson-databind/issues/959): Schema generation: consider active view, discard non-included properties +* [963](../../jackson-databind/issues/963): Add PropertyNameStrategy `KEBAB_CASE` +* [978](../../jackson-databind/issues/978): ObjectMapper#canSerialize(Object.class) returns false even though FAIL_ON_EMPTY_BEANS is disabled +* [997](../../jackson-databind/issues/997): Add `MapperFeature.OVERRIDE_PUBLIC_ACCESS_MODIFIERS` +* [998](../../jackson-databind/issues/998): Allow use of `NON_DEFAULT` for POJOs without default constructor +* [1000](../../jackson-databind/issues/1000): Add new mapping exception type for enums and UUIDs +* [1010](../../jackson-databind/issues/1010): Support for array delegator +* [1043](../../jackson-databind/issues/1043): `@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)` does not work on fields +* [1044](../../jackson-databind/issues/1044): Add `AnnotationIntrospector.resolveSetterConflict(...)` to allow custom setter conflict resolution + +### Changes, Data formats + +#### [Avro](../../jackson-dataformat-avro) + +* [#21](../../jackson-dataformat-avro/issues/21): Add `AVRO_BUFFERING` feature for `AvroParser`, `AvroGenerator` (enabled by default, same as existing pre-2.7 behavior) + +#### [CSV](../../jackson-dataformat-csv) + +* [#81](../../jackson-dataformat-csv/issues/81): Add alternative way to configure 'wrap-as-array', as `CsvParser` feature +* [#89](../../jackson-dataformat-csv/issues/89): Allow choice of using header-line declaration to reorder columns of explicit schema, with `CsvSchema.setReorderColumns` +* [#92](../../jackson-dataformat-csv/issues/92): Allow multi-character separator values +* [#94](../../jackson-dataformat-csv/issues/94): Change schema/mapping related `JsonParseException`s to proper `JsonMappingException`s +* [#95](../../jackson-dataformat-csv/issues/95): Add `CsvParser.Feature.IGNORE_TRAILING_UNMAPPABLE` to allow skipping of all extra, unmappable columns +* [#97](../../jackson-dataformat-csv/issues/97): Verify CSV headers are in the order as expected (added `strictHeaders` property in `CsvSchema`) +* [#103](../../jackson-dataformat-csv/issues/103): `JsonGenerator.Feature.IGNORE_UNKNOWN` does not prevent error when writing structured values +* [#106](../../jackson-dataformat-csv/issues/106): Null fields are always ignored when serializing list of +* [#109](../../jackson-dataformat-csv/issues/109): Allow specifying (via `CsvSchema`) a way to map "extra" columns into specific key (to use via any setter) + +#### [Protobuf](../../jackson-dataformat-protobuf) + +* [#11](../../jackson-dataformat-protobuf/issues/11): dd Support for Generating Protobuf Schema From POJO Definition + +#### [XML](../../jackson-dataformat-xml) + +* [#156](../../jackson-dataformat-xml/issues/156): Add `XmlMapper.setDefaultUseWrapper()` for convenience. +* [#167](../../jackson-dataformat-xml/issues/167): Exception on deserializing empty element with an xsi attribute +* [#169](../../jackson-dataformat-xml/issues/169): Fail to deserialize "empty" polymorphic classes +* [#180](../../jackson-dataformat-xml/issues/180): Problem with deserialization of nested non-wrapped lists, with empty inner list + +#### [YAML](../../jackson-dataformat-yaml) + +* [38](../../jackson-dataformat-yaml/issues/38): Add MINIMIZE_QUOTES generator feature +* [50](../../jackson-dataformat-yaml/issues/50): Lack of SnakeYAML Resolver leaves some missing features + +### Changes, Datatypes + +#### [Guava](../../jackson-datatype-guava) + +* [#79](../../jackson-datatype-guava/issues/79): New configuration for Guava Range default bound type. + +#### [Java8 Date/time](../../jackson-datatype-jsr310) + +* [#54](../../jackson-datatype-jsr310/issues/54): `LocalDateTimeSerializer` default constructor should use the same formatter as `LocalDateTimeDeserializer` + +### Changes, JAX-RS + +### Changes, other modules + +### [JAXB Annotations](../../jackson-module-jaxb-annotations) + +* [#52](../../jackson-module-jaxb-annotations/issues/52): Add a feature in `JaxbAnnotationIntrospector` to define meaning of `nillable=false` as "JsonInclude.NON_EMPTY" + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#80](../../jackson-module-jsonSchema/issues/80): Support `NumberFormat#multipleOf` +* [#81](../../jackson-module-jsonSchema/issues/81): Deserialize `ArrayItems` and `JsonValueFormat` correctly + +### Changes, [Jackson-jr](../../jackson-jr) + +* [#28](../../jackson-jr/issues/28): Remove misspelled `JSON.Feature.USE_IS_SETTERS` +* [#29](../../jackson-jr/issues/29): Add `JSON.Feature.WRITE_DATES_AS_TIMESTAMP`, enabling of which allows serialization of `java.util.Date` as long +* [#30](../../jackson-jr/issues/30): Add initial version of jackson-jr - based Retrofit2 Converter +* [#31](../../jackson-jr/issues/31): Fix failure writing UUID, URL and URI +* [#34](../../jackson-jr/issues/34): Add basic read-only (immutable) tree model impementation (stree) + diff --git a/Jackson-Release-2.8.1.md b/Jackson-Release-2.8.1.md new file mode 100644 index 000000000..e3d7dc141 --- /dev/null +++ b/Jackson-Release-2.8.1.md @@ -0,0 +1,18 @@ +The first patch version of [2.8](Jackson-Release-2.8), released July 20th, 2016. + +Following fixes are included. + +### Changes, core + +#### [Databind](../../jackson-databind/) + +* [#1256](../../jackson-databind/issues/1256): `Optional.empty()` not excluded if property declared with type `Object` +* [#1288](../../jackson-databind/issues/1288): Type id not exposed for `JsonTypeInfo.As.EXTERNAL_PROPERTY` even when `visible` set to `true` +* [#1289](../../jackson-databind/issues/1289): Optimize construction of `ArrayList`, `LinkedHashMap` instances +* [#1291](../../jackson-databind/issues/1291): Backward-incompatible behaviour of 2.8: deserializing enum types with two static factory methods fail by default +* [#1297](../../jackson-databind/issues/1297): Deserialization of generic type with `Map.class` +* [#1302](../../jackson-databind/issues/1302): NPE for `ResolvedRecursiveType` in 2.8.0 due to caching + +### Changes, [JAX-RS](../../jackson-jaxrs-providers) + +* [#87](../../jackson-jaxrs-providers/issues/87): `JacksonJaxbJsonProvider` should use the real "value.getClass()" to build the root type diff --git a/Jackson-Release-2.8.10.md b/Jackson-Release-2.8.10.md new file mode 100644 index 000000000..557d1d98c --- /dev/null +++ b/Jackson-Release-2.8.10.md @@ -0,0 +1,38 @@ +Patch version of [2.8](Jackson-Release-2.8), released on 24-Aug-2017. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +#### [Databind](../../jackson-databind) + +* [#1657](../../jackson-databind/issues/1657): `StdDateFormat` deserializes dates with no tz/offset as UTC instead of configured timezone +* [#1658](../../jackson-databind/issues/1658): Infinite recursion when deserializing a class extending a Map, with a recursive value type +* [#1679](../../jackson-databind/issues/1679): `StackOverflowError` in Dynamic `StdKeySerializer` +* [#1711](../../jackson-databind/issues/1711): Delegating creator fails to work for binary data (`byte[]`) with binary formats (CBOR, Smile) +* [#1735](../../jackson-databind/issues/1735): Missing type checks when using polymorphic type ids +* [#1737](../../jackson-databind/issues/1737): Block more JDK types from polymorphic deserialization + +### Changes, dataformats + +##### [Protobuf](../../jackson-dataformats-binary) + +* [#94](../../jackson-dataformats-binary/issues/94): Should _ensureRoom in ProtobufGenerator.writeString() + +### Changes, datatypes + +#### [Collections](../../jackson-datatype-collections) + +* [#19](../../jackson-datatype-collections/issues/19): `Multimap` serializer produces wrong Schema structure + +### Changes, [Java 8 support](../../jackson-modules-java8/) + +* [#33](../../jackson-modules-java8/issues/33): `Jdk8Serializer.findReferenceSerializer()` leads to `StackOverflowError` in 2.8.9 + +### Changes, other + +#### [Jackson jr](../../jackson-jr) + +* [#53](../../jackson-jr/issues/53): `java.io.File` is not a valid source for anyFrom()/mapFrom() diff --git a/Jackson-Release-2.8.11.md b/Jackson-Release-2.8.11.md new file mode 100644 index 000000000..d0c22b895 --- /dev/null +++ b/Jackson-Release-2.8.11.md @@ -0,0 +1,42 @@ +Patch version of [2.8](Jackson-Release-2.8), released on 24-Dec-2017 (merry Christmas!). + +This release is mostly important for security fixes contained; mostly as follow up for work start (and included) in 2.8.9 and 2.8.10. +It is also very likely the last Full Release of Jackson for 2.8 branch. As usual, micro-patches for individual components are still possible for critical issues. + +Following fixes are included. + + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#418](../../jackson-databind/issues/418): `ArrayIndexOutOfBoundsException` from UTF32Reader.read on invalid input + +#### [Databind](../../jackson-databind) + +* [#1604](../../jackson-databind/issues/1604): Nested type arguments doesn't work with polymorphic types +* [#1680](../../jackson-databind/issues/1680): Blacklist couple more types for deserialization +* [#1767](../../jackson-databind/issues/1767): Allow `DeserializationProblemHandler` to respond to primitive types +* [#1768](../../jackson-databind/issues/1768): Improve `TypeFactory.constructFromCanonical()` to work with `java.lang.reflect.Type.getTypeName()` format +* [#1804](../../jackson-databind/issues/1804): `ValueInstantiator.canInstantiate()` ignores `canCreateUsingArrayDelegate()` +* [#1807](../../jackson-databind/issues/1807): Jackson-databind caches plain map deserializer and use it even map has `@JsonDeserializer` +* [#1855](../../jackson-databind/issues/1855): Blacklist for more serialization gadgets (dbcp/tomcat, spring) + +### Changes, data formats + +#### [Binary formats](../../jackson-dataformats-binary/) + +* [#106](../../jackson-dataformats-binary/issues/106): (protobuf) fix calling _skipUnknownValue() twice +* [#108](../../jackson-dataformats-binary/issues/108): (protobuf) fix NPE in skip unknown nested key +* [#126](../../jackson-dataformats-binary/issues/126): (protobuf) always call checkEnd() when skip unknown field + +### Changes, other modules + +#### [Afterburner](../../jackson-modules-base/tree/master/afterburner) + +* [#33](../../jackson-modules-base/issues): `@JsonSerialize` with `nullUsing` option not working for `String` properties + +#### [JAXB Annotations](../../jackson-modules-base/tree/master/jaxb) + +* [#31](../../jackson-modules-base/issues/31): `@JsonAppend` causes `IllegalStateException` `Unsupported annotated member` + with `JaxbAnnotationModule` diff --git a/Jackson-Release-2.8.2.md b/Jackson-Release-2.8.2.md new file mode 100644 index 000000000..e4365b6bb --- /dev/null +++ b/Jackson-Release-2.8.2.md @@ -0,0 +1,28 @@ +A patch version of [2.8](Jackson-Release-2.8), released on August 30th, 2016. + +This release includes all fixes up to [2.7.7](Jackson-Release-2.7.7) from earlier branches, +as well as following: + +### Changes, core + +#### [Databind](../../jackson-databind/) + +* [#1315](../../jackson-databind/issues/1315): Binding numeric values can BigDecimal lose precision +* [#1327](../../jackson-databind/issues/1327): Class-level `@JsonInclude(JsonInclude.Include.NON_EMPTY)` is ignored +* [#1335](../../jackson-databind/issues/1335): Unconditionally call `TypeIdResolver.getDescForKnownTypeIds()` + +### Changes, dataformats + +#### [Binary dataformats](../../jackson-dataformats-binary) + +* [#27](../../jackson-dataformats-binary/issues/27): (protobuf) Fixed long deserialization problem for `long`s of ~13digit length + +#### [YAML](../../jackson-dataformats-yaml) + +* [#65](../../jackson-dataformats-yaml/issues/65): Feature.MINIMIZE_QUOTES needs to write numbers as strings with quotes + +### Changes, data types + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#96](../../jackson-datatype-hibernate/issues/96): Improve `SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS` feature diff --git a/Jackson-Release-2.8.3.md b/Jackson-Release-2.8.3.md new file mode 100644 index 000000000..22b763915 --- /dev/null +++ b/Jackson-Release-2.8.3.md @@ -0,0 +1,22 @@ +Patch version of [2.8](Jackson-Release-2.8), released Sep 18, 2016. + +Following fixes are included; as well as all fixes from 2.7 branch up to 2.7.7 (and any added for 2.7.8 by release date). + +### Changes, core + +#### [Streaming](../../jackson-core/) + +* [#318](../../jackson-core/issues/318): Add support for writing `byte[]` via `JsonGenerator.writeEmbeddedObject()` + +#### [Databind](../../jackson-databind/) + +* [#929](../../jackson-databind/issues/929): `@JsonCreator` not working on a factory with multiple arguments for a enum type +* [#1351](../../jackson-databind/issues/1351): `@JsonInclude(NON_DEFAULT)` doesn't omit null fields +* [#1353](../../jackson-databind/issues/1353): Improve error-handling for `java.net.URL` deserialization +* [#1361](../../jackson-databind/issues/1361): Change `TokenBuffer` to use new `writeEmbeddedObject()` if possible + +### Changes, other + +#### [JAXB Annotations](../../jackson-module-jaxb-annotations/) + +* [#61](../../jackson-module-jaxb-annotations/issues/61): Transient fields serialized when `@XmlAccessorType(XmlAccessType.FIELD)` is present diff --git a/Jackson-Release-2.8.4.md b/Jackson-Release-2.8.4.md new file mode 100644 index 000000000..5cff77b92 --- /dev/null +++ b/Jackson-Release-2.8.4.md @@ -0,0 +1,47 @@ +Patch version of [2.8](Jackson-Release-2.8), released 14th Oct 2016. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core/) + +#### [Databind](../../jackson-databind/) + +* [#466](../../jackson-databind/466): Jackson ignores Type information when raw return type is `BigDecimal` or `BigInteger` +* [#1001](../../jackson-databind/1001): Parameter names module gets confused with delegate creator which is a static method +* [#1324](../../jackson-databind/1324): Boolean parsing with `StdDeserializer` is too slow with huge integer value +* [#1383](../../jackson-databind/1383): Problem with `@JsonCreator` with 1-arg factory-method, implicit param names +* [#1384](../../jackson-databind/1384): `@JsonDeserialize(keyUsing = ...)` does not work correctly together with DefaultTyping.NON_FINAL +* [#1385](../../jackson-databind/1385): Polymorphic type lost when using `@JsonValue` +* [#1389](../../jackson-databind/1389): Problem with handling of multi-argument creator with Enums +* [#1392](../../jackson-databind/1392): Custom UnmodifiableSetMixin Fails in Jackson 2.7+ but works in Jackson 2.6 +* [#1395](../../jackson-databind/1395): Problems deserializing primitive `long` field while using `TypeResolverBuilder` + +### Changes, data formats + +#### [XML](../../jackson-dataformat-xml) + +* [#211](../../jackson-dataformat-xml/issues/211): Disable `SUPPORT_DTD` for `XMLInputFactory` unless explicitly overridden + +#### [YAML](../../jackson-dataformat-yaml) + +* [#77](../../jackson-dataformat-yaml/issues/77): Boolean-like content of string must never be unquoted + +### Changes, [Jackson jr](../../jackson-jr) + +* [#49](../../jackson-jr/issues/49): `ArrayIndexOutOfBoundsException` when parsing large Map + +### Changes, other modules + +#### [Guice](../../jackson-modules-base) + +* [#22](../../jackson-modules-base/issues/22): Allow use of Guice 4.x (still only require 3.x) + +#### [JAXB Annotations](../../jackson-module-jaxb-annotations) + +* [#63](../../jackson-module-jaxb-annotations/issues/63): Error in type resolution of reference type (`Optional`) + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#112](../../jackson-module-jsonSchema/issues/112): Update `LinkDescriptionObject` to remove redundant 'jsonSchema' property diff --git a/Jackson-Release-2.8.5.md b/Jackson-Release-2.8.5.md new file mode 100644 index 000000000..82894fb9a --- /dev/null +++ b/Jackson-Release-2.8.5.md @@ -0,0 +1,43 @@ +Patch version of [2.8](Jackson-Release-2.8), released Nov 14, 2016. + +Following fixes were included. + +### Changes, core + +#### [Databind](../../jackson-databind/) + +* [#1417](../../jackson-databind/issues/1417): Further issues with `@JsonInclude` with `NON_DEFAULT` +* [#1421](../../jackson-databind/issues/1421): `ACCEPT_SINGLE_VALUE_AS_ARRAY` partially broken in 2.7.x, 2.8.x +* [#1429](../../jackson-databind/issues/1429): `StdKeyDeserializer` can erroneously use a static factory method with more than one argument +* [#1432](../../jackson-databind/issues/1432): Off by 1 bug in `PropertyValueBuffer` +* [#1438](../../jackson-databind/issues/1438): `ACCEPT_CASE_INSENSITIVE_PROPERTIES` is not respected for creator properties +* [#1439](../../jackson-databind/issues/1439): NPE when using with filter id, serializing `java.util.Map` types +* [#1441](../../jackson-databind/issues/1441): Failure with custom Enum key deserializer, polymorphic types +* [#1445](../../jackson-databind/issues/1445): Map key `deserializerModifiers()` ignored + +### Changes, data formats + +#### [CBOR](../../jackson-dataformats-binary) + +* [#31](../../jackson-dataformats-binary/issues/31): Exception serializing `double[][]` + +#### [XML](../../jackson-dataformat-xml) + +* [#213](../../jackson-dataformat-xml/issues/213) `XmlSerializerProvider` does not use `withRootName` config for JSON `null` + +### Changes, datatypes + +#### [Guava](../../jackson-datatypes-collections) + +* [#6](../../jackson-datatypes-collections/issues/6): (further fixes to earlier incomplete fix) `Multimap` does not support `DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY` + +### Changes, [JAX-RS](../../jackson-jaxrs-providers) + +* [#91](../../jackson-jaxrs-providers/issues/91): Implemented dynamic selection of `NoContentException` to try to +support JAX-RS 1.x + +### Changes, other modules + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#117](../../jackson-module-jsonSchema/issues/117): Deserialisation of enums does not respect ordering diff --git a/Jackson-Release-2.8.6.md b/Jackson-Release-2.8.6.md new file mode 100644 index 000000000..8ff53f19c --- /dev/null +++ b/Jackson-Release-2.8.6.md @@ -0,0 +1,34 @@ +Patch version of [2.8](Jackson-Release-2.8), released Jan 12, 2017. + +* with exception of Scala module, which is to follow at a later point (apologies for delay) + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#322](../../jackson-core/issues/322): Trim tokens in error messages to 256 byte to prevent attacks +* [#335](../../jackson-core/issues/335): Missing exception for invalid last character of base64 string to decode using `Base64Variant.decode()` + +#### [Databind](../../jackson-databind/) + +* [#349](../../jackson-databind/issues/349): @JsonAnySetter with @JsonUnwrapped: deserialization fails with arrays +* [#1388](../../jackson-databind/issues/1388): `@JsonIdentityInfo`: id has to be the first key in deserialization when deserializing with `@JsonCreator` +* [#1425](../../jackson-databind/issues/1425): `JsonNode.binaryValue()` ignores illegal character if it's the last one +* [#1453](../../jackson-databind/issues/1453): `UntypedObjectDeserializer` does not retain `float` type (over `double`) +* [#1456](../../jackson-databind/issues/1456): `TypeFactory` type resolution broken in 2.7 for generic types when using `constructType` with context +* [#1476](../../jackson-databind/issues/1476): Wrong constructor picked up when deserializing object +* [#1493](../../jackson-databind/issues/1493): `ACCEPT_CASE_INSENSITIVE_PROPERTIES` fails with `@JsonUnwrapped` + +### Changes, dataformats + +#### [YAML](../../jackson-dataformat-yaml) + +* [#80](../../jackson-dataformat-yaml/issues/80): Fix UTF8Writer when used in same thread + +### Changes, datatypes + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#92](../../jackson-datatype-hibernate/issues/92): Add support for Hibernate 5.2 diff --git a/Jackson-Release-2.8.7.md b/Jackson-Release-2.8.7.md new file mode 100644 index 000000000..d1dd9ce3c --- /dev/null +++ b/Jackson-Release-2.8.7.md @@ -0,0 +1,34 @@ +Patch version of [2.8](Jackson-Release-2.8), released February 21st, 2017. + +Following fixes are included. + +### Changes, core + +#### [Databind](../../jackson-databind) + +* [#935](../../jackson-databind/issues/935): `@JsonProperty(access = Access.READ_ONLY)` - unexpected behaviour +* [#1317](../../jackson-databind/issues/1317): '@JsonIgnore' annotation not working with creator properties, serialization +* [#1367](../../jackson-databind/issues/1367): No Object Id found for an instance when using `@ConstructorProperties` +* [#1505](../../jackson-databind/issues/1505): `@JsonEnumDefaultValue` should take precedence over `DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS` +* [#1506](../../jackson-databind/issues/1506): Missing `KeyDeserializer` for `CharSequence` +* [#1513](../../jackson-databind/issues/1513): `MapSerializer._orderEntries()` throws NPE when operating on `ConcurrentHashMap` + +### Changes, dataformats + +#### [Avro](../../jackson-dataformats-binary) + +* [#34](../../jackson-dataformats-binary/issues/34): Reading Avro with specified reader and writer schemas +* [#35](../../jackson-dataformats-binary/issues/35): Serialization of multiple objects (`SequenceWriter`) +* [#38](../../jackson-dataformats-binary/issues/38): Deserialization of multiple (root) values from Avro +* [#39](../../jackson-dataformats-binary/issues/39): Problem decoding Maps with union values + +#### [XML](../../jackson-dataformat-xml) + +* [#220](../../jackson-dataformat-xml/issues/220): Avoid root-level wrapping for Map-like types, not just Maps +* [#222](../../jackson-dataformat-xml/issues/222): `DefaultXmlPrettyPrinter` indentation configuration not preserved + +### Changes, datatypes + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#102](../../jackson-datatype-hibernate/issues/102): `NoSuchMethodException` with Hibernate 5.2 diff --git a/Jackson-Release-2.8.8.md b/Jackson-Release-2.8.8.md new file mode 100644 index 000000000..b69cee905 --- /dev/null +++ b/Jackson-Release-2.8.8.md @@ -0,0 +1,52 @@ +Patch version of [2.8](Jackson-Release-2.8), released on April 05, 2017. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#359](../../jackson-core/issues/359): `FilteringGeneratorDelegate` does not override `writeStartObject(Object forValue)` + +#### [Databind](../../jackson-databind) + +* [#1345](../../jackson-databind/issues/1345]): `@JsonProperty(access = READ_ONLY)` together with generated constructor (Lombok) causes exception: "Could not find creator property with name ..." +* [#1533](../../jackson-databind/issues/1533): `AsPropertyTypeDeserializer` ignores `DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT` +* [#1543](../../jackson-databind/issues/1543): JsonFormat.Shape.NUMBER_INT does not work when defined on enum type in 2.8 +* [#1570](../../jackson-databind/issues/1570): `Enum` key for `Map` ignores `SerializationFeature.WRITE_ENUMS_USING_INDEX` +* [#1573](../../jackson-databind/issues/1573): Missing properties when deserializing using a builder class with a non-default constructor and a mutator annotated with `@JsonUnwrapped` +* [#1575](../../jackson-databind/issues/1575): Problem with `@JsonIgnoreProperties` on recursive property (regression in 2.8) + +### Changes, dataformats + +#### [Avro](../../jackson-dataformats-binary/) + +* [#58](../../jackson-dataformats-binary/issues/58): Regression due to changed namespace of inner enum types + +#### [CBOR](../../jackson-dataformats-binary/) + +* [#62](../../jackson-dataformats-binary/issues/62): `java.lang.ArrayIndexOutOfBoundsException` at `CBORGenerator.java:548` + +#### [protobuf](../../jackson-dataformats-binary/) + +* [#54](../../jackson-dataformats-binary/issues/54): Some fields are left null +* [#67](../../jackson-dataformats-binary/issues/67): Serialization of multiple nesting levels has issues + +#### [YAML](../../jackson-dataformat-yaml) + +* [#72](../../jackson-dataformat-yaml/issues/72): Add `YAMLGenerator.Feature.LITERAL_BLOCK_STYLE` for String output + +### Changes, datatypes + +#### [Guava](../../jackson-datatypes-collections) + +* [#12](../../jackson-datatypes-collection/issues/12): `Range` deserialization fails when `ObjectMapper` has default typing enabled + +### Changes, other modules + +#### [Java 8 support](../../jackson-modules-java8) + +* [#13](../../jackson-modules-java8/issues/13): (datatype) `configureAbsentsAsNulls` not working for primitive optionals like `OptionalInt` +* [#15](../../jackson-modules-java8/issues/15): (datatype) Optional and OptionalLong deserialization are not consistent when deserializing from String +* [#17](../../jackson-modules-java8/issues/17): (datatype) Cached `Optional` serializer does not apply annotations for POJO properties +* [#18](../../jackson-modules-java8/issues/18): (datetime) `InstantDeserializer` is not working with offset of zero `+00:00` and `+00` diff --git a/Jackson-Release-2.8.9.md b/Jackson-Release-2.8.9.md new file mode 100644 index 000000000..b02e48203 --- /dev/null +++ b/Jackson-Release-2.8.9.md @@ -0,0 +1,40 @@ +Patch version of [2.8](Jackson-Release-2.8), released on June 12, 2017. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#382](../../jackson-core/issues/382): ArrayIndexOutOfBoundsException from `UTF32Reader.read()` on invalid input + +#### [Databind](../../jackson-databind) + +* [#1585](../../jackson-databind/issues/1585): Invoke ServiceLoader.load() inside of a privileged block when loading modules using `ObjectMapper.findModules()` +* [#1595](../../jackson-databind/issues/1595): `JsonIgnoreProperties.allowSetters` is not working in Jackson 2.8 +* [#1597](../../jackson-databind/issues/1597): Escape JSONP breaking characters +* [#1599](../../jackson-databind/issues/1599): Jackson Deserializer security vulnerability with default typing +* [#1607](../../jackson-databind/issues/1607): `@JsonIdentityReference` not used when setup on class only +* [#1629](../../jackson-databind/issues/1629): `FromStringDeserializer` ignores registered `DeserializationProblemHandler` for `java.util.UUID` +* [#1642](../../jackson-databind/issues/1642): Support READ_UNKNOWN_ENUM_VALUES_AS_NULL with @JsonCreator +* [#1647](../../jackson-databind/issues/1647): Missing properties from base class when recursive types are involved +* [#1648](../../jackson-databind/issues/1648): `DateTimeSerializerBase` ignores configured date format when creating contextual +* [#1651](../../jackson-databind/issues/1651): `StdDateFormat` fails to parse 'zulu' date when TimeZone other than UTC + +### Changes, dataformats + +##### [Protobuf](../../jackson-dataformats-binary) + +* [#72](../../jackson-dataformats-binary/issues/72): parser fails with /* comment */ +* [#85](../../jackson-dataformats-binary/issues/85): `_decode32Bits()` bug in `ProtobufParser` + +##### [XML](../../jackson-dataformat-xml) + +* [#228](../../jackson-dataformat-xml/issues/228): `XmlReadContext` should hold current value +* [#233](../../jackson-dataformat-xml/issues/233): `XmlMapper.copy()` doesn't properly copy internal configurations + +### Changes, other + +#### [Jackson jr](../../jackson-jr) + +* [#50](../../jackson-jr/issues/50): Duplicate key detection does not work diff --git a/Jackson-Release-2.8.md b/Jackson-Release-2.8.md new file mode 100644 index 000000000..3eb548189 --- /dev/null +++ b/Jackson-Release-2.8.md @@ -0,0 +1,405 @@ +Version 2.8 was released 4th of July, 2016. + +## Status + +2.8 branch is closed and no new (full) patch releases are planned: micro-patch have been released but will NOT be released after end of 2020. + +## Patches + +Beyond initial 2.8.0 (described here), following patch releases have been made or are planned: + +* [2.8.1](Jackson-Release-2.8.1) (20-Jul-2016) +* [2.8.2](Jackson-Release-2.8.2) (30-Aug-2016) +* [2.8.3](Jackson-Release-2.8.3) (18-Sep-2016) +* [2.8.4](Jackson-Release-2.8.4) (14-Oct-2016) +* [2.8.5](Jackson-Release-2.8.5) (14-Nov-2016) +* [2.8.6](Jackson-Release-2.8.6) (12-Jan-2017) +* [2.8.7](Jackson-Release-2.8.7) (21-Feb-2017) +* [2.8.8](Jackson-Release-2.8.8) (05-Apr-2017) +* [2.8.9](Jackson-Release-2.8.9) (12-Jun-2017) +* [2.8.10](Jackson-Release-2.8.10) (24-Aug-2017) +* [2.8.11](Jackson-Release-2.8.11) (24-Dec-2017) + +At this point branch is not open any more (that is, no more full patch releases are planned). +As usual, micro-patches possible after this point for individual components: these may be made for critical security or stability issues. + +Following micro-patches have been released: + +* `jackson-databind` `2.8.11.1` (11-Feb-2018) + * [#1872](../../jackson-databind/issues/1872): `NullPointerException` in `SubTypeValidator.validateSubType` when validating Spring interface + * [#1899](../../jackson-databind/issues/1899): Another two gadgets to exploit default typing issue in jackson-databind + * [#1931](../../jackson-databind/issues/1931): Two more `c3p0` gadgets to exploit default typing issue +* `jackson-databind` `2.8.11.2` (08-Jun-2018) + * [#1941](../../jackson-databind/issues/1941): `TypeFactory.constructFromCanonical()` throws NPE for Unparameterized generic canonical strings + * [#2032](../../jackson-databind/issues/2032): CVE-2018-11307: Potential information exfiltration with default typing, serialization gadget from MyBatis + * [#2052](../../jackson-databind/issues/2052): CVE-2018-12022: Block polymorphic deserialization of types from Jodd-db library + * [#2058](../../jackson-databind/issues/2058): CVE-2018-12023: Block polymorphic deserialization of types from Oracle JDBC driver +* `jackson-databind` `2.8.11.3` (23-Nov-2018) + * [#2097](../../jackson-databind/issues/2097): Block more classes from polymorphic deserialization (CVE-2018-14718 - CVE-2018-14721) + * [#2109](../../jackson-databind/issues/2109): Canonical string for reference type is built incorrectly + * [#2186](../../jackson-databind/issues/2186): Block more classes from polymorphic deserialization (CVE-2018-19360, CVE-2018-19361, CVE-2018-19362) +* `jackson-databind` `2.8.11.4` (25-Jul-2019) + * [#2326](../../jackson-databind/issues/2326): Block class for CVE-2019-12086 + * [#2334](../../jackson-databind/issues/2334): Block class for CVE-2019-12384 + * [#2341](../../jackson-databind/issues/2341): Block class for CVE-2019-12814 + * [#2387](../../jackson-databind/issues/2387): Block class for CVE-2019-14379 + * [#2389](../../jackson-databind/issues/2389): Block class for CVE-2019-14439 +* `jackson-databind` `2.8.11.5` (10-Feb-2020) + * [#2410](../../jackson-databind/issues/): Block one more gadget type (HikariCP, CVE-2019-14540) + * [#2420](../../jackson-databind/issues/): Block one more gadget type (cxf-jax-rs) + * [#2449](../../jackson-databind/issues/): Block one more gadget type (HikariCP, CVE-2019-14439 / CVE-2019-16335) + * [#2460](../../jackson-databind/issues/): Block one more gadget type (ehcache, CVE-2019-17267) + * [#2462](../../jackson-databind/issues/): Block two more gadget types (commons-configuration/-2) + * [#2469](../../jackson-databind/issues/): Block one more gadget type (xalan2) + * [#2478](../../jackson-databind/issues/): Block two more gadget types (commons-dbcp, p6spy, CVE-2019-16942 / CVE-2019-16943) + * [#2498](../../jackson-databind/issues/): Block one more gadget type (apache-log4j-extras/1.2, CVE-2019-17531) + * [#2526](../../jackson-databind/issues/): Block two more gadget types (ehcache/JNDI - CVE-2019-20330) + * [#2620](../../jackson-databind/issues/): Block one more gadget type (xbean-reflect/JNDI - CVE-2020-8840) +* `jackson-databind` `2.8.11.6` (10-Mar-2020) + * [#2526](../../jackson-databind/issues/2526): Block two more gadget types (ehcache/JNDI - CVE-2019-20330) + * [#2620](../../jackson-databind/issues/2620): Block one more gadget type (xbean-reflect/JNDI - CVE-2020-8840) + * [#2631](../../jackson-databind/issues/2631): Block one more gadget type (shaded-hikari-config, CVE-2020-9546) + * [#2634](../../jackson-databind/issues/2634): Block two more gadget types (ibatis-sqlmap, anteros-core; CVE-2020-9547 / CVE-2020-9548) + * [#2642](../../jackson-databind/issues/2642): Block one more gadget type (javax.swing, CVE-to-be-allocated) + * [#2648](../../jackson-databind/issues/2648): Block one more gadget type (shiro-core, CVE-to-be-allocated) + +* `jackson-module-kotlin` `2.8.11.1` (10-Feb-2018) + * Upgrade to work Kotlin 1.2(.21) + +and the latest `jackson-bom` that contain the very latest set including above micro-patches is: + +* [2.8.11.20200310](https://mvnrepository.com/artifact/com.fasterxml.jackson/jackson-bom/2.8.11.20200310) -- up to `jackson-databind` 2.8.11.6, `jackson-module-kotlin` 2.8.11.1 + +## JDK Compatibility + +JDK compatibility changed since Jackson 2.7 so that + +* JDK baseline: JDK 7 (up from JDK 6 for 2.7) for most components +* JDK 6 still for: `jackson-annotations`, `jackson-core` +* JDK 8 still for: Java 8 - specific modules (Java 8 datatypes, parameter names, date/time) + +## New Modules, status changes + +### Dataformat: Java Properties + +First official version of https://github.com/FasterXML/jackson-dataformat-properties! + +### Datatypes: JAX-RS 2 types module + +A minor inclusion within JAX-RS providers sub-project, there is now `jackson-datatype-jaxrs` +module, which adds support for compact serialization of `javax.ws.rs.core.Link` + +### Possible maintenance changes + +Support: following modules may become "unsupported" if no maintainers are found: + +* Hibernate +* JSON Schema + +Additionally, following modules are looking for more developers: + +* Date/time modules (JSR-310, Joda) + +(note: a new owner was found for Scala module so it is not at risk) + +## Changes: compatibility + +All language features (and `Throwable.addSuppressed()` for try-catch) of Java 7 will become available for components other than `jackson-annotations` and `jackson-core` (streaming). +Bytecode target level is now `1.7`, so that jar CAN NOT be used on JDK 6 any more, JDK 7 is required. +This means that for Android 4, API-level 19 (Android 4.4?) is needed (see [this SO entry](http://stackoverflow.com/questions/20480090/does-android-support-jdk-6-or-7/22303654#22303654) for details) + +Despite initial plans, 2.8 does NOT contain any of Java 8 features embedded, partly due to problems ensuring that Creator handling works without backwards compatibility issues. Creator handling is hoped to be rewritten in 2.9, at which point inclusion could be reconsidered. + +Other changes that may have compatibility consequences: + +* [Databind](../../jackson-databind): + * Changes to many `JsonMappingException`, due to unified handling as part of improvements to `DeserializationProblemHandler`, including changes to wording of exception message. Code that relies on exact exception message wording of earlier versions may not match new wording. We will try to minimize wording changes going forward; 2.8 should be the new stable baseline +* [JAX-RS](../../jackson-jaxrs-providers): + * To resolve issue [#22](../../jackson-jaxrs-providers/issues/22) (see below) will remove `@JsonProvider` annotation from `ExceptionMapper`s, to make it possible to omit mappers Jackson provides. But this will also mean that anyone relying on automatic registration of these mappers via classpath introspection will be missing mappers. +* [XML](../../jackson-dataformat-xml) + * Made [Woodstox](https://github.com/FasterXML/woodstox) Maven dependency `compile` (instead of `test`), since Woodstox is superior for XML handling compared to JDK-bundled default Stax implementation. + * Should not cause significant behavioral changes -- especially no changes to the logical XML content produced -- but may change some aspects like choice of default namespace prefixes, or choice of empty vs open/close tags, or optional escaping, and thereby break unit tests that use exact String comparison for results +* [YAML](../../jackson-dataformat-yaml) + * `SnakeYAML` dependency not shaded any more (see [#31](../../jackson-dataformat-yaml/issues/31)); also now wraps all SnakeYAML exceptions as regular Jackson exceptions +* JDK types + * `java.nio.Path` serialization slightly changed, as per [#1235](../../jackson-databind/issues/1235), to support wider range of possible paths. + +## Major features of 2.8 + +### Configuration Overrides + +One major improvement area that was not tackled in 2.7 was the ability to specify per-type configuration settings for things like formatting and serialization inclusion, such that settings: + +1. Do override global defaults (such as default date format) +2. Are based on declared property type +3. May be further overridden by per-property annotations (direct or mix-ins) + +Some examples include: + +* Ability to specify `DateFormat` to use only for `java.util.Date` but not Java 8 or Joda date types (or vice versa) +* Ability to specify that every `String[]` valued property allows "deserialize single value as Array" +* Inclusion criteria for POJO type `MyType` so that properties with that type are not included if they are `null` +* Enable "ignore unknown properties" for `LooseType`-valued properties +* Specify `InternalType` as "ignored type", similar to having been annotated with `@JsonIgnoreType` + +Chosen implementation mechanism is the new "type config overrides" mechanism, which may be used like so + +```java +ObjectMapper mapper = ...; +mapper.configOverride(Wrapped.class).setIsIgnoredType(true); +``` + +to handle the last listed use case: in this case, make sure that all properties of type `Wrapped` will be excluded from serialization and deserialization. + +Other examples include: + +```java +mapper.configOverride(String[].class).setFormat(JsonFormat.Value.empty() + .withFeature(JsonFormat.Feature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED)); +``` + +This new "configuration override" mechanism supports a subset of Class annotations, and does not yet have anything for per-property annotations. It should, however, be relatively straight-forward to extend similar approach to overrides of actual property. +Loose equivalence is included for following annotation types: + +* `@JsonFormat` +* `@JsonInclude` +* `@JsonIgnoreType` +* `@JsonIgnoreProperties` + +### Major additions to `DeserializationProblemHandler` + +(and related changes in `DeserializationContext`) + +One are of improvement that was added recently (and not "inherited" from 2.7) is that of explicit error recovery. Jackson already had pluggable handler, `DeserializationProblemHandler` for application code to use, +but it only contained one handling method (`handleUnknownProperty`) and was only capable of recovering from that one type of issue. + +With 2.8 things were radically refactored to add following handler methods: + +* `handleWeirdKey`: called when key for `Map` valued property can not be mapped to expected key type +* `handleWeirdStringValue`: called when specific JSON String can not be deserialized into value, in cases where other String values are acceptable +* `handleWeirdNumberValue`: called when specific JSON Number can not be deserialized into value, in cases where other String values are acceptable +* `handleUnexpectedToken`: called when specific `JsonToken` is not of supported type for target Java type (like `START_ARRAY` for Java String +* `handleInstantiationProblem` / `handleMissingInstantiator`: when either call via constructor/factory method failed, or no instantiator was available +* `handleUnknownTypeId`: called when Type Id (for polymorphic deserialization) can not be converted (missing mapping, for example) + +These methods will get invoked via `DeserializationContext` that has similarly named methods that are called by actual deserializers; support for handling therefore requires some co-operation of deserializer implementations. + +Handler methods may try to recover from the failure (either for full processing, or to keep track of all failure types), or provide more meaningful exception messages based on contextual information. +It is possible that with future versions we may try to add some form of "do not fail on first problem", aggregation of multiple failures, but with 2.8 this is just foundational support for building such support externally. + +### Parser support `DataInput` source (for some formats) + +One potentially significant improvement is possibility of using `java.io.DataInput` as input source. +Due to strict limitations with look-ahead, this input source can only be supported for some formats; +and with 2.8 following formats now support it: + +* JSON + +In addition it seems plausible that at least following format backends may be retrofitted if there is demand: + +* Avro +* CBOR +* Smile +* XML (but only theoretically as this requires XML parser support) + +As to others, following are unlikely to be supported due to format limitations: + +* Protobuf (no framing for main-level records) +* CSV, Properties, YAML (similarly open-ended, no end marker) + +### Generator support for `DataOutput` + +As opposed to `DataInput`, adding ability to write using `DataOutput` is trivial, so support has been added for all backends + +### Generator support for "array writes": `int[]`, `long[]`, `double[]` + +Since some binary data formats have optimized handling for things like packed numeric arrays, a small set of extension methods (name `writeArray()`) were added in `JsonGenerator`, along with default implementation that simply delegates to matching write methods. + +But for a small set of dataformats: + +* CBOR +* Protobuf +* Smile + +additional support was included to make actual operation significantly more efficient (and in case of CBOR, also uses definite count arrays instead of start/end marker). These methods may be called directly (when working directly on Streaming API), but they are also used for properties with value of: + +* `int[]` +* `long[]` +* `double[]` + +In addition it would be possible to add explicit support for Avro backend; and if/when CBOR specification is augmented with support for "packed arrays", `jackson-dataformat-cbor` may be augmented to make use of such format improvement. + +## Postponed Features (at least until 2.9) + +Version 2.7 version had ambitious goals, but many of features originally planned had to be postponed to ensure that the main features started could be completed in time. +Some of these features did not make it into 2.8 either; here's an overview. + +### Per-property "merge" option + +Currently all property values are newly created "virgin" Objects. But sometimes it would be useful to see if property already had a default value (set by parent POJO in constructor, typically), and if so, modify that value. + +Attempt will be made to include this in 2.9. + +### Add per-property custom Serialization Inclusion mechanism + +While it is possible to use `@JsonInclude` on properties, all choices use pre-defined rules; or, in case of `NON_EMPTY` (and by extension, `NON_ABSENT`) require matching `JsonSerializer.isEmpty(...)` to be implemented. + +But it should be possible to have a simpler external exclusion handling. This could work by adding support for something like: + +```java +public class POJO { + @JsonInclude(value=Include.MATCHING, matcher=MyMatcher.class) + public Value value; +``` + +where an instance of `MyMatcher` will be created, and for each property value, `MyMatchr.equals()` is called to see if value matches: if it does (return `true`), value will be included; if not (`false`), it will be excluded. + +Such an approach has the main benefit that since `Object.equals()` is defined for all types, no new types (interface, class) are needed. We can also easily use something like `Void.class` as the default value. + +There are drawbacks as well: + +1. No context object can be passed so determination must be context-free (note: annotation types also can not refer to `DatabindContext`, so context, if any, would need to be untyped as well) +2. Use of `equals()` is an abuse of semantics of the method. + +Another approach would be to just create a new interface to fix the issues. Perhaps that makes more sense. + +Attempt will be made to include this in 2.9. + +### Allow pre-defining Object Ids; pluggable Object Id converters? + +One of the things that has turned out problematic is resolution of Object References via Object Ids. +There are a few improvements that could be considered: + +1. Allow pre-defining set of Object Id to instance mappings +2. Allow custom resolution of Object Id references to instances + +### Fix Creator introspection + +Although the hope was to add support for "annotation-less" constructors in 2.6, via implied naming, it turned out that there was one remaining big stumbling block: too-late discovery of "creator-capable" constructors. + +Basically while it is possible to detect constructors that may act as Creators, due to all parameters having implicit names, this detection happens too late in processing: currently candidate properties (getters, setters, fields, constructor parameters) are collected first, and during this phase, only explicitly annotation constructors are considered. +At a later point, all constructors are scanned again, and they are matched to properties that are backed by constructor. But "implied" creators found at this point can not be matched to properties, since they were not constructed during initial pass. + +So discovery needs to be rewritten to either make implied-creator detection happen earlier altogether, or to speculative add properties from constructors first, and then decide which constructor, if any, is the primary; properties attached to other constructors will then be trimmed. +Either way could potentially work; neither is trivially easy to implement. + +Attempt will be made to include this in 2.9. + +### Protobuf: Schema generation from POJO, building by hand + +Protobuf support added in 2.6 was planned to allow 3 methods for defining `protoc` schema: + +1. Read from an external representation (File, String) +2. Generate from POJO +3. Create programmatically + +but due to schedule, only (1) was initially included. 2.8 does include (2), but (3) is still missing. + +## Change list + +### Changes, core + +#### [Annotations](../../jackson-annotations) + +* [#65](../../jackson-annotations/issues/65): Add new choice for `JsonFormat.Shape`, `NATURAL` +* [#79](../../jackson-annotations/issues/79): Change `@JsonTypeInfo.defaultImpl` default value to deprecate `JsonTypeInfo.None.class` +* [#83](../../jackson-annotations/issues/83): Add `@JsonEnumDefaultValue` for indicating default enum choice if no real match found +* [#87](../../jackson-annotations/issues/87): Add `@JsonEnumDefaultValue` for indicating default enum choice if no real match found +* [#89](../../jackson-annotations/issues/89): Add `JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES` +* [#95](../../jackson-annotations/issues/95): Add `JsonFormat.Feature#ADJUST_DATES_TO_CONTEXT_TIME_ZONE` + +#### [Streaming](../../jackson-core) + +* [#86](../../jackson-core/issues/86): Allow inclusion of request body for `JsonParseException` +* [#117](../../jackson-core/issues/117): Add `JsonParser.Feature.ALLOW_MISSING_VALUES` to support for missing values +* [#136](../../jackson-core/issues/136): Add `JsonpCharacterEscapes` for easier handling of potential problems + with JSONP and rare but technically allowed \u2028 and \u2029 linefeed characters +* [#253](../../jackson-core/issues/253): Add `JsonGenerator. writeEmbeddedObject()` to allow writes of opaque native types +* [#257](../../jackson-core/issues/257): Add `writeStartObject(Object pojo)` to streamline assignment of current value +* [#265](../../jackson-core/issues/265): `JsonStringEncoder` should allow passing `CharSequence` +* [#276](../../jackson-core/issues/276): Add support for serializing using `java.io.DataOutput` +* [#277](../../jackson-core/issues/277): Add new scalar-array write methods for `int`/`long`/`double` cases +* [#279](../../jackson-core/issues/279): Support `DataInput` for parsing +* [#280](../../jackson-core/issues/280): Add `JsonParser.finishToken()` to force full, non-lazy reading of current token +* [#281](../../jackson-core/issues/281): Add `JsonEOFException` as sub-class of `JsonParseException` +* [#282](../../jackson-core/issues/282): Fail to report error for trying to write field name outside Object (root level) +* [#285](../../jackson-core/issues/285): Add `JsonParser.getText(Writer)` +* [#290](../../jackson-core/issues/290): Add `JsonGenerator.canWriteFormattedNumbers()` for introspection +* [#294](../../jackson-core/issues/294): Add `JsonGenerator.writeFieldId(long)` method to support binary formats with non-String keys +* [#296](../../jackson-core/issues/296): JsonParserSequence skips a token on a switched Parser + +#### [Databind](../../jackson-databind) + +* [#621](../../jackson-databind/issues/621]: Allow definition of "ignorable types" without annotation (using + `Mapper.configOverride(type).setIsIgnoredType(true)` +* [#867](../../jackson-databind/issues/867): Support `SerializationFeature.WRITE_EMPTY_JSON_ARRAYS` for `JsonNode` +* [#903](../../jackson-databind/issues/903): Add `JsonGenerator` reference to `SerializerProvider` +* [#931](../../jackson-databind/issues/931): Add new method in `Deserializers.Base` to support `ReferenceType` +* [#960](../../jackson-databind/issues/960): `@JsonCreator` not working on a factory with no arguments for an enum type +* [#990](../../jackson-databind/issues/990): Allow failing on `null` values for creator (add `DeserializationFeature.FAIL_ON_NULL_CREATOR_PROPERTIES`) +* [#1017](../../jackson-databind/issues/#1017): Add new mapping exception type ('InvalidTypeIdException') for subtype resolution errors +* [#1028](../../jackson-databind/issues/1028): Ignore `USE_BIG_DECIMAL_FOR_FLOATS` for `NaN`/`Infinity` +* [#1047](../../jackson-databind/issues/1047): Allow use of `@JsonAnySetter` on a Map-valued field, no need for setter +* [#1082](../../jackson-databind/issues/1082): Can not use static Creator factory methods for `Enum`s, with `JsonCreator.Mode.PROPERTIES` +* [#1084](../../jackson-databind/issues/1084): Change `TypeDeserializerBase` to take `JavaType` for `defaultImpl`, not `Class` +* [#1126](../../jackson-databind/issues/1126): Allow deserialization of unknown Enums using a predefined value (annotated with `@JsonEnumDefaultValue`) +* [#1136](../../jackson-databind/issues/1136): Implement `TokenBuffer.writeEmbeddedObject(Object)` +* [#1184](../../jackson-databind/issues/1184): Allow overriding of `transient` with explicit inclusion with `@JsonProperty` +* [#1207](../../jackson-databind/issues/1207): Add new method(s) in `DeserializationProblemHandler` to allow handling of format mismatch problems +* [#1221](../../jackson-databind/issues/1221): Use `Throwable.addSuppressed()` directly and/or via try-with-resources +* [#1232](../../jackson-databind/issues/1232): Add support for `JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES` +* [#1233](../../jackson-databind/issues/1233): Add support for `JsonFormat.Feature.WRITE_SORTED_MAP_ENTRIES` +* [#1235](../../jackson-databind/issues/1235): `java.nio.file.Path` support incomplete + +### Changes, [JAX-RS Providers](../../jackson-jaxrs-providers) + +* [#22](../../jackson-jaxrs-providers/issues/22): Remove `@Provider` annotation from `JsonParseExceptionMapper` and `JsonMappingExceptionMapper` +* [#48](../../jackson-jaxrs-providers/issues/48): Support compact serialization of `javax.ws.rs.core.Link`, deserialization +* [#82](../../jackson-jaxrs-providers/issues/82): Upgrade JAX-RS dependency to 2.0 + +### Changes, datatypes + +#### [Java 8 Date/time](../../jackson-datatype-jsr310) + +* [#78](../../jackson-datatype-jsr310/issues/78): output LocalDate JSON Schema format as DATE +* [#80](../../jackson-datatype-jsr310/issues/80): Add Support for `JsonFormat.Feature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE` + +#### [Joda](../../jackson-datatype-joda) + +* [#83](../../jackson-datatype-joda/issues/83): `WRITE_DATES_WITH_ZONE_ID` feature not working when applied on `@JsonFormat` annotation +* [#87](../../jackson-datatype-joda/issues/87): Add support for `JsonFormat.Feature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE` + +### Changes, data formats + +#### [CBOR](../../jackson-dataformats-binary) + +* [#16](../../jackson-dataformats-binary/issues/16): Implement `JsonGenerator.writeArray()` methods added in `jackson-core` +* [#17](../../jackson-dataformats-binary/issues/17): Support parsing of `BigInteger`, `BigDecimal`, not just generating +* [#18](../../jackson-dataformats-binary/issues/18): Fail to report error for trying to write field name outside Object (root level) +* [#24](../../jackson-dataformats-binary/issues/24): Incorrect coercion for int-valued Map keys to String + +#### [Smile](../../jackson-dataformats-binary) + +* [#](../../jackson-dataformats-binary/issues/19): Fail to report error for trying to write field name outside Object (root level) + +#### [XML](../jackson-dataformat-xml) + +* [#196](../jackson-dataformat-xml/issues/196): Mixed content not supported if there are child elements + +#### [YAML](../jackson-dataformat-yaml) + +* [#31](../jackson-dataformat-yaml/issues/31): SnakeYAML is shaded and pulled in transitively) +* [#60](../jackson-dataformat-yaml/issues/60): YAML serializer reports wrong exception + + +### Changes, [Jackson jr](../../jackson-jr) + +* [#43](../../jackson-jr/issues/43): Add convenience read method (`treeFrom()`) for reading trees via `JSON` +* [#26](../../jackson-jr/issues/26): Allow use of public fields for getting/setting values + +#### Changes, [Kotlin Module](https://github.com/FasterXML/jackson-module-kotlin) + +* Update to Kotlin 1.0.3 +* [#26](https://github.com/FasterXML/jackson-module-kotlin/issues/26): Default values for primitive parameters +* [#29](https://github.com/FasterXML/jackson-module-kotlin/issues/29): Problems deserializing object when default values for constructor parameters are used +* Added checks explicitly for nullable values being used in constructor or creator static methods to not allow NULL values into non-nullable types \ No newline at end of file diff --git a/Jackson-Release-2.9.1.md b/Jackson-Release-2.9.1.md new file mode 100644 index 000000000..45ece0f93 --- /dev/null +++ b/Jackson-Release-2.9.1.md @@ -0,0 +1,28 @@ +Patch version of [2.9](Jackson-Release-2.9), released on 08-Sep-2017. + +Following fixes are included, in addition to all fixes included in [2.8.10](Jackson-Release-2.8.10). + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#397](../../jackson-core/issues/397): Add `Automatic-Module-Name` ("com.fasterxml.jackson.core") for JDK 9 module system + +#### [Databind](../../jackson-databind) + +* [#1725](../../jackson-databind/issues/1725): `NPE` In `TypeFactory. constructParametricType(...)` +* [#1730](../../jackson-databind/issues/1730): InvalidFormatException` for `JsonToken.VALUE_EMBEDDED_OBJECT` +* [#1745](../../jackson-databind/issues/1745): `StdDateFormat`: accept and truncate millis larger than 3 digits +* [#1749](../../jackson-databind/issues/1749): `StdDateFormat`: performance improvement of '_format(..)' method +* [#1759](../../jackson-databind/issues/1759): Reuse `Calendar` instance during parsing by `StdDateFormat` + +### Changes, dataformats + +#### Binary formats + +* [#102](../../jackson-dataformats-binary/issues/102): (ion) Make `IonValueModule` public for use outside of `IonValueMapper` +* [#108](../../jackson-dataformats-binary/issues/108): (protobuf) fix NPE in skip unknown nested key + +#### Textual formats + +* [#34](../../../jackson-dataformats-text/issues/34): (yaml) Problem with `YAMLGenerator.Feature.INDENT_ARRAYS`, nested Objects diff --git a/Jackson-Release-2.9.10.md b/Jackson-Release-2.9.10.md new file mode 100644 index 000000000..e660552c3 --- /dev/null +++ b/Jackson-Release-2.9.10.md @@ -0,0 +1,44 @@ +Patch version of [2.9](Jackson-Release-2.9), released 2019-09-21. + +It will likely remain the last full 2.9.x release. + +Following fixes are included (note: this includes fixes that intermediate `2.9.9.x` micro-patches had) + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#540](../../jackson-core/issues/540): UTF8StreamJsonParser: fix byte to int conversion for malformed escapes +* [#556](../../jackson-core/issues/556): 'IndexOutOfBoundsException' in UTF8JsonGenerator.writeString(Reader, len) when using a negative length + +#### [Databind](../../jackson-databind) + +* [#2331](../../jackson-databind/issues/2331): `JsonMappingException` through nested getter with generic wildcard return type +* [#2334](../../jackson-databind/issues/2334): Block one more gadget type (logback, CVE-2019-12384) +* [#2341](../../jackson-databind/issues/2341): Block one more gadget type (jdom, CVE-2019-12814) +* [#2374](../../jackson-databind/issues/2374): `ObjectMapper. getRegisteredModuleIds()` throws NPE if no modules registered +* [#2387](../../jackson-databind/issues/2387): Block one more gadget type (ehcache, CVE-2019-14379) +* [#2389](../../jackson-databind/issues/2389): Block one more gadget type (logback, CVE-2019-14439) +* [#2404](../../jackson-databind/issues/2404): FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY setting ignored when creator properties are buffered +* [#2410](../../jackson-databind/issues/2410): Block one more gadget type (HikariCP, CVE-2019-14540) +* [#2420](../../jackson-databind/issues/2420): Block one more gadget type (no CVE allocated yet) +* [#2449](../../jackson-databind/issues/2449): Block one more gadget type (HikariCP, CVE-2019-14439 / CVE-2019-16335) +* [#2460](../../jackson-databind/issues/2460): Block one mode gadget type (ehcache, CVE-2019-17267) +* [#2462](../../jackson-databind/issues/2462): Block two more gadget types (commons-configuration) +* [#2469](../../jackson-databind/issues/2469): Block one mode gadget type (xalan2) + +### Changes, dataformats + +#### [XML](../../jackson-dataformat-xml) + +* [#336](../../jackson-dataformat-xml/issues/336): `WRITE_BIGDECIMAL_AS_PLAIN` Not Used When Writing Pretty +* [#340](../../jackson-dataformat-xml/issues/340): Incompatible woodstox-core and stax2-api dependencies (upgrade to `woodstox-core` 5.3.0) + +### Changes, other + +#### [Scala](../../jackson-module-scala) + +The first release to support Scala 2.13. Thanks to Adriaan Moors and Seth Tisue! + +* [#399](../../jackson-module-scala/issues/399): JsonScalaEnumeration annotation not picked up when using a Mixin +* [#429](../../jackson-module-scala/issues/429): Serialization behavior of case objects is different when using scala 2.13 diff --git a/Jackson-Release-2.9.2.md b/Jackson-Release-2.9.2.md new file mode 100644 index 000000000..0f0b53582 --- /dev/null +++ b/Jackson-Release-2.9.2.md @@ -0,0 +1,35 @@ +Patch version of [2.9](Jackson-Release-2.9), released on 14-Oct-2017. + +Following fixes are included. + +### Compatibility + +Despite attempts to avoid regressions, there is an open issue for potential regression since 2.9.1: + +* [Java 8 module / #67](https://github.com/FasterXML/jackson-modules-java8/issues/67) -- it looks like there are issues with combination of `PropertyNamingStrategy`, Creator properties, and Java 8 constructor names + +### Changes, core + +#### [Streaming](../../jackson-core) + +#### [Databind](../../jackson-databind) + +* [#1705](../../jackson-databind/issues/1705): Non-generic interface method hides type resolution info from generic base class + * NOTE: was assumed to be fixed in `2.9.1`, but due to a mistake wasn't. +* [#1767](../../jackson-databind/issues/1767): Allow `DeserializationProblemHandler` to respond to primitive types +* [#1768](../../jackson-databind/issues/1768): Improve `TypeFactory.constructFromCanonical()` to work with `java.lang.reflect.Type.getTypeName()` format +* [#1771](../../jackson-databind/issues/1771): Pass missing argument for string formatting in `ObjectMapper` +* [#1788](../../jackson-databind/issues/1788): `StdDateFormat._parseAsISO8601()` does not parse "fractional" timezone correctly +* [#1793](../../jackson-databind/issues/1793): `java.lang.NullPointerException` in `ObjectArraySerializer.acceptJsonFormatVisitor()` for array value with `@JsonValue` + +### Changes, dataformats + +#### Binary formats + +* [#102](../../jackson-dataformats-binary/issues/102): (avro) Incorrect deserialization of `long` with new `AvroFactory` + +### Changes, other modules + +#### [Afterburner](../../jackson-modules-base/tree/master/afterburner) + +* [#30](../../jackson-modules-base/issues/30): (afterburner) `IncompatibleClassChangeError` deserializing interface methods with default impl diff --git a/Jackson-Release-2.9.3.md b/Jackson-Release-2.9.3.md new file mode 100644 index 000000000..fa5d97d3a --- /dev/null +++ b/Jackson-Release-2.9.3.md @@ -0,0 +1,58 @@ +Patch version of [2.9](Jackson-Release-2.9), released 09-Dec-2017. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#418](../../jackson-databind/issues/418): `ArrayIndexOutOfBoundsException` from UTF32Reader.read on invalid input + +#### [Databind](../../jackson-databind) + +* [#1604](../../jackson-databind/issues/1604): Nested type arguments doesn't work with polymorphic types +* [#1794](../../jackson-databind/issues/1794): `StackTraceElementDeserializer` not working if field visibility changed +* [#1799](../../jackson-databind/issues/1799): Allow creation of custom sub-types of `NullNode`, `BooleanNode`, `MissingNode` +* [#1804](../../jackson-databind/issues/1804): `ValueInstantiator.canInstantiate()` ignores `canCreateUsingArrayDelegate()` +* [#1807](../../jackson-databind/issues/1807): Jackson-databind caches plain map deserializer and use it even map has `@JsonDeserializer` +* [#1823](../../jackson-databind/issues/1823): ClassNameIdResolver doesn't handle resolve Collections$SingletonMap, Collections$SingletonSet +* [#1831](../../jackson-databind/issues/1831): `ObjectReader.readValue(JsonNode)` does not work correctly with polymorphic types, value to update +* [#1835](../../jackson-databind/issues/1835): `ValueInjector` break from 2.8.x to 2.9.x +* [#1842](../../jackson-databind/issues/1842): `null` String for `Exception`s deserialized as String "null" instead of `null` +* [#1843](../../jackson-databind/issues/1843): Include name of unsettable property in exception from `SetterlessProperty.set()` +* [#1844](../../jackson-databind/issues/1844): Map "deep" merge only adds new items, but not override existing values + +### Changes, dataformats + +#### [Binary formats](../../jackson-dataformats-binary/) + +* [#106](../../jackson-dataformats-binary/issues/106): (protobuf) fix calling _skipUnknownValue() twice +* [#108](../../jackson-dataformats-binary/issues/108): (protobuf) fix NPE in skip unknown nested key +* [#114](../../jackson-dataformats-binary/issues/114): (cbor) copyStructure(): avoid duplicate tags when copying tagged binary +* [#116](../../jackson-dataformats-binary/issues/116): (protobuf) Should skip the positive byte which is the last byte of an varint +* [#124](../../jackson-dataformats-binary/issues/124): (cbor) Invalid value returned for negative int32 where the absolute value is > 2^31 - 1 +* [#126](../../jackson-dataformats-binary/issues/126): (protobuf) always call checkEnd() when skip unknown field + +#### [Textual formats](../../jackson-dataformats-text/) + +* [#39](../../jackson-dataformats-text/issues/39): (yaml) Binary data not recognized by YAML parser +* [#42](../../jackson-dataformats-text/issues/42): (csv) Add support for escaping double quotes with the configured escape character +* [#53](../../jackson-dataformats-text/issues/53): (yaml) Binary values written without type tag + +### Changes, datatypes + +#### [Java 8](../../jackson-modules-java8) + +* [#46](../../jackson-modules-java8/issues/46): (datetime) Double array serialization of `LocalDate` stored as an object with wrapper object typing enabled + +### Changes, other modules + +#### [Afterburner](../../jackson-modules-base/tree/master/afterburner) + +* [#33](../../jackson-modules-base/issues/33): `@JsonSerialize` with `nullUsing` option not working for `String` properties + +#### [JAXB Annotations](../../jackson-modules-base/tree/master/jaxb) + +* [#31](../../jackson-modules-base/issues/31): `@JsonAppend` causes `IllegalStateException` `Unsupported annotated member` + with `JaxbAnnotationModule` +* [#32](../../jackson-modules-base/issues/32): Fix introspector chaining in `JaxbAnnotationIntrospector.hasRequiredMarker()` diff --git a/Jackson-Release-2.9.4.md b/Jackson-Release-2.9.4.md new file mode 100644 index 000000000..8578856a9 --- /dev/null +++ b/Jackson-Release-2.9.4.md @@ -0,0 +1,39 @@ +Patch version of [2.9](Jackson-Release-2.9), released 24-Jan-2018. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#414](../../jackson-core/issues/414): Base64 MIME variant does not ignore white space chars as per RFC2045 + +#### [Databind](../../jackson-databind) + +* [#1382](../../jackson-databind/issues/1382): `@JsonProperty(access=READ_ONLY)` unxepected behaviour with `Collections` +* [#1673](../../jackson-databind/issues/1673): Serialising generic value classes via Reference Types (like Optional) fails to include type information +* [#1729](../../jackson-databind/issues/1729): Integer bounds verification when calling `TokenBuffer.getIntValue()` +* [#1853](../../jackson-databind/issues/1853): Deserialize from Object (using Creator methods) returns field name instead of value +* [#1854](../../jackson-databind/issues/1854): NPE deserializing collection with `@JsonCreator` and `ACCEPT_CASE_INSENSITIVE_PROPERTIES` +* [#1855](../../jackson-databind/issues/1855): Blacklist for more serialization gadgets (dbcp/tomcat, spring) +* [#1859](../../jackson-databind/issues/1859): Issue handling unknown/unmapped Enum keys +* [#1868](../../jackson-databind/issues/1868): Class name handling for JDK unmodifiable Collection types changed +* [#1870](../../jackson-databind/issues/1870): Remove `final` on inherited methods in `BuilderBasedDeserializer` to allow overriding by subclasses +* [#1878](../../jackson-databind/issues/1878): `@JsonBackReference` property is always ignored when deserializing since 2.9.0 +* [#1895](../../jackson-databind/issues/1895): Per-type config override "JsonFormat.Shape.OBJECT" for Map.Entry not working +* [#1899](../../jackson-databind/issues/1899): Another two gadgets to exploit default typing issue in jackson-databind +* [#1906](../../jackson-databind/issues/1906): Add string format specifier for error message in `PropertyValueBuffer` +* [#1907](../../jackson-databind/issues/1907): Remove `getClass()` from `_valueType` argument for error reporting + +### Changes, dataformats + +#### [Textual formats](../../jackson-dataformats-text/) + +* [#62](../../jackson-dataformats-binary/issues/62): (yaml) SnakeYAML `base64Coder` is not OSGI exported +* [#65](../../jackson-dataformats-binary/issues/65): (yaml) `YAMLParser` incorrectly handles numbers with underscores in them + +### Changes, other modules + +#### [Afterburner](../../jackson-modules-base/tree/master/afterburner) + +* [#38](../../jackson-modules-base/issues/38): (afterburner) Handle `DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES` correctly diff --git a/Jackson-Release-2.9.5.md b/Jackson-Release-2.9.5.md new file mode 100644 index 000000000..2f25565c2 --- /dev/null +++ b/Jackson-Release-2.9.5.md @@ -0,0 +1,48 @@ +Patch version of [2.9](Jackson-Release-2.9), released on March 28, 2018. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +#### [Databind](../../jackson-databind) + +* [#1911](../../jackson-databind/issues/1911): Allow serialization of `BigDecimal` as String, using +`@JsonFormat(shape=Shape.String)`, config overrides +* [#1912](../../jackson-databind/issues/1912): `BeanDeserializerModifier.updateBuilder()` not work to set custom deserializer on a property (since 2.9.0) +* [#1931](../../jackson-databind/issues/1931): Two more `c3p0` gadgets to exploit default typing issue +* [#1932](../../jackson-databind/issues/1932): `EnumMap` cannot deserialize with type inclusion as property +* [#1940](../../jackson-databind/issues/1940): `Float` values with integer value beyond `int` lose precision if +bound to `long` +* [#1941](../../jackson-databind/issues/1941): `TypeFactory.constructFromCanonical()` throws NPE for Unparameterized generic canonical strings +* [#1947](../../jackson-databind/issues/1947): `MapperFeature.AUTO_DETECT_XXX` do not work if all disabled +* [#1977](../../jackson-databind/issues/1977): Serializing `Iterator` with multiple sub-types fails after upgrading to 2.9.x +* [#1978](../../jackson-databind/issues/1978): Using `@JsonUnwrapped` annotation in builderdeserializer hangs in infinite loop + +### Changes, dataformats + +#### [Binary formats](../../jackson-dataformats-binary/) + +* [#128](../../jackson-dataformats-binary/issues/128): (protobuf) Fix skip unknown WireType.FIXED_64BIT value bug +* [#129](../../jackson-dataformats-binary/issues/129): (cbor) Remove "final" modifier from `CBORParser` + +#### [Textual formats](../../jackson-dataformats-text/) + +* [#74](../../jackson-dataformats-text/issues/74): (properties) `JavaPropsMapper` issue deserializing multiple byte array properties + +### Changes, datatypes + +#### [Guava](../../jackson-datatypes-collections) + +* [#27](../../jackson-datatypes-collections/27): Null value handling not supported for `Optional` within `Multimap` + +### Changes, other modules + +#### [Mr Bean](../../jackson-modules-base) + +* [#42](../../jackson-modules-base/issues/42): NPE from MrBean when `get()` or `set()` is though as property + +#### [Java 8 Date/Time](../../jackson-modules-java8) + +* [#98](../../jackson-modules-java8/issues/98): `OffsetDateTime` with `@JsonFormat(without=...)` doesn't seem to work diff --git a/Jackson-Release-2.9.6.md b/Jackson-Release-2.9.6.md new file mode 100644 index 000000000..be1cfb665 --- /dev/null +++ b/Jackson-Release-2.9.6.md @@ -0,0 +1,79 @@ +Patch version of [2.9](Jackson-Release-2.9), released 12-Jun-2018. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#400](../../jackson-core/issues/400): Add mechanism for forcing `BufferRecycler` released (to call on shutdown) +* [#460](../../jackson-core/issues/460): Failing to link `ObjectCodec` with `JsonFactory` copy constructor +* [#463](../../jackson-core/issues/463): Ensure that `skipChildren()` of non-blocking `JsonParser` will throw exception if not enough input + +#### [Databind](../../jackson-databind) + +* [#1328](../../jackson-databind/issues/1328): External property polymorphic deserialization does not work with enums +* [#1565](../../jackson-databind/issues/1565): Deserialization failure with Polymorphism using JsonTypeInfo `defaultImpl`, subtype as target +* [#1964](../../jackson-databind/issues/1964): Failed to specialize `Map` type during serialization where type key type incompatibility overidden via "raw" types +* [#1990](../../jackson-databind/issues/1990): MixIn `@JsonProperty` for `Object.hashCode()` is ignored +* [#1991](../../jackson-databind/issues/1991): Context attributes are not passed/available to custom serializer if object is in POJO +* [#1998](../../jackson-databind/issues/1998): Removing "type" attribute with Mixin not taken in account if using ObjectMapper.copy() +* [#1999](../../jackson-databind/issues/1999): "Duplicate property" issue should mention which class it complains about +* [#2001](../../jackson-databind/issues/2001): Deserialization issue with `@JsonIgnore` and `@JsonCreator` + `@JsonProperty` for same property name +* [#2015](../../jackson-databind/issues/2015): `@Jsonsetter with Nulls.SKIP` collides with `DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL` when parsing enum +* [#2016](../../jackson-databind/issues/2016): Delegating JsonCreator disregards JsonDeserialize info +* [#2019](../../jackson-databind/issues/2019): Abstract Type mapping in 2.9 fails when multiple modules are registered +* [#2023](../../jackson-databind/issues/2023): `JsonFormat.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT` not working with `null` coercion with `@JsonSetter` +* [#2027](../../jackson-databind/issues/2027): Concurrency error causes `IllegalStateException` on `BeanPropertyMap` +* [#2032](../../jackson-databind/issues/2032): Blacklist another serialization gadget (ibatis) +* [#2034](../../jackson-databind/issues/2034): Serialization problem with type specialization of nested generic types +* [#2038](../../jackson-databind/issues/2038): JDK Serializing and using Deserialized `ObjectMapper` loses linkage back from `JsonParser.getCodec()` +* [#2051](../../jackson-databind/issues/2051): Implicit constructor property names are not renamed properly with `PropertyNamingStrategy` +* [#2052](../../jackson-databind/issues/2052): CVE-2018-12022: Block polymorphic deserialization of types from Jodd-db library +* [#2058](../../jackson-databind/issues/2058): CVE-2018-12023: Block polymorphic deserialization of types from Oracle JDBC driver +* [#2060](../../jackson-databind/issues/2060): `UnwrappingBeanPropertyWriter` incorrectly assumes the found serializer is of type `UnwrappingBeanSerializer` + +### Changes, dataformats + +#### [Avro](../../jackson-dataformats-binary) + +* [#136](../../jackson-dataformats-binary/issues/136): Fix MapWriteContext not correctly resolving union values + +#### [CBOR](../../jackson-dataformats-binary) + +* [#93](../../jackson-dataformats-binary/issues/93): `CBORParser` does not accept "undefined value" + +#### [Protobuf](../../jackson-dataformats-binary) + +* [#135](../../jackson-dataformats-binary/issues/135): Infinite sequence of `END_OBJECT` tokens returned at end of streaming read + +#### [XML](../../jackson-dataformat-xml) + +* [#282](../../jackson-dataformat-xml/issues/282): `@JacksonXmlRootElement` malfunction when using it with multiple `XmlMapper`s and disabling annotations + +#### [YAML](../../jackson-dataformats-text) + +* [#84](../../jackson-dataformats-text/issues/84): Add option to allow use of platform-linefeed (`YAMLGenerator.Feature.USE_PLATFORM_LINE_BREAKS`) + +### Changes, datatypes + +#### [Eclipse Collections](../../jackson-datatypes-collections) + +** NEW DATATYPE!!! *** + +* [#29](../../jackson-datatypes-collections/29): Initial datatype module implementation for [Eclipse Collections](https://github.com/eclipse/eclipse-collections) + + +### Changes, other modules + +#### [Java 8 Date/Time](../../jackson-modules-java8) + +* [#65](../../jackson-modules-java8/issues/65): Use `DeserializationContext.handleWeirdXxxValue()` for datetime deserializers + +#### [Java 8 Parameter Names](../../jackson-modules-java8) + +* [#67](../../jackson-modules-java8/issues/67): `ParameterNamesModule` does not deserialize with a single parameter constructor when using `SnakeCase` `PropertyNamingStrategy` + +#### [JAXB](../../jackson-modules-base) + +* [#44](../../jackson-modules-base/issues/44): (jaxb) `@XmlElements` does not work with `@XmlAccessorType(XmlAccessType.NONE)` diff --git a/Jackson-Release-2.9.7.md b/Jackson-Release-2.9.7.md new file mode 100644 index 000000000..587e7d34b --- /dev/null +++ b/Jackson-Release-2.9.7.md @@ -0,0 +1,55 @@ +Patch version of [2.9](Jackson-Release-2.9), released September 19, 2018. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#476](../../jackson-core/issues/476): Problem with `BufferRecycler` via async parser (or when sharing parser across threads) +* [#477](../../jackson-core/issues/477): Exception while decoding Base64 value with escaped `=` character + +#### [Databind](../../jackson-databind) + +* [#2060](../../jackson-databind/issues/2060): `UnwrappingBeanPropertyWriter` incorrectly assumes the found serializer is of type `UnwrappingBeanSerializer` +* [#2064](../../jackson-databind/issues/2064): Cannot set custom format for `SqlDateSerialize +* [#2079](../../jackson-databind/issues/2079): NPE when visiting StaticListSerializerBase +* [#2082](../../jackson-databind/issues/2082): `FactoryBasedEnumDeserializer` should be cachable +* [#2088](../../jackson-databind/issues/2088): `@JsonUnwrapped` fields are skipped when using `PropertyBasedCreator` if they appear after the last creator property +* [#2096](../../jackson-databind/issues/2096): `TreeTraversingParser` does not take base64 variant into account +* [#2097](../../jackson-databind/issues/2097): Block more classes from polymorphic deserialization (CVE-2018-14718 - CVE-2018-14721) +* [#2109](../../jackson-databind/issues/2109): Canonical string for reference type is built incorrectly +* [#2120](../../jackson-databind/issues/2120): `NioPathDeserializer` improvement +* [#2128](../../jackson-databind/issues/2128): Location information included twice for some `JsonMappingException`s + +### Changes, data formats + +#### [Ion](../../jackson-dataformats-binary) + +* [#142](../../jackson-dataformats-binary/issues/142): `IonParser.getNumberType()` returns `null` for `IonType.FLOAT` + +#### [YAML](../../jackson-dataformats-text) + +* [#81](../../jackson-dataformats-text/issues/81): Jackson 2.9.5, 2.9.6 incompatible with snakeyaml 1.20, 1.21 + +### Changes, datatypes + +#### [Hibernate](../../jackson-datatype-hibernate) + +* [#111](../../jackson-datatype-hibernate/issues/111): Class cast exception on hibernate5 module (with Hibernate 5.1+) + +#### [Java 8 date/time](../jackson-modules-java8/) + +* [#78](../jackson-modules-java8/issues/78): Year deserialization ignores `@JsonFormat` pattern + +#### [Joda](../../jackson-datatype-joda) + +* [#99](../../jackson-datatype-joda/issues/99): Binary compatibility broken in 2.9.x in `DateTimeSerializer` +* [#101](../../jackson-datatype-joda/issues/101): Instant, YearMonth and MonthDay not use pattern in @JsonFormat + +### Changes, other modules + +#### [Afterburner](../../jackson-modules-base) + +* [#54](../../jackson-modules-base/issues/54): Afterburner` SuperSonicBeanDeserializer` does not handle JSON Object valued Object Ids (like json) + diff --git a/Jackson-Release-2.9.8.md b/Jackson-Release-2.9.8.md new file mode 100644 index 000000000..abfd55155 --- /dev/null +++ b/Jackson-Release-2.9.8.md @@ -0,0 +1,46 @@ +Patch version of [2.9](Jackson-Release-2.9), released 15th December, 2018. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#488](../../jackson-core/issues/488): Fail earlier on coercions from "too big" `BigInteger` into fixed-size types (`int`, `long`, `short`) +* Improve exception message for missing Base64 padding + +#### [Databind](../../jackson-databind) + +* [#1662](../../jackson-databind/issues/1662): `ByteBuffer` serialization is broken if offset is not 0 +* [#2155](../../jackson-databind/issues/2155): Type parameters are checked for equality while isAssignableFrom expected +* [#2167](../../jackson-databind/issues/2167): Large ISO-8601 Dates are formatted/serialized incorrectly +* [#2181](../../jackson-databind/issues/2181): Don't re-use dynamic serializers for property-updating copy constructors +* [#2183](../../jackson-databind/issues/2183): Base64 JsonMappingException: Unexpected end-of-input +* [#2186](../../jackson-databind/issues/2186): Block more classes from polymorphic deserialization (CVE-2018-19360, CVE-2018-19361, CVE-2018-19362) +* [#2197](../../jackson-databind/issues/2197): Illegal reflective access operation warning when using `java.lang.Void` as value type + +### Changes, data formats + +#### [Protobuf](../../jackson-dataformats-binary) + +* [#140](../../jackson-dataformats-binary/issues/140): Stack overflow when generating Protobuf schema on class containing cyclic type definition + +#### [Smile](../../jackson-dataformats-binary) + +* [#153](../../jackson-dataformats-binary/issues/153): Unable to set a compression input/output decorator to a `SmileFactory` + +#### [XML](../../jackson-dataformat-xml) + +* [#270](../../jackson-dataformat-xml/issues/270): Add support for `writeBinary()` with `InputStream` to `ToXMLGenerator` +* [#323](../../jackson-dataformat-xml/issues/323): Replace slow string concatenation with faster `StringBuilder` (for long text content) + +#### [YAML](../../jackson-dataformats-text) + +* [#99](../../jackson-dataformats-text/issues/99): `YamlGenerator` closes the target stream when configured not to + +### Changes, datatypes + +#### [Java 8](../../jackson-modules-java8) + +* [#90](../../jackson-modules-java8/issues/90): Performance issue with malicious `BigDecimal` input, `InstantDeserializer`, `DurationDeserializer` (note: `CVE-2018-1000873`) + diff --git a/Jackson-Release-2.9.9.md b/Jackson-Release-2.9.9.md new file mode 100644 index 000000000..1d6504893 --- /dev/null +++ b/Jackson-Release-2.9.9.md @@ -0,0 +1,70 @@ +Patch version of [2.9](Jackson-Release-2.9), released on May 16th 2019. + +Following fixes are included. + +### Changes, core + +#### [Streaming](../../jackson-core) + +* [#516](../../jackson-core/issues/516): _inputPtr off-by-one in UTF8StreamJsonParser._parseNumber2() +* [#531](../../jackson-core/issues/531): Non-blocking parser reports incorrect locations when fed with non-zero offset + +#### [Databind](../../jackson-databind) + +* [#1408](../../jackson-databind/issues/1408): Call to `TypeVariable.getBounds()` without synchronization unsafe on some platforms +* [#2221](../../jackson-databind/issues/2221): `DeserializationProblemHandler.handleUnknownTypeId()` returning `Void.class`, enableDefaultTyping causing NPE +* [#2251](../../jackson-databind/issues/2251): Getter that returns an abstract collection breaks a delegating `@JsonCreator` +* [#2265](../../jackson-databind/issues/2265): Inconsistent handling of Collections$UnmodifiableList vs Collections$UnmodifiableRandomAccessList +* [#2299](../../jackson-databind/issues/2299): Fix for using jackson-databind in an OSGi environment under Android +* [#2303](../../jackson-databind/issues/2303): Deserialize null, when java type is "TypeRef of TypeRef of T", +does not provide "Type(Type(null))" +* [#2324](../../jackson-databind/issues/2324): `StringCollectionDeserializer` fails with custom collection +* [#2326](../../jackson-databind/issues/2326): Block one more gadget type (CVE-2019-12086) + +### Changes, data formats + +#### Binary + +* [#155](../../jackson-dataformats-binary/issues/155): (multiple) Inconsistent support for `StreamWriteFeature.FLUSH_PASSED_TO_STREAM` +* [#159](../../jackson-dataformats-binary/issues/159): (cbor) Use of longer-than-optimal encoding for String lengths + +#### CSV + +* [#122](../../jackson-dataformats-text/issues/122): `readValues(null)` causes infinite loop +* [#124](../../jackson-dataformats-text/issues/124): Add `CsvGenerator.Feature.ESCAPE_CONTROL_CHARS_WITH_ESCAPE_CHAR` for escaping non-printable characters in CSV output/input + +#### XML + +* [#333](../../jackson-dataformat-xml/issues/333): `OutputDecorator` not called with `XmlMapper` + +#### YAML + +* [#63](../../jackson-dataformats-text/issues/63): `null` Object Id serialized as anchor for YAML +* [#68](../../jackson-dataformats-text/issues/68): When field names are reserved words, they should be written out with quotes +* [#90](../../jackson-dataformats-text/issues/90): Exception when decoding Jackson-encoded `Base64` binary value in YAML +* [#123](../../jackson-dataformats-text/issues/123): YAML Anchor, reference fails with simple example + +### Changes, datatypes + +#### [Guava](../../jackson-datatypes-collections) + +* [#45](../../jackson-datatypes-collections/issues/45): HostAndPortDeserializer rely on older version property name + +#### [json-org](../../jackson-datatype-json-org) + +* [#15](../../jackson-datatype-json-org/issues/15): Misleading exception when trying to deserialize JSON String as `org.json.JSONArray` value + +### Changes, other modules + +#### [Afterburner](../../jackson-modules-base/afterburner) + +* [#49](../../jackson-modules-base/issues/49): Afterburner `MyClassLoader#loadAndResolve()` is not idempotent when `tryToUseParent` is true +* [#69](../../jackson-modules-base/issues/69): `ALLOW_COERCION_OF_SCALARS` ignored deserializing scalars with Afterburner + +#### [Mr Bean](../../jackson-modules-base/mrbean) + +* [#74](../../jackson-modules-base/issues/74): MrBean module should not materialize `java.io.Serializable` + +### Changes, jackson-jr + +* Fix an issue with Maps-of-Lists, Lists-of-Maps diff --git a/Jackson-Release-2.9.md b/Jackson-Release-2.9.md new file mode 100644 index 000000000..3e1b81fb3 --- /dev/null +++ b/Jackson-Release-2.9.md @@ -0,0 +1,290 @@ +[Jackson Version](Jackson-Releases) 2.9 was released on July 30th 2017. + +There is a longer [blog entry](https://medium.com/@cowtowncoder/jackson-2-9-features-b2a19029e9ff) on major features, above and beyond information here. + +## Status + +Branch is not open for general releases and `2.9.10` was the last full patch release. +Multiple micro-patch versions have been released (see below), but with release of `2.9.10.8` on January 6, 2021, the branch is now officially closed and no releases of any kind are planned. + +## Patches + +Beyond initial 2.9.0 (described here), following patch versions were released: + +* [2.9.1](Jackson-Release-2.9.1) (07-Sep-2017) +* [2.9.2](Jackson-Release-2.9.2) (14-Oct-2017) +* [2.9.3](Jackson-Release-2.9.3) (09-Dec-2017) +* [2.9.4](Jackson-Release-2.9.4) (24-Jan-2018) +* [2.9.5](Jackson-Release-2.9.5) (26-Mar-2018) +* [2.9.6](Jackson-Release-2.9.6) (12-Jun-2018) +* [2.9.7](Jackson-Release-2.9.7) (19-Sep-2018) +* [2.9.8](Jackson-Release-2.9.8) (15-Dec-2018) +* [2.9.9](Jackson-Release-2.9.9) (16-May-2019) +* [2.9.10](Jackson-Release-2.9.10) (21-Sep-2019) -- see notes below on micro-patches + +### Micro-patches + +Following micro-patches have been or will be released: + +* `jackson-databind` `2.9.9.1` (03-Jul-2019) + * [#2334](../../jackson-databind/issues/2334): Block one more gadget type (CVE-2019-12384) + * [#2341](../../jackson-databind/issues/2341): Block one more gadget type (CVE-2019-12814) + * [#2375](../../jackson-databind/issues/2374): `ObjectMapper. getRegisteredModuleIds()` throws NPE if no modules registered +* `jackson-databind` `2.9.9.2` (27-Jul-2019) -- with `jackson-bom` version `2.9.9.20190727` + * [#2331](../../jackson-databind/issues/2331): `JsonMappingException` through nested getter with generic wildcard return type + * [#2387](../../jackson-databind/issues/2387): Block one more gadget type (CVE-2019-14379) + * [#2389](../../jackson-databind/issues/2389): Block one more gadget type (CVE-2019-14439) +* `jackson-databind` `2.9.9.3` (06-Aug-2019) -- with `jackson-bom` version `2.9.9.20190807` + * [#2395](../../jackson-databind/issues/2395): `NullPointerException` from `ResolvedRecursiveType` (regression due to fix for #2331) +* `jackson-databind` `2.9.10.1` (20-Oct-2019) -- with `jackson-bom` version `2.9.10.20191020` + * [#2478](../../jackson-databind/issues/2478): Block two more gadget types (commons-dbcp, p6spy, CVE-2019-16942 / CVE-2019-16943) + * [#2498](../../jackson-databind/issues/2498): Block one more gadget type (log4j-extras/1.2, CVE-2019-17531) +* `jackson-databind` `2.9.10.2` (03-Jan-2020) + * [#2526](../../jackson-databind/issues/2526): Block two more gadget types (ehcache/JNDI -CVE-2019-20330) + * [#2544](../../jackson-databind/issues/2544): java.lang.NoClassDefFoundError Thrown for compact profile1 +* `jackson-databind` `2.9.10.3` (23-Feb-2020) -- with `jackson-bom` version `2.9.10.20200223` + * [#2620](../../jackson-databind/issues/2620): Block one more gadget type (xbean-reflect/JNDI - CVE-2020-8840) +* `jackson-databind` `2.9.10.4` (11-Apr-2020) -- with `jackson-bom` version `2.9.10.20200411` + * [#2631](../../jackson-databind/issues/2631): Block one more gadget type (shaded-hikari-config, CVE-2020-9546) + * [#2634](../../jackson-databind/issues/2634): Block two more gadget types (ibatis-sqlmap, anteros-core; CVE-2020-9547 / CVE-2020-9548) + * [#2642](../../jackson-databind/issues/2642): Block one more gadget type (javax.swing, CVE-2020-10969) + * [#2648](../../jackson-databind/issues/2648): Block one more gadget type (shiro-core) + * [#2653](../../jackson-databind/issues/2653): Block one more gadget type (shiro-core) + * [#2658](../../jackson-databind/issues/2658): Block one more gadget type (ignite-jta, CVE-2020-10650) + * [#2659](../../jackson-databind/issues/2659): Block one more gadget type (aries.transaction.jms, CVE-2020-10672) + * [#2660](../../jackson-databind/issues/2660): Block one more gadget type (com.caucho:quercus, CVE-2020-10673) + * [#2662](../../jackson-databind/issues/2662): Block one more gadget type (bus-proxy, CVE-2020-10968) + * [#2664](../../jackson-databind/issues/2664): Block one more gadget type (activemq-jms, CVE-2020-11111) + * [#2666](../../jackson-databind/issues/2666): Block one more gadget type (apache/commons-proxy, CVE-2020-11112) + * [#2670](../../jackson-databind/issues/2670): Block one more gadget type (openjpa, CVE-2020-11113) + * [#2680](../../jackson-databind/issues/2680): Block one more gadget type (spring-jpa, CVE-2020-11619) + * [#2682](../../jackson-databind/issues/2682): Block one more gadget type (commons-jelly, CVE-2020-11620) +* `jackson-databind` `2.9.10.5` (21-Jun-2020) -- with `jackson-bom` version `2.9.10.20200621` + * [#2688](../../jackson-databind/issues/2688): Block one more gadget type (apache-drill, CVE-2020-14060) + * [#2698](../../jackson-databind/issues/2698): Block one more gadget type (weblogic/oracle-aqjms, CVE-2020-14061) + * [#2704](../../jackson-databind/issues/2704): Block one more gadget type (jaxp-ri, CVE-2020-14062) + * [#2765](../../jackson-databind/issues/2765): Block one more gadget type (org.jsecurity, CVE-2020-14195) +* `jackson-databind` `2.9.10.6` (24-Aug-2020) -- with `jackson-bom` version `2.9.10.20200824` + * [#2798](../../jackson-databind/issues/2798): Block one more gadget type (com.pastdev.httpcomponents, CVE-2020-24750 + * [#2814](../../jackson-databind/issues/2814): Block one more gadget type (Anteros-DBCP, CVE-2020-24616) + * [#2826](../../jackson-databind/issues/2826): Block one more gadget type (com.nqadmin.rowset) + * [#2827](../../jackson-databind/issues/2827): Block one more gadget type (org.arrahtec:profiler-core) +* `jackson-databind` `2.9.10.7` (02-Dec-2020) -- with `jackson-bom` version `2.9.10.20201202` + * [#2589](../../jackson-databind/issues/2589): `DOMDeserializer`: setExpandEntityReferences(false) may not prevent external entity expansion in all cases (CVE-2020-25649) + * [#2854](../../jackson-databind/issues/2854): Block one more gadget type (javax.swing, CVE-2021-20190) +* `jackson-databind` `2.9.10.8` (06-Jan-2021) -- with `jackson-bom` version `2.9.10.20210106` + * [#2986](../../jackson-databind/issues/2986): Block 2 more gadget types (commons-dbcp2, CVE-2020-35490/CVE-2020-35491) + * [#2996](../../jackson-databind/issues/2996): Block 2 more gadget types (newrelic-agent, CVE-2020-36188/CVE-2020-36189) + * [#2997](../../jackson-databind/issues/2997): Block 2 more gadget types (tomcat/naming-factory-dbcp, CVE-2020-36186/CVE-2020-36187) + * [#2998](../../jackson-databind/issues/2998): Block 2 more gadget types (org.apache.tomcat/tomcat-dbcp, CVE-2020-36184/CVE-2020-36185) + * [#2999](../../jackson-databind/issues/2999): Block 1 more gadget type (org.glassfish.web/javax.servlet.jsp.jstl, CVE-2020-35728) + * [#3003](../../jackson-databind/issues/3003): Block one more gadget type (org.docx4j.org.apache:xalan-interpretive, CVE-2020-36183) + * [#3004](../../jackson-databind/issues/3004): Block some more DBCP-related potential gadget classes (CVE-2020-36179 - CVE-2020-36182) + +----- + +## Changes, compatibility + +### JDK + +No changes from [2.8](Jackson-Release-2.8): Java 7 features available for all modules (meaning, need to compile on Java 7), JDK/JVM 7 is the baseline, except: + +* `jackson-annotations`, `jackson-core` (streaming) and `jackson-jr` still only require JDK/JVM 6 +* Java 8 modules, Kotlin, Scala module require JDK/JVM 8 + +Other modules could theoretically run on Java 6 with reduced features (i.e. avoid loading Java 7 types), but have compiled compiled with `-target 1.7` setting so bytecode unfortunately requires JDK 7. +It should be possible to post-process jars, however, to produce JDK 6 - compatible jars. + +### Android + +No changes: similar to Jackson 2.8 minimum is `Android 4.4`, API-level `19` (see [this dashboard](https://developer.android.com/about/dashboards/index.html) for example). + +Note that version `2.7` will work with older Android versions; and there are some reports that even `2.8` may actually work (even if not specified to). + +## New Modules, status changes + +### Dataformat: Ion + +First official version of `jackson-dataformat-ion` (under `jackson-dataformats-binary` repo) supports [Amazon Ion](https://amznlabs.github.io/ion-docs/) binary data format. + +### Changes: compatibility + +#### `java.sql.Date` + +As per [databind#219](https://github.com/FasterXML/jackson-databind/issues/219) `java.sql.Date` will finally use same "timestamp-or-String" determination as `java.util.Date` and `java.util.Calendar`. +This means that with vanilla, unchanged settings, values will be serialized as numeric timestamps. +Note that the default String serialization will still default to `java.sql.Date.String()`, and not to default formatting `java.util.Date` uses. + +## Major features of 2.9 + +### Implemented + +1. Add separate exception type for "pojo configuration problem" (`InvalidDefinitionException`), distinct from "json input" problem (`MismatchedInputException`); in general to distinguish between bad configuration (server-side issue) and bad data (client issue) [#1356](https://github.com/FasterXML/jackson-databind/issues/1356) +2. Per-property custom serialization inclusion (`@JsonInclude(value=Include.CUSTOM, valueFilter=MyExcluder.class`) [#888](https://github.com/FasterXML/jackson-databind/issues/888) +3. Per-property overwrite-vs-merge annotation/handling, to allow for merging of configuration information (for example) [#1399](https://github.com/FasterXML/jackson-databind/issues/1399) + * note: on-going work to increase coverage; most types should work +4. Ability to override handling of `null` for deserialization [#1402](https://github.com/FasterXML/jackson-databind/issues/1402) +5. Aliases, to allow migration: alternate property id names to accept (but not write) [#1029](https://github.com/FasterXML/jackson-databind/issues/1029) +6. Non-blocking JSON/Smile parser [#57](https://github.com/FasterXML/jackson-core/issues/57) +7. `DeserializationFeature` to automatically verify that value bound is full value and there is no trailing junk in input ("whole value verification") [#1583](https://github.com/FasterXML/jackson-databind/issues/1583) + + +## Postponed Features + +From original "big items" list, a few were left out: + +1. Ability to force "inject-only" variant of `@JacksonInject` [#1381](https://github.com/FasterXML/jackson-databind/issues/1381) -- also solves a few related issues wrt un-deserializable injectable values (which are common) +2. Allow pre-defining Object Ids; pluggable Object Id converters? [#693](https://github.com/FasterXML/jackson-databind/issues/693) +3. Rewrite of property/creator introspection code, to resolve most open issues wrt Creator auto-detection and name-detection + * NOTE: partial rewrite occurred for 2.12 +4. A way to force a supertype as type id to use during serialization: this is needed to avoid deserialization problems for things like concrete Hibernate collection type. [#789](https://github.com/FasterXML/jackson-databind/issues/789) +5. Protobuf: Schema building by hand +6. "Safe" `ObjectReader`, `ObjectWriter`; that is, ones that does NOT throw checked exceptions (wrap `IOException`s), to work better with Java 8 Streams [#779](https://github.com/FasterXML/jackson-databind/issues/779) + * NOTE: decided against this approach -- instead, Jackson 3.0 will change `JsonProcessingException` to be unchecked, to prevent need for "safe" alternative +7. Support for `@JsonIncludeProperties` (opposite of `@JsonIgnoreProperties`) [#1296](https://github.com/FasterXML/jackson-databind/issues/1296) + * NOTE: finally implement in [Jackson 2.1](Jackson-Release-2.12) + +In addition, during development of 2.9, couple of new great ideas surfaced, but could not yet be implemented due to time constraints: + +* Low-level `String` post-processor? [jackson-core#355](https://github.com/FasterXML/jackson-core/issues/355) +* Comma-separated "ints in a String" [#1242](https://github.com/FasterXML/jackson-databind/issues/1242) +* Support for automated `FormatSchema` configuration/lookup: [#1582](https://github.com/FasterXML/jackson-databind/issues/1582) + * Would be especially useful for cases where caller does not have full control; for example, when using as extension for frameworks like JAX-RS +* `@JsonUnwrapped` improvements, which need major rewrite of unwrapped deserialization: + * Support for `@JsonUnwrapped` as `@JsonCreator` parameter + * Catching "unknown" properties + +Ideally the next minor version (or, as the case may be, major...) -- 3.0 -- would start by considering these features as the starting Big Ticket item list. + +----- + +## Change list + +### Changes, core + +#### [Annotations](../../jackson-annotations) + +* [#103](../../jackson-annotations/issues/103): Add `JsonInclude.Include.CUSTOM`, properties for specifying filter(s) to use +* [#104](../../jackson-annotations/issues/104): Add new properties in `@JsonSetter`: `nulls`/`contentNulls` +* [#105](../../jackson-annotations/issues/105): Add `@JsonFormat.lenient` to allow configuring lenience of date/time deserializers +* [#108](../../jackson-annotations/issues/108): Allow `@JsonValue` on fields +* [#109](../../jackson-annotations/issues/109): Add `enabled` for `@JsonAnyGetter`, `@JsonAnySetter`, to allow disabling via mix-ins +* [#113](../../jackson-annotations/issues/113): Add `@JsonMerge` to support (deep) merging of properties +* [#116](../../jackson-annotations/issues/116): Add `@JsonAlias` annotation to allow specifying alternate names for a property +* Allow use of `@JsonView` on classes, to specify Default View to use on non-annotated properties. + +#### [Streaming](../../jackson-core) + +* [#17](../../jackson-core/issues/17): Add 'JsonGenerator.writeString(Reader r, int charLength)' +* [#57](../../jackson-core/issues/57): Add support for non-blocking ("async") JSON parsing +* [#208](../../jackson-core/issues/208): Make use of `_matchCount` in `FilteringParserDelegate` +* [#306](../../jackson-core/issues/306): Add new method in `JsonStreamContext` to construct `JsonPointer` +* [#312](../../jackson-core/issues/312): Add `JsonProcessingException.clearLocation()` to allow clearing possibly security-sensitive information +* [#314](../../jackson-core/issues/314): Add a method in `JsonParser.isNan()` to allow checking for "NaN" values +* [#323](../../jackson-core/issues/323): Add `JsonParser.ALLOW_TRAILING_COMMA` to work for Arrays and Objects +* [#325](../../jackson-core/issues/325): `DataInput` backed parser should handle `EOFException` at end of doc +* [#356](../../jackson-core/issues/356): Improve indication of "source reference" in `JsonLocation` wrt `byte[]`,`char[]` +* [#374](../../jackson-core/issues/374): Minimal and DefaultPrettyPrinter with configurable separators + +#### [Databind](../../jackson-databind) + +* [#219](../../jackson-databind/issues/219): `SqlDateSerializer` does not obey `SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS` +* [#291](../../jackson-databind/issues/291): `@JsonTypeInfo` with `As.EXTERNAL_PROPERTY` doesn't work if external type property is referenced more than once +* [#357](../../jackson-databind/issues/357): `StackOverflowError` with contentConverter that returns array type +* [#383](../../jackson-databind/issues/383): Recursive `@JsonUnwrapped` (`child` with same type) fail: "No _valueDeserializer assigned" +* [#403](../../jackson-databind/issues/403): Make FAIL_ON_NULL_FOR_PRIMITIVES apply to primitive arrays and other types that wrap primitives +* [#476](../../jackson-databind/issues/476): Allow "Serialize as POJO" using `@JsonFormat(shape=Shape.OBJECT)` class annotation +* [#507](../../jackson-databind/issues/507): Support for default `@JsonView` for a class +* [#888](../../jackson-databind/issues/888): Allow specifying custom exclusion comparator via `@JsonInclude`, using `JsonInclude.Include.CUSTOM` +* [#994](../../jackson-databind/issues/994): `DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS` only works for POJOs, Maps +* [#1029](../../jackson-databind/issues/1029): Add a way to define property name aliases +* [#1035](../../jackson-databind/issues/1035): `@JsonAnySetter` assumes key of `String`, does not consider declared type +* [#1106](../../jackson-databind/issues/1106): Add `MapperFeature.ALLOW_COERCION_OF_SCALARS` for enabling/disabling coercions +* [#1284](../../jackson-databind/issues/1284): Make `StdKeySerializers` use new `JsonGenerator.writeFieldId()` for `int`/`long` keys +* [#1320](../../jackson-databind/issues/1320): Add `ObjectNode.put(String, BigInteger)` +* [#1341](../../jackson-databind/issues/1341): `DeserializationFeature.FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY` +* [#1347](../../jackson-databind/issues/1347): Extend `ObjectMapper.configOverrides()` to allow changing visibility rules +* [#1356](../../jackson-databind/issues/1356): Differentiate between input and code exceptions on deserialization +* [#1369](../../jackson-databind/issues/1369]): Improve `@JsonCreator` detection via `AnnotationIntrospector` by passing `MappingConfig` +* [#1371](../../jackson-databind/issues/1371): Add `MapperFeature.INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIES` to allow disabling use of `@CreatorProperties` as explicit `@JsonCreator` equivalent +* [#1376](../../jackson-databind/issues/1376): Add ability to disable JsonAnySetter/JsonAnyGetter via mixin +* [#1399](../../jackson-databind/issues/1399): Add support for `@JsonSetter(merge=OptBoolean.TRUE`) to allow "deep update" +* [#1402](../../jackson-databind/issues/1402): Use `@JsonSetter(nulls=...)` to specify handling of `null` values during deserialization +* [#1406](../../jackson-databind/issues/1406): `ObjectMapper.readTree()` methods do not return `null` on end-of-input +* [#1407](../../jackson-databind/issues/1407): `@JsonFormat.pattern` is ignored for `java.sql.Date` valued properties +* [#1428](../../jackson-databind/issues/1428): Allow `@JsonValue` on a field, not just getter +* [#1454](../../jackson-databind/issues/1454): Support `@JsonFormat.lenient` for `java.util.Date`, `java.util.Calendar` +* [#1480](../../jackson-databind/issues/1480): Add support for serializing `boolean`/`Boolean` as number (0 or 1) +* [#1520](../../jackson-databind/issues/1520): Case insensitive enum deserialization feature. +* [#1522](../../jackson-databind/issues/1522): Global `@JsonInclude(Include.NON_NULL)` for all properties with a specific type +* [#1552](../../jackson-databind/issues/1552): Map key converted to byte array is not serialized as base64 string +* [#1554](../../jackson-databind/issues/1554): Support deserialization of `Shape.OBJECT` ("as POJO") for `Map`s (and map-like types) +* [#1556](../../jackson-databind/issues/1556): Add `ObjectMapper.updateValue()` method to update instance with given overrides +* [#1583](../../jackson-databind/issues/1583]): Add a `DeserializationFeature.FAIL_ON_TRAILING_TOKENS` to force reading of the whole input as single value +* [#1605](../../jackson-databind/issues/1605): Allow serialization of `InetAddress` as simple numeric host address +* [#1678](../../jackson-databind/issues/1678): Rewrite `StdDateFormat` ISO-8601 handling functionality + +### Changes, data formats + +#### [Avro](../../jackson-dataformats-binary) + +* [#13](../../jackson-dataformats-binary/issues/13): Add support for Avro default values +* [#14](../../jackson-dataformats-binary/issues/14): Add support for Avro annotations via `AvroAnnotationIntrospector` +* [#15](../../jackson-dataformats-binary/issues/15): Add a way to produce "file" style Avro output +* [#56](../../jackson-dataformats-binary/issues/56): Replace use of `BinaryDecoder` with direct access +* [#57](../../jackson-dataformats-binary/issues/57): Add support for `@Stringable` annotation +* [#59](../../jackson-dataformats-binary/issues/59): Add support for `@AvroAlias` annotation for Record/Enum name evolution +* [#60](../../jackson-dataformats-binary/issues/60): Add support for `@Union` and polymorphic types +* [#63](../../jackson-dataformats-binary/issues/63): Implement native `float` handling for parser +* [#69](../../jackson-dataformats-binary/issues/69): Add support for @AvroEncode annotation +* [#95](../../jackson-dataformats-binary/issues/95): Add new method, `withUnsafeReaderSchema` in `AvroSchema` to allow avoiding verification exception +* Upgrade `avro-core` dep from 1.7.7 to 1.8.1 + +#### [CSV](../../jackson-dataformat-csv) + +* [#127](../../jackson-dataformat-csv/issues/127): Add `CsvGenerator.Feature.ALWAYS_QUOTE_EMPTY_STRINGS` to allow forced quoting of empty Strings +* [#130](../../jackson-dataformat-csv/issues/130): Add fluent addColumns operation to CsvSchema.Builder +* [#137](../../jackson-dataformat-csv/issues/137): Inject "missing" trailing columns as `null`s (`CsvParser.Feature.INSERT_NULLS_FOR_MISSING_COLUMNS`) +* [#139](../../jackson-dataformat-csv/issues/139): Add `CsvParser.Feature.ALLOW_TRAILING_COMMA` to allow enforcing strict handling +* [#140](../../jackson-dataformat-csv/issues/140): Fail for missing column values (`CsvParser.Feature.FAIL_ON_MISSING_COLUMNS`) +* [#142](../../jackson-dataformat-csv/issues/142): Add methods for appending columns of a `CsvSchema` into another +* Add new exception type `CsvMappingException` to indicate CSV-mapping issues (and give access to effective Schema) + +#### [Protobuf](../../jackson-dataformats-binary) + +* [#64](../../jackson-dataformats-binary/issues/64): Implement native `float` handling for parser +* [#68](../../jackson-dataformats-binary/issues/68): Getting "type not supported as root type by protobuf" for serialization of short and UUID types +* [#79](../../jackson-dataformats-binary/issues/79): Fix wire type for packed arrays + +#### [Properties](../../jackson-dataformat-properties) + +* [#1](../../jackson-dataformat-properties/issues/1): Add convenience method(s) for reading System properties +* [#3](../../jackson-dataformat-properties/issues/3): Write into `Properties` instance (factory, mapper) using `JavaPropsMapper.writeValue()` with `Properties` and `JavaPropsMapper.writeValueAsProperties()` +* [#4](../../jackson-dataformat-properties/issues/4): Allow binding from `Properties` instance + +#### [XML](../../jackson-dataformat-xml) + +* [#162](../../jackson-dataformat-xml/issues/162): XML Empty tag to Empty string in the object during xml deserialization +* [#232](../../jackson-dataformat-xml/issues/232): Implement `writeRawValue` in `ToXmlGenerator` +* [#245](../../jackson-dataformat-xml/issues/245): Default `DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT` to "enabled" for `XmlMapper` +* [#246](../../jackson-dataformat-xml/issues/246): Add new feature, `FromXmlParser.Feature.EMPTY_ELEMENT_AS_NULL` +* [#250](../../jackson-dataformat-xml/issues/250): Deserialization of `Exception` serialized as XML fails + +#### [YAML](../../jackson-dataformat-yaml) + +* [#67](../../jackson-dataformat-yaml/issues/67): Add `YAMLGenerator.Feature.INDENT_ARRAYS` +* [#76](../../jackson-dataformat-yaml/issues/76): Add `YAMLGenerator.Feature.LITERAL_BLOCK_STYLE` for String output + +### Changes, datatypes + +#### [Java 8](../../jackson-modules-java8) + +* [#3](../../jackson-modules-java8/issues/3): (datatype) Add Serialization Support for Streams +* [#20](../../jackson-modules-java8/issues/20): (datetime) Allow `LocalDate` to be serialized/deserialized as number (epoch day) +* [#21](../../jackson-modules-java8/issues/21): (datetime) `DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS` not respected + +### Changes, other modules + +#### [JSON Schema](../../jackson-module-jsonSchema) + +* [#119](../../jackson-module-jsonSchema/issues/119): `dependencies` property should not be an Array but Object diff --git a/Jackson-Release-3.0.md b/Jackson-Release-3.0.md new file mode 100644 index 000000000..987edf19d --- /dev/null +++ b/Jackson-Release-3.0.md @@ -0,0 +1,120 @@ +Version 3.0 is under development, as of March 2021 (and since late 2017). + +It is a major version update and thereby not API compatible with 2.x; however, since 2.10 +new methods have been added in 2.x line to reduce incompatibilities. + +Overall plans are outlined in [JSTEP-1](https://github.com/FasterXML/jackson-future-ideas/wiki/JSTEP-1) + +## Changes, compatibility + +### JDK + +Java 8 is now required for all components. + +## Major changes/features in 3.0 + +1. Removal of all deprecated methods, functionality, as of 2.x + * Remove format-auto-detection (interesting idea but not widely used and few formats beyond JSON, XML, Smile, Avro support detection) +2. Full immutability of core entities, via Builder-style construction + * `TokenStreamFactory` (old `JsonFactory`) + * `ObjectMapper` (addition of format-specific sub-classes, from `JsonMapper` to `XmlMapper`) + * Note Jackson 2.10 and later will also support most of Builder-style construction but without strict guarantees of immutability of underlying entities (due to backwards-compatibility reasons) + * See [Jackson 3 immutability with builders](https://cowtowncoder.medium.com/jackson-3-0-immutability-w-builders-d9c532860d88) +3. Tighter integration between Streaming and Databinding to allow improved support of non-JSON formats + * `ObjectMapper` remains shared API, but every format will have its own mapper subtype, including `JsonMapper` for JSON + * Partly implemented in 2.x since 2.10, to support Builder-style construction (albeit without immutability) + * Format-specific mapper will (have to) use format-specific `TokenStreamFactory` +4. Unchecked exceptions (see [JSTEP-4](https://github.com/FasterXML/jackson-future-ideas/wiki/JSTEP-4) + * Base 2.x exceptions will be replaced with new counterparts as follows (counterparts will be added in 2.x but mostly used in 3.0) + * `JsonProcessingException` (root exception) becomes `JacksonException` + * `JsonParseException`/`JsonGenerationException` (streaming) will become `StreamReadException`/`StreamWriteException` + * `JsonMappingException` (root for databind exceptions) becomes `DatabindException` + * While new exceptions will be added by Jackson 2.13, their use is limited: they CAN be caught but NOT thrown (sort of "read-only" upgrade) while retaining compatibility across minor versions + +## Changes, core + +### [Annotations](../../jackson-annotations) + +### [Streaming](../../jackson-core) + +* [#378](../../jackson-core/issues/378): Change default for `TokenStreamFactory.Feature.INTERN_FIELD_NAMES` to `false` +* [#402](../../jackson-core/issues/402): Remove dataformat-auto-detection functionality +* [#411](../../jackson-core/issues/411): Rename `JsonStreamContext` as `TokenStreamContext` +* [#413](../../jackson-core/issues/413): Remove `ObjectCodec`: replace with `ObjectWriteContext` / `ObjectReadContext` +* [#432](../../jackson-core/issues/432): Add new `TreeNode` subtypes: `ArrayTreeNode`, `ObjectTreeNode` +* [#433](../../jackson-core/issues/433): Add Builder pattern for creating configured Stream factories +* [#456](../../jackson-core/issues/456): Add `JsonParser.readAsValue(ResolvedType)` +* [#492](../../jackson-core/issues/492): Ensure primitive type names in error message enclosed in backticks +* [#551](../../jackson-core/issues/551): Remove `JsonGenerator.setPrettyPrinter()` from 3.0 +* [#663](../../jackson-core/issues/663): Rename `JsonEOFException` as `UnexpectedEndOfInputException` +* [#670](../../jackson-core/issues/670): Replace references to "field" in `JsonGenerator`, `JsonParser` method names with "property" +* [#671](../../jackson-core/issues/671): Replace `getCurrentLocation()`/`getTokenLocation()` with `currentLocation()`/`currentTokenLocation()` +* [#676](../../jackson-core/issues/676): Remove `JsonGenerator.canWriteBinaryNatively()`, `canWriteFormattedNumbers()` (replaced by `StreamWriteCapability` equivalents) +* [#680](../../jackson-core/issues/680): Allow use of `java.nio.file.Path` as parser source, generator target +* [#689](../../jackson-core/issues/689): Remove existing "request payload" functionality +* [#785](../../jackson-core/issues/785): Make `JsonGenerator.writeXxx()` methods chainable +* [#793](../../jackson-core/issues/793): Rename "com.fasterxml.jackson" -> "tools.jackson" +* Rename `JsonGenerator.Feature.AUTO_CLOSE_JSON_CONTENT` as `AUTO_CLOSE_CONTENT` +* Add `TreeCodec.nullNode()`, `TreeNode.isNull()` methods +* Change the way `JsonLocation.NA` is included in exception messages + +### [Databind](../../jackson-databind) + +#### Functionality removal + +* [#1772](../../jackson-databind/issues/1772): Remove `MapperFeature. USE_STD_BEAN_NAMING` +* [#1773](../../jackson-databind/issues/1773): Remove `MapperFeature.AUTO_DETECT_xxx` features +* [#1917](../../jackson-databind/issues/1917): Remove `canSerialize` and `canDeserialize` methods from `ObjectMapper` +* [#1973](../../jackson-databind/issues/1973): Remove support for "default [Map] key serializer" configuration from +`SerializerProvider` +* [#2040](../../jackson-databind/issues/2040): Remove `JsonSerializer.isEmpty()` +* Remove `MappingJsonFactory` + +#### Functionality changes + +* [#1600](../../jackson-databind/issues/1600): Serializing locale with underscore, not standard hyphen +* [#1762](../../jackson-databind/issues/1762): `StdDateFormat`: serialize time offset using colon +* [#1774](../../jackson-databind/issues/1774): Merge Java8 datatype (`Optional`, `Stream`) support in core databind +* [#1775](../../jackson-databind/issues/1775): Merge Java8 parameter name support (`jackson-module-parameter-names`) in core databind +* [#1781](../../jackson-databind/issues/1781): Return `ObjectNode` from `ObjectNode` set-methods in order to allow better chaining +* [#](../../jackson-databind/issues/): +* [#1888](../../jackson-databind/issues/1888): Merge `ResolvableSerializer` into `JsonSerializer`, `ResolvableDeserializer` into `JsonDeserializer` +* [#1889](../../jackson-databind/issues/1889): Merge `ContextualSerializer` into `JsonSerializer`, `ContextualDeserializer` into `JsonDeserializer` +* [#1916](../../jackson-databind/issues/1916): Change `MapperFeature.USE_GETTERS_AS_SETTERS)` default to `false` +* [#1994](../../jackson-databind/issues/1994): Limit size of `SerializerCache`, auto-flush on exceeding +* [#1995](../../jackson-databind/issues/1995): Limit size of `DeserializerCache`, auto-flush on exceeding +* [#2177](../../jackson-databind/issues/2177): Change parent type of `JsonProcessingException` to be `RuntimeException` +* [#2713](../../jackson-databind/issues/2713): Change wording of `UnrecognizedPropertyException` to refer to "property" not "field" +* [#3028](../../jackson-databind/issues/3028): Change `UUIDSerializer` to use `StreamWriteCapability` check instead of + `JsonGenerator.canWriteBinaryNatively()` + +#### Naming changes + +* [#3037](../../jackson-databind/issues/3037): Rename `Module` as `JacksonModule` in 3.0 (to avoid overlap with `java.lang.Module`) + +#### New features + +* [#1789](../../jackson-databind/issues/1781): Add `createGenerator` methods in `ObjectMapper`, `ObjectWriter` +* [#1790](../../jackson-databind/issues/1790): Add `createParser` methods in `ObjectMapper`, `ObjectReader` +* [#1883](../../jackson-databind/issues/1883): Add "abstract type mapping" for deserialization from `Map` into `EnumMap` (and `Set` to `EnumSet`) +* [#1954](../../jackson-databind/issues/1954): Add Builder pattern for creating configured `ObjectMapper` instances +* [#1955](../../jackson-databind/issues/1955): Change the way `Module`s configure, interact with `ObjectMapper` +* [#2013](../../jackson-databind/issues/2013): Allow use of `java.nio.file.Path` for `readValue()`, `writeValue()` +* [#2411](../../jackson-databind/issues/2411): `valueToTree()` during serialization (via `SerializerProvider()`) +* [#2828](../../jackson-databind/issues/2828): Add `DatabindException` as intermediate subtype of `JsonMappingException` +* [#3536](../../jackson-databind/issues/3536): Create new exception type `JsonNodeException` for use by `JsonNode`-related problems + +## Changes, dataformats + +## Changes, datatypes + +### Guava + +* [#24](../../jackson-datatypes-collections/issues/24): Support for Guava's `Immutable{Double,Int,Long}Array` +* [#69](../../jackson-datatypes-collections/issues/69): Add support for Guava primitives during deserialization + +## Changes, JAX-RS + +## Changes, JVM Languages + +## Changes, Other modules diff --git a/Jackson-Releases.md b/Jackson-Releases.md new file mode 100644 index 000000000..f51edfe20 --- /dev/null +++ b/Jackson-Releases.md @@ -0,0 +1,107 @@ +## Public releases + +### Under development + +* [3.0](Jackson-Release-3.0): under development; not expected to be released before Q3 of 2023 +* [2.16](Jackson-Release-2.16): under development since May 2023 + +### Open branches + +These are branches for which new releases are planned. + +* [2.15](Jackson-Release-2.15): open branch (2.15 was released in April 2023) +* [2.14](Jackson-Release-2.14): open branch (2.14 was released in November 2022) +* [2.13](Jackson-Release-2.13): nominally open branch: 2.13.5 likely the last full patch set; micro-patches possible + * Last branch where JDK 6 is baseline for streaming `jackson-core` + * Last branch for Android SDK 21+ (SDK 26 minimum for 2.14) + * To be closed no earlier than end of 2023 (after 2.16.0 release) + +### Closed branches + +These are branches for which new releases are no longer planned: it is possible that in some rare cases micro-patches of components might get released. + +* [2.12](Jackson-Release-2.12) + * Closed on 2022-04 when 2.15.0 released +* [2.11](Jackson-Release-2.11): + * Closed on 2022-11 when 2.14.0 released +* [2.10](Jackson-Release-2.10) + * Closed on 2021-09-30 when `2.13.0` was released +* [2.9](Jackson-Release-2.9) + * Closed on 2021-01-06 after release of `jackson-databind` micro-patch `2.9.10.8` +* [2.8](Jackson-Release-2.8) +* [2.7](Jackson-Release-2.7) +* [2.6](Jackson-Release-2.6) +* [2.5](Jackson-Release-2.5) +* [2.4](Jackson-Release-2.4) +* [2.3](Jackson-Release-2.3) +* [2.2] +* [2.1] +* [2.0] + +### Legacy + +Jackson 1.x branches are not supported: source code can be found from + +https://github.com/FasterXML/jackson-1 + +but there is no currently working mechanism for making new releases (original sources were migrated from Codehaus SVN, build used Ant with Maven task which does not appear to work with Sonatype OSS Nexus any more). + +## General + +Jackson follows [Apache versioning](https://apr.apache.org/versioning.html) convention, and similar to [Semantic Versioning](http://semver.org/) from external user perspective. +That is: + +1. Major version upgrades (only one so far, 1.x -> 2.x) can include all kinds of changes. However, we do this so that: + * Neither Java nor Maven package names are reused (that is, we use different packages): this allows different major versions to co-exist +2. Minor version upgrades can contain additions, new methods, and may deprecate existing functionality + * Our goal is to support all existing **public** functionality (public methods, constants) with minor versions + * We do reserve the right to remove deprecated public methods as long as they have existed in deprecated form for at least two minor versions. We try to minimize such removals, but they are nonetheless made in cases where deprecated methods are problematic for future development (can not be supported, or prevent fixing other issues) +3. Patch releases need to fully replaceable and have no changes to source or binary compatibility + +### Public vs Internal APIs + +Public API in this context means methods and class override mechanism meant for end-users to use. +Generally this means public methods and fields, but does not necessarily include all method overrides: that is, sub-classing implementations allows one to use both public and internal APIs. +Unfortunately it is difficult to give hard and fast rules on this division, as there are currently no mechanisms to indicate which methods fall into which category. + +Further, parts of Internal API are designed to be used by third-party Jackson extension components; both ones developed by Jackson core team (but that are not one of 3 core components) and ones developed by others. It would be good to have specific term for such "semi-public API", but as of now there is no official term. + +But the important difference regarding compatibility is: + +* Only Public API follows Apache/SemVer versioning. + +### Internal API versioning + +Internal API -- parts that can be used by extensions modules, but usually NOT called by other application code -- will offer reduced guarantees regarding compatibility. +Specifically, the main user-facing guarantee is: + +* Extension modules are ONLY guaranteed to work with core components that have same minor version. + * Jackson team will try to minimize changes that break compatibility, so that it is OFTEN (but not always) possible to use a LATER minor version of core components with an extension module: for example, `Joda` module version 2.3 with `jackson-core` and `jackson-databind` version 2.4. + * Unfortunately it is not possible to known in advance what the compatibility changes in Internal API are, so it is not possible to define forward-looking rules before actual releases of new minor versions. + +So why is there looser definition between Internal than External APIs? Simply because in many cases, extending functionality, and even some of bug fixes require changing of internal call sequences or argument passing. Without allowing for such changes in parts of code that are not end-user facing, we would need to do more frequent full major version upgrades. And since our firm belief is that Major Releases should go with both Maven and Java package name change (to allow for co-existence of different versions) -- belief supported by experience from relatively nice 1.x to 2.x upgrades -- these changes are much more disruptive than minor upgrades. + +Having said that, what Jackson team tries to do with regard to Internal APIs is this: + +* We will try to maintain Internal API compatibility between ADJACENT Minor Versions, so that extension modules of an earlier minor versions SHOULD be usable with the next minor release of core components. + * For example, `Guava` extension module version of 2.3 should be usable with `jackson-core` and `jackson-databind` versions of 2.4 + * Note that Jackson core components (annotations, streaming, databind) MUST have same minor version. + +So, if you encounter a case where this looser invariant is violated (upgrading of core components to the next minor version breaks extension modules of current minor version), you should report this. +We can not guarantee it can be fixed -- there have been cases where unfortunately it is very difficult to make this happen -- but in most cases it is possible. + +## Older releases (from Old Jackson Wiki) + +For full listing of all old releases, check out [Old Jackson Wiki](http://wiki.fasterxml.com/JacksonDocumentation). Here are quick links for convenience (note -- for notes on patch versions, go to major version notes, follow links from there) + +* 1.x: + * [1.9](JacksonRelease1.9) + * [1.8](JacksonRelease1.8) + * [1.7](JacksonRelease1.7) + * [1.6](JacksonRelease1.6) + * [1.5](JacksonRelease1.5) + * [1.4](JacksonRelease1.4) + * [1.3](JacksonRelease1.3) + * [1.2](JacksonRelease1.2) + * [1.1](JacksonRelease1.1) + * [1.0](Jackson-Release-1.0) diff --git a/JacksonRelease1.1.creole b/JacksonRelease1.1.creole new file mode 100644 index 000000000..b83048608 --- /dev/null +++ b/JacksonRelease1.1.creole @@ -0,0 +1,24 @@ +## page was renamed from JacksonFeatures11 +== Jackson 1.1 features == + +Version 1.1 of [[JacksonHome | Jackson]] was released June 22, 2009. It is classified as a "minor" update over the first official release, [[JacksonRelease10 | 1.0]]: this means that it is fully backwards compatible with code written for 1.0, but contains new or improved functionality, not just bug fixes (bug fix releases are called "patches"). + +New functionality consists of following notable features (check out complete [[http://jackson.codehaus.org/1.1.0/release-notes/VERSION | release notes]] for full list) + +=== Major features === + + * Support for [[JacksonJAXBAnnotations | JAXB annotations]] (in addition to or instead of [[JacksonAnnotations | Core Jackson Annotations]]) + * Ability to [[JacksonJsonSchemaGeneration | generate JSON Schema definitions]] using Jackson serializers on arbitrary POJOs + * Support for [[JacksonFieldProperties | direct field access]]: public member fields and explicitly annotated fields (using {{{@JsonProperty}}}) can be serialized and deserialized (and unlike with JAXB, it is ok to find both field and methods; methods have precedence if this happens) + * Annotation set has been streamlined: although all existing 1.0 annotations work (and will work for all 1.x releases); almost all functionality can be defined using but 3 new annotations: + * {{{@JsonProperty}}} for indicating getters/setters/accessible fields, and to override logical property name associated if need be + * {{{@JsonSerialize}}} to configure serialization (external serializer to use, whether to [[JacksonAnnotationSerializeNulls | output null/non-default properties]] etc) + * {{{@JsonDeserialize}}} to configure deserialization (external deserializer to use, sub-types to use) + +=== Minor improvements/fixes === + + * Created new jar ({{{jackson-xc}}}) for XML-related functionality (such as [[JacksonJAXBAnnotations | JAXB annotations]]) + * [[http://jira.codehaus.org/browse/JACKSON-109 | JACKSON-109]]: Full support for deserializing generic types, not just Maps and Collections + +---- +CategoryJackson diff --git a/JacksonRelease1.2.creole b/JacksonRelease1.2.creole new file mode 100644 index 000000000..fefbd5bb7 --- /dev/null +++ b/JacksonRelease1.2.creole @@ -0,0 +1,35 @@ +## page was renamed from JacksonFeatures12 +== Jackson Release: 1.2 == + +Version 1.2 of [[JacksonHome | Jackson]] was released 02-Aug-2009. +It is classified as a "minor" update over [[JacksonRelease11 | 1.1]], since it will be fully backwards compatible (hence not a "major" version bump), but will introduce number of new features (hence not a "patch" release). + +New functionality consists of following notable features (check out complete [[http://jackson.codehaus.org/1.2.0/release-notes/VERSION | release notes]] for full list) + +=== Implemented features === + +==== Implemented: major ==== + + * [[http://jira.codehaus.org/browse/JACKSON-33 | JACKSON-33]]: [[JacksonFeatureCreators | Allow use of non-default constructors]] (like: {{{x = new MyBean(1, "abc");}}}) and factory methods. + * [[http://jira.codehaus.org/browse/JACKSON-69 | JACKSON-69]]: Support parsing [[JacksonFeaturesNonStandard | non-standard JSON]] where Object keys are not quoted + * [[http://jira.codehaus.org/browse/JACKSON-76 | JACKSON-76]]: [[JacksonMixInAnnotations | Mix-in Annnotations]] + * [[http://jira.codehaus.org/browse/JACKSON-114 | JACKSON-114]]: [[JacksonSerializeWithStaticTypes | Ability to force static (declared) type on serialization]] (instead of dynamic runtime type) + +==== Implemented: minor ==== + + * [[http://jira.codehaus.org/browse/JACKSON-92 | JACKSON-92]]: Ability to deserialize using creator-methods that take instances of any deserializable type (usually {{{java.util.Map}}}) + * [[http://jira.codehaus.org/browse/JACKSON-135 | JACKSON-135]]: Ability to construct {{{JsonNode}}} instances directly from {{{ObjectMapper}}}, using methods {{{ObjectMapper.createObjectNode}}} and {{{ObjectMapper.createArrayNode}}}. + * [[http://jira.codehaus.org/browse/JACKSON-147 | JACKSON-147]]: Allow disabling exception throwing for unknown properties during deserialization ({{{DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES}}}) + * [[http://jira.codehaus.org/browse/JACKSON-148 | JACKSON-148]]: Make configuration methods (of {{{JsonFactory}}}, {{{ObjectMapper}}}, {{{JsonParser}}}, {{{JsonGenerator}}}) chainable by returning 'this'. + * [[http://jira.codehaus.org/browse/JACKSON-149 | JACKSON-149]]: Added {{{DeserializationConfig.Feature.USE_ANNOTATIONS}}} and {{{SerializationConfig.Feature.USE_ANNOTATIONS}}} to allow disabling use of annotations for configuring serialization and/or deserialization aspects (by default features are on) + +=== Initially planned, but deferred === + +=== Deferred to 1.3 === + + * [[http://jira.codehaus.org/browse/JACKSON-138 | JACKSON-138]]: Add support for "views" ({{{@JsonView}}}) + * [[http://jira.codehaus.org/browse/JACKSON-129 | JACKSON-129]]: Allow creating {{{JsonParser}}}, {{{JsonGenerator}}} to/from {{{java.util.Map}}} (mostly to allow data binding to/from Maps via parser/generator) + * [[http://jira.codehaus.org/browse/JACKSON-137 | JACKSON-137]]: Allow use of proxy object to simplify handling of generic objects -- will possibly add "Jackson Sandbox" to first introduce this clever construct? + +---- +CategoryJackson diff --git a/JacksonRelease1.3.creole b/JacksonRelease1.3.creole new file mode 100644 index 000000000..b3ccf8c29 --- /dev/null +++ b/JacksonRelease1.3.creole @@ -0,0 +1,50 @@ +== Jackson Release: 1.3 "Great Pumpkin" == + +Release 1.3 of [[JacksonHome | Jackson]] (code name "Great Pumpkin") was released October 30th 2009. +It is classified as a "minor" update over [[JacksonRelease11 | 1.2]], since it will be fully backwards compatible (hence not a "major" version bump), but will introduce number of new features (hence not a "patch" release -- although "Pumpkin Patch" would be an apt term, maybe use that for 1.3.1). + +Following is the list of significant improvements release contains. + +Check out complete [[http://jackson.codehaus.org/1.3.0/release-notes/VERSION | release notes]] for full list of changes) + +=== Implemented features === + +==== Implemented: major ==== + + * [[http://jira.codehaus.org/browse/JACKSON-129 | JACKSON-129]] Allow constructing {{{JsonParser}}} to read from {{{JsonNode}}} ([[JacksonTreeModel | Tree Model]]): can be used for binding JSON Trees as Java objects, similar to how textual JSON content can be bound to objects + * [[http://jira.codehaus.org/browse/JACKSON-159 | JACKSON-159]]: Added {{{org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider}}} for easier use of [[JacksonJAXBAnnotations | JAXB annotations]] with {{{JAX-RS}}}. + * [[http://jira.codehaus.org/browse/JACKSON-174 | JACKSON-174]]: Added {{{ObjectMapper.convertValue()}}} for convenient conversions between compatible (but not necessarily Java castable!) types -- functionally identical to serializing from source value to JSON, deserializing to target type, but more efficient. + +==== Implemented: minor ==== + + * [[http://jira.codehaus.org/browse/JACKSON-152 | JACKSON-152]]: Convenience method ({{{ObjectMapper.writeValueAsString()}}}) to simplify serializing Java objects as JSON Strings. + * [[http://jira.codehaus.org/browse/JACKSON-153 | JACKSON-153]]: Allow use of {{{@JsonCreator}}} with Map types too + * [[http://jira.codehaus.org/browse/JACKSON-154 | JACKSON-154]]: Added {{{.keyUsing}}} and {{{.contentUsing}}} for {{{JsonDeserialize}}} annotation, to allow specifying deserializer to use for key and content/value types of structured-value (Collection, Map, array) properties + * [[http://jira.codehaus.org/browse/JACKSON-158 | JACKSON-158]]: Simple checking for self-references (tight cycle) during serialization, instead of waiting for {{{StackOverflowError}}} + * [[http://jira.codehaus.org/browse/JACKSON-165 | JACKSON-165]]: Add {{{JsonParser.getBooleanValue()}}} convenience method + * [[http://jira.codehaus.org/browse/JACKSON-173 | JACKSON-173]]: Add feature {{{JsonParser.Feature.ALLOW_SINGLE_QUOTES}}} to allow parsing invalid JSON content that uses single-quotes (apostrophes) instead of double quotes + * [[http://jira.codehaus.org/browse/JACKSON-176 | JACKSON-176]]: Added {{{JsonGenerator.Feature.WRITE_NUMBER_AS_STRINGS}}} as a workaround for Javascript problems with big longs (due to always representing numbers as 64-bit doubles internally) + * [[http://jira.codehaus.org/browse/JACKSON-180 | JACKSON-180]]: Added {{{JsonParser.Feature.INTERN_FIELD_NAMES}}} to allow disabling field name intern()ing. + +==== Important bug fixes ==== + + * Deserialization: + * [[http://jira.codehaus.org/browse/JACKSON-167 | JACKSON-167]]: Generic type information lost for {{{Maps}}} and {{{Collections}}} + * [[http://jira.codehaus.org/browse/JACKSON-179 | JACKSON-179]]: Single-argument constructor {{{Creators}}} sometimes not found (reported for {{{long}}} arguments) + * [[http://jira.codehaus.org/browse/JACKSON-183 | JACKSON-183]]: Root-level Bean annotations not handled completely + * OSGi packaging: + * [[http://jira.codehaus.org/browse/JACKSON-162 | JACKSON-162]]: Jackson-xc module's dependencies were incorrectly declared. + +=== Initially planned, but deferred === + +==== Major ==== + + * [[http://jira.codehaus.org/browse/JACKSON-138 | JACKSON-138]]: Add support for [[JacksonJsonViews | "JSON views"]] (using {{{@JsonView}}} annotations) + * Will be the first new thing to be added for 1.4... + +==== Minor ==== + + * [[http://jira.codehaus.org/browse/JACKSON-137 | JACKSON-137]]: Allow use of proxy object to simplify handling of generic objects -- will possibly add "Jackson Sandbox" to first introduce this clever construct? + * [[http://jira.codehaus.org/browse/JACKSON-163 | JACKSON-163]]: Support "wrapped" output for JAXB compatibility: additional dummy Map with a single key (from JAXB {{{@XmlRootElement}}} annotation), used to make output more similar to XML output. +---- +CategoryJackson diff --git a/JacksonRelease1.4.creole b/JacksonRelease1.4.creole new file mode 100644 index 000000000..24da25591 --- /dev/null +++ b/JacksonRelease1.4.creole @@ -0,0 +1,50 @@ +== Jackson Release: 1.4 == + +Jackson 1.4 was released on December 19th 2009. + +It is classified as a "minor" update over [[JacksonRelease13 | 1.3]], since it will be fully backwards compatible (hence not a "major" version bump), but will introduce new features (hence not a "patch" release). + +Main focus of this release is on improving serialization side, to allow users to configure details of serialization. Secondary focus is on inter-operability, trying to ensure Jackson works well with as many other libraries, platforms and JVM languages as possible (as per user reports). + +Following is the list of functionality that has been implemented for this release. + +=== Implemented features === + +==== Implemented: major ==== + + * [[http://jira.codehaus.org/browse/JACKSON-138 | JACKSON-138]]: Add support for [[JacksonJsonViews | "JSON views"]] (using {{{@JsonView}}} annotations) + * Additional work was done to allow more customized handling, by sub-classing BeanSerializerFactory (see [[JacksonJsonViews | JsonView]] for details) + +==== Implemented: minor ==== + + * [[http://jira.codehaus.org/browse/JACKSON-77 | JACKSON-77]] Add {{{@JsonIgnoreProperties}}} class annotation that allows ignoring properties for serialization and deserialization, such that + * {{{JsonIgnoreProperties.value}}} can be used to enumerate names of properties to explicitly ignore (not write out when serializing; ignore if seen during deeserialization) + * {{{JsonIgnoreProperties.ignoreUnknown}}} can be used to specify that any unrecognized properties are to be skipped (without exception) when deserializing instances of annotated class (has no effect on serialization) + * Related change, [[http://jira.codehaus.org/browse/JACKSON-89 | JACKSON-89]] will implicitly add {{{@JsonIgnore}}}'d Setter/Creator properties as properties to quietly ignore during deserialization (if no explicit handling defined) + * [[http://jira.codehaus.org/browse/JACKSON-90 | JACKSON-90]] Add {{{@JsonPropertyOrder}}} class annotation for specifying serialization order of properties. + * {{{@JsonPropertyOrder.value}}} can be used to explicitly specify first properties to serialize; this can be partial ordering, and properties other than listed will be serialized after properties listed. + * {{{@JsonPropertyOrder.alphabetic}}} can be used to specify that properties that are not explicitly specified should be ordered alphabetically + * Related change, [[http://jira.codehaus.org/browse/JACKSON-170 | JACKSON-170]] adds further implicit ordering such that in absence of explicit ordering, {{{Creator properties}}} (parameters to constructors and factory methods) are to be ordered before other properties (this also has precedence over alphabetic ordering) + * [[http://jira.codehaus.org/browse/JACKSON-192 | JACKSON-192]] Add delegate implementations for {{{JsonParser}}} and {{{JsonGenerator}}} ({{{org.codehaus.jackson.util.JsonParserDelegate}}} / {{{JsonGeneratorDelegate}}}) for easier overriding of low-level read/write functionality. Can be used, for example, for filtering out specific fields (override {{{JsonParser.nextToken()}}} to skip select fields with values). + * [[http://jira.codehaus.org/browse/JACKSON-201 | JACKSON-201]] Handle "empty beans" (ones with no getters) without exceptions if there are recognized class annotations; or if {{{SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS}}} is enabled. + +==== Implemented: interoperability ==== + +Some features specifically target interoperability (make Jackson easier to integrate with other packages, platforms): + + * [[http://jira.codehaus.org/browse/JACKSON-38 | JACKSON-38]] Add converters for DOM trees (to/from JSON Strings) for improved interoperability. + * [[http://jira.codehaus.org/browse/JACKSON-161 | JACKSON-161]] Add basic converters for [[http://joda-time.sourceforge.net/ | Joda Time]] package (specifically {{{DateTime}}} class -- more can be added later on) + * [[http://jira.codehaus.org/browse/JACKSON-208 | JACKSON-208]] Add {{{JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS}}} that allows reading "JSON" content that has unquoted control characters (tabs, linefeeds) in Strings (including field names). + * '''NOTE''': This is a [[JacksonFeaturesNonStandard | Non-Standard]] feature, intended only to be used when handling non-valid "JSON" content: use only if you must. + * [[http://jira.codehaus.org/browse/JACKSON-216 | JACKSON-216]] Add support for JAXB annotation {{{XmlElement.type}}} for defining concrete class to use for deserialization. + +=== Planned features === + +==== Deferred ==== + +Following features were initially planned to be included but were deferred for subsequent releases: + + * [[http://jira.codehaus.org/browse/JACKSON-175 | JACKSON-175]]: Create efficient {{{TokenBuffer}}} class for storing JSON document fragments; change {{{ObjectMapper.convertValue()}}} to use it. Also needed for future Polymorphic Deserialization feature. + +---- +CategoryJackson diff --git a/JacksonRelease1.5.creole b/JacksonRelease1.5.creole new file mode 100644 index 000000000..c75dadf23 --- /dev/null +++ b/JacksonRelease1.5.creole @@ -0,0 +1,44 @@ +== Jackson Release: 1.5 "Types R Us" == + +(but funny guys call me "Jackson Five"!) + +[[Jackson|JacksonHome]] 1.5 was released on March 14th 2010. + +It is classified as a "minor" update over [[1.4|JacksonRelease14]], since it will be mostly backwards compatible (hence not a "major" version bump), but will introduce new features (hence not a "patch" release). + +Main focus of this release will is on implementing the number one user requested feature: [[Polymorphic type handling|JacksonPolymorphicDeserialization]]. That is, ability to embed exact type information in JSON, to allow for binding back to exact types, even if static type information does not indicate those types. This is important for some use cases, and especially with loosely typed Collections. + +Following is the list of functionality that has been implemented for this release. + +=== Implemented features === + +==== Implemented: major ==== + + * [[JACKSON-91|http://jira.codehaus.org/browse/JACKSON-91]]: [[Polymorphic type handling|JacksonPolymorphicDeserialization]] (aka "Polymorphic deserialization"): + * Can now handle polymorphic subtypes safely, reliably, and without any code (just annotations or global enabling). + * Enabled using {{{@JsonTypeInfo}}} (see [[JacksonAnnotations]]) on base class; or {{{ObjectMapper.enableDefaultTyping()}}} to enable addition of type info for wide class of types. + * [[JACKSON-195|http://jira.codehaus.org/browse/JACKSON-195]]: Add methods to {{{ObjectMapper}}} to allow [[specification of root object type|JacksonFeatureRootType]]. Implemented by new {{{ObjectWriter}}} abstraction, which also supports better way to define [[JSON View|JacksonJsonViews]] to use for serialization. + * JSONP (json-p) support: + * [[ JACKSON-234|http://jira.codehaus.org/browse/JACKSON-234]]: underlying {{{JSONP}}} wrapper object, handling) + * [[JACKSON-245|http://jira.codehaus.org/browse/JACKSON-245]]: configuration option for {{{JAX-RS}}} provider for convenience + * [[JACKSON-244|http://jira.codehaus.org/browse/JACKSON-244]]: configurability of [[auto-detection visibility|JacksonFeatureAutoDetect]]; allows, for example, auto-detect private fields without annotations ({{{@JsonAutoDetect (getterVisibility=Visibility.ANY)}}} or equivalent global setting using {{{VisibilityChecker}}}) + +==== Implemented: minor ==== + + * Date handling: + * [[JACKSON-218|http://jira.codehaus.org/browse/JACKSON-218]]: More complete support for Joda datatypes. + * [[JACKSON-236|http://jira.codehaus.org/browse/JACKSON-236]]: Parsing of Java (millisecond) timestamps from JSON Strings + * [[JACKSON-175|http://jira.codehaus.org/browse/JACKSON-175]]: Create efficient [[JacksonFeatureTokenBuffer | TokenBuffer]] class for storing JSON document fragments + * [[JACKSON-221 | http://jira.codehaus.org/browse/JACKSON-221]]: Add convenience method: byte[] {{{ObjectMapper.writeValueAsBytes}}} + * [[JACKSON-229 | http://jira.codehaus.org/browse/JACKSON-229]]: Ability to [[construct polymorphic types programmatically | JacksonFeatureConstructingTypes]]. + * [[JACKSON-232 | http://jira.codehaus.org/browse/JACKSON-232]]: Allow switching of behaviour for [[JacksonJsonViews]] for non-annotated fields, using [[ SerializationConfig.Feature | http://wiki.fasterxml.com/JacksonFeaturesSerialization]] .DEFAULT_VIEW_INCLUSION. + * [[JACKSON-241 | http://jira.codehaus.org/browse/JACKSON-241]]: Allow defining additional ignorable ("untouchable") classes for {{{JAX-RS}}} provider, method {{{JacksonJsonProvider.addUntouchable()}}}. + +==== Deferred ==== + +Features that were considered, but postponed for following releases: + + * [[JACKSON-235 | http://jira.codehaus.org/browse/JACKSON-235]]: Handle bi-directional references using declarative method(s) ("make things work with Hibernate", SQL depedencies) + +---- +CategoryJackson diff --git a/JacksonRelease1.6.creole b/JacksonRelease1.6.creole new file mode 100644 index 000000000..09bfc969e --- /dev/null +++ b/JacksonRelease1.6.creole @@ -0,0 +1,40 @@ +== Jackson Release: 1.6 == + +(code name: Smiley Bean) + +[[JacksonHome | Jackson]] 1.6 was released on September 6th 2010, about 6 months after [[JacksonRelease15 | 1.5]]. + +It is classified as a "minor" update over 1.5, since it will be mostly backwards compatible (hence not a "major" version bump), but will introduce new features (hence not a "patch" release). + +This release had ambitious goals for extending functionality into new areas: both with respect to kinds of use cases supported (bean materialization, ability to update ("merge") existing objects), data types ("Smile" binary format) and third party libraries (parent/child relationship support for {{{ORM}}}. But additionally it significantly improved existing functionality, so that working with Java Enums is more convenient; support for generic types is even more powerful; and [[JacksonTreeModel | JSON Tree Model]] support is more convenient. + +Following is the list of functionality that was implemented for this release. + +=== Implemented features: major === + + * [[http://jira.codehaus.org/browse/JACKSON-41 | JACKSON-41]]: Add support for [[JacksonFeatureMaterializedBeans | Materialized Beans]]: ability to generate classes that implement interfaces (and abstract classes) for deserialization, in cases where no other mappings exist. + * [[http://jira.codehaus.org/browse/JACKSON-235 | JACKSON-235]]: [[JacksonFeatureBiDirReferences | Handle bi-directional references]] using declarative method(s) (especially useful/important for ORM like Hibernate, iBatis) + * [[http://jira.codehaus.org/browse/JACKSON-264 | JACKSON-264]]: Ability to [[JacksonFeatureUpdateValue | "update" values]]; to read and bind JSON content as properties of existing beans. This is done by using {{{ObjectMapper.updatingReader()}}}" (and {{{reader.readValue(source)}}} on resulting reader object) + * [[http://jira.codehaus.org/browse/JACKSON-331 | JACKSON-331]]: Add support for [[http://wiki.fasterxml.com/SmileFormat | Smile (binary JSON) format]]; used with new SmileFactory (a sub-type of JsonFactory to use with Smile format) + +=== Implemented features: minor === + + * [[http://jira.codehaus.org/browse/JACKSON-210 | JACKSON-210]]: Add methods in {{{JsonNode}}} for [[JacksonFeatureTreeFindValue | finding values]] of named property + * [[http://jira.codehaus.org/browse/JACKSON-212 | JACKSON-212]]: Allow using {{{Enum.toString()}}} as external serialization instead of Enum.value() + * [[http://jira.codehaus.org/browse/JACKSON-257 | JACKSON-257]]: Allow registering subtypes for [[JacksonPolymorphicDeserialization | polymorphic type handling]] (using {{{ObjectMapper.registerSubtypes()}}}). + * [[http://jira.codehaus.org/browse/JACKSON-261 | JACKSON-261]]: {{{@JsonView}}} now implies that the associated thing is a property (regardless of its visibility), to reduce amount of annotations needed when exposing non-public fields. + * [[http://jira.codehaus.org/browse/JACKSON-282 | JACKSON-282]]: Add {{{SerializationConfig.Feature.CLOSE_CLOSEABLE}}} to force calling value.close() on serialization. Meaning that if you want to have automatic resource cleanup for root-level values objects, it is easy to enable. + * [[http://jira.codehaus.org/browse/JACKSON-287 | JACKSON-287]]: Add {{{JsonParser.releaseBufferedContent()}}} for pushing back buffered but unused content, usually after parsing all content of interest (but not necessarily whole stream). + * [[http://jira.codehaus.org/browse/JACKSON-292 | JACKSON-292]]: Add [[JacksonFeatureAnyGetter | @JsonAnyGetter]] to allow convenient serialization of properties bound using {{{@JsonAnySetter}}} (on deserialization). + * [[http://jira.codehaus.org/browse/JACKSON-300 | JACKSON-300]]: {{{JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER}}} to make parser accept any all possible backslash-escapes. + * [[http://jira.codehaus.org/browse/JACKSON-302 | JACKSON-302]]: Add {{{JsonNode.has()}}} for more convenient checking of whether JSON Object or Array node has specified property or element. + * [[http://jira.codehaus.org/browse/JACKSON-316 | JACKSON-316]]: Add {{{SerializationConfig.Feature.WRITE_NULL_MAP_VALUES}}}, for suppressing writing of null-valued Map entries. + +=== Planned but deferred features === + +Following features were considered for inclusion, but deferred due to time constraints + + * [[http://jira.codehaus.org/browse/JACKSON-163 | JACKSON-163]]: Add ser/deser feature for {{{ObjectMapper}}} to allow "wrapped" output (mostly for JAXB compatibility) + +---- +CategoryJackson diff --git a/JacksonRelease1.7.creole b/JacksonRelease1.7.creole new file mode 100644 index 000000000..c7e2573dc --- /dev/null +++ b/JacksonRelease1.7.creole @@ -0,0 +1,64 @@ +== Jackson Release: 1.7 == + +(code name: Infinity-and-Beyond) + +Version 1.7 was released January 6th, 2011, 4 months after [[JacksonRelease16 | 1.6]] + +Major area to improve is the extensibility by 3rd party providers; by: + + * Modularity improvements, allowing extensions to attach modularly (and without sub-classing), co-exist peacefully + * Increase ways in which external code can cleanly customize and extend core functionality: for example, with addition of "bean serializer/deserializer modifiers" that can change the way Bean (POJO) serializers and deserializers are constructure and configured + * Increase configurability of existing components; for example by allowing contextual serializers and deserializers; contextual meaning that instances can be configured based on context in which they are used (property being serialized or deserialized). + +1.7 is technically a "minor" update over [[JacksonRelease16 | 1.6]], since it will be backwards compatible (hence not a "major" version bump), but will introduce new features (hence not a "patch" release). External API should remain compatible, although internal (non-public) interfaces may be changed. +However, compared to most other 1.x updates, there are more changes to "semi-private" interfaces; this may affect some advanced use cases. + +Following is the list of functionality that has been implemented for this release. + +=== Implemented features: major === + + * [[http://jira.codehaus.org/browse/JACKSON-280 | JACKSON-280]]: Allow use of {{{@JsonTypeInfo}}} for properties (fields, methods) + * [[http://jira.codehaus.org/browse/JACKSON-297 | JACKSON-297]]: Add [[JacksonFeatureModules | module abstraction]] to better define interface for 3rd party plug-in libraries + * Related: + * [[http://jira.codehaus.org/browse/JACKSON-369 | JACKSON-369]]: Allow registering custom deserializers without extending SerializerFactory (or using CustomSerializerFactory) + * [[http://jira.codehaus.org/browse/JACKSON-421 | JACKSON-421]]: Add ability to register multiple sets of serializers without extending SerializerFactory + * [[http://jira.codehaus.org/browse/JACKSON-312 | JACKSON-312]]: Add ability to do per-serialization, [[JacksonFeatureJsonFilter | dynamic filtering]] of fields (using {{{@JsonFilter}}}, ObjectMapper.filteredWriter()) + * [[http://jira.codehaus.org/browse/JACKSON-385 | JACKSON-385]]: Support [[JacksonFeatureContextualHandlers | contextual serializers, deserializers]] + * [[http://jira.codehaus.org/browse/JACKSON-440 | JACKSON-440]]: add a mechanism for post-processing ("enhancing") serializers, deserializers using pluggable handlers (BeanSerializerModifier, BeanDeserializerModifier) that can be registered using module interface (they plug-in with BeanSerializerFactory, BeanDeserializerFactory, respectively). + +=== Implemented features: minor === + + * [[http://jira.codehaus.org/browse/JACKSON-163 | JACKSON-163]]: Support "wrapped" output (for JAXB compatibility mostly) (NOTE: only serialization support; deserialization can be added if/when needed) + * [[http://jira.codehaus.org/browse/JACKSON-345 | JACKSON-345]]: Use SerializedString for {{{BeanSerializer}}} to improve serialization performance + * [[http://jira.codehaus.org/browse/JACKSON-351 | JACKSON-351]]: Add {{{@JsonRawValue}}} for injecting "raw" text into JSON output + * [[http://jira.codehaus.org/browse/JACKSON-401 | JACKSON-401]]: {{{ObjectMapper}}}, {{{JsonGenerator}}}: Allow more control over flush()ing of underlying stream + * [[http://jira.codehaus.org/browse/JACKSON-407 | JACKSON-407]]: Allow disabling wrapping of runtime exceptions during serialization, deserialization. + * [[http://jira.codehaus.org/browse/JACKSON-412 | JACKSON-412]]: Add {{{DeserializationConfig.Feature.FAIL_ON_NUMBERS_FOR_ENUMS}}} to define whether it is ok to map JSON integer to enum values with matching ordinal() (see [[JacksonFeaturesDeserialization]]) + * [[http://jira.codehaus.org/browse/JACKSON-414 | JACKSON-414]]: Add {{{getValueAsBoolean()}}} to JsonNode and JsonParser + * [[http://jira.codehaus.org/browse/JACKSON-419 | JACKSON-419]]: Add java.util.Locale deserializer (serialize as JSON String, deserialize) + * [[http://jira.codehaus.org/browse/JACKSON-420 | JACKSON-420]]: Add {{{DeserializationConfig.Feature.FAIL_ON_NULL_FOR_PRIMITIVES}}} to define whether it is ok to map JSON null to default primitive value (see [[JacksonFeaturesDeserialization]]) + * [[http://jira.codehaus.org/browse/JACKSON-429 | JACKSON-429]]: Add @JsonIgnoreType to allow ignoring any and all properties + of specified type; useful for excluding well-known proxy/facade/handler types + * [[http://jira.codehaus.org/browse/JACKSON-432 | JACKSON-432]]: Add {{{ObjectMapper.enableDefaultTypingAsProperty()}}} to allow specifying inclusion type {{{As.PROPERTY}}} and property name to use + +=== Features moved to sub-projects === + +Due to additional Module API and other extensibility features, it is now possible to "externalize" development of support for third-party data types. As a result, following feature requests are planned to be tackled via separate sub-projects (see [[JacksonModuleProjects | Jackson Module Projects]] page for details): + + * [[http://jira.codehaus.org/browse/JACKSON-276 | JACKSON-276]]: Support for lazy-loaded Hibernate types; see [[JacksonModuleHibernate]] + * [[http://jira.codehaus.org/browse/JACKSON-317 | JACKSON-317]]: Support for Guava (FKA Google Collections) datatypes, see [[JacksonModuleGuava]] + * [[http://jira.codehaus.org/browse/JACKSON-394 | JACKSON-394]]: Implement ObjectMapper subtype (along with other needed pieces, JsonFactory, parser, generator) that allows serializing POJOs as xml, deserializing POJOs from xml using Stax sources (aka [[JacksonFeatureMiniJAXB | mini-JAXB]]) + +Since implementation of modules (and other major extensions) is dependant on 1.7 release itself, plan is that these sub-projects can rapidly complete initial development and release first public versions shortly after 1.7 itself is released. + +=== Planned features, postponed === + +Some significant features were considered for inclusion but were postponed for later versions. This includes: + + * [[http://jira.codehaus.org/browse/JACKSON-132 | JACKSON-132]]: Allow unwrapping (flattening) of properties of an Object + * [[http://jira.codehaus.org/browse/JACKSON-275 | JACKSON-275]]: Support multi-argument setters (to allow co-constraints) + * [[http://jira.codehaus.org/browse/JACKSON-279 | JACKSON-279]]: Retain timezone information during serialization, deserialization + * [[http://jira.codehaus.org/browse/JACKSON-406 | JACKSON-406]]: Allow injection of values during deserialization. + +---- +CategoryJackson diff --git a/JacksonRelease1.8.creole b/JacksonRelease1.8.creole new file mode 100644 index 000000000..ddb567314 --- /dev/null +++ b/JacksonRelease1.8.creole @@ -0,0 +1,59 @@ +== Jackson Release: 1.8 == + +Version 1.8 was released April 20th, 2011, about 4 months after [[JacksonRelease17 | 1.7]]; see [[JacksonDownload | Download]] page. + +As with all "minor versions", it is backwards compatible with earlier version, regarding public API; and with only minor changes with internal (or semi-public) interfaces. +Set of such mostly-internal changes is included in release notes. + +Goal for this version was to address "most wanted" features, both by users and development team. +In addition, modular extensibility was a priority, so multiple improvements to [[JacksonFeatureModules | Module API]] were included. +----- + +=== Implemented features, Major === + + * Customized low-level output encoding: + * [[http://jira.codehaus.org/browse/JACKSON-102 | JACKSON-102]]: Allow forced escaping of non-ASCII characters, using JsonGenerator.{{{Feature.ESCAPE_NON_ASCII}}} (or JsonGenerator.{{{setHighestNonEscapedChar}}} + * [[http://jira.codehaus.org/browse/JACKSON-106 | JACKSON-106]]: Added {{{org.codehaus.jackson.io}}}.CharacterEscapes which can be registered with JsonFactory, JsonGenerator, to add fully customized character escaping functionality. + * [[http://jira.codehaus.org/browse/JACKSON-178 | JACKSON-178]]: Add support for [[JacksonFeaturePropertyNamingStrategy | custom property naming strategy]]. + * [[http://jira.codehaus.org/browse/JACKSON-494 | JACKSON-494]]: Add pluggable format auto-detection support + * Support added for basic JSON (JsonFactory), Smile (SmileFactory), as well as "jackson-xml-databinding" module ({{{XmlFactory}}}). + * Full support for configurable key serializers, deserializers: + * [[http://jira.codehaus.org/browse/JACKSON-513 | JACKSON-513]]: Add methods for registering key serializers, deserializers, via Module API + * [[http://jira.codehaus.org/browse/JACKSON-519 | JACKSON-519]]: Add support for contextual serializers, deserializers. + +=== Implemented features, Medium === + + * [[http://jira.codehaus.org/browse/JACKSON-43 | JACKSON-43]]: Add ObjectMapper.{{{readValues()}}}, ObjectReader.{{{readValues()}}} to allow convenient binding of sequences (arrays, root-level sequences) of values. + * [[http://jira.codehaus.org/browse/JACKSON-204 | JACKSON-204]] Add feature to allow deserializing empty Strings as nulls (for POJOs). + * [[http://jira.codehaus.org/browse/JACKSON-427 | JACKSON-427]] JsonNode: add "upsert" accessor for JsonNode (although only usable for ObjectNode); {{{JsonNode.with(String property)}}} -- gets or creates ObjectNode-valued property of an ObjectNode. + * [[http://jira.codehaus.org/browse/JACKSON-464 | JACKSON-464]]: Add SimpleAbstractTypeResolver to allow defining mapping from abstract types to concrete types (like, say, from {{{java.util.Collection}}} to {{{java.util.HashSet}}}) + * [[http://jira.codehaus.org/browse/JACKSON-520 | JACKSON-520]]: Add "FormatSchema" abstraction (mostly a tag interface); add to JsonGenerator, JsonParser, as well as to ObjectMapper, ObjectReader and ObjectWriter. For latter group of objects it will just passed to generators and parsers as opaque value. + * [[http://jira.codehaus.org/browse/JACKSON-521 | JACKSON-521]] Add a mechanism to indicate that certain non-Collection/Map types be considered Collections, Maps, by framework (needed by Scala plug-in) + * [[http://jira.codehaus.org/browse/JACKSON-526 | JACKSON-526]]: Add [[JacksonFeaturesDeserialization | DeserializationConfig.Feature]].ACCEPT_SINGLE_VALUE_AS_ARRAY, which allows implicit conversions in case where JSON format is omitting JSON array surroinding a single value (sort of invalid structure produced by some XML-to-JSON converters) + * [[http://jira.codehaus.org/browse/JACKSON-527 | JACKSON-527]]: Add HandlerInstantiator abstraction (to implement, register with ObjectMapper) to allow customizing details of how JsonDeserializer, JsonSerializer, TypeIdResolver instances (and any other handler types added in future) are constructed: useful for integrating with Dependency Injection frameworks, work around class loader issues. + +=== Implemented features, Minor === + + * [[http://jira.codehaus.org/browse/JACKSON-142 | JACKSON-142]]: Add [[JacksonFeaturesParser | JsonParser.Feature]].ALLOW_NON_NUMERIC_NUMBERS ([[JacksonFeaturesNonStandard | non-standard]]) feature that allows parsing "NaN", "+INF"/"+Infinite", "-INF"/"-Infinite" as double values + * [[http://jira.codehaus.org/browse/JACKSON-358 | JACKSON-358]]: JsonParser: optional support for accepting leading zeroes for numbers + * [[http://jira.codehaus.org/browse/JACKSON-459 | JACKSON-459]]: Add mapper-level configuration to allow default ordering of serialized properties + * [[http://jira.codehaus.org/browse/JACKSON-487 | JACKSON-487]]: Change DeserializationConfig.{{{Feature.USE_ANNOTATIONS}}} to fully block introspection of any annotations + * [[http://jira.codehaus.org/browse/JACKSON-502 | JACKSON-502]]: Change [[JacksonFeatureMaterializedBeans | mr Bean]] functionality be basic [[JacksonFeatureModules | Module]] (to simplify registration) + * [[http://jira.codehaus.org/browse/JACKSON-512 | JACKSON-512]]: Allow decorating {{{InputStream}}}/{{{OutputStream}}} (and other sources/destinations) when creating JsonParser, JsonGenerator + * [[http://jira.codehaus.org/browse/JACKSON-555 | JACKSON-555]]: Add JsonParser.{{{getInputSource()}}}, JsonGenerator.{{{getOutputTarget()}}} to give access to raw stream/reader/writer objects. + +=== Initially planned but deferred features === + + * [[http://jira.codehaus.org/browse/JACKSON-132 | JACKSON-132]] (note: '''high vote count'''): Allow inlining/unwrapping of child objects + * [[http://jira.codehaus.org/browse/JACKSON-275 | JACKSON-275]]: Support multi-argument setters (to allow co-constraints) + * [[http://jira.codehaus.org/browse/JACKSON-279 | JACKSON-279]]: Retain timezone information during serialization, deserialization + * [[http://jira.codehaus.org/browse/JACKSON-350 | JACKSON-350]]: Resolve classloading issues (for eg. OSGi) without changing API + * [[http://jira.codehaus.org/browse/JACKSON-406 | JACKSON-406]]: Allow injection of values during deserialization + * Also: [[http://jira.codehaus.org/browse/JACKSON-471 | JACKSON-471]]: similarly, allow injection during serialization + * [[http://jira.codehaus.org/browse/JACKSON-453 | JACKSON-453]]: Support for 'external type id'; and possibly related issues: + * [[http://jira.codehaus.org/browse/JACKSON-437 | JACKSON-437]]: Support to set logical property with value of type id that was used for deserialization + * [[http://jira.codehaus.org/browse/JACKSON-490 | JACKSON-490]] Allow subclasses to "inherit" @JsonCreator annotation from superclass constructor + +---- + +CategoryJackson diff --git a/JacksonRelease1.9.md b/JacksonRelease1.9.md new file mode 100644 index 000000000..c3e5a3322 --- /dev/null +++ b/JacksonRelease1.9.md @@ -0,0 +1,58 @@ +# Jackson Release: 1.9 + +Version 1.9 was released October 4, 2011, about 6 months after [1.8](JacksonRelease1.8). + +The biggest general feature implemented was a complete rewrite of Bean Property introspection logic (see JACKSON-242 below), which conceptually binds distinct accessors (getter, setter, field, constructor parameter) of a logical property, and merges all relevant annotations. This is good in that it removes need for redundant annotations when renaming or ignoring properties, or defining type information. + +In addition to multiple other features, the main focus was to plan for upcoming [2.0](Jackson-Release-2.0), which is likely to be less backwards-compatible release. The goal was to try to add deprecation warnings as early as possible, to try to minimize eventual changes needed to upgrade code relies on 1.9, to use 2.0. As a result, number of deprecated methods and classes increased significantly. + +The last bigger general change was the introduction of `ValueInstantatior`s (see below), which finally allows for custom handling of POJO creation, above and beyond ability to use `@JsonCreator` annotation. + +## Related + +* [Jackson 1.9 feature overview](http://www.cowtowncoder.com/blog/archives/2011/10/entry_463.html) (at Cowtalk) + +## Implemented features, Major + + * JACKSON-132: Allow inlining/unwrapping of child objects using `@JsonUnwrapped`. + * JACKSON-242: Rewrite property introspection part of framework to combine getter/setter/field annotations + * JACKSON-406: Allow injection of values during deserialization. + * JACKSON-453: Support for 'external type id' by adding `@JsonTypeInfo.As.EXTERNAL_PROPERTY` to indicate that property should be added at parent (i.e. as sibling to value being typed) + * JACKSON-580: Allow registering instantiators (`ValueInstantiator`) for types (classes) + * Related: JACKSON-633: add `@JsonValueInstantiator` to specify instantiator for a class. + +## Implemented features, Medium + +* JACKSON-517: Create "mini-core" (`jackson-mini-VERSION.jar`) jar that trims down as much weight from standard jackson-core jar as possible +* JACKSON-558: Implement `DeserializationConfig.Feature.UNWRAP_ROOT_VALUE` (as counterpart to `SerializationConfig.Feature.WRAP_ROOT_VALUE`) +* JACKSON-578: Add support to mark JAX-RS methods to return a specific `JsonView` +* JACKSON-594: Support deserializing of non-static inner classes +* JACKSON-595: Terse(r) Visibility Config: add ObjectMapper.`setVisibility()` +* JACKSON-598: Add set of standard naming-strategy implementations +* JACKSON-602: Add `JsonSerialize.Inclusion.NON_EMPTY` option +* JACKSON-614: Add JsonTypeInfo.defaultSubType property to indicate type to use if class id/name missing + +## Implemented features, Minor + + * JACKSON-254: Add `SerializationConfig.Feature.WRITE_EMPTY_JSON_ARRAYS`, to allow suppressing serialization of empty Collections/arrays. + * JACKSON-531: Comparing actual and default value (for `JsonSerialize.Inclusion.NON_DEFAULT`) should check array contents +* JACKSON-584: Serialize type info for non-static anonymous inner classes as that of declared (static) type +* JACKSON-593: Add more convenience methods in ObjectMapper for reading values as JSON trees `readTree(URL)`, `readTree(byte[])`) +* JACKSON-606: Add proper support for serializing Java Date values as Map keys +* JACKSON-620: Allow empty String to mean null Map, Collection, array, if 'DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT' enabled +* JACKSON-621: Add new fluent method, VisibilityChecker.with(Visibility) +* JACKSON-648: Add 'ObjectMapper.writer(DateFormat)', 'ObjectWriter.withDateFormat()' to allow per-call override of the date format to use (or serialize-as-timestamp if null passed) +* JACKSON-650: Add 'SimpleFilterProvider.setFailOnUnknownId()' to disable throwing exception on missing filter id. +* JACKSON-652: Add `DeserializationConfig.Feature]].USE_JAVA_ARRAY_FOR_JSON_ARRAY` +* JACKSON-653: Add efficient `JsonParser.nextFieldName()` and `JsonParser.nextXxxValue()` methods. +* JACKSON-666: Add `SerializationConfig.Feature.REQUIRE_SETTERS_FOR_GETTERS` to only auto-detect getters for which there is a setter (or field, constructor parameter) + +## Planned features that were deferred + +Following features were considered for inclusion, but ended up getting deferred: + +* JACKSON-275: Support multi-argument setters (to allow co-constraints) +* JACKSON-437: Support to set logical property with value of type id that was used for deserialization +* JACKSON-469: Support "builder pattern" for deserialization, @JsonCreator +* JACKSON-490: Allow subclasses to "inherit" @JsonCreator annotation from superclass constructor +* JACKSON-592: Allow inlining/unwrapping of value from single-component JSON array diff --git a/KEYS b/KEYS deleted file mode 100644 index c79a22561..000000000 --- a/KEYS +++ /dev/null @@ -1,189 +0,0 @@ -This file contains the public PGP signatures of developers who make Jackson releases. - -It is an attempt to follow practices outlined in https://infra.apache.org/release-signing#keys-policy -(although is not auto-generated or anything fancy like that) - ----------------------------------------------------------------------------- - -pub rsa4096 2013-07-25 [SC] [expired: 2016-07-24] - 064F04959CD99ACCC4DFB54C9CD8549ACF9BD0CE -uid [ expired] Tatu Saloranta (Home mac 2013/7) -sig 3 9CD8549ACF9BD0CE 2013-07-25 Tatu Saloranta (Home mac 2013/7) - -pub rsa2048 2016-07-26 [SC] [expired: 2020-07-25] - 6214760097DC5CFAD0175AC2C9FBAA83A8753994 -uid [ expired] Tatu Saloranta (cowtowncoder) -sig 3 C9FBAA83A8753994 2016-07-26 Tatu Saloranta (cowtowncoder) - -pub rsa2048 2020-08-01 [SC] [expired: 2022-08-01] - 8A10792983023D5D14C93B488D7F1BEC1E2ECAE7 -uid [ expired] Tatu Saloranta (cowtowncoder) -sig 3 8D7F1BEC1E2ECAE7 2020-08-01 Tatu Saloranta (cowtowncoder) -uid [ expired] Tatu Saloranta -sig 3 8D7F1BEC1E2ECAE7 2020-08-01 Tatu Saloranta (cowtowncoder) - -pub rsa4096 2022-08-13 [SC] [expires: 2027-08-12] - 28118C070CB22A0175A2E8D43D12CA2AC19F3181 -uid [ultimate] Tatu Saloranta (cowtowncoder) -sig 3 3D12CA2AC19F3181 2022-08-13 Tatu Saloranta (cowtowncoder) -sub rsa4096 2022-08-13 [E] [expires: 2027-08-12] -sig 3D12CA2AC19F3181 2022-08-13 Tatu Saloranta (cowtowncoder) - ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQINBFHwqdQBEADP5azWYCE4RWbVpnCwf7HoDRcTGUs68oqZrwJO7B5o1PaAcFDe -DAkLBBAUC/VX8Fi2jT6G/d/C++1cznOFZVFV3q5csdVa2NezkgwDHGLeyCVrw/LL -PiX8Qpucfpt5tDLFpAnUbDJakR5PqZ/PBiHIgz/cCrBqUUJ9U4PgbKnQPllOK+25 -7xXihv/Eg5U8/0crksLrJm96bdiElyut6yfI5ZZvCS5sYvhow30w1Sf89+ll1BMC -KZWxtGufvPRx7Xh/TMjcQU3Bvhi184SBbacXL5Z7FQ6/TmJ/sYg+plKW6+bb6/q/ -NOVR618zWZqdT68JLoYWfajkAPJB2vA/htBTdw2Myn3TMEwFMyN+DBBx9mVt15jA -VT0CahQVcy4NqBmcozlavF4TslegqqODZw4FvpwI8nqwLeWaUc2lHEL9A6q1lWu+ -ljQt8J1C86gRbDBBzHFufFCo1zMcM/rId9qE5wMVJYT8ENDLQ+FnyjMwEPu6lhNh -89D8RWKK0DLcOMeDGHXC/PI+C4GUTeHPPGfXUG7HWrqphaAW5JWNTYd13bp6Vwib -Sf5l8e1U3rVAL+isY8Sx3Ke5HGUm0OQ0vuNLxexxOMp7iuhTeaO8EHXgUU32m5VP -+y7Ii3cbUgq0AxzOB6Kaq30g1U/nHL8G0JL/Vwh2LeGSsXxxqOnXNjoZ2QARAQAB -tDhUYXR1IFNhbG9yYW50YSAoSG9tZSBtYWMgMjAxMy83KSA8dGF0dS5zYWxvcmFu -dGFAaWtpLmZpPokCPgQTAQIAKAUCUfCp1AIbAwUJBaOagAYLCQgHAwIGFQgCCQoL -BBYCAwECHgECF4AACgkQnNhUms+b0M7t+g//SpjCEUMyVcNXmqnSf5nFjDdthxAt -9Y4AQ5hrjuwv03AeZDStlh9jbwTSovZR/hYqbQ6khKI8p8hlfIMT3jUGWHLJxPZC -T7ell1yPjKMNNSLPfkvzmGDVIA6/pG6sjC64EancH2wglZLlOGO3hkq8tfCH7+Gr -rQguMQ/WrunP5rpkSoNuFkUUC/jlB2INvgNN1j8L08TgsXFRJiJ/IPqLlzTQj027 -ChgfsvDBv2buiCch1JbK/if/5d9BwlK5VuNwQ80Ju0N6aZGPsmdQGtYLtoXk7mua -96HzmqQKFCi1WYbvlUuMgDWqtY+rj+WEivEZlNUDRmUx86JFwGW3DdTTnWuFj9NA -Vi5U7sTiEggEiEl1WpWCkPu2l3m4bJIMrEYk3/TdtMHVzMvqFW+1RlLyXhpi5clP -a8eZtqIlcGvfndpYxaKFQFpHsM9dtfJR10snOHTeSFi1HYLShary/oIvSYcd3yWd -YqjVghGViWU2ZVBK8M+MwPP1ZJSuXPmkoUrwaHLlMTRCx+7fC3oFW2v/gVtNYsl1 -efOaryGAC0iUWmXmdVhHYIA71w558hfENFPCoACYy9JyPL0jNzBqd1QwKWEJCQEk -dAgOBGcbMXxGTcRQUR8ukw6qQIobggpN/tB1csgSWAqhK60X+Hz8T8o6u8vVte6A -AJ8/cKsBqyeaMJG5Ag0EUfCp1AEQALBaqDDrIDY5w+qeAmgnaUW+2kD0MTRMn5l/ -Q+REdmRhtNIlOiFGI1AdYUgcXz5DWD2xll4RMKnIvJKz+VMy0yM7fmdn3ZCom/IA -E69CNrD37I6LScOvuBaSK+K7Wj8nnmvfVfpH3DamQYpUJ2jvwZXy3tTML5WFNlhY -WIgoyCpwBctOyuUYtFCTqw2l19nya7+duoPubHSc8vFhgkupeeB2ABSjZddubaL8 -+Azr08VLR1KbDZ8SDNUKcemYlsRO742JWmS2XVYpgsLlaShgTTgxhsWhRbPTgMfC -MCdGZNte7/ZiPCawnV8dZF/TBmzQ8NRyeFUMD+vWsbS84mPROvn1vluScNqOKxOf -nGZkPb45EOMJn3q6sMmjkq2EtskGWdFUyaFolxkvPegYSub7+lh7PQwhPj/SCWlW -l5iJ5gmjjG9SJh5gBpl6XqvY619ifdZTl83zdXVk1uNvAZ9f/aEtNsSbZit6nQ1U -8fCwkvYS5dtKmwz+D19C5fiKCr55mH4MFkh48EO8Tixpns6UXXNQpdFzForzbYE6 -M/wJ62mdT+mAiQfpx+nt4J86FF0NeHE5CetkRNeBgvGrfnwq8RN/KIutK+Cjh9kp -nd2hA9Ul5Zf6Xx7C95XtWEMBaFK6B9ig6xd37JhYd/vnJqJ/ODuvZwzvJf0r/yan -4xCeOqRrABEBAAGJAiUEGAECAA8FAlHwqdQCGwwFCQWjmoAACgkQnNhUms+b0M6f -4xAAsIXPS968yfmiYD8c6+WBoWSv9upTr2HxlJoGSowm4/4vojar1Dpxm5reYYQS -/GtLZnaugYL3j+sDEtImu1WJF38Ur5Puht85nitL8hzRU2lR3pFRIidHEWVu6sNw -H5H5lD4Bm/KGDYI9zlDnwQQoKhwjkvTyDL2a0i6lOYkAO7BkHGv8P7DLYpb3dKD/ -ERXWwxjRmjT+WTGX0FPU1dBLvoKCif7r5pmyccqlq73nyy+Gsxg4XbsFHkaTvlef -YUyXyKXqR/gS2ZSAYZswjeIyk86M3uni0yLuwrA/znnoJEUkP/mCf2j0Hkgq6ZUg -cHwJ2+qubW6If3IVT9nUSeykerj12vhii8PCGU7X0kikyn5f5Aotccyl5Jz3RGsH -tdLhmkJu1uTzLmwhV5liEeCwXwm5QwE3cwc3T90YCM+e7ZyGBLSgt7AhKHn5sOvn -59u01OpkyixVpteAnEW8DHLK6UZXDk+KbcYsxxTlCwx+1XCRAFjaZ8Z7N0v+94sy -wc7Uef7bKzLdGrtSsozf3WDj8P4c+mCAKxbs/TGFKN2zAzGsIPGHlW6WdfvSq9/+ -FNh5I48LvVgP9qkC61BQlW7u4zHjUAtDzzyRdFBydQcKNbxj8MSLtcgzdqbrAQOZ -4Ict0Usu02PsiD0eZaPOHW9+C6nEpIBJPlM8QC4Sua+auB+ZAQ0EV5a8TAEIALuh -JDtepwYNzpgvgoAa8NVliKBwma/TLmFZPjC/0AE/gmHOvUc0OaYbJbOHNN4zHC5m -dz2+HEJBHDLGPeAYjmVg8QBGzBuLZ9aT//vz/daT5gwcnDf/UQ7dWq+8NS3f2Btp -KowJA0dy2cV1vZBhnudEVNB4Kob/DIx0HTlt6oSdYRfON48UMX3LqBeQQufSXFSb -ZMo7y1TeH3pMK660MonRoTTSU56H8xsRoYcRshTyR1+6LpTOdnVfzQRZuQJjxwrE -RkcoPRo41JUdfATqcRO8Vb3/34r6yP8jvK2XLHAexpCmLUfppEaerTXdWwgQKvCS -GZcGwstc2OaERH4uRwMAEQEAAbQ1VGF0dSBTYWxvcmFudGEgKGNvd3Rvd25jb2Rl -cikgPHRhdHUuc2Fsb3JhbnRhQGlraS5maT6JAT4EEwECACgFAleWvEwCGwMFCQeE -zgAGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEMn7qoOodTmUW3EH/RAGIpoc -d0W7cY6zbX5LgtliY7Ru8cBKDu555a2gT/VwSwqq8RLTdPCJJ8xpto+35Qvio/3D -r9JS1MhMCbG5zWSzJT4fAL9HVC4X692yC4VnT/xV1VFVjkjn/oNynuQjj1E7QvEY -9cIyfyzc2PQpeIKih0wMsfDAy/k5datBDjJeJBOwm50HHLmjbJ+nQCUubi5l0MuP -tni7gN/Io64ohQywxDYeTXaBKQNplWIhREfoxpIR0L5dsNRw9Orbv4lJ2N9gRfT3 -Tw/9sffofaQ8IZWH6xekgJn8J7ubQ4cF8T+lNMK46UAm9wtjhBvIxOXI+lnTMWA7 -6Nf5+PxQWLaxGGq5AQ0EV5a8TAEIAN9uOpE3Ua9J/1WSMMNYGpfeEguI/HcMo+JI -WZKwCiItISQ/yBEMEPLqmj857P2r5uBv1KT6IaJ8m9tU1mvv7zwtLFAQKytUv5mB -MBnYuSoAFAnxdiH91M7oEwnmtIsf9g3ps71Xg2Nih3rtbm5ijH5oKnqR4TuJrt4E -dyTbDKrGKQKq9XOYB248KSQ1JG47AuQ6C525d/BvsKDVGdpwwwR8N3235rrK1j/w -kW7TUb75VXEUc7e+z/9Eg2ubQ7jEo+RPX45x3j6HcOWGFG9Fe8j4wp4zS53Q6lRU -IEoJmpsUpNWChGmwoL3bllFRKpubIFwiSrJiPMPVp1pl2Srg8sUAEQEAAYkBJQQY -AQIADwUCV5a8TAIbDAUJB4TOAAAKCRDJ+6qDqHU5lDqzB/9WbSd0Fy90rSoKi5tH -9Y6zKdLXB1DasYokLmhWxQ3hhUJmGD04yHAxI7cQ4E93G2rgDxtJmn/xlaYcuiET -xAcPwCBpAG1FnI2S8xGI3XntcaQ8QFFZ0fDpcC/H+UTfVb7X2oVGcATwFsRETeCJ -4lwbgIpbLkLLNeeNIz7Odm8NDwnsx8b4vEpuvvNQdAf1layTxX0P4ZcOCm7Jlzhy -3W00MtyfrvzgW5tx2sPdEsyI4BhJKApKCgQtHMHzNl2z5YoW6IBhdlJ3MJuMknZW -qcmdC1gc3tnmvfJKpsbvDetF6f4S23o9f0eu9zUxPL9RR1vezTwLTAPTH5nMXOpR -cpNmmQENBF8kuOUBCACo8/VYVfmglgTgmai5FvmNzKi9XIJIK4fHCA1r+t47aGkG -y36EdSOlApDjqbtuodnyH4jiyBvT599yeMA0O/Pr+zL+dOwdT1kYL/owvT0U9ocz -vwUjP1LhYsSxLkkjqZmgPWdef5EFu3ngIvfJe3wIXvrZBB8AbbmqBWuzy6RVPUaw -nzyzqZTlHfyQiiP41OMONOGdh/I7Tj6Ax9X1dMH3N5SkXgmuy4YHZoeFW2K3+6yI -bP8UCMxrTNLm6QfOIPsvjDDnTBpkkvEZjS24raBiHW5P35ptpNj5F1oLlOxZ/NRC -bP3CPlEejUkh1+7rOwrRkCrDnNFIQYmWF2Mt4KlzABEBAAG0JlRhdHUgU2Fsb3Jh -bnRhIDx0YXR1LnNhbG9yYW50YUBpa2kuZmk+iQFUBBMBCAA+FiEEihB5KYMCPV0U -yTtIjX8b7B4uyucFAl8kuOUCGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgEC -F4AACgkQjX8b7B4uyufpbggApqtxE+xpmwpE5RSrbR9/DanSwpX8KQt9jDjL3zXK -S/rcRlQ4vE08RpwJ6jTRy3oIDY/jBpF7k9RNM3gQN+JsTC1Hgnp/qPHkoBMZQpJg -9UnfukSmm10wBI0MFP9iUB5tr1hv8zf2vfLT+B4BbFRXQApmd3FbfKrTm7RPM2sX -zlf28ySuczkM5Zm5aDaXeajvi7YwL9FHkqP8UAfP3zBpEubbDO0R6JXY9fYF3afu -aVhoh5VFJBtjU5xWs2XiPq/MBabwwQUx3bT+Nl5B7Iw+pndQv6NQlo2pFoEeFKqh -6kxsrHHiz1NHxqhCAulqaFSmZ5Q2H7FqORiNCjsEIsCTjrQ1VGF0dSBTYWxvcmFu -dGEgKGNvd3Rvd25jb2RlcikgPHRhdHUuc2Fsb3JhbnRhQGlraS5maT6JAVQEEwEI -AD4WIQSKEHkpgwI9XRTJO0iNfxvsHi7K5wUCXyS7NgIbAwUJA8JnAAULCQgHAgYV -CgkICwIEFgIDAQIeAQIXgAAKCRCNfxvsHi7K52zCB/4xngWMgfBj1dUwoVMRIjMx -i2FYbYFDLYYapCN5xrzqEVp1v+0IlkpAwfJ5qHxRppJq4pGUQ3LdsfmDn1h/xGHW -P8WgeC8ycg53VeTR9fJf9RVmWBhHGkf2GX9c4D6ZRKzaAEMlnqhRMpMdPNnEmIwM -FEVe2VTxDmbjdIPGQo3Hw7SIzLHfwNqPkKZX1zywALLsvyMmsZ3UcnMqHreQ/RH+ -YaDH1zodyxuTWINrQ41vsZTJuFbTAEuCYb9FkbvqqbiWrx1XBu27/vnce50+h03A -ebuTnQPEqrzUVigpyD44YKtQM0N2m+aHg2Y3lPYSisaa6X8jf+M9DxYVr26BHBZe -uQENBF8kuOUBCADQ7CJbwnTEKfq4sV7p5ttwHGS7IM1u/Nb2sD5JPA8N53kKk463 -HfNVvafoko0AM76tHVuj0MLUsvvpzrciKVPidXHwLNScYt7JrONHL6qnHEkJM4yV -LPe386NXGqc5X9PTZjZ3B0gqqngGVOyflp1DUgXedMiy03376NZTu7LyxXLr2jvG -ovl6HmM08ZuqWk+L8s3B/vYZXsOpzGn5jA4w7AJG2uG43F4aQpEvSYo3Ove98w4x -Xc6X/mLyrb8ZLUVnw5LS2DHU2lZvujAHxbm7Ps2YzrjB3O9l4IqiO/Pc+ATnng9R -485BnywPW36XEthrNPutzYg1yGNq09A+9SLnABEBAAGJATwEGAEIACYWIQSKEHkp -gwI9XRTJO0iNfxvsHi7K5wUCXyS45QIbDAUJA8JnAAAKCRCNfxvsHi7K520oB/9f -lstx9P79JmP9qotnKHdvjT09oukQSfi75FvFs6eKCK/a0Y2eI5WV0wLb3WOT1XpZ -SAM7a+QuuUHMIvmkcw0k52vhQ8yaCDCKjT7mkFHCixha6VFBb54PXkZ4e+9wPOvF -w4i7R4qqdQRp9xe4OgWZjeH26Zy/lwGluaIJmXfaVYHLQe2+evPgtBP3dFNI/WXx -9Q3iy8K6bD/7xryK7frastmCg8yVtPKoFFknP5z1nHkLOpYTvz9RRYHcexiDSvhx -vObWkNdfWM/gnSw/4+AKYWBH4m9rQzOtKfGcgIYM2uIHlATC0ILt7gGcAWmEj7bX -Ezy9Jqg9YirnHcrlYF0rmQINBGL4BxIBEAC+lX44fd/zrVQPzdKygarBd/X0bBpG -akT++Kfk4UBGl3q+wd2GR9puB9R377ds8hU7U3To8sHguUZo6DbD9Gb/is/WajSb -9g92z+rMow3KbqfCYqWrkaIj27OJgbziFcnMAtvGoFRfaPI/7TOwEw3jT7B87RXe -iATX4iL8fzMUmkfZm0HkqjnepMQeaz3KzMY4DfBcI45kwzl3EIBFIlk428mhBU5i -AAANoyPsimfqEPRCUDjxvT8g7PvpkBdNZgRS6R9vLxyzKi/f5KswZIMvop/pRXIh -AKDhCCyr2GD+T3JoIKp9kvS1MQucWeX8+TFWh5qEA3e06Xu0JSdPCEej0BH06EiT -MsAOU5bWqgLAO9DVpS32I092KAuMJlEPCnz7IGXVkeNY5KYrlsmoKrBO3GF/zsCy -iZDvSULkVJcrtBCYOrgqHRIzvJWQaTJ5V15MD8CZIELyjCGZ8Jy8hdZpaTjYalw0 -bUq+yRAqMD5slp6A1tnvjyqVTgU+yRGq2HB90vJ0D3P1w4xRDuNF8c02futO415Y -c/qkyh3/5AjGSoocrlfXcMreJXpQWVsvXn3NsitjsA6XOJpMOgipCDxfvn8SSLl9 -fWNJf55j7fCkBokF/lIi81RVQbyjVCOV0OEqHJLP9asPHyAFvUppNWtcvViPxVmb -52djnw/x/61WVQARAQABtDVUYXR1IFNhbG9yYW50YSAoY293dG93bmNvZGVyKSA8 -dGF0dS5zYWxvcmFudGFAaWtpLmZpPokCVAQTAQgAPhYhBCgRjAcMsioBdaLo1D0S -yirBnzGBBQJi+AcSAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ -ED0SyirBnzGBnxsQALTJd/chCW8zWgR6x9ZDfU2f5fgMhi8jjILCieiQdQ/vec3Q -qCVLpJmE+l6MrI75E7GYeL8Iu0DXO26nHHSEbDa9kGk+ohdODbOd+y6KE5t6qPFa -HSG5Gj1iiQ7libmrO7EZqPQzl4fwmzUvl/2x+kaL5WsC4SxbwTG2mGo8WRCz+hqM -40yeBeKYxpTlN2VBrlU2xkJ1I0rQITtHwck1dClgf4up13uBna7TlCBJc7vio3Ow -AFbXTPHEL+efrn8zk0auJ+cwocHmm4d9shGiwiSUAOEnQ8FZ08IwO5MoOUWKz/AR -YLuR6FAd8HqFERbfUxU2AlcyLSAhSi0c+j2Gi9PFkNTABEDHpdTosaAgKpbYdGke -/2sfA0BKmcNRIfGjs+W0GnX2c7tP6qc7iFCCP0TjXvR8jnCmH8BT1JiSN5C/JPH0 -hDE1Zvmvgs0hid48e6Zvk1yXvEdtd/rH0uM3yUs28EfdcqokhwKZi5duUeizgG1g -GNCW8RGvhi5ks1bABK9i52JMZznINMb35mZ0bEK7YLi3K8DE2hfIU6yg8WnlXlx3 -eOK4e6jWxWbjuEmUJ7BEZWvz5IJ9nFI1UAIq7Ug7ruM+CH8ntpHueuGp6goq39+0 -lTd/1Sc29kVadg/DXQtCmDDrw4Btpz8hXthmTnNVvP/GUu5K1fttW3gNU/ofuQIN -BGL4BxIBEACwpcarOeEN5TztQDTvemc+DXZuWirmHv1TyJmjOhU0hGGMzEnKKU6V -ZlUIg5YQNYknUOfOf/05pgQmsEhjjI8NBD3Cys6SVQ6wOlkA+KpDKs/dXwyJttYE -+EG/IMzjwZW2DbF50HkmT2VK/oFhRSf0Par+cbVQ/mNLAVC7ueZWBVXldezqVvk3 -tDYYZef9T8Qlf999LVXFgiMzRFrzLLcd2KEHAX4se65FTxIfFYYCrshFIKDRi4IW -NzQqtPV7mb94wXY0Vwse5mMEgjmieGPjBGYne2JU0xYNBxtly1y3aeDXcxNlNrcS -/Ake9AqWAYU4agtocCefb1pt5Q3li0qg3PsVKDJ5qWDceb+kgcUuHgtwHFCVICoQ -UMsv9p5F/kWL38/OWcTR2lQ4tGerE2dmlyqFWu7mpELckAfXSpJobZltUbp8CO67 -9g0lk+OJWSmxddlVybdXCFaAeOKQb0woQOkR1vo2tJHyGmGr20Eea+UX+kdLojVQ -wYCqICdvnK4YpHuhpT5crzk6lohfZpBPMHdpR7FQQZeQEW5EbcFNfoUEwsgb2qkG -+hQIL5Q7wRajHkGaG3WuhY2xEyoHuLSb20hP5hI2uhtxswUl/+IOjjZtDCjzLz59 -Q+ADkDZYM+PN3eR0UJDqYKly49KTuz23zLluNjNwqo8K0y05XGCQMwARAQABiQI8 -BBgBCAAmFiEEKBGMBwyyKgF1oujUPRLKKsGfMYEFAmL4BxICGwwFCQlmAYAACgkQ -PRLKKsGfMYGQbQ//bxZqIUIrPa86oXELq19E+OFTvCKVQzgohiaKPS6Hx2rgtvPS -2bJvO+rXlAvRAFyI8sX7Dq0deeZP0pXefidjpfjKz1bhW8Wf7RU6QOKc0Eyl8/Yq -CVZign1DzJlF1r2mrkZa0VRNLjh86P/Y1T7ZhrAiR0PNv++LEgNsPbL8Tu1ryWl8 -vWFdlos40W8xleP1nBU19OWheOPU9VYN80eBD5ij2Cn0LCxJQdyNOpVD03P3Ycau -k9OHOVCd+UVX2A7VwemXb4wRDL59gAfSGyYLHYqAF1XJbOXkheTPRsttxXRIkzvA -/gjpmQmioNU3UhiMZ1EJkbJ42loFPv7YplbmBXoMAKJF1402+sOVusC1FULMQQtp -ZvC/bgobqEqdTzhZa/HrKA45BFpcaTO80jJto8kiZR7infwX1gBGrYgwXisxiiYP -I5yVwAvYTcNnU1nD9Vk5iyTgx0BNBG1hLPaZBtkYarDmUo0KyYf0Y8mQZmd7U0nO -HptdkR+5yND5yO29/wGfse1KeZcRNGgcYQFKGw72HDiYsOELiiwsFqyUMWPLEwQJ -ave/tO4SYSY1wP4rA3IAIU24GMQFZ64lljAKQCRXLwDKK2tMyHz8I+GT+0+bbpz4 -ojkEmxCDxXfgUy1362tGFdEbaZ88HZxTa30iXtOXOLvWIYRp8hv3pSb8id8= -=0UOY ------END PGP PUBLIC KEY BLOCK----- diff --git a/MANUAL.md b/MANUAL.md deleted file mode 100644 index 074cc277b..000000000 --- a/MANUAL.md +++ /dev/null @@ -1,164 +0,0 @@ -# Jackson: the Missing Reference Manual - -## 1. Intro - -- Read, write JSON, from File, into File, as text, byte[], convert to Map -- Read JSON as JsonNode, use JsonPointer -- Write XML -- Read Avro, convert to Map - -## 2. Processing Models - -### 2.1 Tree Model (JsonNode) -### 2.2 POJOs (data-binding / mapping) -### 2.3 Streaming -### 2.4 "Untyped" Java objects (Lists, Maps) - -## 3. Main API Objects - -### 3.1 Databinding: ObjectMapper and Friends - -#### 3.1.1 ObjectMapper - -- PropertyNamingStrategy? - -#### 3.1.2 ObjectReader, related - -- MappingIterator - -#### 3.1.3 ObjectWriter, related - -- SequenceWriter - -#### 3.1.4 JavaType - -- TypeFactory -- TypeReference - -### 3.2 Streaming API: JsonFactory and Friends - -#### 3.2.1 JsonFactory -#### 3.2.2 JsonParser -#### 3.2.3 JsonGenerator -#### 3.2.4 Delegates: JsonParserDelegate, JsonGeneratorDelegate -#### 3.2.5 FormatSchema -#### 3.2.6 PrettyPrinter -#### 3.2.7 JsonPointer - -### 3.3 Context objects - -#### 3.3.1 DeserializationContext - -#### 3.3.2 SerializerProvider - -#### 3.3.3 JsonStreamContext - -Access to current type, parent context, current mapped value - -#### 3.3.4 ObjectCodec - -Barebones interface for callbacks to ObjectMapper, -Reader and -Writer - -### 3.4 Misc other - -- TokenBuffer for efficient buffering, used internally for buffering, conversions - -## 4. Annotation-based Configuration - -Mostly for databinding. - - -## 5. Configuration: on/off Features - -### 5.1 Data-binding features - -#### 5.1.1 MapperFeature -#### 5.1.2 DeserializationFeature -#### 5.1.3 SerializationFeature - -### 5.2 Streaming features - -#### 5.2.1 JsonFactory.Feature -#### 5.2.2 JsonParser.Feature -#### 5.2.3 JsonGenerator.Feature -#### 5.2.4 FormatFeature - -## 6. Configuration: Other - -### 6.1 ObjectMapper configuration -### 6.2 ObjectReader configuration -### 6.3 ObjectWriter configuration -### 6.4 Configuration by Module -### 6.5 FormatSchema - -- Forward ref to data formats - -### 7. Advanced Features - -#### 7.1 Polymorphic type handling - -- Annotations (@JsonTypeInfo) -- Default typing - -#### 7.2 Object identity handling (Cyclic data structures) - - -## 8. Custom Handlers - -### 8.1 Databinding, common - -- PropertyNamingStrategy (back-ref?) -- Mix-Ins -- Defaults: - - InjectableValues - - JsonInclude - - DateFormat - - TimeZone - - Visibility - -### 8.2 Deserialization - -#### 8.2.1 Custom deserializers -#### 8.2.2 Value instantiators -#### 8.2.3 Value injections - -### 8.3 Serialization - -#### 8.3.1 Custom Serializers -#### 8.3.2 Value instantiators -#### 8.3.3 Filtering - -### 8.4 Streaming parsing - -NOTE: most configurable via ObjectMapper, ObjectReader - -- FormatFeatures too - -### 8.5 Streaming generation - -NOTE: most configurable via ObjectMapper, ObjectWriter - -- CharacterEscapes -- PrettyPrinter -- FormatFeatures too - -### 8.5 Tree handling - -- JsonNodeFactory -- Comparators? - -### 9. Extensions - -#### 9.1 Datatype modules - -#### 9.2 Dataformat extensions - -#### 9.3 JAX-RS providers - -#### 9.4 JVM Language Support - -- Scala, Kotlin - -#### 9.5 Other extensions - -- Afterburner, Mr. Bean, JAXB Annotations diff --git a/README.md b/README.md deleted file mode 100644 index a03f53a5a..000000000 --- a/README.md +++ /dev/null @@ -1,317 +0,0 @@ - - [![Open Source](https://badges.frapsoft.com/os/v3/open-source.svg?v=103)](https://opensource.org/) - -# Jackson Project Home @github - -This is the home page of the Jackson Project. - -## What is New? - -* April 23, 2023: Jackson 2.15(.0) (latest stable) released -* Nov 5, 2022: Jackson 2.14 released -* Nov 2, 2022: AdaLogics Security Audit for Jackson released -- see Document/Reports -* Sep 30, 2021: Jackson 2.13 released -* Oct 1, 2020: Jackson participates in [Hacktoberfest2020](https://hacktoberfest.digitalocean.com/) and we have a [Jackson/Hacktoberfest](https://github.com/FasterXML/Hacktoberfest2020) repo too! -* Oct 9, 2020: Added [Contributing](CONTRIBUTING.md) - -(note: for up-to-date release info, see [Jackson Releases](../../wiki/Jackson-Releases)) - -## What is Jackson? - -Jackson has been known as "the Java JSON library" -or "the best JSON parser for Java". Or simply as "JSON for Java". - -More than that, Jackson is a suite of data-processing tools for Java (and the JVM platform), -including the flagship streaming [JSON](https://en.wikipedia.org/wiki/JSON) parser / generator library, -matching data-binding library (POJOs to and from JSON) -and additional data format modules to process data encoded in -[Avro](https://github.com/FasterXML/jackson-dataformats-binary/blob/master/avro), -[BSON](https://github.com/michel-kraemer/bson4jackson), -[CBOR](https://github.com/FasterXML/jackson-dataformats-binary/blob/master/cbor), -[CSV](https://github.com/FasterXML/jackson-dataformats-text/blob/master/csv), -[Smile](https://github.com/FasterXML/jackson-dataformats-binary/tree/master/smile), -[(Java) Properties](https://github.com/FasterXML/jackson-dataformats-text/blob/master/properties), -[Protobuf](https://github.com/FasterXML/jackson-dataformats-binary/tree/master/protobuf), -[TOML](https://github.com/FasterXML/jackson-dataformats-text/blob/2.13/toml), -[XML](https://github.com/FasterXML/jackson-dataformat-xml) -or [YAML](https://github.com/FasterXML/jackson-dataformats-text/blob/master/yaml); -and even the large set of data format modules to support data types of widely used -data types such as -[Guava](../../../jackson-datatypes-collections), -[Joda](../../../jackson-datatype-joda), -[PCollections](../../../jackson-datatypes-collections) -and many, many more (see below). - -While the actual core components live under their own projects -- including the three core packages -([streaming](../../../jackson-core), [databind](../../../jackson-databind), [annotations](../../../jackson-annotations)); -data format libraries; data type libraries; [JAX-RS provider](../../../jackson-jaxrs-providers); -and a miscellaneous set of other extension modules -- this project act as the central hub -for linking all the pieces together. - -A good companion to this README is the [Jackson Project FAQ](../../wiki/FAQ). - -## Actively developed versions - -Jackson suite has two major versions: 1.x is deprecated and no versions are released; -2.x is the actively developed version. -These two major versions use different Java packages and Maven artifact ids, so they are not mutually compatible, but can peacefully co-exist: a project can depend on both Jackson 1.x and 2.x, without conflicts. -This is by design and was chosen as the strategy to allow smoother migration from 1.x to 2.x. - -The latest stable versions from these branches are: - -* [2.15.2](../../wiki/Jackson-Release-2.15), released on 05-May-2023 - * [2.14.3](../../wiki/Jackson-Release-2.14) is the latest patch from previous stable branch -* [1.9.13](../../wiki/JacksonRelease1.9), released 14-Jul-2013 - -Recommended way to use Jackson is through Maven repositories; releases are made to Central Maven Repository (CMR). -Individual projects' wiki pages sometimes also contain direct download links, pointing to CMR. - -Release notes for 2.x releases are found from [Jackson Releases](../../wiki/Jackson-Releases) page. - -## Active Jackson projects - -Most projects listed below are lead by Jackson development team; but some by -other at-large Jackson community members. -We try to keep versioning of modules compatible to reduce confusion regarding which versions work together. - -### Core modules - -Core modules are the foundation on which extensions (modules) build upon. -There are 3 such modules currently (as of Jackson 2.x): - -* [Streaming](../../../jackson-core) ([docs](../../../jackson-core/wiki)) ("jackson-core") defines low-level streaming API, and includes JSON-specific implementations -* [Annotations](../../../jackson-annotations) ([docs](../../../jackson-annotations/wiki)) ("jackson-annotations") contains standard Jackson annotations -* [Databind](../../../jackson-databind) ([docs](../../../jackson-databind/wiki)) ("jackson-databind") implements data-binding (and object serialization) support on `streaming` package; it depends both on `streaming` and `annotations` packages - -### Third-party datatype modules - -These extensions are plug-in Jackson `Module`s (registered with `ObjectMapper.registerModule()`), -and add support for datatypes of various commonly used Java libraries, by adding -serializers and deserializers so that Jackson `databind` package (`ObjectMapper` / `ObjectReader` / `ObjectWriter`) can read and write these types. - -Datatype modules directly maintained by Jackson team are under the following Github repositories: - -* Standard [Collections](../../../jackson-datatypes-collections) datatype modules: - * [jackson-datatype-eclipse-collections](../../../jackson-datatypes-collections/tree/master/eclipse-collections): support for [Eclipse Collections](https://www.eclipse.org/collections/) (NEW in Jackson 2.10!) - * [jackson-datatype-guava](../../../jackson-datatypes-collections/tree/master/guava): support for many of [Guava](http://code.google.com/p/guava-libraries/) datatypes - * [jackson-datatype-hppc](../../../jackson-datatypes-collections/tree/master/hppc): support for [High-Performance Primitive Containers](http://labs.carrotsearch.com/hppc.html) containers - * [jackson-datatype-pcollections](../../../jackson-datatypes-collections/tree/master/pcollections): support for [PCollections](http://pcollections.org/) datatypes (since Jackson 2.7) -* [Hibernate](../../../jackson-datatype-hibernate): support for Hibernate features (lazy-loading, proxies) -* [Java 8 Modules](../../../jackson-modules-java8): support or JDK 8 features and datatypes through 3 separate modules - * `jackson-module-parameter-names`: Module that adds support for using a new JDK8 feature, ability to access names of constructor and method parameters, to allow omitting `@JsonProperty`. - * `jackson-datatype-jsr310`: support for "Java 8 Dates" (ones added in JDK 8) - * Also, for pre-Java8 users can use one of alternate pre-Java8 backports: - * [joschi/jackson-datatype-threetenbp](https://github.com/joschi/jackson-datatype-threetenbp) - * [lldata/jackson-datatype-threetenbp](https://github.com/lldata/jackson-datatype-threetenbp) - * `jackson-datatype-jdk8`: support for JDK 8 data types other than date/time types, including `Optional` -* Joda datatypes: - * [jackson-datatype-joda](../../../jackson-datatype-joda): support for types of [Joda-Time](https://www.joda.org/joda-time/) date/time library datatypes - * [jackson-datatype-joda-money](../../../jackson-datatypes-misc/tree/master/joda-money): support types of [Joda-Money](https://www.joda.org/joda-money/) datatypes (`Money`, `CurrencyUnit`) -* JSON-P ("json processing"): two datatype modules for "old" (`javax.json`) and "new" (`jakarta.json`): - * [jackson-datatype-jakarta-jsonp](../../../jackson-datatypes-misc/tree/master/jakarta-jsonp): support for "new" JSON-P types in `jakarta.json` (*added in Jackson 2.12.2*) - * [jackson-datatype-jsr353](../../../jackson-datatypes-misc/tree/master/jsr-353): support for "old" JSON-P types in `javax.json` -* [jackson-datatype-json-org](../../../jackson-datatypes-misc/tree/master/json-org): support for [org.json](https://github.com/stleary/JSON-java) library types like `JSONObject`, `JSONArray` - -In addition, we are aware of additional modules that are not directly maintained by core Jackson team: - -* [jackson-datatype-bolts](https://github.com/v1ctor/jackson-datatype-bolts) support for reading/writing types defined by [Yandex Bolts](https://bitbucket.org/stepancheg/bolts/wiki/Home) collection types (Functional Programming inspired immutable collections) -* [jackson-datatype-commons-lang3](https://github.com/bramp/jackson-datatype-commons-lang3) for types of [Apache Commons Lang v3](https://commons.apache.org/proper/commons-lang/) -* [jackson-datatype-money](https://github.com/zalando/jackson-datatype-money) for "Java Money", see [javax.money](http://javamoney.github.io/api.html) -* [vavr-jackson](https://github.com/vavr-io/vavr-jackson) for [VAVR](https://github.com/vavr-io/vavr) support (Feature-rich & self-contained functional programming in Java™ 8 and above) -* [jackson-datatype-json-lib](https://github.com/swquinn/jackson-datatype-json-lib) for supporting types defined by "net.sf.json" library (aka "json-lib") -* [jackson-datatype-jts](https://github.com/bedatadriven/jackson-datatype-jts) (JTS Geometry) for [GeoJSON](https://en.wikipedia.org/wiki/GeoJSON) support -* [jackson-lombok](https://github.com/xebia/jackson-lombok) for better support of [Lombok](http://projectlombok.org/) classes -* [jackson-datatype-mongo](https://github.com/commercehub-oss/jackson-datatype-mongo) for MongoDB types - * NOTE: there are a few alternatives to handling MongoDB datatypes -* [jackson-module-objectify](https://github.com/tburch/jackson-module-objectify) for datatypes of [Objectify](https://github.com/objectify/objectify) -* [jackson-datatype-protobuf](https://github.com/HubSpot/jackson-datatype-protobuf) for handling datatypes defined by the standard Java protobuf library, developed by [HubSpot](http://www.hubspot.com/) - * NOTE! This is different from `jackson-dataformat-protobuf` which adds support for encoding/decoding protobuf content but which does NOT depend on standard Java protobuf library -* [TinyTypes](https://github.com/caligin/tinytypes) includes Jackson module (group id `com.github.caligin.tinytypes`, artifact `tinytypes-jackson`) -* [jackson-datatype-vertx](https://github.com/Crunc/jackson-datatype-vertx) for reading/writing [Vert.x](http://vertx.io/) `org.vertx.java.core.json.JsonObject` objects (repackaged `org.json` node types) - -### Providers for JAX-RS - -[Jackson JAX-RS Providers](../../../jackson-jaxrs-providers) has handlers to add dataformat -support for JAX-RS implementations (like Jersey, RESTeasy, CXF). -Providers implement `MessageBodyReader` and `MessageBodyWriter`. -Supported formats currently include `JSON`, `Smile`, `XML`, `YAML` and `CBOR`. - -### Data format modules - -Data format modules offer support for data formats other than JSON. -Most of them simply implement `streaming` API abstractions, so that databinding component can be used as is; some offer (and few require) additional `databind` level functionality for handling things like schemas. - -Currently following data format modules are fully usable and supported (version number in parenthesis, if included, is the -first Jackson 2.x version to include module; if missing, included from 2.0) - -* [Avro](../../../jackson-dataformats-binary/tree/master/avro): supports [Avro](http://en.wikipedia.org/wiki/Apache_Avro) data format, with `streaming` implementation plus additional `databind`-level support for Avro Schemas -* [CBOR](../../../jackson-dataformats-binary/tree/master/cbor): supports [CBOR](http://tools.ietf.org/search/rfc7049) data format (a binary JSON variant). -* [CSV](../../../jackson-dataformats-text/blob/master/csv): supports [Comma-separated values](http://en.wikipedia.org/wiki/Comma-separated_values) format -- `streaming` api, with optional convenience `databind` additions -* [Ion](../../../jackson-dataformats-binary/tree/master/ion) (2.9): support for [Amazon Ion](https://amznlabs.github.io/ion-docs/) binary data format (similar to CBOR, Smile, i.e. binary JSON - like) -* [(Java) Properties](../../../jackson-dataformats-text/blob/master/properties) (2.8): creating nested structure out of implied notation (dotted by default, configurable), flattening similarly on serialization -* [Protobuf](../../../jackson-dataformats-binary/tree/master/protobuf) (2.6): supported similar to `Avro` -* [Smile](../../../jackson-dataformats-binary/tree/master/smile): supports [Smile (binary JSON)](https://github.com/FasterXML/smile-format-specification) -- 100% API/logical model compatible via `streaming` API, no changes for `databind` -* [TOML](../../../jackson-dataformats-text/blob/2.13/toml): (NEW in upcoming 2.13) supports [TOML](http://en.wikipedia.org/wiki/TOML), supported with both `streaming` and `databind` implementations -* [XML](../../../jackson-dataformat-xml): supports XML; provides both `streaming` and `databind` implementations. Similar to JAXB' "code-first" mode (no support for "XML Schema first", but can use JAXB beans) -* [YAML](../../../jackson-dataformats-text/blob/master/yaml): supports [YAML](http://en.wikipedia.org/wiki/Yaml), which being similar to JSON is fully supported with simple `streaming` implementation - -There are also other data format modules, provided by developers outside Jackson core team: - -* [BEncode](https://github.com/zsoltm/jackson-dataformat-bencode): support for reading/writing [BEncode](https://en.wikipedia.org/wiki/Bencode) (BitTorrent format) encoded data -* [bson4jackson](https://github.com/michel-kraemer/bson4jackson): adds support for [BSON](http://en.wikipedia.org/wiki/BSON) data format (by Mongo project). - * Implemented as full streaming implementation, which allows full access (streaming, data-binding, tree-model) - * Also see [MongoJack] library below; while not a dataformat module, it allows access to BSON data as well. -* [EXIficient](https://github.com/EXIficient/exificient-for-json) supports [Efficient XML Interchange](https://en.wikipedia.org/wiki/Efficient_XML_Interchange) -* [jackson-dataformat-msgpack](https://github.com/msgpack/msgpack-java/tree/develop/msgpack-jackson) adds support [MessagePack](http://en.wikipedia.org/wiki/MessagePack) (aka `MsgPack`) format - * Implemented as full streaming implementation, which allows full access (streaming, data-binding, tree-model) -* [HOCON](https://github.com/jclawson/jackson-dataformat-hocon): experimental, partial implementation to support [HOCON](https://github.com/typesafehub/config) format -- work in progress -* [Rison](https://github.com/Hronom/jackson-dataformat-rison): Jackson backend to support [Rison](https://github.com/Nanonid/rison) - -### JVM Language modules - -* [Kotlin](https://github.com/FasterXML/jackson-module-kotlin) to handle native types of [Kotlin](http://kotlinlang.org/) -* [Scala](https://github.com/FasterXML/jackson-module-scala) to handle native Scala types (including but not limited to Scala collection/map types, case classes) - * Currently (October 2022) Scala 2.11, 2.12, 2.13 and 3 are supported (2.9 was supported up to Jackson 2.3 and 2.10 up to Jackson 2.11) - -### Support for Schemas - -Jackson annotations define intended properties and expected handling for POJOs, and in addition to Jackson itself -using this for reading/writing JSON and other formats, it also allows generation of external schemas. -Some of this functionality is included in above-mentioned data-format extensions; but there are also -many stand-alone Schema tools, such as: - -#### JSON Schema - -* Build tool plug-ins - * [Ant Task for JSON Schema Generation](https://github.com/xdarklight/jackson-jsonschema-ant-task): Generate JSON Schemas from your Java classes with Apache Ant using the Jackson library and extension modules. -* Stand-alone JSON Schema generators - * [Java JSON Schema Generator](https://github.com/victools/jsonschema-generator) (supports json schema draft v7!) - * [Jackson jsonSchema Generator (Scala)](https://github.com/mbknor/mbknor-jackson-jsonSchema) - * [JSON Schema generator module](../../../jackson-module-jsonSchema): programmatically generate JSON Schema, based on Jackson POJO introspection, including annotations (ONLY SUPPORTS json schema v3!!!) -* Code generators based on JSON Schema - * [jsonschema2pojo](https://github.com/joelittlejohn/jsonschema2pojo) - Generate Java types from JSON or JSON Schema -* JSON Schema validators - * [Java JSON Schema validator](https://github.com/java-json-tools/json-schema-validator) - -#### Other schema languages - -* [Ember Schema Generator](../../../../marcus-nl/ember-schema-generator): Generate schemas for [Ember.js](https://github.com/emberjs/ember.js) - -### Other modules, stable - -Other fully usable modules by FasterXML team include: - -* [Base](../../../jackson-modules-base) modules: - * [Afterburner](../../../jackson-modules-base/tree/master/afterburner): speed up databinding by 30-40% with bytecode generation to replace use of Reflection for field access, method/constructor calls - * [Guice](../../../jackson-modules-base/tree/master/guice): extension that allows injection values from Guice injectors (and basic Guice annotations), instead of standard `@JacksonInject` (or in addition to) - * [JAXB Annotations](../../../jackson-modules-base/tree/master/jaxb): allow use of `JAXB` annotations as an alternative (in addition to or instead of) standard Jackson annotations - * [Mr Bean](../../../jackson-modules-base/tree/master/mrbean): "type materialization" -- let Mr Bean generate implementation classes on-the-fly (NO source code generation), to avoid monkey code - * [OSGi](../../../jackson-modules-base/tree/master/osgi): allows injection of values from OSGi registry, via standard Jackson `@JacksonInject` annotation - * [Paranamer](../../../jackson-modules-base/tree/master/paranamer): tiny extension for automatically figuring out creator (constructor, factory method) parameter names, to avoid having to specify `@JsonProperty`. - -### Jackson jr - -While [Jackson databind](../../../jackson-databind) is a good choice for general-purpose data-binding, its -footprint and startup overhead may be problematic in some domains, such as mobile phones; and especially -for light usage (couple of reads or writes). In addition, some developers find full Jackson API overwhelming. - -For all these reasons, we decided to create a much simpler, smaller library, which supports a subset of -functionality, called [Jackson jr](../../../jackson-jr). -It builds on [Jackson Streaming API](../../../jackson-core), but does not depend on databind. As a result -its size (both jar, and runtime memory usage) is considerably smaller; and its API is very compact. - -### Third-party non-module libraries based on Jackson - -#### Jackson helper libraries - -* [Jackson Ant path filter](https://github.com/Antibrumm/jackson-antpathfilter) adds powerful filtering of properties to serialize, using Ant Path notation for hierarchic filtering - -#### Support for datatypes - -* [MongoJack](http://mongojack.org/) supports efficient handling of [BSON](http://en.wikipedia.org/wiki/BSON) encoded data store in [MongoDB](http://en.wikipedia.org/wiki/MongoDB). - -#### Other things related to or inspired by Jackson - -* [Jackson-js](https://github.com/pichillilorenzo/jackson-js) is a Javascript/Node object serialization/deserialization library with API inspired by Jackson -* [Pyckson](https://github.com/antidot/Pyckson) is a Python library that aims for same goals as Java Jackson, such as Convention over Configuration -* [Rackson](https://github.com/griffindy/rackson) is a Ruby library that offers Jackson-like functionality on Ruby platform - -## Support - -### Community support - -Jackson components are supported by the Jackson community through mailing lists, Gitter forum, Github issues. See [Contributing](CONTRIBUTING.md) for full details. - -### Enterprise support - -In addition to free (for all) community support, enterprise support—starting with version 2.10—is available as part of the [Tidelift Subscription](https://tidelift.com?utm_source=maven-com-fasterxml-jackson-core-jackson-core&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) for (most) Jackson components. - -The maintainers of `Jackson` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/maven-com-fasterxml-jackson-core-jackson-core?utm_source=maven-com-fasterxml-jackson-core-jackson-core&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) - -### Reporting security vulnerabilities - -The recommended mechanism for reporting possible security vulnerabilities follows -so-called "Coordinated Disclosure Plan" (see [definition of DCP](https://vuls.cert.org/confluence/display/Wiki/Coordinated+Vulnerability+Disclosure+Guidance) -for general idea). The first step is to file a [Tidelift security contact](https://tidelift.com/security): -Tidelift will route all reports via their system to maintainers of relevant package(s), and start the -process that will evaluate concern and issue possible fixes, send update notices and so on. -Note that you do not need to be a Tidelift subscriber to file a security contact. - -Alternatively you may also report possible vulnerabilities to `info` at fasterxml dot com -mailing address. Note that filing an issue to go with report is fine, but if you do that please -DO NOT include details of security problem in the issue but only in email contact. -This is important to give us time to provide a patch, if necessary, for the problem. - -### Note on reporting Bugs - -Jackson bugs need to be reported against component they affect: for this reason, issue tracker -is not enabled for this project. -If you are unsure which specific project issue affects, the most likely component -is `jackson-databind`, so you would use -[Jackson Databind Issue Tracker](https://github.com/FasterXML/jackson-databind/issues). - -For suggestions and new ideas, try [Jackson Future Ideas](../../../jackson-future-ideas) - -## Documentation - -### Web sites - -* [jackson-docs](../../../jackson-docs) is our Github Jackson documentation hub -* [Wiki](https://github.com/FasterXML/jackson/wiki/) of this repo contains: - * [Jackson Releases](../../wiki/Jackson-Releases) - * [FAQ](../../wiki/FAQ) -* Blogs - * [CowTalk](http://cowtowncoder.com/blog/blog.html) (deprecated) -- Blog with lots of Jackson-specific content. Not updated since 2013. - * [Cowtowncoder@medium](http://medium.com/@cowtowncoder/) -- More recent blogging about Jackson - -### Tutorials - -For first-time users there are many good Jackson usage tutorials, -including general usage / JSON tutorials: - -* [Baeldung Jackson JSON Tutorial](https://www.baeldung.com/jackson) -* [Javarevisited Jackson JSON Tutorial](https://javarevisited.blogspot.com/search/label/Java%20JSON%20tutorial) -* [Jenkov.com Jackson Tutorial](http://tutorials.jenkov.com/java-json/index.html) -* [JournalDev Jackson Tutorial](https://www.journaldev.com/2324/jackson-json-java-parser-api-example-tutorial) -* [LogicBig.com Jackson Tutorial](https://www.logicbig.com/tutorials/misc/jackson.html) -* [StudyTrails Jackson Introduction](http://www.studytrails.com/java/json/java-jackson-introduction/) - -and more specific tutorials: - -* [Java67 Javakcson CSV Tutorial](https://www.java67.com/2019/05/how-to-read-csv-file-in-java-using-jackson-library.html) (CSV) - -### Reports - -Following reports have been published about Jackson components - -* [AdaLogics Jackson Security Audit (2022)](../../blob/master/docs/AdaLogics-Security-Audit-Jackson-2022.pdf) (jackson-core, jackson-databind) - -### Java JSON library comparisons - -Since you probably want opinions by Java developers NOT related to Jackson project, regarding which library to use, -here are links to some of existing independent comparisons: - -* [Top 7 Open-Source JSON-binding providers](http://www.developer.com/lang/jscript/top-7-open-source-json-binding-providers-available-today.html) (April 2014) -* [Be a Lazy but a Productive Android Developer, Part 3: JSON Parsing Library](http://java.dzone.com/articles/be-lazy-productive-android) (April 2014) -* ["Can anyone recommend a good Java JSON library"](https://www.linkedin.com/groups/Can-anyone-recommend-good-Java-50472.S.226644043) (Linked-In group) (March 2013) -* ["Which JSON library to use on Android?"](http://thetarah.com/2012/09/21/which-json-library-should-i-use-in-my-android-and-java-projects/) (September 2012) diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9023acc13..000000000 --- a/SECURITY.md +++ /dev/null @@ -1,42 +0,0 @@ -# Security Policy - -Last Updated: 2022-11-02 - -This policy covers ALL Jackson projects/repos: some repos may have their own copy of this policy document. - -## Supported Versions - -Current status of open branches, with new releases, can be found from [Jackson Releases](https://github.com/FasterXML/jackson/wiki/Jackson-Releases) -wiki page - -## Reporting a Vulnerability - -The recommended mechanism for reporting possible security vulnerabilities follows -so-called "Coordinated Disclosure Plan" (see [definition of DCP](https://vuls.cert.org/confluence/display/Wiki/Coordinated+Vulnerability+Disclosure+Guidance) -for general idea). The first step is to file a [Tidelift security contact](https://tidelift.com/security): -Tidelift will route all reports via their system to maintainers of relevant package(s), and start the -process that will evaluate concern and issue possible fixes, send update notices and so on. -Note that you do not need to be a Tidelift subscriber to file a security contact. - -Alternatively you may also report possible vulnerabilities to `info` at fasterxml dot com -mailing address. Note that filing an issue to go with report is fine, but if you do that please -DO NOT include details of security problem in the issue but only in email contact. -This is important to give us time to provide a patch, if necessary, for the problem. - -## Verifying Artifact signatures - -(for more in-depth explanation, see [Apache Release Signing](https://infra.apache.org/release-signing#keys-policy) document) - -To verify that any given Jackson artifact has been signed with a valid key, have a look at `KEYS` file of the main Jackson repo: - -https://github.com/FasterXML/jackson/blob/master/KEYS - -which lists all known valid keys in use. - -## Related documents - -There is a published security audit about 2 main Jackson components (`jackson-core`, `jackson-databind`): - -* [AdaLogics Jackson Security Audit (2022)](../../blob/master/docs/AdaLogics-Security-Audit-Jackson-2022.pdf) - -which documents a thorough investigation into Jackson design, implementation, as well as some security design suggestions for developers using Jackson libraries. diff --git a/contributor-agreement-corporate.txt b/contributor-agreement-corporate.txt deleted file mode 100644 index 64294abdc..000000000 --- a/contributor-agreement-corporate.txt +++ /dev/null @@ -1,158 +0,0 @@ - FasterXML, LLC - Software Grant and Corporate Contributor License Agreement ("Agreement") - - https://github.com/FasterXML/jackson/blob/master/contributor-agreement-corporate.txt - - (v1) - - - Thank you for your interest in FasterXML, LLC ("FasterXML"). In - order to clarify the intellectual property license granted with - Contributions from any person or entity, FasterXML must have a - Contributor License Agreement (CLA) on file that has been signed by - each Contributor, indicating agreement to the license terms - below. This license is for your protection as a Contributor as well - as the protection of FasterXML and its users; it does not change - your rights to use your own Contributions for any other purpose. - - This version of the Agreement allows an entity (the "Corporation") - to submit Contributions to the FasterXML, to authorize - Contributions submitted by its designated employees to FasterXML, - and to grant copyright and patent licenses thereto. - - If you have not already done so, please complete and sign, then - scan and email a pdf file of this Agreement to clas@fasterxml.com. - If necessary, send an original signed Agreement to FasterXML, LLC, - 600 N 36th Ave, Suite 409, Seattle, WA 98103. - - Please read this document carefully before signing and keep a copy - for your records. - - Corporation name: ________________________________________________ - - Corporation address: ________________________________________________ - - ________________________________________________ - - ________________________________________________ - - Point of Contact: ________________________________________________ - - E-Mail: ________________________________________________ - - Telephone: _____________________ Fax: _____________________ - - - You accept and agree to the following terms and conditions for Your - present and future Contributions submitted to FasterXML. Except - for the license granted herein to FasterXML and recipients of - software distributed by FasterXML, You reserve all right, title, - and interest in and to Your Contributions. - - 1. Definitions. - - "You" (or "Your") shall mean the copyright owner or legal entity - authorized by the copyright owner that is making this Agreement - with FasterXML. For legal entities, the entity making a - Contribution and all other entities that control, are controlled - by, or are under common control with that entity are considered - to be a single Contributor. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of - the outstanding shares, or (iii) beneficial ownership of such - entity. - - "Contribution" shall mean the code, documentation or other - original works of authorship expressly identified in Schedule B, - as well as any original work of authorship, including any - modifications or additions to an existing work, that is - intentionally submitted by You to FasterXML for inclusion in, or - documentation of, any of the products owned or managed by - FasterXML (the "Work"). For the purposes of this definition, - "submitted" means any form of electronic, verbal, or written - communication sent to FasterXML or its representatives, - including but not limited to communication on electronic mailing - lists, source code control systems, and issue tracking systems - that are managed by, or on behalf of, FasterXML for the purpose - of discussing and improving the Work, but excluding - communication that is conspicuously marked or otherwise - designated in writing by You as "Not a Contribution." - - 2. Grant of Copyright License. Subject to the terms and conditions - of this Agreement, You hereby grant to FasterXML and to - recipients of software distributed by FasterXML a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare derivative works of, - publicly display, publicly perform, sublicense, and distribute - Your Contributions and such derivative works. - - 3. Grant of Patent License. Subject to the terms and conditions of - this Agreement, You hereby grant to FasterXML and to recipients - of software distributed by FasterXML a perpetual, worldwide, - non-exclusive, no-charge, royalty-free, irrevocable (except as - stated in this section) patent license to make, have made, use, - offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by You that are necessarily infringed by Your Contribution(s) - alone or by combination of Your Contribution(s) with the Work to - which such Contribution(s) were submitted. If any entity institutes - patent litigation against You or any other entity (including a - cross-claim or counterclaim in a lawsuit) alleging that your - Contribution, or the Work to which you have contributed, constitutes - direct or contributory patent infringement, then any patent licenses - granted to that entity under this Agreement for that Contribution or - Work shall terminate as of the date such litigation is filed. - - 4. You represent that You are legally entitled to grant the above - license. You represent further that each employee of the - Corporation designated on Schedule A below (or in a subsequent - written modification to that Schedule) is authorized to submit - Contributions on behalf of the Corporation. - - 5. You represent that each of Your Contributions is Your original - creation (see section 7 for submissions on behalf of others). - - 6. You are not expected to provide support for Your Contributions, - except to the extent You desire to provide support. You may provide - support for free, for a fee, or not at all. Unless required by - applicable law or agreed to in writing, You provide Your - Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS - OF ANY KIND, either express or implied, including, without - limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, - MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. - - 7. Should You wish to submit work that is not Your original creation, - You may submit it to FasterXML separately from any - Contribution, identifying the complete details of its source and - of any license or other restriction (including, but not limited - to, related patents, trademarks, and license agreements) of which - you are personally aware, and conspicuously marking the work as - "Submitted on behalf of a third-party: [named here]". - - 8. It is your responsibility to notify FasterXML when any change is - required to the list of designated employees authorized to - submit Contributions on behalf of the Corporation, or to the - Corporation's Point of Contact with FasterXML. - - - - Please sign: __________________________________ Date: _______________ - - Title: __________________________________ - - Corporation: __________________________________ - - -Schedule A - - [Initial list of designated employees. NB: authorization is not - tied to particular Contributions.] - - - - -Schedule B - - [Identification of optional concurrent software grant. Would be - left blank or omitted if there is no concurrent software grant.] diff --git a/contributor-agreement.pdf b/contributor-agreement.pdf deleted file mode 100644 index fe36036ca..000000000 Binary files a/contributor-agreement.pdf and /dev/null differ diff --git a/docs/AdaLogics-Security-Audit-Jackson-2022.pdf b/docs/AdaLogics-Security-Audit-Jackson-2022.pdf deleted file mode 100644 index d7eb013ab..000000000 Binary files a/docs/AdaLogics-Security-Audit-Jackson-2022.pdf and /dev/null differ