GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — Add msgpack-jackson3 module for Jackson 3.x support by komamitsu · Pull Request #987 · msgpack/msgpack-java Conversation
|
| File | Description |
|---|---|
build.sbt |
Adds msgpack-jackson3 project, JMH plugin, Java 17 gating via isJava17Plus. |
project/plugins.sbt |
Adds sbt-jmh plugin. |
.github/workflows/CI.yml |
Skips msgpack-jackson3 tests on JDKs < 17. |
.github/workflows/release.yml |
Splits publishing so jackson3 is only published with JDK 17. |
msgpack-jackson3/README.md |
New documentation for the Jackson 3 module. |
msgpack-jackson3/src/main/java/.../MessagePackFactory.java |
Jackson 3 BinaryTSFactory implementation. |
msgpack-jackson3/src/main/java/.../MessagePackFactoryBuilder.java |
New TSFBuilder for the factory. |
msgpack-jackson3/src/main/java/.../MessagePackGenerator.java |
Port of generator; uses new MessagePackWriteContext, node-buffering model. |
msgpack-jackson3/src/main/java/.../MessagePackParser.java |
Port of parser to ParserMinimalBase; uses MessagePackReadContext. |
msgpack-jackson3/src/main/java/.../MessagePackReadContext.java |
Read context (replaces JsonReadContext). |
msgpack-jackson3/src/main/java/.../MessagePackWriteContext.java |
Lightweight write context. |
msgpack-jackson3/src/main/java/.../MessagePackMapper.java |
ObjectMapper subclass with new builder API. |
msgpack-jackson3/src/main/java/.../MessagePackSerializerFactory.java |
Custom serializer factory installing key serializer. |
msgpack-jackson3/src/main/java/.../MessagePackSerializedString.java |
SerializableString impl tolerant of null values. |
msgpack-jackson3/src/main/java/.../MessagePackKeySerializer.java |
Key serializer using MessagePackSerializedString. |
msgpack-jackson3/src/main/java/.../MessagePackExtensionType.java |
Extension type value + serializer. |
msgpack-jackson3/src/main/java/.../ExtensionTypeCustomDeserializers.java |
Per-type extension deserializer registry. |
msgpack-jackson3/src/main/java/.../TimestampExtensionModule.java |
Module serializing Instant as msgpack timestamp ext type. |
msgpack-jackson3/src/main/java/.../JsonArrayFormat.java |
AnnotationIntrospector forcing ARRAY shape. |
msgpack-jackson3/src/main/java/.../PackageVersion.java |
Hard-coded package version. |
msgpack-jackson3/src/main/java/.../Tuple.java |
Small Tuple helper. |
msgpack-jackson3/src/test/java/... |
Ported test suite plus new regression tests for Jackson 3 specific behavior. |
msgpack-jackson3/src/jmh/java/... |
New JMH benchmarks (read/write/UTF-8) and model classes. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@xerial Can you take a quick look at the changes of |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@komamitsu Do you still need to maintain msgpack-jackson for Jackson 2.x? If we don't have critical use cases, I'll lean to dropping Jackson 2 support as supporting both Jackson2 and 3 will be overkill for msgpack-java project. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
current usage: https://mvnrepository.com/artifact/org.msgpack/jackson-dataformat-msgpack/used-by |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@xerial Jackson 2 is still actively used, and Jackson 3 requires Java 17+, so not everyone can migrate yet. I think we should support both for a while. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
The split module is a pragmatic way to support Jackson 3 without raising the whole project baseline. One release detail to double-check: the CI/release workflow now publishes Jackson 2 artifacts on the original JDK and |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Address PR msgpack#987 feedback asking for a clear artifact-name mapping between jackson-dataformat-msgpack (Jackson 2) and jackson-dataformat-msgpack-jackson3 (Jackson 3) to reduce upgrade confusion.
# Conflicts: # .github/workflows/CI.yml
main migrated the build to sbt 2 (feb87ef) without sbt-jmh, since sbt-jmh 0.4.7 has no sbt-2-compatible artifact. This branch's msgpack-jackson3 JMH benchmarks depend on sbt-jmh, so after merging main the plugin fails to resolve. 0.4.8 publishes an sbt_2_3 build.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@komamitsu Thank you for this PR — the Jackson 3 port itself looks solid, and I agree with your point that we should support both Jackson 2 and 3 for a while, since Jackson 3 requires Java 17+ and many users can't migrate yet. Before merging, I'd like to propose restructuring the module naming. My concern with Concretely, I propose we cut msgpack-java 1.0.0 with this structure:
If dependabot/renovate proposes 0.9.x → 1.0.0 to a Jackson 2 user, it fails loudly at compile time (the old package is gone from that artifact), and the release notes will point to Since msgpack-java's API has been stable for a decade while sitting at 0.x, I think this transition is also the right occasion to finally signal 1.0.0. Mechanically this reuses essentially all of your work — the Jackson 3 sources just land in WDYT? If you're on board, I'm happy to help with the build.sbt / workflow changes for the restructuring. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
I've opened #1012 implementing the restructuring proposed above, built on top of this PR's commits (so all the Jackson 3 port work is preserved and attributed). @komamitsu PTAL — if you prefer this direction we can continue the review there; if not, happy to discuss further here. While enabling the module restructuring I also found that the Jackson 2 module's JUnit 5 tests have been silently skipped on main (no Jupiter test interface in the sbt build — likely related to the skipped Universal Buffer Test you noticed), and fixing that surfaced a small |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
Add Jackson 3 support
There was an error while loading. Please reload this page.