github Captain-P-Goldfish/SCIM-SDK 1.22.0

latest releases: 1.26.0, 1.25.1, 1.25.0...
8 months ago

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 to ResourceHandler.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:
    @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<>();
    the same attribute-registers are available from the 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 the replace operation that marked a new element as primary.

SCIM Client

Features

  • A MetaConfigLoaderBuilder was added. It is now possible to call scimRequestBuilder.loadMetaConfiguration() or scimRequestBuilder.loadMetaConfiguration(MetaConfigRequestDetails metaConfigLoaderDetails) to retrieve all meta-data from the discovery-endpoints of the remote-provider.

Change of behaviour

  • The getAll-method of the ListBuilder will now correctly stop to retrieve resources when the configured count-limit is reached. If you set a count-value that exceeds the maxCount value of the remote provider the getAll 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 the getAll-method of the ListBuilder 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 parameter runSplittedRequestsParallel=true. From my experience of operations splitted into 6 parallel requests 4 to 6 BulkResponseOperations 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 class ResourceComparator can be used to compare ResourceNodes partially by adding the SchemaAttritbutes that should be compared or that should not be compared. You can choose if the given attributes should be included or excluded during comparison.

Don't miss a new SCIM-SDK release

NewReleases is sending notifications on new releases.