Class PathFinder
- java.lang.Object
-
- software.amazon.smithy.model.selector.PathFinder
-
public final class PathFinder extends java.lang.Object
Finds the possible directed relationship paths from a starting shape to shapes connected to the starting shape that match a selector.For example, the
PathFinder
can answer the question of "Where are all of the shapes in the closure of the input of an operation marked with thesensitive
trait?"PathFinder pathFinder = PathFinder.create(myModel); List<PathFinder.Path> results = pathFinder.search(myOperationInput, "[trait|sensitive]");
PathFinder
is directed, meaning it only traverses relationships from shapes that define a relationship to shapes that it targets. In other words,PathFinder
will not traverse relationships from a resource to the resource's parent or from a member to the shape that contains it because those are inverted relationships.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
PathFinder.Path
An immutableRelationship
path from a starting shape to an end shape.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static PathFinder
create(Model model)
Creates aPathFinder
that uses the givenModel
.static PathFinder
create(ShapeIndex index)
Deprecated.java.util.Optional<PathFinder.Path>
createPathToInputMember(ToShapeId operationId, java.lang.String memberName)
Creates aPath
to an operation input member if it exists.java.util.Optional<PathFinder.Path>
createPathToOutputMember(ToShapeId operationId, java.lang.String memberName)
Creates aPath
to an operation output member if it exists.java.util.List<PathFinder.Path>
search(ToShapeId startingShape, java.lang.String targetSelector)
Finds all of the possible paths from the starting shape to all shapes connected to the starting shape that match the given selector.java.util.List<PathFinder.Path>
search(ToShapeId startingShape, Selector targetSelector)
Finds all of the possible paths from the starting shape to all shapes connected to the starting shape that match the given selector.
-
-
-
Method Detail
-
create
public static PathFinder create(Model model)
Creates aPathFinder
that uses the givenModel
.- Parameters:
model
- Model to search using aPathFinder
.- Returns:
- Returns the crated
PathFinder
.
-
create
@Deprecated public static PathFinder create(ShapeIndex index)
Deprecated.
-
search
public java.util.List<PathFinder.Path> search(ToShapeId startingShape, java.lang.String targetSelector)
Finds all of the possible paths from the starting shape to all shapes connected to the starting shape that match the given selector.- Parameters:
startingShape
- Starting shape to find the paths from.targetSelector
- Selector that matches shapes to find the path to.- Returns:
- Returns the list of matching paths.
-
search
public java.util.List<PathFinder.Path> search(ToShapeId startingShape, Selector targetSelector)
Finds all of the possible paths from the starting shape to all shapes connected to the starting shape that match the given selector.- Parameters:
startingShape
- Starting shape to find the paths from.targetSelector
- Selector that matches shapes to find the path to.- Returns:
- Returns the list of matching paths.
-
createPathToInputMember
public java.util.Optional<PathFinder.Path> createPathToInputMember(ToShapeId operationId, java.lang.String memberName)
Creates aPath
to an operation input member if it exists.- Parameters:
operationId
- Operation to start from.memberName
- Input member name to find in the operation input.- Returns:
- Returns the optionally found
Path
to the member.
-
createPathToOutputMember
public java.util.Optional<PathFinder.Path> createPathToOutputMember(ToShapeId operationId, java.lang.String memberName)
Creates aPath
to an operation output member if it exists.- Parameters:
operationId
- Operation to start from.memberName
- Output member name to find in the operation output.- Returns:
- Returns the optionally found
Path
to the member.
-
-