Class CorrelationServiceImpl
java.lang.Object
com.evolveum.midpoint.model.impl.correlation.CorrelationServiceImpl
- All Implemented Interfaces:
CorrelationService
Provides correlation-related functionality, primarily on top of
Correlator
interface:
. the correlation itself (`correlate`) - including creation of CompleteCorrelationResult
out of correlator-provided
CorrelationResult
object;
. determining candidate owner suitability (`checkCandidateOwner`);
. describing the correlation case (`describeCorrelationCase`);
. completing a correlation case;
and further auxiliary methods.-
Nested Class Summary
Nested classes/interfaces inherited from interface com.evolveum.midpoint.model.api.correlation.CorrelationService
CorrelationService.CaseCloser, CorrelationService.CorrelationCaseDescriptionOptions
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
checkCandidateOwner
(@NotNull ShadowType shadowedResourceObject, @NotNull ResourceType resource, @NotNull SynchronizationPolicy synchronizationPolicy, @NotNull FocusType candidateOwner, @NotNull Task task, @NotNull OperationResult result) Checks whether the supplied candidate owner would be the correlation result (if real correlation would take place).void
clearCorrelationState
(@NotNull String shadowOid, @NotNull OperationResult result) Clears the correlation state of a shadow.void
completeCorrelationCase
(@NotNull CaseType currentCase, @NotNull CorrelationService.CaseCloser caseCloser, @NotNull Task task, @NotNull OperationResult result) Completes given correlation case.<F extends FocusType>
FcomputePreFocus
(@NotNull ShadowType shadowedResourceObject, @NotNull ResourceType resource, @NotNull SynchronizationPolicy synchronizationPolicy, @NotNull Class<F> focusClass, @NotNull Task task, @NotNull OperationResult result) @NotNull CompleteCorrelationResult
correlate
(@NotNull CorrelatorContext<?> rootCorrelatorContext, @NotNull CorrelationContext correlationContext, @NotNull OperationResult parentResult) Executes the correlation in the standard way.@NotNull CompleteCorrelationResult
correlate
(@NotNull FocusType preFocus, @Nullable String archetypeOid, @NotNull Set<String> candidateOids, @NotNull CorrelatorDiscriminator discriminator, @NotNull Task task, @NotNull OperationResult result) Correlates the provided (partial) focus object to a set of candidate matches.@NotNull CompleteCorrelationResult
correlate
(@NotNull ShadowType shadowedResourceObject, @NotNull Task task, @NotNull OperationResult result) A limited convenience variant ofcorrelate(CorrelatorContext, CorrelationContext, OperationResult)
that starts with a single shadow only.@NotNull CorrelatorContext<?>
createRootCorrelatorContext
(@NotNull SynchronizationPolicy synchronizationPolicy, @Nullable ObjectTemplateType objectTemplate, @NotNull CorrelatorDiscriminator discriminator, @Nullable SystemConfigurationType systemConfiguration) Creates the root correlator context for given configuration.@NotNull CorrelationCaseDescription<?>
describeCorrelationCase
(@NotNull CorrelatorContext<?> correlatorContext, @NotNull CorrelationContext correlationContext, @NotNull List<ResourceObjectOwnerOptionType> ownerOptionsList, @Nullable CorrelationService.CorrelationCaseDescriptionOptions options, @NotNull Task task, @NotNull OperationResult result) @NotNull CorrelationCaseDescription<?>
describeCorrelationCase
(@NotNull CaseType aCase, @Nullable CorrelationService.CorrelationCaseDescriptionOptions options, @NotNull Task task, @NotNull OperationResult result) Describes the provided correlation case by providingCorrelationCaseDescription
object.determineCorrelatorConfiguration
(@NotNull CorrelatorDiscriminator discriminator, @Nullable String archetypeOid, @NotNull Task task, @NotNull OperationResult result) Instantiates a correlator<F extends FocusType>
ObjectTemplateTypedetermineObjectTemplate
(@Nullable String explicitArchetypeOid, @Nullable FocusType preFocus, @Nullable Class<F> objectType, @NotNull Task task, @NotNull OperationResult result) Determines object template from pre-focus or from archetype reference.
-
Constructor Details
-
CorrelationServiceImpl
public CorrelationServiceImpl()
-
-
Method Details
-
correlate
@NotNull public @NotNull CompleteCorrelationResult correlate(@NotNull @NotNull ShadowType shadowedResourceObject, @NotNull @NotNull Task task, @NotNull @NotNull OperationResult result) throws SchemaException, ExpressionEvaluationException, CommunicationException, SecurityViolationException, ConfigurationException, ObjectNotFoundException A limited convenience variant ofcorrelate(CorrelatorContext, CorrelationContext, OperationResult)
that starts with a single shadow only. Used in special cases, including testing. -
correlate
@NotNull public @NotNull CompleteCorrelationResult correlate(@NotNull @NotNull FocusType preFocus, @Nullable @Nullable String archetypeOid, @NotNull @NotNull Set<String> candidateOids, @NotNull @NotNull CorrelatorDiscriminator discriminator, @NotNull @NotNull Task task, @NotNull @NotNull OperationResult result) throws SchemaException, ExpressionEvaluationException, CommunicationException, SecurityViolationException, ConfigurationException, ObjectNotFoundException Description copied from interface:CorrelationService
Correlates the provided (partial) focus object to a set of candidate matches. TODO finish the method signature- Specified by:
correlate
in interfaceCorrelationService
- Throws:
SchemaException
ExpressionEvaluationException
CommunicationException
SecurityViolationException
ConfigurationException
ObjectNotFoundException
-
correlate
@NotNull public @NotNull CompleteCorrelationResult correlate(@NotNull @NotNull CorrelatorContext<?> rootCorrelatorContext, @NotNull @NotNull CorrelationContext correlationContext, @NotNull @NotNull OperationResult parentResult) throws SchemaException, ExpressionEvaluationException, CommunicationException, SecurityViolationException, ConfigurationException, ObjectNotFoundException Executes the correlation in the standard way. The contexts (CorrelatorContext
andCorrelationContext
) are provided by the caller in order to allow for more flexibility. The caller is responsible for their creation. -
checkCandidateOwner
public boolean checkCandidateOwner(@NotNull @NotNull ShadowType shadowedResourceObject, @NotNull @NotNull ResourceType resource, @NotNull @NotNull SynchronizationPolicy synchronizationPolicy, @NotNull @NotNull FocusType candidateOwner, @NotNull @NotNull Task task, @NotNull @NotNull OperationResult result) throws SchemaException, ExpressionEvaluationException, SecurityViolationException, CommunicationException, ConfigurationException, ObjectNotFoundException Checks whether the supplied candidate owner would be the correlation result (if real correlation would take place). Used for opportunistic synchronization. Why not doing the actual correlation? Because the owner may not exist in repository yet. -
describeCorrelationCase
@NotNull public @NotNull CorrelationCaseDescription<?> describeCorrelationCase(@NotNull @NotNull CaseType aCase, @Nullable @Nullable CorrelationService.CorrelationCaseDescriptionOptions options, @NotNull @NotNull Task task, @NotNull @NotNull OperationResult result) throws SchemaException, ConfigurationException, ExpressionEvaluationException, CommunicationException, SecurityViolationException, ObjectNotFoundException Description copied from interface:CorrelationService
Describes the provided correlation case by providingCorrelationCaseDescription
object. Currently, it . takes the shadow stored in the correlation case (i.e. does NOT fetch it anew), . recomputes inbound mappings (i.e. ignores stored pre-focus), . and processes candidate owners stored in the correlation case (i.e. does NOT search for them again). TheCorrelationService.CorrelationCaseDescriptionOptions
parameter signals if the client wishes to provide also the correlation explanation, or not. (In the future, we may provide options also for behavior in points 1-3 mentioned above.) -
describeCorrelationCase
@VisibleForTesting @NotNull public @NotNull CorrelationCaseDescription<?> describeCorrelationCase(@NotNull @NotNull CorrelatorContext<?> correlatorContext, @NotNull @NotNull CorrelationContext correlationContext, @NotNull @NotNull List<ResourceObjectOwnerOptionType> ownerOptionsList, @Nullable @Nullable CorrelationService.CorrelationCaseDescriptionOptions options, @NotNull @NotNull Task task, @NotNull @NotNull OperationResult result) throws SchemaException, ConfigurationException, ExpressionEvaluationException, CommunicationException, SecurityViolationException, ObjectNotFoundException -
completeCorrelationCase
public void completeCorrelationCase(@NotNull @NotNull CaseType currentCase, @NotNull @NotNull CorrelationService.CaseCloser caseCloser, @NotNull @NotNull Task task, @NotNull @NotNull OperationResult result) throws SchemaException, ExpressionEvaluationException, CommunicationException, SecurityViolationException, ConfigurationException, ObjectNotFoundException Description copied from interface:CorrelationService
Completes given correlation case. Preconditions: - case is freshly fetched, - case is a correlation one- Specified by:
completeCorrelationCase
in interfaceCorrelationService
caseCloser
- Makes the case definitely closed. (This functionality must be provided by the caller.)- Throws:
SchemaException
ExpressionEvaluationException
CommunicationException
SecurityViolationException
ConfigurationException
ObjectNotFoundException
-
computePreFocus
@VisibleForTesting @NotNull public <F extends FocusType> F computePreFocus(@NotNull @NotNull ShadowType shadowedResourceObject, @NotNull @NotNull ResourceType resource, @NotNull @NotNull SynchronizationPolicy synchronizationPolicy, @NotNull @NotNull Class<F> focusClass, @NotNull @NotNull Task task, @NotNull @NotNull OperationResult result) throws SchemaException, ExpressionEvaluationException, SecurityViolationException, CommunicationException, ConfigurationException, ObjectNotFoundException -
createRootCorrelatorContext
@NotNull public @NotNull CorrelatorContext<?> createRootCorrelatorContext(@NotNull @NotNull SynchronizationPolicy synchronizationPolicy, @Nullable @Nullable ObjectTemplateType objectTemplate, @NotNull @NotNull CorrelatorDiscriminator discriminator, @Nullable @Nullable SystemConfigurationType systemConfiguration) throws ConfigurationException, SchemaException Creates the root correlator context for given configuration. -
clearCorrelationState
@VisibleForTesting public void clearCorrelationState(@NotNull @NotNull String shadowOid, @NotNull @NotNull OperationResult result) throws ObjectNotFoundException Clears the correlation state of a shadow. Does not do unlinking (if the shadow is linked)! Only for testing.- Throws:
ObjectNotFoundException
-
determineObjectTemplate
public <F extends FocusType> ObjectTemplateType determineObjectTemplate(@Nullable @Nullable String explicitArchetypeOid, @Nullable @Nullable FocusType preFocus, @Nullable @Nullable Class<F> objectType, @NotNull @NotNull Task task, @NotNull @NotNull OperationResult result) throws SchemaException, ConfigurationException, ObjectNotFoundException Determines object template from pre-focus or from archetype reference. In the future we may allow explicit configuration of the template ref in the `correlation` section. TODO find better place for this method - it most probably does not belong here- Parameters:
explicitArchetypeOid
- If present, it overrides the archetype OID from the pre-focus (that may or may not be there). Used for shadow correlation when specified by the synchronization policy.- Throws:
SchemaException
ConfigurationException
ObjectNotFoundException
-
determineCorrelatorConfiguration
public PathSet determineCorrelatorConfiguration(@NotNull @NotNull CorrelatorDiscriminator discriminator, @Nullable @Nullable String archetypeOid, @NotNull @NotNull Task task, @NotNull @NotNull OperationResult result) throws SchemaException, ConfigurationException, ObjectNotFoundException Description copied from interface:CorrelationService
Instantiates a correlator- Specified by:
determineCorrelatorConfiguration
in interfaceCorrelationService
- Throws:
SchemaException
ConfigurationException
ObjectNotFoundException
-