org.eclipse.viatra.query.runtime.rete.traceability

## Class RecipeTraceInfo

- java.lang.Object
- - org.eclipse.viatra.query.runtime.rete.traceability.RecipeTraceInfo

- All Implemented Interfaces:
    TraceInfo
  Direct Known Subclasses:
    ActiveNodeConflictTrace, CompiledQuery, ParameterProjectionTrace, PlanningTrace, UserRequestTrace

      public class RecipeTraceInfo
      extends java.lang.Object
      implements TraceInfo

  A trace marker that indicates the recipe for which the node was built.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `RecipeTraceInfo(ReteNodeRecipe recipe, java.util.Collection<? extends RecipeTraceInfo> parentRecipeTraces)`
    `RecipeTraceInfo(ReteNodeRecipe recipe, RecipeTraceInfo... parentRecipeTraces)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `assignNode(Node node)`
    `Node` | `getNode()`
    `java.util.List<RecipeTraceInfo>` | `getParentRecipeTraces()` For cloning in case of recursion cut-off points, use `getParentRecipeTracesForCloning()` instead.
    `java.util.Collection<? extends RecipeTraceInfo>` | `getParentRecipeTracesForCloning()` Directly return the underlying collection so that changes to it will be transparent.
    `ReteNodeRecipe` | `getRecipe()`
    `ReteNodeRecipe` | `getShadowedRecipe()` Get original recipe shadowed by an equivalent
    `boolean` | `propagateFromIndexerToSupplierParent()`
    `boolean` | `propagateFromStandardNodeToSupplierParent()`
    `boolean` | `propagateToIndexerParent()`
    `boolean` | `propagateToProductionNodeParentAlso()`
    `void` | `shadowWithEquivalentRecipe(ReteNodeRecipe knownRecipe)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### RecipeTraceInfo

          public RecipeTraceInfo(ReteNodeRecipe recipe,
                                 java.util.Collection<? extends RecipeTraceInfo> parentRecipeTraces)

    - #### RecipeTraceInfo

          public RecipeTraceInfo(ReteNodeRecipe recipe,
                                 RecipeTraceInfo... parentRecipeTraces)

  - ### Method Detail

    - #### getRecipe

          public ReteNodeRecipe getRecipe()

    - #### getParentRecipeTraces

          public java.util.List<RecipeTraceInfo> getParentRecipeTraces()

      For cloning in case of recursion cut-off points, use `getParentRecipeTracesForCloning()` instead.
      Returns:
        an unmodifiable view on parent traces, to be constructed before this node (or alongside, in case of recursion)

    - #### getParentRecipeTracesForCloning

          public java.util.Collection<? extends RecipeTraceInfo> getParentRecipeTracesForCloning()

      Directly return the underlying collection so that changes to it will be transparent. Use only for recursion-tolerant cloning.
      No Reference:
        This method is not intended to be referenced by clients.

    - #### getNode

          public Node getNode()

      Specified by:
        `getNode` in interface `TraceInfo`

    - #### propagateToIndexerParent

          public boolean propagateToIndexerParent()

      Specified by:
        `propagateToIndexerParent` in interface `TraceInfo`

    - #### propagateFromIndexerToSupplierParent

          public boolean propagateFromIndexerToSupplierParent()

      Specified by:
        `propagateFromIndexerToSupplierParent` in interface `TraceInfo`

    - #### propagateFromStandardNodeToSupplierParent

          public boolean propagateFromStandardNodeToSupplierParent()

      Specified by:
        `propagateFromStandardNodeToSupplierParent` in interface `TraceInfo`

    - #### propagateToProductionNodeParentAlso

          public boolean propagateToProductionNodeParentAlso()

      Specified by:
        `propagateToProductionNodeParentAlso` in interface `TraceInfo`

    - #### assignNode

          public void assignNode(Node node)

      Specified by:
        `assignNode` in interface `TraceInfo`

    - #### shadowWithEquivalentRecipe

          public void shadowWithEquivalentRecipe(ReteNodeRecipe knownRecipe)

      Parameters:
        `knownRecipe` - a known recipe that is equivalent to the current recipe

    - #### getShadowedRecipe

          public ReteNodeRecipe getShadowedRecipe()

      Get original recipe shadowed by an equivalent