Class ArchetypeRefClause
java.lang.Object
com.evolveum.midpoint.schema.selector.spec.SelectorClause
com.evolveum.midpoint.schema.selector.spec.ArchetypeRefClause
- All Implemented Interfaces:
DebugDumpable,Serializable
Processes the `archetypeRef` clause. For checking assignments vs effective archetype references, please see
javadoc for
matches(PrismValue, MatchingContext) method.- See Also:
-
Field Summary
Fields inherited from interface com.evolveum.midpoint.util.DebugDumpable
INDENT_STRING -
Method Summary
Modifier and TypeMethodDescription@NotNull StringgetName()Human-understandable name to be used e.g. in tracing messages.booleanmatches(@NotNull PrismValue value, @NotNull MatchingContext ctx) Determines whether the archetype(s) do match the selector.booleantoFilter(@NotNull FilteringContext ctx) Currently, we act upon the effective archetypeRef value, not the value in assignments.toString()Methods inherited from class com.evolveum.midpoint.schema.selector.spec.SelectorClause
debugDump, requiresFullInformationMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.evolveum.midpoint.util.DebugDumpable
debugDump, debugDumpLazily, debugDumpLazily
-
Method Details
-
getName
Description copied from class:SelectorClauseHuman-understandable name to be used e.g. in tracing messages.- Specified by:
getNamein classSelectorClause
-
matches
Determines whether the archetype(s) do match the selector. We intentionally check assignments instead of "effective" archetype OIDs here. The reasons are: 1. When GUI creates an object, it sets the assignment, not the archetypeRef. 2. Deltas that change the archetype refer to the assignment, not the archetypeRef. (This is important when determining whether we are leaving the zone of control.) The #1 could be worked around by setting the archetypeRef before autz are checked. However, the #2 is more serious. To be seen if this is the correct way forward. An alternative would be to compute the effective object content (archetypeRef, but also e.g. parentOrgRef) before the actual matching. However, this could be quite complex and expensive. So, currently we have no option other than matching the assignments values.- Specified by:
matchesin classSelectorClause
-
toFilter
Currently, we act upon the effective archetypeRef value, not the value in assignments. It should be far more efficient when running against the repository. Moreover, in the repository, it should be equivalent, as the effective value should precisely reflect the assignments' values there.- Specified by:
toFilterin classSelectorClause- Throws:
SchemaException- See Also:
-
toString
-