Skip to content

UnboundID SCIM SDK 6.0.0

Latest

Choose a tag to compare

@kqarryzada kqarryzada released this 11 May 19:35
· 13 commits to master since this release

We have just released versions 5.1.0 and 6.0.0 of the UnboundID SCIM 2 SDK. They are available for download from GitHub and the Maven Central Repository. The 6.0.0 release contains everything within 5.1.0, plus support for Jackson version 3. Further background, as well as a migration guide, is available in the wiki: https://github.com/pingidentity/scim2/wiki/Migration-Guide:-Upgrading-to-use-version-6.0.0-(Jackson-3)

(#278) This release of the SCIM SDK uses version 3.1.3 of the Jackson library. This change aligns the SCIM SDK with HTTP libraries such as Spring Framework 7/Spring Boot 4, which are moving away from Jackson 2.x. Jackson 2 can no longer be supported since Jackson 3 contains many backwards-incompatible API changes, design changes, and updated default values. The most notable updates for applications that use the UnboundID SCIM SDK have been highlighted below:

  • DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES has been set to false by default in Jackson 3. The SCIM SDK will no longer throw exceptions when extra unknown fields are present in JSON objects. This behavior is aligned with modern API handling, and provides better resilience for applications interacting with external APIs that may add new fields over time.

  • Jackson exception objects are no longer checked exceptions. In Jackson 2, exceptions were based on java.io.IOException, but in Jackson 3, they are based on java.lang.RuntimeException.

  • Jackson ObjectMappers are now read-only, and their configuration cannot be modified after they have been built with JsonMapper.Builder.build(). To avoid managing object mappers for SCIM uses, always use JsonUtils.createJsonMapper() instead of new ObjectMapper() whenever possible.

  • Many Jackson classes have been moved or renamed. TextNode objects are now StringNode, and JsonProcessingException objects from Jackson 2 no longer exist (these can be replaced with JacksonException). SCIM SDK classes removed or renamed in this release are listed below.

 

Other changes in this release include:

  • Removed the com.unboundid.scim2.server.PATCH annotation class from scim2-sdk-server, which was deprecated in 5.1.0. Applications should use the jakarta.ws.rs.PATCH annotation instead.

  • Removed several fields in the MapperFactory class that were deprecated in 5.1.0. Customizations should be appended to the JsonMapper.Builder object as described by the class-level Javadoc. If you do not customize the SCIM SDK object mapper, no change is required.

  • The default values of two configurable SCIM SDK properties have been updated in this release. For details on how to restore the previous values (not recommended), see the migration guide.

    • BaseScimResource.IGNORE_UNKNOWN_FIELDS is now true by default so that unknown JSON fields on BaseScimResources are ignored instead of throwing exceptions. This change is intended to align with Jackson 3's new default setting for FAIL_ON_UNKNOWN_PROPERTIES (referenced above).
    • DateTimeUtils.USE_GMT_CALENDARS (added in 5.1.0) is now false so that Calendars use the UTC timezone when they are initialized from a JSON timestamp. This is intended to provide better default values, since it is common to use UTC instead of "GMT+00:00", which complicated equals() checks in tests.
  • Renamed JsonProcessingExceptionMapper.java to JacksonExceptionMapper.java to reflect the new naming convention in Jackson.

  • Removed throws ScimException from several methods which no longer threw them. Note that the SCIM SDK still defines ScimException and its subclasses as a checked exception, so this was not changed like Jackson exceptions were. ScimExceptions generally indicate failure cases that should be explicitly handled, such as invalid client requests.

  • DateDeserializer has been updated to support UNIX timestamp values. As a result, JSON values that use UNIX timestamp values can now be set to fields on Java objects that have a Date type.

  • See the 5.1.0 release for other features and improvements.