Skip to content

UnboundID SCIM SDK 5.1.0

Choose a tag to compare

@kqarryzada kqarryzada released this 11 May 19:35
· 17 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. The 5.1.0 release can be used for applications that are not yet ready for Jackson 3. The 5.1.0 release contains the following changes:

  • (#107) Added support for bulk operations, requests, and responses as defined by the SCIM standard. To get started with implementing bulk request support for client or server applications, see the documentation in the BulkRequest class, which provides a comprehensive overview of how bulk operations are defined and utilized in the SCIM standard. It also includes notes on how to interface with the new classes, general structures for handling bulk data, useful utility methods, and more.

  • Deprecated getters and setters in the MapperFactory.java class. In Jackson 3, many of the referenced classes (e.g., SerializationFeature.java) have been renamed. The MapperFactory now supports an alternate scheme for adding customizations with the createBuilder() method. This provides access to a JsonMapper.Builder object that can directly take customizations. If your application does not make customizations to the SCIM SDK's object mapper instance, then there is no change required. See the class-level documentation of MapperFactory for more info.

  • Deprecated the com.unboundid.scim2.server.PATCH annotation class from scim2-sdk-server. At the time this class was originally written, JAX-RS did not support a PATCH annotation like it did for other HTTP methods. Now, the jakarta.ws.rs.PATCH is a better choice that should be used instead.

  • Simplified patch processing by adding applyToResource() on the PatchRequest and PatchOperation classes. These are an improvement over the existing apply() variants, which require passing in ObjectNode or GenericScimResource instances. Conversely, the new methods accept any ScimResource object, which is useful since SCIM patch updates almost always target a SCIM resource. For example:

    // Before:
    UserResource user = getUser();
    GenericScimResource genericUser = user.asGenericScimResource();
    patchRequest.apply(genericUser);
    UserResource updatedUser =
        JsonUtils.nodeToValue(genericUser.getObjectNode(), UserResource.class);
    
    // New in 5.1.0: 
    UserResource user = getUser();
    UserResource updatedUser = patchRequest.applyToResource(user);

    The existing apply() methods are not deprecated and may still be used.

  • Added a system property that can use the UTC timezone when converting ISO timestamps from JSON data into Calendar objects. The "GMT+00:00" timezone is still the default in this release, but UTC will be the default in 6.0.0. Note that other existing properties(BaseScimResource.IGNORE_UNKOWN_FIELDS and PatchOperation.APPEND_NEW_PATCH_VALUES_PROPERTY) have been updated so that they can be toggled by a Java system property as well. System property values should be applied before application startup.

  • Added new convenience methods to Meta.java that accept long UNIX timestamps and String location values to simplify interaction with other data types. Note that UNIX timestamps will use the UTC timezone.

  • Added new ContentTooLargeException and RateLimitException classes corresponding to the HTTP 413 and HTTP 429 status codes.

  • Added new status() and statusInt() method to all exception types. For example, to obtain a string of "400" corresponding to 400 BAD REQUEST, use BadRequestException.status().

  • Updated ErrorResponse.java to print attributes in an order that is more consistent with the example JSON objects presented in RFC 7644. Now, status is the last attribute printed.

  • Added an EMPTY_CURSOR constant to ApiConstants.java. This may be used for better code readability for cursor-based pagination when evaluating client cursor values in a null-safe manner.

  • Updated Jackson from 2.20.0 to 2.21.3.