We have just released version 3.2.0 of the UnboundID SCIM 2 SDK. It is available for download from GitHub and the Maven Central Repository. This release includes the following changes:
-
(#147) Added better customization of the MapperFactory. The MapperFactory class can be used to customize the behavior of the SDK when it converts JSON strings to Java Objects, and vice versa. This release now supports overriding the object mapper returned by the
JsonUtils.createObjectMapper()
method to allow for the addition of custom serializers and deserializers. See the class-level Javadoc ofMapperFactory
for more information on how to accomplish this. -
(#213) Added a property that allows ADD patch operations with value filters to target an existing value. For example, consider the following patch request. This request aims to add a
display
field on a user's work email.{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ], "Operations": [ { "op": "add", "path": "emails[type eq \"work\"].display", "value": "Work Email" } ] }
When the new behavior is configured, this operation will search the resource for an existing "work" email and add a
"display": "Work Email"
field to that email. This behavior allows for better integration with SCIM provisioners that send individual requests such asemails[type eq "work"].display
followed byemails[type eq "work"].value
, which are intended to target the same email. To use this behavior, toggle the property by adding the following Java code in your application:PatchOperation.APPEND_NEW_PATCH_VALUES_PROPERTY = false;
The default value of
APPEND_NEW_PATCH_VALUES_PROPERTY
istrue
, which will always add a new value (i.e., email) on the multi-valued attribute instead of updating an existing value/email. This matches the behavior of the SDK since the 3.0.0 release. -
Refreshed the documentation of the GenericScimResource class to provide better insight on how it can be used to define resource types for objects that don't have a strongly defined schema. The class-level Javadoc describes how to interface with the object effectively, and the methods now provide clearer examples of how they can be used.
-
(#233) Updated the ListResponse class to prevent deserialization errors when the
Resources
array isnull
. This is now permitted whentotalResults
and/oritemsPerPage
is set to 0. RFC 7644 Section 3.4.2 explicitly states that theResources
array may be null whentotalResults
is 0, so the SCIM SDK will no longer throw deserialization exceptions when processing JSON of this form. -
Updated the class-level documentation of
ListResponse
to provide more background about the resource type and how to interface with the object. -
Fixed an issue where
AndFilter.equals()
andOrFilter.equals()
could incorrectly evaluate to true. -
Updated Jackson dependencies to version 2.17.2.