SCIM Server
Features
- MsAzure sub-attribute-path-references in resource-patch-requests are now supported natively and do not require the workaround-implementation anymore.
- It is now possible to implement and inject custom-workarounds for the patch-implementation if needed. see: https://github.com/Captain-P-Goldfish/SCIM-SDK/wiki/Patching-resources#adding-and-modifying-custom-patch-workarounds-since-1220
- Patch is by default getting the current state of the resource from the
ResourceHandler.getResource(...)
-method and is passing the patched-result toResourceHandler.updateResource(...)
. It is now possible to handle the patch-operations manually. This can be used to reduce the overall payload on the requests and reduce problems with concurrent-patch-requests. see: https://github.com/Captain-P-Goldfish/SCIM-SDK/wiki/Patching-resources#catch-patch-operations-and-handle-them-manually-since-1220 - You can now access the complete attribute-register directly from the
ResourceType
object. Several attribute registers were added:the same attribute-registers are available from the@Getter(AccessLevel.PUBLIC) private Map<SchemaAttribute, List<SchemaAttribute>> complexRegister = new HashMap<>(); @Getter(AccessLevel.PUBLIC) private Map<SchemaAttribute, List<SchemaAttribute>> multivaluedComplexRegister = new HashMap<>(); @Getter(AccessLevel.PUBLIC) private List<SchemaAttribute> readOnlyAttributeRegister = new ArrayList<>(); @Getter(AccessLevel.PUBLIC) private List<SchemaAttribute> immutableAttributeRegister = new ArrayList<>();
Schema
-object - Introduced an interceptor concept with the help of @alexandertokarev. This might e.g. be used to add a partial transactional concept to your implementation if you do not want to make the whole request transactional.
Change of behaviour
- Patch Operations on readOnly-attributes will no longer fail but will be ignored. They will not be passed to the patchHandler anymore. This applies also to sub-attributes of readOnly complex-attributes. So if the sub-attribute has a mutability of readWrite, the parent-attribute is readOnly though the patch-operation is ignored.
Bug Fixes
- Fixed #335
- an error was fixed that caused a
BadRequestException
if a multivalued-complex-attribute was patched with thereplace
operation that marked a new element as primary.
SCIM Client
Features
- A
MetaConfigLoaderBuilder
was added. It is now possible to callscimRequestBuilder.loadMetaConfiguration()
orscimRequestBuilder.loadMetaConfiguration(MetaConfigRequestDetails metaConfigLoaderDetails)
to retrieve all meta-data from the discovery-endpoints of the remote-provider.
Change of behaviour
- The
getAll
-method of theListBuilder
will now correctly stop to retrieve resources when the configuredcount
-limit is reached. If you set a count-value that exceeds themaxCount
value of the remote provider thegetAll
method will continue to send get-requests until the number of configured resources is retrieved as you have configured it.
Bug Fixes
- Fixed a possible
StackOverflow
if thegetAll
-method of theListBuilder
was called. - Fixed lost
BulkResponse
-operations due to a concurrency conflict with handling lists. This did only occur if a lot of bulk-requests were sent with the parameterrunSplittedRequestsParallel=true
. From my experience of operations splitted into 6 parallel requests 4 to 6BulkResponseOperations
were lost. So we have had 100 operations and got 94 to 96 in the result-list. - Patch requests will now also accept responseCode
204
.
Common Modul
Feature
- A new implementation was added to compare
ResourceNodes
based on specific criteria. The classResourceComparator
can be used to compareResourceNodes
partially by adding theSchemaAttritbutes
that should be compared or that should not be compared. You can choose if the given attributes should be included or excluded during comparison.