Describe the bug
When using the following code
final PatchRequest patchToBeApplied = new ObjectMapper()
.readValue(patchRequest, PatchRequest.class);
final GenericScimResource resource = new ObjectMapper()
.readValue(resourceJson, GenericScimResource.class);
patchToBeApplied.apply(value);
in the result the nested fields are added instead of replaced.
patchRequest has the following body
{
"Operations": [
{
"op": "replace",
"value": {
"name.familyName": "test",
"name.formatted": "test test2"
}
}
],
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
]
}
something like the following is produced
{
"schemas" : [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" ],
...
...
...
"name" : {
"familyName" : "Young",
"givenName" : "Joy"
},
...
...
...
"name.familyName" : "test",
"name.formatted" : "test test2"
}
To Reproduce
- Given following java code
final PatchRequest patchToBeApplied = new ObjectMapper()
.readValue(patchRequest, PatchRequest.class);
final GenericScimResource resource = new ObjectMapper()
.readValue(resourceJson, GenericScimResource.class);
patchToBeApplied.apply(value);
- With resourceJson set to the following JSON
{
"schemas" : [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" ],
"externalId" : "externalId-1",
"meta" : {
"resourceType" : "User"
},
"userName" : "user1",
"name" : {
"familyName" : "Young",
"givenName" : "Joy"
},
"displayName" : "Joy Young",
"active" : true,
"emails" : [ {
"value" : "user@org.com",
"type" : "work",
"primary" : true
}, {
"value" : "user@org-proxy.com",
"type" : "work",
"primary" : false
} ],
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" : {
"department" : null,
"manager" : null
}
}
- With patchToBeApplied set to
{
"Operations": [
{
"op": "replace",
"value": {
"name.familyName": "test",
"name.formatted": "test test2"
}
}
],
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
]
}
- Result is
{
"schemas" : [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" ],
"externalId" : "externalId-1",
"meta" : {
"resourceType" : "User"
},
"userName" : "user1",
"name" : {
"familyName" : "Young",
"givenName" : "Joy"
},
"displayName" : "Joy Young",
"active" : true,
"emails" : [ {
"value" : "user@org.com",
"type" : "work",
"primary" : true
}, {
"value" : "user@org-proxy.com",
"type" : "work",
"primary" : false
} ],
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" : {
"department" : null,
"manager" : null
},
"name.familyName" : "test",
"name.formatted" : "test test2"
}
Expected behavior
The following pached JSON would be excpected.
{
"schemas" : [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" ],
"externalId" : "externalId-1",
"meta" : {
"resourceType" : "User"
},
"userName" : "user1",
"name" : {
"familyName" : "test",
"givenName" : "Joy",
"formatted" : "test test2"
},
"displayName" : "Joy Young",
"active" : true,
"emails" : [ {
"value" : "user@org.com",
"type" : "work",
"primary" : true
}, {
"value" : "user@org-proxy.com",
"type" : "work",
"primary" : false
} ],
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" : {
"department" : null,
"manager" : null
}
}
Additional context
Add any other context about the problem here. For example:
- JDK version 21
- SCIM 2 SDK version 3.0.0
Edit1: Improve JSON code formatting
Edit2: Add Java sample code
Describe the bug
When using the following code
in the result the nested fields are added instead of replaced.
patchRequest has the following body
something like the following is produced
To Reproduce
Expected behavior
The following pached JSON would be excpected.
Additional context
Add any other context about the problem here. For example:
Edit1: Improve JSON code formatting
Edit2: Add Java sample code