Class ConstructionTargetKey

java.lang.Object
com.evolveum.midpoint.model.impl.lens.construction.ConstructionTargetKey
All Implemented Interfaces:
DebugDumpable, HumanReadableDescribable, ShortDumpable, Serializable, Cloneable

public class ConstructionTargetKey extends Object implements Serializable, DebugDumpable, ShortDumpable, HumanReadableDescribable, Cloneable
Specifies the target of resource object construction - i.e. to which projection context it should be applied. It is similar to ProjectionContextKey but 1. resource, kind, and intent are required - we can afford this, because constructions are always targeted at specific resource object type, 2. there is no order nor "gone" flag. Note: the name of this class is a shorted form of `ResourceObjectConstructionTargetKey` (that is just too long/clumsy). *FIXME* There is a slight ambiguity here: a ConstructionTargetKey may point to multiple projection contexts. While the ambiguity of "gone" flag (true/false) is trivial and can be eliminated by simply looking for "not gone" projections, the ambiguity of "order" is more problematic. I.e. what if we assign a construction of resource/account/default, and there are multiple contexts with these coordinates (e.g. with orders 0 and 10)? A naive attempt of using the first "not completed" one fails because of the fact that constructions may be re-evaluated, and - during re-evaluation - they are meant to be attached to projections that are already completed. See LensContext.findFirstNotCompletedProjectionContext(ConstructionTargetKey) and LensContext#findFirstProjectionContext(ConstructionTargetKey). But this ambiguity is here (perhaps) from the beginning.
See Also:
  • Method Details

    • getResourceOid

      @NotNull public @NotNull String getResourceOid()
    • getKind

      @NotNull public @NotNull ShadowKindType getKind()
    • getIntent

      @NotNull public @NotNull String getIntent()
    • getTag

      public String getTag()
    • asFilter

      @NotNull public @NotNull ProjectionContextFilter asFilter()
      Return filter to match this key; `gone` and `order` are irrelevant, `tag` is relevant.
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • 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 interface ShortDumpable
      Parameters:
      sb - StringBuilder to which to a compact one-line content of the object intended for diagnostics by system administrator should be appended.
    • toHumanReadableDescription

      public String toHumanReadableDescription()
      Specified by:
      toHumanReadableDescription in interface HumanReadableDescribable
    • debugDump

      public String debugDump(int indent)
      Specified by:
      debugDump in interface DebugDumpable
    • clone

      public ConstructionTargetKey clone()
      Overrides:
      clone in class Object
    • toProjectionContextKey

      public ProjectionContextKey toProjectionContextKey()
    • getTypeIdentification

      @NotNull public @NotNull ResourceObjectTypeIdentification getTypeIdentification()