Class SmartMetadataUtil

java.lang.Object
com.evolveum.midpoint.schema.util.SmartMetadataUtil

public class SmartMetadataUtil extends Object
Utility class for provenance- and validation-related metadata.

Supports: - AI-provided data provenance - System-provided data provenance - Validation error metadata

  • Constructor Details

    • SmartMetadataUtil

      public SmartMetadataUtil()
  • Method Details

    • isMarkedProvenanceProvided

      public static boolean isMarkedProvenanceProvided(@NotNull @NotNull SmartMetadataUtil.ProvenanceKind kind, PrismValue value)
    • markContainerProvenance

      public static void markContainerProvenance(@Nullable @Nullable PrismValue value, @NotNull @NotNull SmartMetadataUtil.ProvenanceKind kind)
    • markAsAiProvided

      @NotNull public static <C extends Containerable> C markAsAiProvided(@NotNull C containerable)
      Convenience variant of markAsAiProvided(PrismValue). Marks the leaf nodes in the whole value.
    • markAsAiProvided

      public static <C extends Containerable> C markAsAiProvided(@NotNull C containerable, ItemPath... paths)
      Convenience variant of markAsAiProvided(PrismValue). Marks the leaf nodes in items in the value (if present).
    • markAsAiProvided

      public static void markAsAiProvided(@Nullable @Nullable PrismValue value)
      Marks all leaf values (i.e. property and reference values) as provided by AI. Uses value metadata to indicate that. Does nothing if the value is null.

      The values themselves must be mutable!

      TODO The question is whether we should also mark the container values as AI-provided.

    • isMarkedAsAiProvided

      public static boolean isMarkedAsAiProvided(@Nullable @Nullable PrismValue value)
    • resolveProvenanceKind

      public static SmartMetadataUtil.ProvenanceKind resolveProvenanceKind(@Nullable @Nullable PrismValue value)
    • unmarkAsAiProvided

      public static void unmarkAsAiProvided(@Nullable @Nullable PrismValue value)
    • markContainerValueAsAiProvided

      public static void markContainerValueAsAiProvided(@Nullable @Nullable PrismContainerValue<?> value)
    • syncAiProvenanceWithChangeIfApplied

      public static void syncAiProvenanceWithChangeIfApplied(@NotNull @NotNull PrismValue newValue, @NotNull @NotNull PrismValue oldValue)
    • markAsSystemProvided

      @NotNull public static <C extends Containerable> C markAsSystemProvided(@NotNull C containerable)
    • markAsSystemProvided

      public static <C extends Containerable> C markAsSystemProvided(@NotNull C containerable, ItemPath... paths)
    • markAsSystemProvided

      public static void markAsSystemProvided(@Nullable @Nullable PrismValue value)
    • isMarkedAsSystemProvided

      public static boolean isMarkedAsSystemProvided(@Nullable @Nullable PrismValue value)
    • unmarkAsSystemProvided

      public static void unmarkAsSystemProvided(@Nullable @Nullable PrismValue value)
    • syncSystemProvenanceWithChangeIfApplied

      public static void syncSystemProvenanceWithChangeIfApplied(@NotNull @NotNull PrismValue newValue, @NotNull @NotNull PrismValue oldValue)
    • markAsInvalid

      public static void markAsInvalid(@Nullable @Nullable PrismValue value, @Nullable @Nullable String validationError)
      Marks leaf values as invalid with an optional validationError.
    • markAsInvalid

      public static <C extends Containerable> C markAsInvalid(@NotNull C containerable, @Nullable @Nullable String error, ItemPath @NotNull ... paths)
    • unmarkAsInvalid

      public static void unmarkAsInvalid(@Nullable @Nullable PrismValue value)
    • unmarkAsInvalid

      public static <C extends Containerable> C unmarkAsInvalid(@NotNull C containerable, ItemPath @NotNull ... paths)
    • isMarkedAsInvalid

      public static boolean isMarkedAsInvalid(@Nullable @Nullable PrismValue value)
      Returns true if the value has validation metadata at the root level.
    • getFilterInvalidMessage

      @Nullable public static @Nullable String getFilterInvalidMessage(@Nullable @Nullable PrismValue value)
      Returns a user-friendly message if the filter is marked as invalid.
    • containsMatchingOriginRefMetadata

      public static boolean containsMatchingOriginRefMetadata(@NotNull @NotNull ProvenanceMetadataType candidate, @NotNull @NotNull ProvenanceMetadataType expected)
      Compares two provenance metadata instances by their originRef OIDs.