java.lang.Object
software.amazon.smithy.model.neighbor.Walker

public final class Walker extends 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.

  • Constructor Details

    • Walker

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

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

    • walkShapes

      public 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 Set<Shape> walkShapes(Shape shape, 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 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 Set<ShapeId> walkShapeIds(Shape shape, 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 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 Iterator<Shape> iterateShapes(Shape shape, 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.