Class TopologicalShapeSort
java.lang.Object
software.amazon.smithy.model.loader.TopologicalShapeSort
Topologically sorts shapes based on their dependencies (i.e., mixins).
While this class is reusable, it is also stateful; shapes and edges are enqueued, and when sorted, all shapes and edges are dequeued.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final class
Thrown when cycles exist between shapes. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionSort the shapes and returns the ordered list of shape IDs.void
Add a shape to the sort queue, and automatically extract dependencies.void
enqueue
(ShapeId shape, Collection<ShapeId> dependencies) Add a shape to the sort queue, and provide an explicit dependencies list.
-
Constructor Details
-
TopologicalShapeSort
public TopologicalShapeSort()
-
-
Method Details
-
enqueue
Add a shape to the sort queue, and automatically extract dependencies.- Parameters:
shape
- Shape to add.
-
enqueue
Add a shape to the sort queue, and provide an explicit dependencies list.- Parameters:
shape
- Shape to add.dependencies
- Dependencies of the shape.
-
dequeueSortedShapes
Sort the shapes and returns the ordered list of shape IDs.- Returns:
- Returns the topologically sorted list of shape IDs.
- Throws:
TopologicalShapeSort.CycleException
- if cycles exist between shapes.
-