Class 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 the sensitive 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.

    • Method Detail

      • create

        public static PathFinder create​(Model model)
        Creates a PathFinder that uses the given Model.
        Parameters:
        model - Model to search using a PathFinder.
        Returns:
        Returns the crated PathFinder.
      • 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 a Path 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 a Path 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.