From 021cf82ec774587aa876f0b9751a34bd0ac7976f Mon Sep 17 00:00:00 2001 From: "skill-sync[bot]" Date: Thu, 14 May 2026 18:50:50 +0000 Subject: [PATCH] Finalize draft for 0017-jackson-3 --- references/java/data-handling.md | 15 +++++++++++++++ references/java/integrations/spring-ai.md | 1 - 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/references/java/data-handling.md b/references/java/data-handling.md index 2ef1891..ea5cb97 100644 --- a/references/java/data-handling.md +++ b/references/java/data-handling.md @@ -37,6 +37,21 @@ WorkflowClient client = WorkflowClient.newInstance( ); ``` +## Jackson 3 (opt-in) + +The Java SDK's default JSON path runs through Jackson 2's `JacksonJsonPayloadConverter`. A separate Jackson 3 payload-conversion path is available as an opt-in, selected via a new startup API. + +**Wire compatibility.** Payloads written by the Jackson 3 path remain readable by Jackson 2 converters on the other side of the wire, and vice versa — a worker on Jackson 3 can interoperate with a client still on Jackson 2 without re-encoding history. + +**Opt-in call site.** Switch to the Jackson 3 path by calling the Jackson 3 opt-in startup API when constructing your `DefaultDataConverter`, then install the converter on `WorkflowClientOptions` the same way as today. Customising the underlying `ObjectMapper` (modules, serialisation features) is still how you tune behaviour — Jackson 3's `ObjectMapper` lives in a different package and is constructed through a builder, so the surrounding Jackson 2 idiom in the section above does not transfer verbatim. + +**When to opt in:** + +- **Opt in** when the surrounding codebase has already standardised on Jackson 3, or a downstream library you depend on requires it. +- **Stay on the default Jackson 2 path** otherwise — there is no behavioural gain to switching in an app that has no Jackson 3 requirement. + +The existing `## Jackson Integration` section above still describes the Jackson 2 path; this opt-in does not change it. + ## Custom Data Converter Implement `PayloadConverter` for custom serialization: diff --git a/references/java/integrations/spring-ai.md b/references/java/integrations/spring-ai.md index 5ee0704..ae5154f 100644 --- a/references/java/integrations/spring-ai.md +++ b/references/java/integrations/spring-ai.md @@ -217,7 +217,6 @@ Media image = new Media(MimeTypeUtils.IMAGE_PNG, URI.create("https://cdn.example For anything larger than a small thumbnail, route the bytes to a binary store from an Activity and pass only the URL across the conversation. - ## Vector stores, embeddings, and MCP When the corresponding Spring AI modules (`spring-ai-rag`, `spring-ai-mcp`) are on the classpath, the integration registers Activities for vector stores, embeddings, and MCP tool calls automatically. Inject the matching Spring AI types into your Activities or Workflows and use them as you would in any Spring AI application — each operation executes through a Temporal Activity.