Skip to content

Migrate to Jackson 3. #298

Open
kqarryzada wants to merge 4 commits intomasterfrom
DS-51372-upgrade-to-jackson3
Open

Migrate to Jackson 3. #298
kqarryzada wants to merge 4 commits intomasterfrom
DS-51372-upgrade-to-jackson3

Conversation

@kqarryzada
Copy link
Copy Markdown
Collaborator

@kqarryzada kqarryzada commented May 6, 2026

This commit migrates the SCIM SDK from Jackson 2.x APIs to Jackson
3.1.3. The Jackson 3 release made many backwards-incompatible API
changes, so it is no longer feasible to support Jackson 2.x further.
For this reason, the versions have been updated to 6.0.0-SNAPSHOT.

This commit also includes some additional changes. Some are meant for
better alignment with Jackson 3.x defaults, and others take advantage of
the major version bump. These include the following, with more
information available in the CHANGELOG:

  • Updated the default values of the IGNORE_UNKNOWN_FIELDS and
    USE_GMT_CALENDARS properties.
  • Removed the PATCH class and MapperFactory methods that were deprecated
    in 5.1.0.
  • Removed "throws ScimException" declarations from methods which no
    longer throw these exceptions so that application code does not need
    to surround them with try/catch blocks.

Many important updates have been made to the SCIM SDK after the 5.0.0
release was shipped (e.g., bulk requests), so these updates should not
be locked behind a Jackson 3 upgrade. For this reason, this commit was
not included with the changes that shipped in 5.1.0. Instead, this
commit will be shipped as part of a "focused" 6.0.0 release.

Reviewer: dougbulkley
Reviewer: vyhhuang

JiraIssue: DS-51372

Resolves #278

kqarryzada added 2 commits May 6, 2026 11:46
This commit migrates the SCIM SDK from Jackson 2.x APIs to Jackson
3.1.3. The Jackson 3 release made many backwards-incompatible API
changes, so it is no longer feasible to support Jackson 2.x further.
For this reason, the versions have been updated to 6.0.0-SNAPSHOT.

This commit also includes some additional changes. Some are meant for
better alignment with Jackson 3.x defaults, and others take advantage of
the major version bump. These include the following, with more
information available in the CHANGELOG:
* Updated the default values of the IGNORE_UNKNOWN_FIELDS and
  USE_GMT_CALENDARS properties.
* Removed the PATCH class and MapperFactory methods that were deprecated
  in 5.1.0.
* Removed "throws ScimException" declarations from methods which no
  longer throw these exceptions so that application code does not need
  to surround them with try/catch blocks.

Many important updates have been made to the SCIM SDK after the 5.0.0
release was shipped (e.g., bulk requests), so these updates should not
be locked behind a Jackson 3 upgrade. For this reason, this commit was
not included with the changes that shipped in 5.1.0. Instead, this
commit will be shipped as part of a "focused" 6.0.0 release.

Reviewer: dougbulkley
Reviewer: vyhhuang

JiraIssue: DS-51372
@kqarryzada kqarryzada requested review from dougbulkley and vyhhuang May 6, 2026 17:06
@kqarryzada kqarryzada self-assigned this May 6, 2026
Copy link
Copy Markdown
Collaborator Author

@kqarryzada kqarryzada left a comment

Choose a reason for hiding this comment

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

I left a few comments with some background. I was intending to add some more, but GitHub has an active issue right now causing high volumes of inline comment failures.

*/
@JsonAnySetter
protected void setAny(@NotNull final String key,
@NotNull final JsonNode ignoredValue)
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

The setAny() methods are not needed on the bulk classes since these are always ignored in Jackson 3.x now. This was originally placed here for better consistency in 5.1.0.

* and deserializing SCIM JSON objects.
*/
@NotNull
public static JsonMapper createObjectMapper()
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

JsonMapper is a subclass of ObjectMapper, so the following still works. I didn't want to force applications to update this.

ObjectMapper mapper = JsonUtils.createObjectMapper();

"schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ],
"totalResults": 0,
"Resources": []
}""";
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

During validation, I thought this behavior might have regressed in the SCIM SDK. It didn't, but there didn't seem to be a test to prove it, so I added this in.

@pingidentity pingidentity locked and limited conversation to collaborators May 6, 2026
Copy link
Copy Markdown

@dougbulkley dougbulkley left a comment

Choose a reason for hiding this comment

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

Jut downloaded this branch and verified it would build and the tests was successful.

@kqarryzada kqarryzada force-pushed the DS-51372-upgrade-to-jackson3 branch from 504a338 to 0861297 Compare May 7, 2026 16:20
Copy link
Copy Markdown
Collaborator

@vyhhuang vyhhuang left a comment

Choose a reason for hiding this comment

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

These changes look good to me.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upgrade to Jackson 3 for compatibility with Spring 7/Spring Boot 4

3 participants