[midPoint-git] [Evolveum/midpoint] e9934a: Add a concept of refined object class definitions

mederly noreply at github.com
Fri May 27 13:33:28 CEST 2022


  Branch: refs/heads/feature/refined-object-classes
  Home:   https://github.com/Evolveum/midpoint
  Commit: e9934aa7fa2c58bce9eeded759ef08880d60d7aa
      https://github.com/Evolveum/midpoint/commit/e9934aa7fa2c58bce9eeded759ef08880d60d7aa
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2022-05-27 (Fri, 27 May 2022)

  Changed paths:
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/resource/component/ResourceContentPanel.java
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/home/PageDashboardConfigurable.java
    M infra/common/src/test/java/com/evolveum/midpoint/common/refinery/TestRefinedSchema.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/ResourceShadowCoordinates.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/MidPointSchemaDefinitionFactory.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/MutableResourceSchema.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/RefinedResourceSchemaParser.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceObjectClassDefinition.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceObjectClassDefinitionImpl.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/ResourceObjectPattern.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceObjectTypeDefinition.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceObjectTypeDefinitionImpl.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceSchema.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceSchemaFactory.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceSchemaImpl.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ShadowCoordinatesQualifiedObjectDelta.java
    A infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/deleg/CompositeObjectDefinitionDelegator.java
    A infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/deleg/ResourceObjectClassDefinitionDelegator.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/deleg/ResourceObjectDefinitionDelegator.java
    A infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/deleg/ResourceObjectTypeDefinitionDelegator.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/util/ObjectQueryUtil.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/util/ResourceTypeUtil.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/util/SchemaTestConstants.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/util/ShadowUtil.java
    M infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/TestJaxbParsing.java
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/processor/SchemaProcessorTest.java
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/processor/TestResourceSchema.java
    M infra/test-util/src/main/java/com/evolveum/midpoint/test/ldap/AbstractResourceController.java
    M infra/test-util/src/main/java/com/evolveum/midpoint/test/util/MidPointTestConstants.java
    M infra/test-util/src/main/java/com/evolveum/midpoint/test/util/TestUtil.java
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationTargetSearchExpressionEvaluator.java
    M model/model-common/src/test/java/com/evolveum/midpoint/model/common/mapping/TestMappingDynamicSimple.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/dataModel/dot/DotModel.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/expr/MidpointFunctionsImpl.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/schema/transform/PartiallyMutableComplexTypeDefinition.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/schema/transform/TransformableComplexTypeDefinition.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/sync/tasks/ResourceObjectClass.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/validator/ResourceValidatorImpl.java
    M model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/AbstractInternalModelIntegrationTest.java
    M model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/lens/TestClockwork.java
    M model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/lens/TestPolicyRules.java
    M model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/lens/TestProjector.java
    M model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/lens/TestProjectorRoleEntitlement.java
    M model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/misc/ShadowAttributeIdSyncStoreReadTest.java
    M model/model-impl/src/test/java/com/evolveum/midpoint/model/impl/util/mock/MockFactory.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/AbstractInitializedModelIntegrationTest.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestActivation.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestCaseIgnore.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestEntitlements.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestInbounds.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestIteration.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestPreviewChanges.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/archetypes/TestArchetypes.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/async/TestNotifyChange.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/gensync/TestRoleEntitlement.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/manual/AbstractManualResourceTest.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/manual/TestDummyItsmIntegration.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/mapping/TestMapping.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/mapping/TestMappingAutoInbound.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/multi/TestMultiAccount.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/scripting/TestScriptingBasicNew.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/security/TestSecurityBasic.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/sync/AbstractSynchronizationStoryTest.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/sync/TestImportRecon.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/tasks/TestTaskReporting.java
    M model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java
    M provisioning/provisioning-api/src/main/java/com/evolveum/midpoint/provisioning/api/LiveSyncEventHandler.java
    M provisioning/provisioning-api/src/main/java/com/evolveum/midpoint/provisioning/api/LiveSyncOptions.java
    M provisioning/provisioning-api/src/main/java/com/evolveum/midpoint/provisioning/api/ProvisioningService.java
    M provisioning/provisioning-api/src/main/java/com/evolveum/midpoint/provisioning/api/SynchronizationEvent.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/ProvisioningContextFactory.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ProvisioningServiceImpl.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ShadowCaretaker.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/DelineationProcessor.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resourceobjects/EntitlementConverter.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/ResourceObjectSearchOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/resources/ResourceTestOperation.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/ConstraintsChecker.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/DefinitionsHelper.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/DeleteHelper.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/GetHelper.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/SearchHelper.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/ShadowedChange.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/ShadowsFacade.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/sync/AsyncUpdater.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/shadows/sync/LiveSynchronizer.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/util/ProvisioningUtil.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/async/update/TestAsyncUpdate.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/csv/AbstractCsvTest.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/TestDummy.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/TestDummyCaching.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/TestDummyParallelism.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/TestDummyPrioritiesAndReadReplace.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/TestDummySchemaless.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/TestDummySecurity.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/TestDummyUuidNonUniqueName.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/manual/AbstractManualResourceTest.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/opendj/AbstractOpenDjTest.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/opendj/TestOpenDj.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/opendj/TestOpenDjNegative.java
    M provisioning/ucf-api/src/main/java/com/evolveum/midpoint/provisioning/ucf/api/UcfAsyncUpdateChange.java
    M provisioning/ucf-impl-builtin/src/main/java/com/evolveum/midpoint/provisioning/ucf/impl/builtin/async/update/TransformationalAsyncUpdateMessageListener.java
    M provisioning/ucf-impl-connid/src/main/java/com/evolveum/midpoint/provisioning/ucf/impl/connid/ConnIdCapabilitiesAndSchemaParser.java
    M provisioning/ucf-impl-connid/src/test/java/com/evolveum/midpoint/provisioning/ucf/impl/connid/TestUcfDummy.java
    M provisioning/ucf-impl-connid/src/test/java/com/evolveum/midpoint/provisioning/ucf/impl/connid/TestUcfDummyMulti.java
    M provisioning/ucf-impl-connid/src/test/java/com/evolveum/midpoint/provisioning/ucf/impl/connid/TestUcfOpenDj.java
    M repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionUtil.java
    M repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ExtensionTest.java
    M repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/PerformanceTest.java
    M repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractHigherUnitTest.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/DummyResourceContoller.java
    M repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/IntegrationTestTools.java
    M repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/asserter/refinedschema/RefinedResourceSchemaAsserter.java
    M testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/Abstract389DsDnTest.java
    M testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/AbstractLdapConnTest.java
    M testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/AbstractLdapTest.java
    M testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/ad/AdTestMixin.java
    M testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/ad/multidomain/AbstractAdLdapMultidomainTest.java
    M testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/ad/simple/AbstractAdLdapSimpleTest.java
    M testing/conntest/src/test/java/com/evolveum/midpoint/testing/conntest/opendj/TestOpenDjDn.java
    M testing/longtest/src/test/java/com/evolveum/midpoint/testing/longtest/TestLdapComplex.java
    M testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestEnergy.java
    M testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestLargeGroups.java
    M testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestManyThreads.java
    M testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestNullAttribute.java
    M testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestPlentyOfAssignments.java
    M testing/story/src/test/java/com/evolveum/midpoint/testing/story/consistency/TestConsistencyMechanism.java

  Log Message:
  -----------
  Add a concept of refined object class definitions

In order to allow selected refinements to be applied to the whole object
class on a given resource, here we introduce so-called refined
object class definition. It is configured in new `objectClass`
item in `schemaHandling` (alongside existing `objectType`). It is
just like an abstract object type, but it has no kind nor intent,
that's why it is _not_ an object type: it's a refined object class.

The primary motivation was to cleanly resolve the issue of handling
object-class-scoped operations (typically a search), i.e. those with
the query in the form of "objectClass=X" (no kind/intent). We often
need the refined definition to execute such queries (e.g. to know
attributesToGet), but it cannot be the _type_ definition. Or, well,
it may be, but at the cost of ugly hacking with "default" flags, as
it was done previously.

Work in progress. Implementation is not complete. Tests may fail.

More specifically,

1. Added schemaHandling/objectClass item in XSD.
2. Added "refined" state of ResourceObjectClassDefinitionImpl, with
corresponding changes (i.e. moving methods upwards) in the
AbstractResourceObjectDefinitionImpl sub-hierarchy. Adapted the code
in provisioning-impl module.
3. Added ProvisioningContext#wholeClass flag, to distinguish between
type and class-scoped bulk (search) operations.
4. Attempted to fix abstract delegator classes for subclasses
of ResourceObjectDefinition.

Unrelated changes:

- Some cleanups in the test code, e.g. related to constants for
class/attribute names, qualified names, and paths. We utilize the fact
that all resources have the same namespace of "ri" now.
- Fixed argument for ProvisioningService#synchronize method from
ResourceShadowDiscriminator to ResourceShadowCoordinates.
- Fixed a bug in shared ResourceObjectPattern filter being rewritten
when its expressions are evaluated.




More information about the midPoint-svn mailing list