Skip to content

Jackson Work in Progress

Tatu Saloranta edited this page Jan 16, 2019 · 2080 revisions

Jackson WIP

This page is a "living document" of on-going work, mostly by @cowtowncoder (Tatu), although other committers are welcome to update it as well.

Contents are divided in 4 sections, of actionable (*) things:

  1. Urgent things -- security problems, correctness (corruption), reliability (threading/concurrency)
  2. Simple things -- low(er) hanging fruits that are likely easily fixable but also important (i.e. non-trivial)
  3. Important -- things that important strategically, or highly "voted", but that are more involved to fix/implement.
  4. Big Ideas

as well as one "Recently Completed" addendum.

(*) actionable meaning, in general, that progress is only/mostly limited by time available and not by inherent difficulty, or lack of design or ideas of how to tackle the need.

Last updates

  • 04-Jan-2019, tatu: Keep on adding new stuff (slow progress on existing ones)
  • 15-Dec-2018, tatu: With release 2.9.8, trim down "recently completed"
  • 29-Oct-2018, tatu: Create the initial version

Urgent things

3.0: test failures for jackson-modules-base?

2.10

2.9

Simple Things

3.0

* Streaming
    * Remove mutability of `JsonGenerator`: NOTE, `CharacterEscapes` hard (due to JSONP); pretty-printer easier, max-non-escaped easy too? Features?
    * https://github.com/FasterXML/jackson-core/issues/507: Escape forward slash in Strings by default (but also allow change)
* Databind
    * https://github.com/FasterXML/jackson-databind/issues/2220: avoid short-circuit for `ObjectMapper.convertValue()`

2.10

* Streaming
* Databind
    * https://github.com/FasterXML/jackson-databind/issues/1675: Remove `IOException` from String/`byte[]` sourced parse methods
* Dataformats, binary
    * https://github.com/FasterXML/jackson-dataformats-binary/issues/73: (`protobuf`) References to nested types
* Other
    * (java 8 date/time) https://github.com/FasterXML/jackson-modules-java8/pull/92: (Java 8 date/time) format support for `Duration` (maybe?)
    * https://github.com/FasterXML/jackson-dataformat-xml/issues/311: (XML) namespace binding issue
    * https://github.com/FasterXML/jackson-dataformat-xml/issues/325: (XML) polymorphic ids

Jackson 2.9

* Other:
    * https://github.com/FasterXML/jackson-modules-base/pull/70: Afterburner, `MapperFeature.ALLOW_COERCION_OF_SCALARS`

Important Things

3.0

* https://github.com/FasterXML/jackson-databind/issues/2177: Change parent type of `JsonProcessingException` to be `RuntimeException` (maybe `UncheckedIOException`?)
* Finish partial rewrite of `JsonFormat.Shape` handling to support ALL changes (POJO to/from non-POJO), for types AND properties

2.10

* https://github.com/FasterXML/jackson-databind/issues/2189: Bounds checks (`int`, `long`) for `TreeTraversingParser` (and verify `TokenBuffer`'s too)
* https://github.com/FasterXML/jackson-core/issues/500: allow "optional padding" for base64 (not just required/not-allowed choices)
* https://github.com/FasterXML/jackson-databind/issues/2195: Add abstraction for `ClassNameValidator`, for default typing, `@JsonTypeInfo`
* https://github.com/FasterXML/jackson-databind/issues/2211: change in `ObjectMapper.readTree()` for "no content" return value in 2.9
* https://github.com/FasterXML/jackson-dataformats-text/issues/115: (CSV) `JsonProperty.index` is not honored by `CsvSchema` builder

2.9

Big Ideas

We should have something like "Jackson Big Ideas", maybe similar to Kafka KIPs. Not unlike IETF RFCs, but bit smaller documents.

Ideas are listed on [Jackson3+Changes)]

  1. JsonNode revamp
  2. JacksonException to replace JsonProcessingException; unchecked not checked
  3. Major version upgrade details (Maven, Java package)
  4. Jackson 3.x default setting changes (Features esp)

Documentation

(NOTE: need to include in some better way, but for now just need a place to add ideas)

Another dimension of things to work is... documentation.

  • Rewrite jackson-databind README to make it plain that JSON is NOT the only supported format: add examples, links
  • Write blog entries about:
    1. How does property introspection COMPLETELY work
    2. Simple "untyped" serialization with Guava ImmutableMap/ImmutableList

Recently completed

Here are things since December 2018, after release of 2.9.8 (except for 3.0 some earlier too)

2.9

2.10

3.0

Clone this wiki locally