Releases: pingidentity/scim2
UnboundID SCIM 2 SDK 3.2.0
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.
UnboundID SCIM 2 SDK 3.1.0
We have just released version 3.1.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:
-
Updated all classes within the UnboundID SCIM 2 SDK to utilize
@Nullable
and@NotNull
annotations for all non-primitive input parameters, member variables, and return values. These annotations are designed to assist with the following:- Help provide insight when invoking SCIM SDK library methods
- Help interface with languages like Kotlin (which has built-in null types for variables)
- Help applications become less prone to nullability errors.
Furthermore, the annotations will also appear in the Javadocs. This reflects a similar pattern used by the UnboundID LDAP SDK for Java, though the fully-qualified class names of the annotations are different since they take the form of
com.unboundid.scim2.common.annotations.Nullable
. For more information on leveraging IDE analysis with these annotations, view the README. -
Resolved an issue with replace operations that set the
value
field to an empty array. For example:{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ], "Operations": [ { "op": "replace", "path": "emails[type eq \"work\"]", "value": [] } ] }
When these operations are applied, the SCIM SDK now deletes all matching values of the targeted multi-valued attribute. If the
path
of the replace operation does not have a filter (type eq "work"
in the example above), then the multi-valued attribute will be deleted from the resource.
UnboundID SCIM 2 SDK 3.0.0
We have just released version 3.0.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:
-
Removed support for Java 8. The UnboundID SCIM 2 SDK now requires Java 11 or a later release.
-
Migrated
javax.*
namespaces to use Jakarta EE. Since Oracle has given stewardship of the Java EE project to Eclipse, this change facilitates the usage of these libraries under the Jakarta name, which provides better integration with projects such as Spring Boot 3.0. If your project uses components from JAX-RS or Jersey related to the SCIM SDK, then these references must be updated to match the new method definitions. For example, any code that creates ajavax.ws.rs.client.WebTarget
before passing it to the SCIM SDK will need to provide ajakarta.ws.rs.client.WebTarget
instead. To support this change, the following project dependencies were also upgraded:- Updated
javax.xml.bind-api
tojakarta.xml.bind-api
version 4.0. - Updated
javax.ws.rs-api
tojakarta.ws.rs-api
version 3.1.0 - Updated
javax.annotation-api
tojakarta.annotation-api
version 2.1.1 - Updated Jersey from 2.39.1 to 3.1.3
- Updated
-
Overhauled many of the class-level Javadocs in the scim2-sdk-common package. This provides better descriptions for SCIM entities, SDK-specific constructs (e.g.,
ScimResource
), and more background on SCIM conventions such as filtering. The new documentation also provides better descriptions for how certain classes in the SDK should be used, such as the Filter class. -
Added new constructors for some exception types involving the
scimType
field. This field is empty in many cases, so these new constructors set thescimType
value to benull
with the goal of simplifying the process of creating exceptions. -
Added support for patch operations of type ADD that contain a value selection filter in the path, e.g.,
emails[type eq "work"].value
. This type of request is used by some SCIM service providers to append extra data for multi-valued attributes such asemails
oraddresses
. -
Removed deprecated methods in
PatchOperation.java
andGenericScimResource.java
that utilized multi-valued boolean arrays.
SCIM 2 SDK 2.4.0
We have just released version 2.4.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:
-
Fixed an issue with PatchOperations that prevented setting the
value
field to an empty array. The constructor would previously reject this kind of operation with a BadRequestException. -
Added a variety of methods for providing multi-valued parameters without needing to wrap the arguments into a List. For example, setting a single email on a UserResource used to be done with
user.setEmails(Collections.singletonList(email))
, but this can now be shortened touser.setEmails(email)
. Note that the existing methods are still available and have not been deprecated. Other examples includeBaseScimResource.setSchemaUrns()
,GenericScimResource.addStringValues()
,PatchOperation.addDoubleValues()
, and thePatchRequest
constructor. -
Updated the schema URNs field of
BaseScimResource
to use aLinkedHashSet
instead of a genericHashSet
. This allows for a SCIM resource with multiple schema URNs to have a predictable order when the resource is deserialized into JSON. -
Deprecated methods of the form
addBooleanValues()
andgetBooleanValueList()
on theGenericScimResource
andPatchOperation
classes. These methods provided an interface for so-called "multi-valued boolean arrays", but boolean data is always single-valued in nature. Updating a boolean value should always be done with areplace
operation type rather than anadd
. -
Fixed an issue where
AttributeDefinition.toString()
would not print the mutability of an attribute. -
Added a
type
field to theMember
class as defined by RFC 7643 section 8.7.1. -
Fixed an issue with the attribute definitions of the
members
field of a GroupResource. The attribute definitions now indicate that the sub-attributes ofmembers
are all immutable. -
Fixed an issue where calling
ObjectMapper.copy()
would fail for object mappers that were created withJsonUtils.createObjectMapper()
.
SCIM 2 SDK 2.3.8
We have just released version 2.3.8 of the UnboundID SCIM 2 SDK. It is available for download from GitHub and the Maven Central Repository. This release includes the following changes:
- Updated the deserialized form of ListResponse objects so that the
itemsPerPage
andstartIndex
fields are listed at the top withtotalResults
. This matches the form of ListResponses shown in RFC 7644. - Updated the
PatchOperation
class to accept operation types where the first letter is capitalized, e.g.,"Add"
. This makes the SDK more permissive of operation types that violate RFC 7644, which is a known problem with Azure Active Directory as a SCIM client. - Updated the Jackson and jackson-databind dependencies to 2.14.2.
- Updated the jersey dependency to 2.39.1 to address a
ClassCastException
error.
SCIM 2 SDK 2.3.7
Changes In This Release
- Added ParserOptions class, which may be used to extend the set of characters allowed in filtered
attribute names. - Updated the TestNG dependency to 7.4.0 and corrected its scope from the default 'compile' to 'test'.
SCIM 2 SDK 2.3.6
This release updates the jackson-databind dependency to 2.10.5.1.
SCIM 2 SDK 2.3.5
This release updates the guava version to 29.0-jre which includes the latest known security fixes.
This release and future releases of the SCIM SDK require Java 8 or greater. Java 7 is no longer supported.
SCIM 2 SDK 2.3.4
This release contains a security-related change.
- Fix possible template variable injection within search parameters and returned resource location URLs.
SCIM 2 SDK 2.3.2
This release updates the jackson-databind version to 2.9.10 which includes the latest known security fixes.