Class AbstractNodeItemVisitor<CONTEXT,RESULT>

java.lang.Object
dev.metaschema.core.metapath.item.node.AbstractNodeItemVisitor<CONTEXT,RESULT>
Type Parameters:
CONTEXT - the type of data to pass to each visited node
RESULT - the type of result produced by visitation
All Implemented Interfaces:
INodeItemVisitor<CONTEXT,RESULT>
Direct Known Subclasses:
AbstractRecursionPreventingNodeItemVisitor

public abstract class AbstractNodeItemVisitor<CONTEXT,RESULT> extends Object implements INodeItemVisitor<CONTEXT,RESULT>
Used by implementations of this class to visit a sequence of node items in a directed graph, using depth-first ordering.
  • Constructor Details

    • AbstractNodeItemVisitor

      public AbstractNodeItemVisitor()
  • Method Details

    • visit

      public final RESULT visit(@NonNull INodeItemVisitable item, CONTEXT context)
      Visit the provided item.
      Parameters:
      item - the item to visit
      context - provides contextual information for use by the visitor
      Returns:
      the result produced by visiting the item
    • visitFlags

      protected RESULT visitFlags(@NonNull INodeItem item, CONTEXT context)
      Visit any child flags associated with the provided item.
      Parameters:
      item - the item to visit
      context - provides contextual information for use by the visitor
      Returns:
      the result produced by visiting the item's flags
    • visitModelChildren

      protected RESULT visitModelChildren(@NonNull INodeItem item, CONTEXT context)
      Visit any child model items associated with the provided item.
      Parameters:
      item - the item to visit
      context - provides contextual information for use by the visitor
      Returns:
      the result produced by visiting the item's child model items
    • shouldVisitNextChild

      protected boolean shouldVisitNextChild(@NonNull INodeItem parent, @NonNull INodeItem child, RESULT result, CONTEXT context)
      Determine if the child should be visited next, or skipped.
      Parameters:
      parent - the parent of the child to visit next
      child - the next child to visit
      result - the current visitation result
      context - provides contextual information for use by the visitor
      Returns:
      true if the child should be visited, or false if the child should be skipped
    • shouldVisitNextChild

      protected boolean shouldVisitNextChild(@NonNull INodeItem parent, @NonNull IModelNodeItem<?,?> child, RESULT result, CONTEXT context)
      Determine if the child should be visited next, or skipped.
      Parameters:
      parent - the parent of the child to visit next
      child - the next child to visit
      result - the current visitation result
      context - provides contextual information for use by the visitor
      Returns:
      true if the child should be visited, or false if the child should be skipped
    • defaultResult

      protected abstract RESULT defaultResult()
      The initial, default visitation result, which will be used as the basis for aggregating results produced when visiting.
      Returns:
      the default result
      See Also:
    • aggregateResult

      protected RESULT aggregateResult(RESULT first, RESULT second, CONTEXT context)
      Combine two results into a single, aggregate result.
      Parameters:
      first - the original result
      second - the new result to combine with the original result
      context - provides contextual information for use by the visitor
      Returns:
      the combined result
    • visitDocument

      public RESULT visitDocument(IDocumentNodeItem item, CONTEXT context)
      Description copied from interface: INodeItemVisitor
      This callback is called when the IDocumentNodeItem is visited.
      Specified by:
      visitDocument in interface INodeItemVisitor<CONTEXT,RESULT>
      Parameters:
      item - the visited item
      context - provides contextual information for use by the visitor
      Returns:
      the visitation result
    • visitFlag

      public RESULT visitFlag(IFlagNodeItem item, CONTEXT context)
      Description copied from interface: INodeItemVisitor
      This callback is called when an IFlagNodeItem is visited.
      Specified by:
      visitFlag in interface INodeItemVisitor<CONTEXT,RESULT>
      Parameters:
      item - the visited item
      context - provides contextual information for use by the visitor
      Returns:
      the visitation result
    • visitField

      public RESULT visitField(IFieldNodeItem item, CONTEXT context)
      Description copied from interface: INodeItemVisitor
      This callback is called when an IFieldNodeItem is visited.
      Specified by:
      visitField in interface INodeItemVisitor<CONTEXT,RESULT>
      Parameters:
      item - the visited item
      context - provides contextual information for use by the visitor
      Returns:
      the visitation result
    • visitAssembly

      public RESULT visitAssembly(IAssemblyNodeItem item, CONTEXT context)
      Description copied from interface: INodeItemVisitor
      This callback is called when an IAssemblyNodeItem is visited.
      Specified by:
      visitAssembly in interface INodeItemVisitor<CONTEXT,RESULT>
      Parameters:
      item - the visited item
      context - provides contextual information for use by the visitor
      Returns:
      the visitation result
    • visitAssembly

      public RESULT visitAssembly(IAssemblyInstanceGroupedNodeItem item, CONTEXT context)
      Description copied from interface: INodeItemVisitor
      This callback is called when an IAssemblyInstanceGroupedNodeItem is visited.
      Specified by:
      visitAssembly in interface INodeItemVisitor<CONTEXT,RESULT>
      Parameters:
      item - the visited item
      context - provides contextual information for use by the visitor
      Returns:
      the visitation result
    • visitMetaschema

      public RESULT visitMetaschema(IModuleNodeItem item, CONTEXT context)
      Description copied from interface: INodeItemVisitor
      This callback is called when an IModuleNodeItem is visited.
      Specified by:
      visitMetaschema in interface INodeItemVisitor<CONTEXT,RESULT>
      Parameters:
      item - the visited item
      context - provides contextual information for use by the visitor
      Returns:
      the visitation result