[midPoint-git] [Evolveum/midpoint] b883f5: Improve shadow attribute volatility support

mederly noreply at github.com
Thu Dec 5 22:08:48 CET 2024


  Branch: refs/heads/feature/attribute-volatility
  Home:   https://github.com/Evolveum/midpoint
  Commit: b883f583f6a5ab35c1706845cd4887f02830792b
      https://github.com/Evolveum/midpoint/commit/b883f583f6a5ab35c1706845cd4887f02830792b
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2024-12-05 (Thu, 05 Dec 2024)

  Changed paths:
    M icf-connectors/dummy-connector/src/main/java/com/evolveum/icf/dummy/connector/AbstractModernObjectDummyConnector.java
    M icf-connectors/dummy-connector/src/main/java/com/evolveum/icf/dummy/connector/AbstractObjectDummyConnector.java
    A icf-connectors/dummy-resource/src/main/java/com/evolveum/icf/dummy/resource/ConnectorOperationHook.java
    M icf-connectors/dummy-resource/src/main/java/com/evolveum/icf/dummy/resource/DummyObject.java
    M icf-connectors/dummy-resource/src/main/java/com/evolveum/icf/dummy/resource/DummyResource.java
    A icf-connectors/dummy-resource/src/main/java/com/evolveum/icf/dummy/resource/HookRegistry.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/internals/InternalsConfig.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/AbstractResourceObjectDefinitionImpl.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/CompositeObjectDefinitionImpl.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceObjectDefinition.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ShadowAttributeDefinition.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ShadowAttributeDefinitionImpl.java
    R infra/schema/src/main/java/com/evolveum/midpoint/schema/result/AsynchronousOperationResult.java
    R infra/schema/src/main/java/com/evolveum/midpoint/schema/result/AsynchronousOperationReturnValue.java
    A infra/schema/src/main/java/com/evolveum/midpoint/schema/result/ResourceOperationStatus.java
    M infra/schema/src/main/resources/xml/ns/public/common/common-provisioning-3.xsd
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/schema/transform/TransformablePropertyDefinition.java
    M model/model-intest/src/test/resources/common/resource-dummy-green.xml
    M model/model-intest/src/test/resources/volatility/resource-dummy-monsterized.xml
    M model/model-intest/src/test/resources/volatility/resource-dummy-volatile.xml
    M provisioning/provisioning-api/src/main/java/com/evolveum/midpoint/provisioning/api/ProvisioningOperationContext.java
    M provisioning/provisioning-api/src/main/java/com/evolveum/midpoint/provisioning/api/ProvisioningService.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ProvisioningContext.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceObjectOperations.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectAddOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectAddReturnValue.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectChange.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectConverter.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectDeleteOperation.java
    A provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectDeleteResult.java
    R provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectDeleteReturnValue.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectFetchOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectLiveSyncChange.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectLocateOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectModifyOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectModifyReturnValue.java
    A provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectOperationResult.java
    A provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectOperationReturnValue.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectProvisioningOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectSearchOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/ResourceObjectUcfModifyOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/PendingOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/ProvisioningOperationState.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/ShadowAddOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/ShadowDeleteOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/ShadowGetOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/ShadowModifyOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/ShadowOperationPropagationHelper.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/ShadowProvisioningOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/ShadowRefreshOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/errors/CommunicationExceptionHandler.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/errors/ConfigurationExceptionHandler.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/errors/ErrorHandler.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/errors/GenericErrorHandler.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/errors/MaintenanceExceptionHandler.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/errors/ObjectAlreadyExistHandler.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/errors/ObjectNotFoundHandler.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/errors/PolicyViolationHandler.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/errors/SchemaExceptionHandler.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/errors/SecurityViolationHandler.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/manager/OperationResultRecorder.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/manager/PendingOperationsHelper.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/manager/ShadowCreator.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/manager/ShadowUpdater.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/AbstractBasicDummyTest.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/AbstractDummyTest.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/TestDummyNegative.java
    A provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/TestDummyVolatility.java
    A provisioning/provisioning-impl/src/test/resources/dummy/dummy-volatility/resource-dummy.xml
    M provisioning/provisioning-impl/testng-integration.xml
    M provisioning/ucf-api/src/main/java/com/evolveum/midpoint/provisioning/ucf/api/ConnectorInstance.java
    M provisioning/ucf-api/src/main/java/com/evolveum/midpoint/provisioning/ucf/api/UcfAddReturnValue.java
    A provisioning/ucf-api/src/main/java/com/evolveum/midpoint/provisioning/ucf/api/UcfDeleteResult.java
    R provisioning/ucf-api/src/main/java/com/evolveum/midpoint/provisioning/ucf/api/UcfDeleteReturnValue.java
    M provisioning/ucf-api/src/main/java/com/evolveum/midpoint/provisioning/ucf/api/UcfModifyReturnValue.java
    A provisioning/ucf-api/src/main/java/com/evolveum/midpoint/provisioning/ucf/api/UcfOperationResult.java
    A provisioning/ucf-api/src/main/java/com/evolveum/midpoint/provisioning/ucf/api/UcfOperationReturnValue.java
    M provisioning/ucf-api/src/main/java/com/evolveum/midpoint/provisioning/ucf/api/connectors/AbstractManualConnectorInstance.java
    M provisioning/ucf-impl-builtin/src/main/java/com/evolveum/midpoint/provisioning/ucf/impl/builtin/async/provisioning/AsyncProvisioningConnectorInstance.java
    M provisioning/ucf-impl-builtin/src/main/java/com/evolveum/midpoint/provisioning/ucf/impl/builtin/async/update/AsyncUpdateConnectorInstance.java
    M provisioning/ucf-impl-connid/src/main/java/com/evolveum/midpoint/provisioning/ucf/impl/connid/ConnectorInstanceConnIdImpl.java
    M repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java
    M repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/asserter/RepoShadowAsserter.java
    M testing/story/src/test/resources/science/resource-dummy-unix.xml
    M testing/story/src/test/resources/science/resource-opendj-ad-simulation.xml
    M testing/story/src/test/resources/unix/resource-opendj-tolerant-aux.xml
    M testing/story/src/test/resources/unix/resource-opendj.xml

  Log Message:
  -----------
  Improve shadow attribute volatility support

This commit adds new schema for attribute volatility, specifying it as
relations between attributes (source->target).

It provides a limited implementation, covering three cases:

- legacy volatility trigger: anything may change when attr X changes,
- "all" volatility trigger: anything may change when any attr changes,
- volatility on create: given attributes may be set/modified on create.

Related:

- Comprehensive support for volatility testing on the dummy resource:
ConnectorOperationHook objects.

- Clarified the ADD operation at the shadows and resource objects levels
so that created attributes and volatile ones are now written to BOTH
high-level and lower-level representations of the object to be added.

As part of this, the auditing is improved now: we audit the actual
object that was sent to the connector plus everything we got back
from the resource (in add operation + when fetching volatiles).

- Simplified return values from ADD, MODIFY, and DELETE operations at
both UCF and "resource objects" levels. The handling of these operations
at the "shadows" levels was simplified as well.

- A bug preventing native reference modifications in "avoid duplicate
values" mode was fixed.

- A rather obsolete code for invoking failure notifications for a narrow
set of schema-related errors in ADD operation was removed. It
complicated the code flow, and was rather an exception than a rule:
nothing like that exists for other operations. If needed, we should
implement the functionality in more generic way.



To unsubscribe from these emails, change your notification settings at https://github.com/Evolveum/midpoint/settings/notifications


More information about the midPoint-svn mailing list