-
Notifications
You must be signed in to change notification settings - Fork 3
Jackson Work in Progress
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 multiple sections, first in a few kinds of actionable (*) things:
- Things to evaluate -- haven't yet had a chance to fully grok
- Next up -- items to start work on (or being worked on)
- Urgent to fix -- security problems, correctness (corruption), reliability (threading/concurrency)
- Simple to fix -- low(er) hanging fruits that are likely relatively easily fixable (and important enough to include here)
- Important to fix -- things that important strategically, or highly "voted", but that are more involved to fix/implement.
and then one other theoretically-actionable category:
- Things to contemplate (not easy to fix and not even sure if behavior should change and/or if attempting to fix is worth the hassle or even possible), divided into
- May revisit
- Unlikely to revisit
as finally the "Recently Completed" addendum. Plus, I try to give "safe harbor" style guesstimate on timing of next minor (and in case of 3.0, major) releases.
Note that this page does NOT contain "Big Ideas" for Jackson 3.0: these are covered on separate JSTEP page.
(*) 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.
- 19-Jul-2019, tatu:
2.10.0.pr1released, work towards 2.10.0 continues - 30-May-2019, tatu: Reorder "important" before "simple" (because, yeah...)
- 16-May-2019, tatu: Move now obsolete "recently completed" after 2.9.9 release, to make room
- 29-Oct-2018, tatu: Create the initial version
While patch releases occur somewhat frequently -- after initial minor version, usually once per month for 2 or 3, then 2-3 months after that -- minor versions have gone from "every 3 months" (with 1.x) to "every 6 months" (later 2.x) to "I don't quite know". And with 2.x -> 3.0 work being ambitious, that is even less predictable.
But, currently I think that:
- First pre-release candidate (2.10.0.pr1) was released mid-July 2019, with 2.10.0.pr2 likely by end of August; final 2.10.0 thereby possible by end of September
- 3.0 is UNLIKELY to be released BEFORE end of 2019: work is mostly on hold until
2.10is out, but should pick up after that gets released.
- Dataformats
- (PR) Avro: https://github.com/FasterXML/jackson-dataformats-binary/pull/133 -- Logical types
- (databind) https://github.com/FasterXML/jackson-databind/pull/2432: Module Bundles
- (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/354 --
xsi:nilsupport - (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/356 -- Root name for Collection types
- (guava) https://github.com/FasterXML/jackson-datatypes-collections/issues/56: Property naming for
Range - (CSV) https://github.com/FasterXML/jackson-dataformats-text/issues/10 -- missing
nullvalues
- Databind
- https://github.com/FasterXML/jackson-databind/issues/2113: Leniency vs scalars
- (3.0) https://github.com/FasterXML/jackson-databind/issues/2405: SQL date, default timezone
- Jackson-jr
-
https://github.com/FasterXML/jackson-jr/issues/32: Support subset of Jackson annotations (
@JsonPropertyet al)
-
https://github.com/FasterXML/jackson-jr/issues/32: Support subset of Jackson annotations (
- Date/time:
- (EASY) https://github.com/FasterXML/jackson-modules-java8/issues/51 -- Year key deserializer
- https://github.com/FasterXML/jackson-modules-java8/issues/80 -- case-insensitive
- Formats
- (avro) https://github.com/FasterXML/jackson-dataformats-binary/issues/165 -- missing default value for
Map - (XML) https://github.com/FasterXML/jackson-dataformat-xml/issues/358 -- XSI namespace in general
- (avro) https://github.com/FasterXML/jackson-dataformats-binary/issues/165 -- missing default value for
- Finish partial rewrite of
JsonFormat.Shapehandling to support ALL changes (POJO to/from non-POJO), for types AND properties -
https://github.com/FasterXML/jackson-databind/issues/2246: "Iterable"
JavaTypeforStream,Iteratoretc -
https://github.com/FasterXML/jackson-core/issues/485: Add
vanillaversion for generators, to optimize handling- f.ex. one with no
PrettyPrinter, using standard quoting
- f.ex. one with no
-
https://github.com/FasterXML/jackson-databind/issues/2418: Offer
BeanDescriptionviaSupplier(or something)
Databind
- 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/1983:
MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, type id case
Other
-
https://github.com/FasterXML/jackson-dataformats-text/issues/115: (CSV)
JsonProperty.indexis not honored byCsvSchemabuilder - (avro) https://github.com/FasterXML/jackson-dataformats-binary/issues/164 -- reader/writer schema, union
- Annotations
-
https://github.com/FasterXML/jackson-annotations/pull/149: Use
@Repeatedon annotations likeJsonSubtypes.Type
-
https://github.com/FasterXML/jackson-annotations/pull/149: Use
- Streaming
- Remove mutability of
JsonGenerator: NOTE,CharacterEscapeshard (due to JSONP), max-non-escaped easy too? Features? - Remove
JsonParser.setSchema() - https://github.com/FasterXML/jackson-core/issues/507: Escape forward slash in Strings by default (but also allow change)
- Remove mutability of
- Databind
- https://github.com/FasterXML/jackson-databind/issues/1687: JsonView with JsonNode (convenience method)
- Databind
-
https://github.com/FasterXML/jackson-databind/issues/2253: support multiple properties with
@JsonRootName, unwap; -
https://github.com/FasterXML/jackson-databind/issues/1114:
@JsonFormat, number formatting -- can useJsonGenerator.canWriteFormattedNumbers()(added in 2.8)
-
https://github.com/FasterXML/jackson-databind/issues/2253: support multiple properties with
- Dataformats, binary
-
https://github.com/FasterXML/jackson-dataformats-binary/issues/73: (
protobuf) References to nested types
-
https://github.com/FasterXML/jackson-dataformats-binary/issues/73: (
- Dataformats, text
- 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
- Collections
- Java 8
- (date/time) https://github.com/FasterXML/jackson-modules-java8/issues/114 -- empty String "" as
nullDate/Time (or not)
- (date/time) https://github.com/FasterXML/jackson-modules-java8/issues/114 -- empty String "" as
These entries have been evaluated but not solved (either worked without full solution, or deemed unlikely to be solved and no attempt made)
-
https://github.com/FasterXML/jackson-databind/issues/2378 --
@JsonCreator, alias (need test case) - (Smile) https://github.com/FasterXML/jackson-dataformats-binary/issues/158 --
BigDecimal,NaN(need test case) - (Guava) https://github.com/FasterXML/jackson-datatypes-collections/pull/50: Guava,
RangeSethandling (PR) (need CLA) - (CBOR) https://github.com/FasterXML/jackson-dataformats-binary/issues/166 -- feature to force use of length-prefix for all String values (waiting for possible PR)
- Databind
-
https://github.com/FasterXML/jackson-databind/issues/1986:
Throwable, self-reference (NOTE: probably not really simple to solve, but need to evaluate) -
https://github.com/FasterXML/jackson-databind/issues/2382: Support
AutoClosable(NOTE: not as trivial to implement as I thought) -
https://github.com/FasterXML/jackson-databind/issues/2087: Performance improvement for
BigDecimal(see the end of comment section) - https://github.com/FasterXML/jackson-databind/issues/1196: Collect multiple errors
-
https://github.com/FasterXML/jackson-databind/issues/1986:
- (Java 8 / datatypes) https://github.com/FasterXML/jackson-modules-java8/issues/86 --
Optional, polymorphic types -- bug it seems, but hard to reason about. - (Java 8 date/time) https://github.com/FasterXML/jackson-modules-java8/issues/109:
Instant, integer/nanoseconds -- probably NOT a bug, but need to verify - Jackson-jr
-
https://github.com/FasterXML/jackson-jr/issues/62: Support
atwithJsonPointer(but what abstraction?JSONprobably, otherwise too many overloads) - problem, noObjectWriterequivalent for jackson-jr
-
https://github.com/FasterXML/jackson-jr/issues/62: Support
- JSON Schema: https://github.com/FasterXML/jackson-module-jsonSchema/issues/136 --
ClassDescriptionnot used? - Formats:
- (CSV) https://github.com/FasterXML/jackson-dataformats-text/issues/7 -- Support coercion of empty strings to null objects
- (CSV) https://github.com/FasterXML/jackson-dataformats-text/issues/45 -- trailing linefeed
- (PR) ^^^ https://github.com/FasterXML/jackson-dataformats-text/pull/46 -- ideally rewrite
- (databind) https://github.com/FasterXML/jackson-databind/issues/2283: problem with
READ_ONLY,Lists- PR: https://github.com/FasterXML/jackson-databind/pull/2284 -- sizable changes, not sure what to think
- (avro) https://github.com/FasterXML/jackson-dataformats-binary/issues/167 -- Apache Avro lib 1.8/1.9 problem
- Databind
- https://github.com/FasterXML/jackson-databind/pull/2180 -- order of Constructor / Factory method lookup for KEY deserializers (change order from current)
-
https://github.com/FasterXML/jackson-databind/issues/2305: problem with
@JsonCreator, single string argument- Due to "all implicit" vs "all explicit": not sure if should change
- (Java8) https://github.com/FasterXML/jackson-modules-java8/issues/111: Java8 module(s), serializability
-
java.time.format.DateTimeFormatterNOT beingjava.io.Serializable. Failing test added. - Unfortunately, while fixed for 3.0, difficult to fix for
2.10due to
-
Note: many Big Ideas now included on JSTEP page.
But a scratchpad for stuff can be retained...
- Add new
JsonTokentype for "Native Object Id Reference", mostly for YAML?
(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.
- https://github.com/FasterXML/jackson-dataformats-text/issues/133: (YAML) Document multi-doc use case, differences
- Rewrite
jackson-databindREADMEto make it plain that JSON is NOT the only supported format: add examples, links - Write blog entries about:
- How does property introspection COMPLETELY work
- Simple "untyped" serialization with Guava ImmutableMap/ImmutableList
- Using "Config Overrides"
- 2.10 features pre-sneak
Here are things since May 25 2019, after release of 2.9.9 (except for 3.0 some earlier too)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2334: Another CVE, post-2.9.9 (may need a micro-patch)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2341: ... and another CVE -- first allocate CVE ID
- (databind) https://github.com/FasterXML/jackson-databind/pull/2374: NPE for "registered modules"
- (streaming) https://github.com/FasterXML/jackson-core/pull/540 -- bad
bytetointconversion (16-Jul-2019) - (afterburner) https://github.com/FasterXML/jackson-modules-base/issues/83: Missing ASM License info
- (databind) https://github.com/FasterXML/jackson-databind/issues/2410: Another CVE (09-Aug-2019)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2420: Another CVE (09-Aug-2019)
- (databind) https://github.com/FasterXML/jackson-core/issues/533: BOM unaccounted for wrt
Location(28-May-2019) - (JAX-RS) https://github.com/FasterXML/jackson-jaxrs-providers/issues/113 -- wrong scope for
@JacksonAnnotations(28-May-2019) - (Java 8 date/time) https://github.com/FasterXML/jackson-modules-java8/issues/105: LocalTime should be
time, notdatetimein schema (28-May-2019) - (databind) https://github.com/FasterXML/jackson-databind/issues/2195: Add abstraction
PolymorphicTypeValidator, for limiting subtypes allowed by default typing,@JsonTypeInfo(30-May-2019) - (dataformats-text) https://github.com/FasterXML/jackson-dataformats-text/issues/100: (Properties) -- allow support for Prefixes (30-May-2019)
- (dataformats-text) https://github.com/FasterXML/jackson-dataformats-text/issues/50: (yaml) -- quote empty String always (31-May-2019)
- (dataformats-text) https://github.com/FasterXML/jackson-dataformats-text/issues/116: (yaml) -- quote "null" String value always (31-May-2019)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2338:
JsonNode.withArray(), result type (31-May-2019) - (dataformats-text) https://github.com/FasterXML/jackson-dataformats-text/issues/134: (CSV) not closing input (01-Jun-2019)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2339: Suboptimal return type for
ObjectNode.set() - (databind) https://github.com/FasterXML/jackson-databind/issues/18: Make
JsonNodeJDK Serializable (04-Jun-2019) - (jackson-jr) https://github.com/FasterXML/jackson-jr/issues/65: Allow registration of custom readers, writers (to support 3rd party, custom types) (10-Jun-2019)
- (streaming) https://github.com/FasterXML/jackson-core/issues/539 -- reduce max size of recycled chunks (14-Jun-2019)
-
https://github.com/FasterXML/jackson-modules-java8/issues/121:
MonthDaySerializercan not deserialize from array (16-Jul-2019) - (yaml) https://github.com/FasterXML/jackson-dataformats-text/issues/129 -- More quoting (17-Jul-2019)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2331 --
JsonMappingExceptionthrough nested getter with generic wildcard return type (23-Jul-2019) - (yaml) https://github.com/FasterXML/jackson-dataformats-text/issues/140 -- Integer keys for maps (24-Jul-2019)
- (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/351 -- Any getter filtering (24-Jul-2019)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2393: wrong bounds check for
TreeTraversingParser.getLongValue()(26-Jul-2019) - (streaming) https://github.com/FasterXML/jackson-core/issues/547 -- Symbol table rehash crash (28-Jul-2019)
- (streaming) https://github.com/FasterXML/jackson-core/issues/548 -- Another symbol table problem (30-Jul-2019)
- (kotlin) https://github.com/FasterXML/jackson-module-kotlin/issues/239 -- sealed classes, subtypes
- (databind) https://github.com/FasterXML/jackson-databind/issues/2392: custom deserializer, modifier not called (02-Aug-2019)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2390: Iterable, Filter (06-Aug-2019)
- (collection) https://github.com/FasterXML/jackson-datatypes-collections/issues/53 -- Guava Optional,
ImmutableList(08-Aug-2019) - (databind) https://github.com/FasterXML/jackson-databind/pull/2348:
nullchecks forObjectMapper(09-Aug-2019) - (Java8/datetime) https://github.com/FasterXML/jackson-modules-java8/issues/122 -- auto-register, README (11-Aug-2019)
- (jaxb) https://github.com/FasterXML/jackson-modules-base/issues/84 -- Properly initialize DOM deserializer factory (13-Aug-2019)
- (Properties) https://github.com/FasterXML/jackson-dataformats-text/issues/139 -- support
Properties-like-Mapsas input source (13-Aug-2019) - (avro) https://github.com/FasterXML/jackson-dataformats-binary/issues/168 -- Union, parse exception (14-Aug-2019)
- (avro) https://github.com/FasterXML/jackson-dataformats-binary/issues/173 -- Union ser performance (14-Aug-2019)
- (streaming) https://github.com/FasterXML/jackson-core/issues/517: add
JsonGenerator.writeStartObject(Object, int)(15-Aug-2019) - (streaming) https://github.com/FasterXML/jackson-core/issues/552: Move
WRITE_NUMBERS_AS_STRINGSfrom "general" to JSON-specific write feature (15-Aug-2019) - (databind) https://github.com/FasterXML/jackson-modules-java8/issues/129 - Support
lenientsetting withLocalDateDeserializer(17-Aug-2019) - (streaming) https://github.com/FasterXML/jackson-core/issues/549: Allow configuring quote character (19-Aug-2019)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2336 -- Merge, polymorphic Maps (20-Aug-2019)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2428:
enableDefaultTyping()->activateDefaultTyping()(20-Aug-2019) - https://github.com/FasterXML/jackson-databind/issues/2422: Scala Map, type refinement work-arounds. (20-Aug-2019)
- https://github.com/FasterXML/jackson-jr/issues/60: Root values, streaming (21-Aug-2019)
-
https://github.com/FasterXML/jackson-databind/issues/2398: Limit recursion for
TokenBuffer.copyCurrentStructure()(24-Aug-2019) - (avro) https://github.com/FasterXML/jackson-dataformats-binary/pull/177 -- empty Schema (26-Aug-2019)
- (streaming) https://github.com/FasterXML/jackson-core/issues/479 -- rewrite
BufferRecyclerfix (26-Aug-2019) - (streaming) https://github.com/FasterXML/jackson-core/issues/556 -- UTF8JsonGenerator.writeString(Reader, len), negative
len(27-Aug-2019) - (databind) https://github.com/FasterXML/jackson-databind/issues/2349 -- Default typing, including final (to support Kotlin, f.ex) (28-Aug-2019)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2237:
JsonNodeimprovements: "required". (29-Aug-2019) - (Java 8 date/time) https://github.com/FasterXML/jackson-modules-java8/issues/69 -- non-equal ser/deser with nanos for
Instant
-
https://github.com/FasterXML/jackson-databind/pull/2196: Type safety wrt
TypeReference,ObjectMapper.readValue()(10-Jan-2019) -
https://github.com/FasterXML/jackson-dataformats-text/pull/106 (YAML): update to
SnakeYAMLengine (27-Feb-2019) - https://github.com/FasterXML/jackson-modules-base/pull/52 (MrBean): allow overrides (04-Apr-2019)
- https://github.com/FasterXML/jackson-databind/pull/2297 -- NPE for unknown properties (11-Apr-2019)
- (avro) https://github.com/FasterXML/jackson-dataformats-binary/pull/146 -- default
nullvalues (29-Aug-2019)
- (woodstox) https://github.com/FasterXML/woodstox/issues/70 -- Moditect -- but maybe Shade some deps? (15-Jul-2019)