Package com.evolveum.midpoint.schema.merger
package com.evolveum.midpoint.schema.merger
Supports merging of (usually) configuration beans.
For example, resource inheritance and object type inheritance is implemented here.
Other uses will be considered in the future.
== How to Use
=== Implementors
When you want to create a new merger, you need to just extend
BaseMergeOperation
and implement the merging logic. In most cases, it involves providing the appropriate root-level
ItemMerger to the constructor:
BaseMergeOperation(com.evolveum.midpoint.prism.Containerable, com.evolveum.midpoint.prism.Containerable, GenericItemMerger)
Only in rare cases you will need to implement the merging logic yourself, like in
LimitationsMerger or
ObjectTypeDefinitionMerger.
Some of the mergers operate at the level of objects, for example:
- ResourceMergeOperation (for resources)
- ObjectTemplateMergeOperation (for object templates)
Others are at the level of containerables, like:
- CorrelatorMergeOperation (for correlator definitions)
- SimulationDefinitionMergeOperation (for simulation definitions)
=== Users
After instantiating appropriate BaseMergeOperation, you just call its
BaseMergeOperation.execute() method. Just look for the usages in midPoint code
for inspiration.
== Limitations
The architecture of this package is not finished yet. It is more-or-less an experiment for now.
Some mergers here are custom (handwritten) ones, like SecurityPolicyCustomMerger.
They may be migrated to the generic merger in the future.-
ClassesClassDescriptionBaseMergeOperation<C extends Containerable>Implements the actual merging of two objects (
Containerable) of the same type.Ignores the value in the source object.Does no actual data movement; just requires that the value does exist in the target object.Deprecated.