-
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.
Note that there is also a complementary set of things core developers may eventually work on but that may be better tackled by other contributors:
New Contributor Friendly Issues
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.
- 05-Jan-2020, tatu: Clean up after
2.10.2release - 26-Sep-2019, tatu:
2.10.0(final) released: clear up "recently completed" entries - 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 of 2.11 could be out by mid March 2020, with release in early April.
- 3.0 is UNLIKELY to be released BEFORE early 2020, but work on it will continue concurrently with 2.11 release.
- (databind, CVE): https://github.com/FasterXML/jackson-databind/issues/2662 -- report wrt
bus-proxy, polymorphic deser - (kotlin) https://github.com/FasterXML/jackson-module-kotlin/issues/302 -- New owner(s) for Kotlin Module
- 2 candidates, would be great to find 3rd (but not abs requirement)
- (kotlin) https://github.com/FasterXML/jackson-module-kotlin/issues/281 -- Singleton, deserialization
- (databind) https://github.com/FasterXML/jackson-databind/issues/2627 -- JsonIgnoreProperties(ignoreUnknown = true) does not work on field and method level
- (core) https://github.com/FasterXML/jackson-core/issues/478 --
ByteBufferfor non-blocking - (kotlin) https://github.com/FasterXML/jackson-module-kotlin/issues/283 --
Either, type resolution - (avro) https://github.com/FasterXML/jackson-dataformats-binary/issues/167 (f.ex) -- Avro 1.8 vs 1.9
- (csv) https://github.com/FasterXML/jackson-dataformats-text/issues/176 -- Allow skipping first line of input file
- (joda money) https://github.com/FasterXML/jackson-datatype-joda/pull/114 -- Support for Joda Money library
- (databind) https://github.com/FasterXML/jackson-databind/issues/2354 -- Builder, static builder creation method?
- (streaming) https://github.com/FasterXML/jackson-core/issues/584 -- Type Ids, allow skipping
null - (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/374 -- DeserializationFeature.UNWRAP_ROOT_VALUE in XML
- (PR / 2.11 / rebase / CSV) https://github.com/FasterXML/jackson-dataformats-text/pull/97 -- nested values (old PR)
- (streaming/2.11) https://github.com/FasterXML/jackson-core/issues/572 -- configurable filtering
- (core) https://github.com/FasterXML/jackson-core/issues/609 - TokenFilter
- (xml)
- (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/385 --
xsi:nil, multiple attributes - (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/377 -- Base64Variant
- (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/385 --
- (databind) https://github.com/FasterXML/jackson-databind/issues/2588 -- '@JsonCreator`, type id resolver, external type
- (Java8) https://github.com/FasterXML/jackson-modules-java8/pull/162 -- single-arg Creator
- (CSV) https://github.com/FasterXML/jackson-dataformats-text/issues/174 -- CsvParser.Feature.SKIP_EMPTY_LINES results in a mapping error
- (yaml) https://github.com/FasterXML/jackson-dataformats-text/issues/173 -- yaml doc from empty input
- (databind) https://github.com/FasterXML/jackson-databind/issues/2536 -- Need a Feature like "READ_ENUM_KEYS_USING_INDEX" 0
- (woodstox) https://github.com/FasterXML/woodstox/issues/91 -- Location, external subsets (test added via PR 98)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2563 -- Turkish I, part 2
- (Classmate) https://github.com/FasterXML/java-classmate/issues/50 -- Convenience method(s) ("implemented types")
- (databind) https://github.com/FasterXML/jackson-databind/issues/2624 -- Config override for "with"-prefix (builders).
- (databind) https://github.com/FasterXML/jackson-databind/issues/2657 -- Serializing
Propertieswith non-String values - (streaming) https://github.com/FasterXML/jackson-core/issues/500: allow "optional padding" for base64 (not just required/not-allowed choices)
- (databind) https://github.com/FasterXML/jackson-databind/issues/1296 -- `@JsonIncludeProperties)
- (databind)
JsonNodeFeature? - (cbor) https://github.com/FasterXML/jackson-dataformats-binary/issues/186 -- Max lengths for things
- XML
- (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/318 -- "Empty" POJO from "blank" (all-ws)
- (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/324: use of
xsi:typefor writing - (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/360 -- write
xsi:nil(ToXmlGenerator.Feature.WRITE_NULLS_AS_XSI_NILadded, implementation not yet) - (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/356 -- Root name for Collection types
- Avro
- (PR) (avro): https://github.com/FasterXML/jackson-dataformats-binary/pull/133 -- Logical types
- (avro) https://github.com/FasterXML/jackson-dataformats-binary/issues/165 -- missing default value for
Map
- (CSV) https://github.com/FasterXML/jackson-dataformats-text/issues/10 -- missing
nullvalues - XML
- (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/319: Empty List fail
- (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/358 -- XSI namespace in general
- (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/219 -- String-argument constructor
- Lenient deserialization
- (databind) https://github.com/FasterXML/jackson-databind/issues/1852: Case-insensitive Booleans
- (databind) https://github.com/FasterXML/jackson-databind/issues/2113: Leniency vs scalars (Boolean)
- Databind
- (databind) https://github.com/FasterXML/jackson-databind/issues/2465 --
@JacksonInject,@JsonCreator - https://github.com/FasterXML/jackson-databind/issues/2438 -- Duplicate property value Creator vs field/setter
- (databind) https://github.com/FasterXML/jackson-databind/issues/2465 --
- (databind) https://github.com/FasterXML/jackson-databind/issues/2596 --
@StdConverterproblem -- not an actual bug, will close - (databind) https://github.com/FasterXML/jackson-databind/issues/2572:
JsonSetter, no-default-ctor -- not sure if bug or not; 2.9 vs 2.10 behavior - (databind) https://github.com/FasterXML/jackson-databind/issues/2509 --
AnnotatedMethod.setValue(), exception unwrapping (need Test) - (databind) https://github.com/FasterXML/jackson-databind/issues/2486 -- Builder Deserialization with JsonCreator Value vs Array (Need Test)
- (Smile) https://github.com/FasterXML/jackson-dataformats-binary/issues/158 --
BigDecimal,NaN(need test case) - (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/2545 -- ClassCast via Spring, polymorphic typing -- need Test Case
-
https://github.com/FasterXML/jackson-databind/issues/2548: default
SubTypeValidatorin 3.0 for@JsonTypeInfo- and likely new annotation? (
@JsonSubTypeValidator?)
- and likely new annotation? (
- 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/2550: Rewrite Enum introspection via
AnnotationIntrospector -
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
- (xml) https://github.com/FasterXML/jackson-dataformat-xml/issues/359 -- Test fail wrt String
nullvs "" - (databind) Introspection callbacks ("json schema"): simplify String-type callbacks etc
Databind/annotations:
-
https://github.com/FasterXML/jackson-databind/issues/1296 --
@JsonIncludeProperties
Other
- (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/2405: SQL date, default timezone
- https://github.com/FasterXML/jackson-databind/issues/1687: JsonView with JsonNode (convenience method)
-
https://github.com/FasterXML/jackson-databind/issues/2496: "null key" and "null value" serializers via
MapperBuilder, not module?
- Jackson-jr
- (jackson-jr) https://github.com/FasterXML/jackson-jr/issues/64 -- error message, property names
- (jackson-jr) https://github.com/FasterXML/jackson-jr/issues/51 -- Dup detection for trees
- Databind
-
https://github.com/FasterXML/jackson-databind/issues/2253: support multiple properties with
@JsonRootName, unwap; -
https://github.com/FasterXML/jackson-databind/issues/1850: Enum,
@JsonValue,int/long
-
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: (
These entries have been evaluated but not solved (either worked without full solution, or deemed unlikely to be solved and no attempt made)
- 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
- (databind) https://github.com/FasterXML/jackson-databind/issues/2593 -- Java 9,
StackTraceElement
-
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. - (date/time) https://github.com/FasterXML/jackson-modules-java8/issues/109:
Instant, integer/nanoseconds -- probably NOT a bug, but need to verify - (Java 8 optional) https://github.com/FasterXML/jackson-modules-java8/issues/154:
Optional<JsonNode>not working.- Not a bug per se, but could this be improved?
- (parameter-names) * https://github.com/FasterXML/jackson-modules-java8/issues/50 -- Single-arg creator detection
- (datatypes) https://github.com/FasterXML/jackson-modules-java8/issues/86 --
- 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/45 -- trailing linefeed
- (PR) ^^^ https://github.com/FasterXML/jackson-dataformats-text/pull/46 -- ideally rewrite
- (CSV) https://github.com/FasterXML/jackson-dataformats-text/issues/45 -- trailing linefeed
- (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
- (databind) https://github.com/FasterXML/jackson-databind/issues/2644 -- BigDecimal coercion due to buffering
- Would be great to resolve, perhaps by keeping numbers as Strings if coming from String source -- but not sure how to abstract that logic out, or, how to even link eventual decoding (validation has occurred already)
- At least 3 parts: (1) does it come from textual input, (2) has number been decoded already, (3) how to decode later on (buffer has no linkage to parser)
- Note: heuristic for using
BigDecimalfor certain length of decimal part might work... or maybe not. If not, probably worse than never working (more complicated, still not reliable)
- 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
- (databind) https://github.com/FasterXML/jackson-databind/issues/2461 --
@JsonUnwrapped, serializer caching- Would be good to fully understand, but may be fundamental problem with multi-level nesting
- (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 - Jackson 2.10 release documentation: (PolymorphicTypeValidator, JsonNode impr done)
- Jackson-jr improvements: read value sequences, custom
ValueReaders,ValueWriters
- Jackson-jr improvements: read value sequences, custom
- Write blog entries about:
- How does property introspection COMPLETELY work
- Simple "untyped" serialization with Guava ImmutableMap/ImmutableList
- Using "Config Overrides"
- How are
JsonSerializers located, initialized - How are
JsonDeserializers located, initialized - Null handling with XML (esp.
String,List/Map)
Here are things since January 05, 2020 (time of 2.10.2 release)
- (streaming) https://github.com/FasterXML/jackson-core/issues/592 -- DataFormatMatcher, null (09-Jan-2020)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2599 -- Android, 2.10,
Objects.requireNonNull()(20-Jan-2020) - (streaming) https://github.com/FasterXML/jackson-databind/issues/2602 -- ByteBuffer serialization (27-Jan-2020)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2610 -- EXTERNAL_PROPERTY, ignoral (31-Jan-2020)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2482 -- Location info for exception wrong (31-Jan-2020)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2620 -- Another CVE (backported in 2.8, 2.9)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2605 -- Polymorphic Enum type
- (core) https://github.com/FasterXML/jackson-core/issues/603 -- Offsets wrong (25-Feb-2020)
- (jsr-353) https://github.com/FasterXML/jackson-datatype-jsr353/issues/16 -- null handling (03-Mar-2020)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2365 --
declaringClassof "enum-as-POJO" not removed forObjectMapperwith a naming strategy (08-Jan-2020) - (databind) https://github.com/FasterXML/jackson-databind/issues/2587 -- Add
MapperFeaturefor safer Polymorphic deser (08-Jan-2020) - (databind) https://github.com/FasterXML/jackson-databind/issues/2589 -- DOM reading settings (09-Jan-2020)
- (streaming) https://github.com/FasterXML/jackson-core/issues/587 --
writeNumber(char[])(10-Jan-2020) - (databind) https://github.com/FasterXML/jackson-databind/issues/2592 --
@JsonAnyGetter, filtering (04-Feb-2020) - (jackson-jr) https://github.com/FasterXML/jackson-jr/issues/32: Support subset of Jackson annotations (
@JsonPropertyet al) (14-Feb-2020) - (streaming) https://github.com/FasterXML/jackson-core/issues/504 --
writeArray(String[])(17-Feb-2020) - (databind) https://github.com/FasterXML/jackson-databind/issues/1983 -- Case-insensitive type id (17-Feb-2020)
- (woodstox) https://github.com/FasterXML/woodstox/issues/96 - improve MSV shading (27-Feb-2020)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2643 -- Change default textual serialization of
java.util.Date/Calendarto include colon in timezone offset - (databind) https://github.com/FasterXML/jackson-databind/issues/2635 -- location (07-Mar-2020)
- (databind) https://github.com/FasterXML/jackson-databind/issues/2647 -- add
createParser(),createGenerator()inObjectMapper(08-Mar-2020) - (properties) https://github.com/FasterXML/jackson-dataformats-text/issues/179 -- not closing URL backed stream (11-Mar-2020)
- (yaml) https://github.com/FasterXML/jackson-dataformats-text/issues/180 -- escaping of colons etc in names (15-Mar-2020)
- (UUID) https://github.com/cowtowncoder/java-uuid-generator/pull/36 -- Add
Clockabstraction (06-Feb-2020) - (UUID) https://github.com/cowtowncoder/java-uuid-generator/issues/32 -- slf4j (21-Feb-2020)
- (UUID) https://github.com/cowtowncoder/java-uuid-generator/pull/33 -- switch to
slf4jAPI (02-Mar-2020)