Class Walker


  • public final class Walker
    extends java.lang.Object
    Walks connected shapes within a Model.

    Any shape that is connected to another shape is "walked". A single shape can have multiple relationships to the same shape. For example, a resource can have both a "get" and a "child" relationship to an operation; however, the referenced operation will appear only once in the walker output.

    Only shapes form a connected graph. Relationships created by traits are not traversed by the walker.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.Iterator<Shape> iterateShapes​(Shape shape)
      Lazily iterates over all of the relationships in the closure of the given shape, including the given shape.
      java.util.Iterator<Shape> iterateShapes​(Shape shape, java.util.function.Predicate<Relationship> predicate)
      Lazily iterates over all of the unique shapes in the closure of the given shape, including the given shape.
      java.util.Set<ShapeId> walkShapeIds​(Shape shape)
      Walks connected shapes in the model, returning their IDs in a set.
      java.util.Set<ShapeId> walkShapeIds​(Shape shape, java.util.function.Predicate<Relationship> predicate)
      Walks connected shapes in the model (including the given shape), and returns a set of shape IDs.
      java.util.Set<Shape> walkShapes​(Shape shape)
      Walks connected shapes in the model, returning them in a set.
      java.util.Set<Shape> walkShapes​(Shape shape, java.util.function.Predicate<Relationship> predicate)
      Walks connected shapes in the model (including the given shape), and returns them in a set.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Walker

        public Walker​(Model model)
        Parameters:
        model - Model to traverse.
      • Walker

        public Walker​(NeighborProvider provider)
        Parameters:
        provider - Neighbor provider used to traverse relationships.
    • Method Detail

      • walkShapes

        public java.util.Set<Shape> walkShapes​(Shape shape)
        Walks connected shapes in the model, returning them in a set.
        Parameters:
        shape - The shape to start the traversal from.
        Returns:
        Returns a set of connected shapes.
      • walkShapes

        public java.util.Set<Shape> walkShapes​(Shape shape,
                                               java.util.function.Predicate<Relationship> predicate)
        Walks connected shapes in the model (including the given shape), and returns them in a set.
        Parameters:
        shape - The shape to start the traversal from.
        predicate - Predicate used to prevent traversing relationships.
        Returns:
        Returns a set of connected shapes.
      • walkShapeIds

        public java.util.Set<ShapeId> walkShapeIds​(Shape shape)
        Walks connected shapes in the model, returning their IDs in a set.
        Parameters:
        shape - The shape to start the traversal from.
        Returns:
        Returns a set of connected shape IDs.
      • walkShapeIds

        public java.util.Set<ShapeId> walkShapeIds​(Shape shape,
                                                   java.util.function.Predicate<Relationship> predicate)
        Walks connected shapes in the model (including the given shape), and returns a set of shape IDs.
        Parameters:
        shape - The shape to start the traversal from.
        predicate - Predicate used to prevent traversing relationships.
        Returns:
        Returns a set of connected shape IDs.
      • iterateShapes

        public java.util.Iterator<Shape> iterateShapes​(Shape shape)
        Lazily iterates over all of the relationships in the closure of the given shape, including the given shape.
        Parameters:
        shape - Shape to find the closure of.
        Returns:
        Returns an iterator of shapes connected to shape.
      • iterateShapes

        public java.util.Iterator<Shape> iterateShapes​(Shape shape,
                                                       java.util.function.Predicate<Relationship> predicate)
        Lazily iterates over all of the unique shapes in the closure of the given shape, including the given shape.
        Parameters:
        shape - Shape to find the closure of.
        predicate - Predicate used to short-circuit relationship branches.
        Returns:
        Returns an iterator of shapes connected to shape.