Skip to content

[Fix #1763] Migrating to Jackson 3 - #1767

Open
fjtirado wants to merge 3 commits into
open-workflow-specification:mainfrom
fjtirado:Fix_#1763
Open

fjtirado wants to merge 3 commits into
open-workflow-specification:mainfrom
fjtirado:Fix_#1763

Conversation

@fjtirado

@fjtirado fjtirado commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

Fix #1763

As part of the PR, I was forced to review the container test (because java docker library is not compatbile with jackson 3). I moved the container test to the container module and fixed both the test and the implementation (making copilot divert, as usual)

@fjtirado
fjtirado force-pushed the Fix_#1763 branch 4 times, most recently from 974a9d2 to 1cbb926 Compare October 16, 2026 11:05
@fjtirado
fjtirado marked this pull request as ready for review October 16, 2026 11:05
Copilot AI balanced review requested due to automatic review settings October 16, 2026 11:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Compilation compatibility and runtime dependency and module-discovery regressions remain unresolved.

3 open findings
What changed in this PR

Migrates the SDK from Jackson 2 to Jackson 3 for #1763, updating serialization, runtime integrations, and generated code.

Changes:

  • Updates Jackson dependencies and compatible integration libraries.
  • Migrates serializers, deserializers, mapper configuration, and code generators.
  • Adapts tests and examples to Jackson 3 APIs.
File Description
serialization/​src/​main/​java/​org/​openworkflow/​sdk/​serialization/​SerializeHelper.java Updates one-of serialization.
serialization/​src/​main/​java/​org/​openworkflow/​sdk/​serialization/​DeserializeHelper.java Uses Jackson 3 deserialization context.
serialization/​pom.xml Switches databind coordinates.
pom.xml Updates Jackson and validator dependencies.
impl/​validation/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​jackson/​schema/​JsonSchemaValidatorFactory.java Migrates mapper import.
impl/​validation/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​jackson/​schema/​JsonSchemaValidator.java Migrates node import.
impl/​test/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​test/​WorkflowDefinitionTest.java Migrates test node imports.
impl/​test/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​test/​ScheduleEventConsumerTest.java Uses Jackson 3 CloudEvents data.
impl/​test/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​test/​RetryTimeoutTest.java Migrates test node import.
impl/​test/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​test/​OpenIDCHTTPWorkflowDefinitionTest.java Migrates test mapper import.
impl/​test/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​test/​OAuthHTTPWorkflowDefinitionTest.java Migrates test mapper import.
impl/​test/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​test/​EventDefinitionTest.java Migrates test Jackson imports.
impl/​test/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​test/​DateTimeDescriptorTest.java Migrates test node import.
impl/​test/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​test/​CorrelationTest.java Uses Jackson 3 CloudEvents data.
impl/​test/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​test/​CoreTaskTypesTest.java Migrates test node imports.
impl/​test/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​test/​AccessTokenProvider.java Migrates token helper mapper.
impl/​test/​pom.xml Switches Jersey JSON provider.
impl/​pom.xml Updates integrations and Docker exclusions.
impl/​persistence/​tests/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​persistence/​test/​AbstractCorrelationPersistenceTest.java Migrates CloudEvents test data.
impl/​openapi-jackson/​src/​main/​resources/​META-INF/​services/​tools.jackson.databind.JacksonModule Registers Jackson 3 OpenAPI module.
impl/​openapi-jackson/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​executors/​openapi/​jackson/​JacksonUnifiedOpenAPIReader.java Migrates reader mapper import.
impl/​openapi-jackson/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​executors/​openapi/​jackson/​JacksonUnifiedOpenAPIMixInModule.java Migrates module base class.
impl/​model/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​model/​jackson/​JacksonModelTest.java Migrates test node import.
impl/​model/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​model/​jackson/​JacksonModelSerializer.java Updates serializer signature.
impl/​model/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​model/​jackson/​JacksonModelFactory.java Updates string nodes and exceptions.
impl/​model/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​model/​jackson/​JacksonModelDeserializer.java Updates deserializer signature.
impl/​model/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​model/​jackson/​JacksonModelCollectionSerializer.java Updates collection serializer.
impl/​model/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​model/​jackson/​JacksonModelCollectionDeserializer.java Updates collection deserializer.
impl/​model/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​model/​jackson/​JacksonModelCollection.java Migrates nodes and annotations.
impl/​model/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​model/​jackson/​JacksonModel.java Migrates nodes and string access.
impl/​model/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​model/​jackson/​AbstractJacksonMarshaller.java Removes checked-exception wrappers.
impl/​model/​pom.xml Adds Jackson 3 databind dependency.
impl/​lifecycleevent/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​jackson/​events/​JacksonLifeCyclePublisher.java Simplifies serialization exception handling.
impl/​jwt-impl/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​executors/​http/​oauth/​jackson/​JacksonJWTConverter.java Migrates JWT parsing APIs.
impl/​jwt-impl/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​executors/​http/​jackson/​JacksonModelConverterFactory.java Migrates node import.
impl/​json-utils/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​jackson/​JsonUtilsStaticInitTest.java Migrates test mapper import.
impl/​json-utils/​src/​test/​java/​org/​openworkflow/​sdk/​impl/​jackson/​JacksonCloudEventUtilsTest.java Updates CloudEvents imports and assertions.
impl/​json-utils/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​jackson/​ObjectMapperFactoryProvider.java Builds default Jackson 3 mapper.
impl/​json-utils/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​jackson/​ObjectMapperFactory.java Migrates mapper interface type.
impl/​json-utils/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​jackson/​MergeUtils.java Migrates merge node imports.
impl/​json-utils/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​jackson/​JsonUtils.java Updates node APIs and exceptions.
impl/​json-utils/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​jackson/​JacksonCloudEventUtils.java Migrates CloudEvents conversion.
impl/​json-utils/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​jackson/​FunctionJsonNode.java Migrates node import.
impl/​json-utils/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​jackson/​FunctionBaseJsonNode.java Updates custom node overrides.
impl/​json-utils/​pom.xml Updates databind and CloudEvents dependencies.
impl/​jq/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​expressions/​jq/​JQExpressionFactory.java Migrates CloudEvents data import.
impl/​jq/​src/​main/​java/​org/​openworkflow/​sdk/​impl/​expressions/​jq/​JQExpression.java Migrates expression node imports.
impl/​http/​pom.xml Switches Jersey test provider.
impl/​container/​pom.xml Excludes Docker's Jackson 2 dependencies.
generators/​types/​pom.xml Pins generator Jackson 2 dependencies.
generators/​jackson/​src/​main/​java/​org/​openworkflow/​sdk/​generator/​jackson/​JacksonMixInPojo.java Generates Jackson 3 mix-ins.
generators/​jackson/​src/​main/​java/​org/​openworkflow/​sdk/​generator/​jackson/​GeneratorUtils.java Updates generated serialization APIs.
generators/​jackson/​src/​main/​java/​org/​openworkflow/​sdk/​generator/​graalvm/​ReflectNativeFileHandler.java Migrates metadata mapper imports.
examples/​simpleGet/​pom.xml Switches example Jersey provider.
examples/​pom.xml Manages Jackson 3 Jersey provider.
api/​src/​main/​java/​org/​openworkflow/​sdk/​serialization/​URISerializer.java Migrates URI serializer.
api/​src/​main/​java/​org/​openworkflow/​sdk/​serialization/​URIDeserializer.java Updates URI deserializer and errors.
api/​src/​main/​java/​org/​openworkflow/​sdk/​serialization/​BeanDeserializerWithValidation.java Uses delegating validation deserializer.
api/​src/​main/​java/​org/​openworkflow/​sdk/​serialization/​BeanDeserializerModifierWithValidation.java Updates validation modifier API.
api/​src/​main/​java/​org/​openworkflow/​sdk/​api/​WorkflowFormat.java Migrates mapper import.
api/​src/​main/​java/​org/​openworkflow/​sdk/​api/​ValidationReader.java Migrates validation Jackson imports.
api/​src/​main/​java/​org/​openworkflow/​sdk/​api/​ObjectMapperFactory.java Rebuilds JSON/YAML mapper configuration.
api/​pom.xml Switches YAML dependency coordinates.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread api/src/main/java/org/openworkflow/sdk/api/ObjectMapperFactory.java Outdated
Comment thread impl/pom.xml Outdated
Copilot AI balanced review requested due to automatic review settings October 16, 2026 12:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Container lifetime expiration now propagates a workflow failure, and the port-binding test no longer reliably waits for container creation.

1 open finding
3 resolved since last review

🧠 Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 16, 2026 12:51

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Zero-duration container lifetimes can wait indefinitely, and the port-binding test no longer waits for container availability.

2 open findings

🧠 Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 16, 2026 12:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Container wait failures can be reported as success, and container tests retain polling and lifetime races.

2 open findings
1 resolved since last review

🧠 Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 16, 2026 13:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Container port-binding tests have unresolved polling and lifetime regressions that can cause failures.

1 open finding
1 resolved since last review

🧠 Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 16, 2026 13:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Explicit tree nulls can be lost during serialization, and container tests contain startup and inspection races.

1 open finding
1 resolved since last review

🧠 Review effort: Balanced

Comment thread api/src/main/java/org/openworkflow/sdk/api/ObjectMapperFactory.java Outdated
Copilot AI balanced review requested due to automatic review settings October 16, 2026 13:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The relocated container tests contain a port-inspection race and a timeout assertion that accepts unrelated failures.

0 open findings

1 resolved since last review

🧠 Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 16, 2026 15:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The port-binding fixture exits before inspection, making the relocated integration test unreliable.

0 open findings

Previously missed (1)

In code that hasn't changed since last review

Medium severity Keep the test container running for port binding checks

impl/​container/​src/​test/​resources/​workflows-samples/​container-ports.yaml:11

echo exits immediately, but testPortBindings() polls at one-second intervals before inspecting NetworkSettings.Ports. Docker clears active port bindings when the container stops, so the retained container can be found while the binding assertions fail. Restore a long-running command so the container stays running until the test's finally block removes it.

🧠 Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 16, 2026 15:21
Container test has been moved to container module (so jackson is not
included)
Signed-off-by: Francisco Javier Tirado Sarti <ftirados@ibm.com>
[Fix open-workflow-specification#1763] Replacing deprecated asText by asString

Signed-off-by: Francisco Javier Tirado Sarti <ftirados@ibm.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The breaking serialization migration and Docker lifecycle changes require human integration review alongside the unresolved correctness concerns.

1 open finding

🧠 Review effort: Balanced

Comment thread api/src/main/java/org/openworkflow/sdk/api/ObjectMapperFactory.java
Copilot AI balanced review requested due to automatic review settings October 16, 2026 15:28

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Container tests can pass without exercising timeout cleanup and can fail intermittently because of tight timing assumptions.

1 open finding

🧠 Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 16, 2026 15:42

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The shared parameter-count assertion conflicts with the unchanged Swagger fixture and causes its inherited test to fail.

1 open finding
1 resolved since last review

🧠 Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 16, 2026 15:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The cross-module migration needs integration validation and human review, with container-test reliability concerns still unresolved.

0 open findings

1 resolved since last review

🧠 Review effort: Balanced

Signed-off-by: Francisco Javier Tirado Sarti <ftirados@ibm.com>
Copilot AI balanced review requested due to automatic review settings October 16, 2026 16:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The cross-module breaking migration needs human confirmation of serialization compatibility and integration results, including Docker tests.

0 open findings

🧠 Review effort: Balanced

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate from Jackson 2 to Jackson 3

3 participants