Class EvaluatedAssignmentImpl<AH extends AssignmentHolderType>
- java.lang.Object
-
- com.evolveum.midpoint.model.impl.lens.assignments.EvaluatedAssignmentImpl<AH>
-
- All Implemented Interfaces:
EvaluatedAssignment
,DebugDumpable
,ShortDumpable
,Serializable
public class EvaluatedAssignmentImpl<AH extends AssignmentHolderType> extends Object implements EvaluatedAssignment
Evaluated assignment that contains all constructions and authorizations from the assignment itself and all the applicable inducements from all the roles referenced from the assignment.- Author:
- Radovan Semancik
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from interface com.evolveum.midpoint.util.DebugDumpable
INDENT_STRING
-
-
Constructor Summary
Constructors Constructor Description EvaluatedAssignmentImpl(@NotNull ItemDeltaItem<PrismContainerValue<AssignmentType>,PrismContainerDefinition<AssignmentType>> assignmentIdi, boolean evaluatedOld, @NotNull AssignmentOrigin origin, PrismContext prismContext)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAdminGuiDependency(String oid)
void
addFocusMapping(MappingImpl<?,?> focusMapping)
void
addTargetPolicyRule(EvaluatedPolicyRuleImpl policyRule)
String
debugDump(int indent)
void
evaluateConstructions(ObjectDeltaObject<AH> focusOdoAbsolute, Consumer<ResourceType> resourceConsumer, Task task, OperationResult result)
Evaluates constructions in this assignment.@NotNull PlusMinusZero
getAbsoluteMode()
Returns absolute mode of this assignment with regard to focus old state.@NotNull Collection<AdminGuiConfigurationType>
getAdminGuiConfigurations()
Set<String>
getAdminGuiDependencies()
Set of abstract role OIDs considered for addition of admin gui configuration.@NotNull Collection<AssociatedPolicyRule>
getAllAssociatedPolicyRules()
ReturnsEvaluatedAssignment.getAllTargetsPolicyRules()
plus so-called "foreign policy rules".@NotNull Collection<EvaluatedPolicyRuleImpl>
getAllTargetsPolicyRules()
Returns all policy rules that apply to any of the target objects provided by this assignment (and are derived from this assignment) - even those that were not triggered.int
getAllTargetsPolicyRulesCount()
How many target policy rules are there.@NotNull Collection<PrismReferenceValue>
getArchetypeRefVals()
AssignmentType
getAssignment()
AssignmentType
getAssignment(boolean old)
Long
getAssignmentId()
@NotNull ItemDeltaItem<PrismContainerValue<AssignmentType>,PrismContainerDefinition<AssignmentType>>
getAssignmentIdi()
@NotNull Collection<Authorization>
getAuthorizations()
Collection<AssignedResourceObjectConstruction<AH>>
getConstructionSet(PlusMinusZero whichSet)
@NotNull DeltaSetTriple<AssignedResourceObjectConstruction<AH>>
getConstructionTriple()
@NotNull Collection<PrismReferenceValue>
getDelegationRefVals()
@NotNull DeltaSetTriple<EvaluatedResourceObjectConstruction>
getEvaluatedConstructions(@NotNull Task task, @NotNull OperationResult result)
Construction is not a part of model-api.@NotNull Collection<AssignedFocusMappingEvaluationRequest>
getFocusMappingEvaluationRequests()
@NotNull Collection<MappingImpl<?,?>>
getFocusMappings()
These are evaluated focus mappings.@NotNull List<ForeignPolicyRuleImpl>
getForeignPolicyRules()
@NotNull Collection<PrismReferenceValue>
getMembershipRefVals()
@NotNull PlusMinusZero
getMode()
List<EvaluatedAssignmentTargetImpl>
getNonNegativeTargets()
QName
getNormalizedRelation()
@NotNull Collection<EvaluatedPolicyRuleImpl>
getObjectPolicyRules()
Returns all policy rules that apply to the focal/projections objects and are derived from this assignment - even those that were not triggered.@NotNull Collection<PrismReferenceValue>
getOrgRefVals()
@NotNull AssignmentOrigin
getOrigin()
@NotNull Collection<EvaluatedPolicyRuleImpl>
getOtherTargetsPolicyRules()
Returns all policy rules that apply to some other target object of this assignment (and are derived from this assignment) - even those that were not triggered.@NotNull DeltaSetTriple<PersonaConstruction<AH>>
getPersonaConstructionTriple()
QName
getRelation()
@NotNull DeltaSetTriple<EvaluatedAssignmentTargetImpl>
getRoles()
PrismObject<?>
getTarget()
String
getTenantOid()
@NotNull Collection<EvaluatedPolicyRuleImpl>
getThisTargetPolicyRules()
Returns all policy rules that directly apply to the target object of this assignment (and are derived from this assignment) - even those that were not triggered.boolean
hasPolicyRuleException(@NotNull EvaluatedPolicyRuleImpl rule, @NotNull Collection<EvaluatedPolicyRuleTrigger<?>> triggers)
boolean
isBeingAdded()
Assignment is either being added in the current wave or was added in some of the previous waves.boolean
isBeingDeleted()
Assignment is either being deleted in the current wave or was deleted in some of the previous waves.boolean
isBeingKept()
Assignment was present at the beginning and is not being deleted.boolean
isForceRecon()
boolean
isPresentInCurrentObject()
boolean
isPresentInOldObject()
boolean
isValid()
TODO Define this concept.boolean
isVirtual()
void
registerAsForeignRule(EvaluatedPolicyRuleImpl rule)
Registers a foreign policy rule.void
setForceRecon(boolean forceRecon)
void
setTarget(PrismObject<?> target)
void
setValid(boolean isValid)
void
setWasValid(boolean wasValid)
void
shortDump(StringBuilder sb)
Show the content of the object intended for diagnostics.String
toHumanReadableString()
String
toString()
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.evolveum.midpoint.util.DebugDumpable
debugDump, debugDumpLazily, debugDumpLazily
-
Methods inherited from interface com.evolveum.midpoint.model.api.context.EvaluatedAssignment
getAssignmentType, getAssignmentType
-
Methods inherited from interface com.evolveum.midpoint.util.ShortDumpable
shortDump, shortDumpLazily
-
-
-
-
Constructor Detail
-
EvaluatedAssignmentImpl
public EvaluatedAssignmentImpl(@NotNull @NotNull ItemDeltaItem<PrismContainerValue<AssignmentType>,PrismContainerDefinition<AssignmentType>> assignmentIdi, boolean evaluatedOld, @NotNull @NotNull AssignmentOrigin origin, PrismContext prismContext)
-
-
Method Detail
-
getAssignmentIdi
@NotNull public @NotNull ItemDeltaItem<PrismContainerValue<AssignmentType>,PrismContainerDefinition<AssignmentType>> getAssignmentIdi()
-
getAssignment
public AssignmentType getAssignment()
- Specified by:
getAssignment
in interfaceEvaluatedAssignment
-
getAssignmentId
public Long getAssignmentId()
- Specified by:
getAssignmentId
in interfaceEvaluatedAssignment
-
getAssignment
public AssignmentType getAssignment(boolean old)
- Specified by:
getAssignment
in interfaceEvaluatedAssignment
-
getRelation
public QName getRelation()
- Specified by:
getRelation
in interfaceEvaluatedAssignment
-
getNormalizedRelation
public QName getNormalizedRelation()
- Specified by:
getNormalizedRelation
in interfaceEvaluatedAssignment
-
getConstructionTriple
@NotNull public @NotNull DeltaSetTriple<AssignedResourceObjectConstruction<AH>> getConstructionTriple()
-
getEvaluatedConstructions
@NotNull public @NotNull DeltaSetTriple<EvaluatedResourceObjectConstruction> getEvaluatedConstructions(@NotNull @NotNull Task task, @NotNull @NotNull OperationResult result)
Construction is not a part of model-api. To avoid heavy refactoring at present time, there is not a classical Construction-ConstructionImpl separation, but we use artificial (simplified)EvaluatedResourceObjectConstruction
API class instead.- Specified by:
getEvaluatedConstructions
in interfaceEvaluatedAssignment
-
getConstructionSet
public Collection<AssignedResourceObjectConstruction<AH>> getConstructionSet(PlusMinusZero whichSet)
-
getPersonaConstructionTriple
@NotNull public @NotNull DeltaSetTriple<PersonaConstruction<AH>> getPersonaConstructionTriple()
-
getRoles
@NotNull public @NotNull DeltaSetTriple<EvaluatedAssignmentTargetImpl> getRoles()
- Specified by:
getRoles
in interfaceEvaluatedAssignment
-
getOrgRefVals
@NotNull public @NotNull Collection<PrismReferenceValue> getOrgRefVals()
-
getArchetypeRefVals
@NotNull public @NotNull Collection<PrismReferenceValue> getArchetypeRefVals()
-
getMembershipRefVals
@NotNull public @NotNull Collection<PrismReferenceValue> getMembershipRefVals()
-
getDelegationRefVals
@NotNull public @NotNull Collection<PrismReferenceValue> getDelegationRefVals()
-
getTenantOid
public String getTenantOid()
-
getAuthorizations
@NotNull public @NotNull Collection<Authorization> getAuthorizations()
- Specified by:
getAuthorizations
in interfaceEvaluatedAssignment
-
getAdminGuiConfigurations
@NotNull public @NotNull Collection<AdminGuiConfigurationType> getAdminGuiConfigurations()
- Specified by:
getAdminGuiConfigurations
in interfaceEvaluatedAssignment
-
getFocusMappings
@NotNull public @NotNull Collection<MappingImpl<?,?>> getFocusMappings()
Description copied from interface:EvaluatedAssignment
These are evaluated focus mappings. Since 4.0.1 the evaluation is carried out not during assignment evaluation but afterwards.- Specified by:
getFocusMappings
in interfaceEvaluatedAssignment
-
getFocusMappingEvaluationRequests
@NotNull public @NotNull Collection<AssignedFocusMappingEvaluationRequest> getFocusMappingEvaluationRequests()
-
addFocusMapping
public void addFocusMapping(MappingImpl<?,?> focusMapping)
-
getTarget
public PrismObject<?> getTarget()
- Specified by:
getTarget
in interfaceEvaluatedAssignment
-
setTarget
public void setTarget(PrismObject<?> target)
-
isVirtual
public boolean isVirtual()
-
isValid
public boolean isValid()
Description copied from interface:EvaluatedAssignment
TODO Define this concept. It looks like it mixes ideas of validity (activation, lifecycle state) and relativity mode (condition).- Specified by:
isValid
in interfaceEvaluatedAssignment
-
setValid
public void setValid(boolean isValid)
-
setWasValid
public void setWasValid(boolean wasValid)
-
isForceRecon
public boolean isForceRecon()
-
setForceRecon
public void setForceRecon(boolean forceRecon)
-
evaluateConstructions
public void evaluateConstructions(ObjectDeltaObject<AH> focusOdoAbsolute, Consumer<ResourceType> resourceConsumer, Task task, OperationResult result) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException, SecurityViolationException, ConfigurationException, CommunicationException
Evaluates constructions in this assignment.- Parameters:
focusOdoAbsolute
- Absolute focus ODO. It must not be relative one, because constructions are applied on resource objects. And resource objects' old state is related to focus object old state. (These projections are _not_ changed iteratively, perhaps except for wave restarting.)- Throws:
SchemaException
ExpressionEvaluationException
ObjectNotFoundException
SecurityViolationException
ConfigurationException
CommunicationException
-
getOrigin
@NotNull public @NotNull AssignmentOrigin getOrigin()
-
isPresentInCurrentObject
public boolean isPresentInCurrentObject()
- Specified by:
isPresentInCurrentObject
in interfaceEvaluatedAssignment
-
isPresentInOldObject
public boolean isPresentInOldObject()
- Specified by:
isPresentInOldObject
in interfaceEvaluatedAssignment
-
getObjectPolicyRules
@NotNull public @NotNull Collection<EvaluatedPolicyRuleImpl> getObjectPolicyRules()
Description copied from interface:EvaluatedAssignment
Returns all policy rules that apply to the focal/projections objects and are derived from this assignment - even those that were not triggered. The policy rules are compiled from all the applicable sources (target, meta-roles, etc.)- Specified by:
getObjectPolicyRules
in interfaceEvaluatedAssignment
-
getAllTargetsPolicyRules
@NotNull public @NotNull Collection<EvaluatedPolicyRuleImpl> getAllTargetsPolicyRules()
Description copied from interface:EvaluatedAssignment
Returns all policy rules that apply to any of the target objects provided by this assignment (and are derived from this assignment) - even those that were not triggered. The policy rules are compiled from all the applicable sources (target, meta-roles, etc.) The difference to getThisTargetPolicyRules is that if e.g. jack is a Pirate, and Pirate induces Sailor, then - `getThisTargetPolicyRules` will show rules that are attached to Pirate - `getAllTargetsPolicyRules` will show rules that are attached to Pirate and Sailor - `getOtherTargetsPolicyRules` will show rules that are attached to Sailor- Specified by:
getAllTargetsPolicyRules
in interfaceEvaluatedAssignment
-
getThisTargetPolicyRules
@NotNull public @NotNull Collection<EvaluatedPolicyRuleImpl> getThisTargetPolicyRules()
Description copied from interface:EvaluatedAssignment
Returns all policy rules that directly apply to the target object of this assignment (and are derived from this assignment) - even those that were not triggered. The policy rules are compiled from all the applicable sources (target, meta-roles, etc.)- Specified by:
getThisTargetPolicyRules
in interfaceEvaluatedAssignment
-
getOtherTargetsPolicyRules
@NotNull public @NotNull Collection<EvaluatedPolicyRuleImpl> getOtherTargetsPolicyRules()
Description copied from interface:EvaluatedAssignment
Returns all policy rules that apply to some other target object of this assignment (and are derived from this assignment) - even those that were not triggered. The policy rules are compiled from all the applicable sources (target, meta-roles, etc.)- Specified by:
getOtherTargetsPolicyRules
in interfaceEvaluatedAssignment
-
addTargetPolicyRule
public void addTargetPolicyRule(EvaluatedPolicyRuleImpl policyRule)
-
getAllTargetsPolicyRulesCount
public int getAllTargetsPolicyRulesCount()
Description copied from interface:EvaluatedAssignment
How many target policy rules are there.- Specified by:
getAllTargetsPolicyRulesCount
in interfaceEvaluatedAssignment
-
getForeignPolicyRules
@NotNull public @NotNull List<ForeignPolicyRuleImpl> getForeignPolicyRules()
-
getAllAssociatedPolicyRules
@NotNull public @NotNull Collection<AssociatedPolicyRule> getAllAssociatedPolicyRules()
Description copied from interface:EvaluatedAssignment
ReturnsEvaluatedAssignment.getAllTargetsPolicyRules()
plus so-called "foreign policy rules". Those are rules that are related to this assignment because they contain an exclusion trigger pointing to this assignment as the conflicting one. This is necessary to implement "declare once, use twice" approach where it should be sufficient to declare an exclusion constraint at one of the targets only. See e.g. MID-8269. There are important things to be aware of, though. Please seeAssociatedPolicyRule
for more information.- Specified by:
getAllAssociatedPolicyRules
in interfaceEvaluatedAssignment
-
registerAsForeignRule
public void registerAsForeignRule(EvaluatedPolicyRuleImpl rule)
Registers a foreign policy rule. In theory, the result of this operation may be non-deterministic. Let us assume we have the same policy rule with multiple occurrences pointing to this assignment (as foreign rules). Whatever is evaluated first, ends in this collection. This may result in phantom updates if full policy situation recording is enabled. However, that is an experimental feature anyway.
-
hasPolicyRuleException
public boolean hasPolicyRuleException(@NotNull @NotNull EvaluatedPolicyRuleImpl rule, @NotNull @NotNull Collection<EvaluatedPolicyRuleTrigger<?>> triggers)
-
debugDump
public String debugDump(int indent)
- Specified by:
debugDump
in interfaceDebugDumpable
-
toHumanReadableString
public String toHumanReadableString()
- Specified by:
toHumanReadableString
in interfaceEvaluatedAssignment
-
shortDump
public void shortDump(StringBuilder sb)
Description copied from interface:ShortDumpable
Show the content of the object intended for diagnostics. This method is supposed to append a compact, human-readable output in a single line. Unlike toString() method, there is no requirement to identify the actual class or type of the object. It is assumed that the class/type will be obvious from the context in which the output is used.- Specified by:
shortDump
in interfaceShortDumpable
- Parameters:
sb
- StringBuilder to which to a compact one-line content of the object intended for diagnostics by system administrator should be appended.
-
getNonNegativeTargets
public List<EvaluatedAssignmentTargetImpl> getNonNegativeTargets()
-
getMode
@NotNull @Experimental public @NotNull PlusMinusZero getMode()
- Returns:
- mode (adding, deleting, keeping) with respect to the *current* object (not the old one)
-
getAbsoluteMode
@NotNull public @NotNull PlusMinusZero getAbsoluteMode()
Returns absolute mode of this assignment with regard to focus old state.
-
isBeingAdded
public boolean isBeingAdded()
Description copied from interface:EvaluatedAssignment
Assignment is either being added in the current wave or was added in some of the previous waves.- Specified by:
isBeingAdded
in interfaceEvaluatedAssignment
-
isBeingDeleted
public boolean isBeingDeleted()
Description copied from interface:EvaluatedAssignment
Assignment is either being deleted in the current wave or was deleted in some of the previous waves.- Specified by:
isBeingDeleted
in interfaceEvaluatedAssignment
-
isBeingKept
public boolean isBeingKept()
Description copied from interface:EvaluatedAssignment
Assignment was present at the beginning and is not being deleted.- Specified by:
isBeingKept
in interfaceEvaluatedAssignment
-
getAdminGuiDependencies
public Set<String> getAdminGuiDependencies()
Description copied from interface:EvaluatedAssignment
Set of abstract role OIDs considered for addition of admin gui configuration.- Specified by:
getAdminGuiDependencies
in interfaceEvaluatedAssignment
-
addAdminGuiDependency
public void addAdminGuiDependency(String oid)
-
-