UnboundID SCIM SDK 5.1.0
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.javaclass. 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 thecreateBuilder()method. This provides access to aJsonMapper.Builderobject 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 ofMapperFactoryfor more info. -
Deprecated the
com.unboundid.scim2.server.PATCHannotation 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, thejakarta.ws.rs.PATCHis a better choice that should be used instead. -
Simplified patch processing by adding
applyToResource()on thePatchRequestandPatchOperationclasses. These are an improvement over the existingapply()variants, which require passing inObjectNodeorGenericScimResourceinstances. 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_FIELDSandPatchOperation.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.javathat acceptlongUNIX timestamps andStringlocation values to simplify interaction with other data types. Note that UNIX timestamps will use the UTC timezone. -
Added new
ContentTooLargeExceptionandRateLimitExceptionclasses corresponding to the HTTP 413 and HTTP 429 status codes. -
Added new
status()andstatusInt()method to all exception types. For example, to obtain a string of"400"corresponding to400 BAD REQUEST, useBadRequestException.status(). -
Updated
ErrorResponse.javato print attributes in an order that is more consistent with the example JSON objects presented in RFC 7644. Now,statusis the last attribute printed. -
Added an
EMPTY_CURSORconstant toApiConstants.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.