public final class Model extends java.lang.Object implements software.amazon.smithy.utils.ToSmithyBuilder<Model>
Modifier and Type | Class and Description |
---|---|
static class |
Model.Builder
Builder used to create a Model.
|
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
MODEL_VERSION
Specifies the highest supported version of the IDL.
|
Modifier and Type | Method and Description |
---|---|
static ModelAssembler |
assembler()
Assembles and validates a Smithy model from files, nodes, and other
disparate sources.
|
static ModelAssembler |
assembler(java.lang.ClassLoader classLoader)
Creates a
ModelAssembler that is configured to discover traits,
validators, and built-in validators using the given
ClassLoader . |
static Model.Builder |
builder()
Builds an explicitly configured Smithy model.
|
boolean |
equals(java.lang.Object other) |
Shape |
expectShape(ShapeId id)
|
<T extends Shape> |
expectShape(ShapeId id,
java.lang.Class<T> type)
|
java.util.Set<ShapeId> |
getAppliedTraits()
Gets a set of every trait shape ID that is used in the model.
|
<T extends KnowledgeIndex> |
getKnowledge(java.lang.Class<T> type)
Deprecated.
|
<T extends KnowledgeIndex> |
getKnowledge(java.lang.Class<T> type,
java.util.function.Function<Model,T> constructor)
Gets a computed "knowledge index" of a specific type for the model
and caches it for subsequent retrieval.
|
java.util.Map<java.lang.String,Node> |
getMetadata() |
java.util.Optional<Node> |
getMetadataProperty(java.lang.String name)
Gets a metadata property by namespace and name.
|
java.util.Optional<Shape> |
getShape(ShapeId id)
|
java.util.Set<ShapeId> |
getShapeIds()
Gets the immutable set of
ShapeId in the model. |
java.util.Set<Shape> |
getShapesWithTrait(java.lang.Class<? extends Trait> trait)
Gets a set of shapes in the model marked with a specific trait.
|
java.util.Set<Shape> |
getShapesWithTrait(ToShapeId trait)
Gets a set of shapes in the model marked with a specific trait.
|
java.util.Optional<TraitDefinition> |
getTraitDefinition(ToShapeId traitId)
Gets the trait definition of a specific trait shape ID.
|
int |
hashCode() |
boolean |
isTraitApplied(java.lang.Class<? extends Trait> trait)
Returns true if the given trait shape ID was used in the model.
|
java.util.stream.Stream<Shape> |
shapes()
Gets a stream of
Shape s in the index. |
<T extends Shape> |
shapes(java.lang.Class<T> shapeType)
Gets a stream of shapes in the index of a specific type
T . |
Model.Builder |
toBuilder() |
java.util.Set<Shape> |
toSet()
Converts the model to an immutable Set of shapes.
|
public static final java.lang.String MODEL_VERSION
public static Model.Builder builder()
Note that the builder does not validate the correctness of the
model. Use the assembler()
method to build and
validate a model.
assembler()
public static ModelAssembler assembler()
public static ModelAssembler assembler(java.lang.ClassLoader classLoader)
ModelAssembler
that is configured to discover traits,
validators, and built-in validators using the given
ClassLoader
.classLoader
- Class loader used to discover services.public java.util.Optional<Node> getMetadataProperty(java.lang.String name)
name
- Name of the property to retrieve.public java.util.Map<java.lang.String,Node> getMetadata()
public java.util.Optional<TraitDefinition> getTraitDefinition(ToShapeId traitId)
traitId
- ID of the shape to get the trait definition of.public java.util.Set<Shape> getShapesWithTrait(ToShapeId trait)
trait
- Trait shape ID to look for on shapes.public java.util.Set<ShapeId> getShapeIds()
ShapeId
in the model.public java.util.Set<Shape> getShapesWithTrait(java.lang.Class<? extends Trait> trait)
The result is an exact match on trait classes and does not utilize any kind of polymorphic instance of checks.
trait
- Trait class to look for on shapes.public java.util.Set<ShapeId> getAppliedTraits()
public boolean isTraitApplied(java.lang.Class<? extends Trait> trait)
trait
- The trait class to check.public java.util.Optional<Shape> getShape(ShapeId id)
id
- Shape to retrieve by ID.public Shape expectShape(ShapeId id)
id
- Shape to retrieve by ID.ExpectationNotMetException
- if the shape is not found.public <T extends Shape> T expectShape(ShapeId id, java.lang.Class<T> type)
Shape
by ShapeId
and
throws if not found or if the shape is not of the expected type.T
- Expected shape type.id
- Shape to retrieve by ID.type
- Shape type to expect and convert to.ExpectationNotMetException
- if the shape is not found or is not the expected type.public java.util.stream.Stream<Shape> shapes()
Shape
s in the index.public <T extends Shape> java.util.stream.Stream<T> shapes(java.lang.Class<T> shapeType)
T
.
The provided shapeType class must exactly match the class of a
shape in the model in order to be returned from this method;
that is, the provided class must be a concrete subclass of
Shape
and not an abstract class like NumberShape
.
T
- Shape type to stream from the index.shapeType
- Shape type T
to retrieve.T
matching shapeType
.public java.util.Set<Shape> toSet()
public boolean equals(java.lang.Object other)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public Model.Builder toBuilder()
toBuilder
in interface software.amazon.smithy.utils.ToSmithyBuilder<Model>
@Deprecated public <T extends KnowledgeIndex> T getKnowledge(java.lang.Class<T> type)
of
method of the
KnowledgeIndex
you wish to create instead.T
- The type of knowledge index to retrieve.type
- Type of knowledge index to retrieve.public <T extends KnowledgeIndex> T getKnowledge(java.lang.Class<T> type, java.util.function.Function<Model,T> constructor)
This method should not typically be called directly because
KnowledgeIndex classes should all provide a public static of
method that accepts a Model
and returns an instance of the
index by invoking getKnowledge
.
If a KnowledgeIndex
of the given type has not yet been
computed, one will be created using the provided constructor
function that accepts a Model
. Computed knowledge indexes are
cached and returned on subsequent retrievals.
T
- The type of knowledge index to retrieve.type
- Type of knowledge index to retrieve.constructor
- The method used to create type
.