pingidentity / scim2

The UnboundID SCIM 2.0 SDK for Java

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

JsonUtils.replaceValue fails when given null value

hauntingEcho opened this issue · comments

Describe the bug
When a function which calls JsonUtils.replaceValue is given a null, an NullPointerException is thrown by UpdatingNodeVisitor when attempting to deepCopy() that null.

To Reproduce
construct a GenericScimResource x and call x.setSchemaUrns(null).

Expected behavior
the Schemas element is removed from the resource

Additional context
This can be necessary to construct a PATCH operation on an overall Group object, in which you don't want to edit the schema URNs.

In the next release of the SCIM SDK, we will have a @NotNull annotation on the inputs of both com.unboundid.scim2.common.ScimResource#setSchemaUrns methods, which will allow the library to explicitly declare that this field should not be null. As you've noted, this was an expectation that was not explicitly made before.

I can't think of a situation where setting this to null would be desirable. In RFC 7644 Section 3.5.2.1, an example group update with the PATCH operation is provided where the schema of the resource is urn:ietf:params:scim:api:messages:2.0:PatchOp, which makes sense because the JSON data represents a SCIM PatchOp. The schema URN of the group resource will not be touched by the update because the schemas attribute is not mentioned in the Operations list.

If I'm misunderstanding the context and there's a better example that highlights the need for this, then please feel free to provide more details.