The built-in decompression support in HttpClient 5.6 breaks
Elasticsearch's Rest5Client as it results in double decompression.
The first decompression is performed by the Apache HTTP client. It
succeeds. The Elasticsearch Rest5Client then sees the
Content-Encoding: gzip header and makes a second attempt to inflate
the data. This fails as it has already been inflated.
Closes gh-48743
This commit configures the new Jackson 3 support for Elasticsearch if
available. As for other auto-configurations, Jackson 2 is still
supported in a deprecated fashion.
Closes gh-47847
Refactor `PropertyMapper` so that it no longer calls adapter or
predicate methods by default when the source value is `null`. This
effectively makes all default calls the same as using
`alwaysWhenNotNull` in the previous generation of the code.
For the limited times when you do need to deal with `null` values, the
new `always()` method can be used.
For example,
map.from(source::method).to(destination::method);
Will not call `destination.method(...)` if `source.method()` returns
`null`.
Where as:
map.from(source::method).always().to(destination::method);
Will call `destination.method(null)` if `source.method()` returns
`null`.
This update provides clearer semantics for the API and allows for better
JSpecify nullability annotations. It has also simplified much of our
existing property mapper code.
Closes gh-47024
Co-authored-by: Moritz Halbritter <moritz.halbritter@broadcom.com>