Class CorrelationServiceImpl
- java.lang.Object
-
- com.evolveum.midpoint.model.impl.correlation.CorrelationServiceImpl
-
- All Implemented Interfaces:
CorrelationService
@Component public class CorrelationServiceImpl extends Object implements CorrelationService
Provides correlation-related functionality, primarily on top ofCorrelatorinterface: . the correlation itself (`correlate`) - including creation ofCompleteCorrelationResultout of correlator-providedCorrelationResultobject; . 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
Constructors Constructor Description CorrelationServiceImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancheckCandidateOwner(@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).voidclearCorrelationState(@NotNull String shadowOid, @NotNull OperationResult result)Clears the correlation state of a shadow.voidcompleteCorrelationCase(@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 CompleteCorrelationResultcorrelate(@NotNull CorrelatorContext<?> rootCorrelatorContext, @NotNull CorrelationContext correlationContext, @NotNull OperationResult parentResult)Executes the correlation in the standard way.@NotNull CompleteCorrelationResultcorrelate(@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, @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 providingCorrelationCaseDescriptionobject.ObjectTemplateTypedetermineObjectTemplate(@NotNull SynchronizationPolicy synchronizationPolicy, @NotNull FocusType preFocus, @NotNull Task task, @NotNull OperationResult result)Determines object template from pre-focus or from archetype reference.
-
-
-
Method Detail
-
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 CorrelatorContext<?> rootCorrelatorContext, @NotNull @NotNull CorrelationContext correlationContext, @NotNull @NotNull OperationResult parentResult) throws SchemaException, ExpressionEvaluationException, CommunicationException, SecurityViolationException, ConfigurationException, ObjectNotFoundException
Executes the correlation in the standard way.
-
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, ObjectNotFoundExceptionChecks 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:CorrelationServiceDescribes the provided correlation case by providingCorrelationCaseDescriptionobject. 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.CorrelationCaseDescriptionOptionsparameter 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, ObjectNotFoundExceptionDescription copied from interface:CorrelationServiceCompletes given correlation case. Preconditions: - case is freshly fetched, - case is a correlation one- Specified by:
completeCorrelationCasein interfaceCorrelationServicecaseCloser- Makes the case definitely closed. (This functionality must be provided by the caller.)- Throws:
SchemaExceptionExpressionEvaluationExceptionCommunicationExceptionSecurityViolationExceptionConfigurationExceptionObjectNotFoundException
-
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, @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 ObjectNotFoundExceptionClears the correlation state of a shadow. Does not do unlinking (if the shadow is linked)! Only for testing.- Throws:
ObjectNotFoundException
-
determineObjectTemplate
public ObjectTemplateType determineObjectTemplate(@NotNull @NotNull SynchronizationPolicy synchronizationPolicy, @NotNull @NotNull FocusType preFocus, @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
-
-