Class Walker
- java.lang.Object
-
- software.amazon.smithy.model.neighbor.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.
-
-
Constructor Summary
Constructors Constructor Description Walker(Model model)
Walker(NeighborProvider provider)
-
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.
-
-
-
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
.
-
-