Skip to content

Commit

Permalink
.
Browse files Browse the repository at this point in the history
  • Loading branch information
JooHyukKim authored and cowtowncoder committed Dec 18, 2023
1 parent cc168bc commit a9f15cc
Show file tree
Hide file tree
Showing 122 changed files with 8,098 additions and 987 deletions.
56 changes: 56 additions & 0 deletions Acknowledgements-2.12.md
Original file line number Diff line number Diff line change
@@ -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
117 changes: 0 additions & 117 deletions CONTRIBUTING.md

This file was deleted.

26 changes: 26 additions & 0 deletions FAQ.md
Original file line number Diff line number Diff line change
@@ -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)
12 changes: 12 additions & 0 deletions Home.md
Original file line number Diff line number Diff line change
@@ -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).

110 changes: 110 additions & 0 deletions Issues-For-New-Contributors.md
Original file line number Diff line number Diff line change
@@ -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





Loading

0 comments on commit a9f15cc

Please sign in to comment.