Class Model
- All Implemented Interfaces:
ToSmithyBuilder<Model>
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final class
Builder used to create a Model. -
Field Summary
Modifier and TypeFieldDescriptionstatic final String
Specifies the highest supported version of the IDL. -
Method Summary
Modifier and TypeMethodDescriptionstatic ModelAssembler
Assembles and validates a Smithy model from files, nodes, and other disparate sources.static ModelAssembler
assembler
(ClassLoader classLoader) Creates aModelAssembler
that is configured to discover traits, validators, and built-in validators using the givenClassLoader
.static Model.Builder
builder()
Builds an explicitly configured Smithy model.boolean
expectShape
(ShapeId id) <T extends Shape>
TexpectShape
(ShapeId id, Class<T> type) Gets a set of every trait shape ID that is used in the model.Gets an immutable set of all bigDecimals in the Model.getBigDecimalShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all bigDecimals in the Model that have a specific trait.Gets an immutable set of all bigIntegers in the Model.getBigIntegerShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all bigIntegers in the Model that have a specific trait.Gets an immutable set of all blobs in the Model.getBlobShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all blobs in the Model that have a specific trait.Gets an immutable set of all booleans in the Model.getBooleanShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all booleans in the Model that have a specific trait.Gets an immutable set of all bytes in the Model.getByteShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all bytes in the Model that have a specific trait.Gets an immutable set of all documents in the Model.getDocumentShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all documents in the Model that have a specific trait.Gets an immutable set of all doubles in the Model.getDoubleShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all doubles in the Model that have a specific trait.Gets an immutable set of all enums in the Model.getEnumShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all enums in the Model that have a specific trait.Gets an immutable set of all floats in the Model.getFloatShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all floats in the Model that have a specific trait.Gets an immutable set of all integers in the Model.getIntegerShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all integers in the Model that have a specific trait.Gets an immutable set of all intEnums in the Model.getIntEnumShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all intEnums in the Model that have a specific trait.<T extends KnowledgeIndex>
TgetKnowledge
(Class<T> type) Deprecated.<T extends KnowledgeIndex>
TgetKnowledge
(Class<T> type, Function<Model, T> constructor) Gets a computed "knowledge index" of a specific type for the model and caches it for subsequent retrieval.Gets an immutable set of all lists in the Model.getListShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all lists in the Model that have a specific trait.Gets an immutable set of all longs in the Model.getLongShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all longs in the Model that have a specific trait.Gets an immutable set of all maps in the Model.getMapShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all maps in the Model that have a specific trait.Gets an immutable set of all members in the Model.getMemberShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all members in the Model that have a specific trait.getMetadataProperty
(String name) Gets a metadata property by namespace and name.Gets an immutable set of all operations in the Model.getOperationShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all operations in the Model that have a specific trait.Gets an immutable set of all resources in the Model.getResourceShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all resources in the Model that have a specific trait.Gets an immutable set of all services in the Model.getServiceShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all services in the Model that have a specific trait.Deprecated.getSetShapesWithTrait
(Class<? extends Trait> trait) Deprecated.Gets the immutable set ofShapeId
in the model.getShapesWithTrait
(Class<? extends Trait> trait) Gets a set of shapes in the model marked with a specific trait.getShapesWithTrait
(ToShapeId trait) Gets a set of shapes in the model marked with a specific trait.Gets an immutable set of all shorts in the Model.getShortShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all shorts in the Model that have a specific trait.Gets an immutable set of all strings in the Model.getStringShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all strings in the Model that have a specific trait.Gets an immutable set of all structures in the Model.getStructureShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all structures in the Model that have a specific trait.Gets an immutable set of all timestamps in the Model.getTimestampShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all timestamps in the Model that have a specific trait.getTraitDefinition
(ToShapeId traitId) Gets the trait definition of a specific trait shape ID.Gets an immutable set of all unions in the Model.getUnionShapesWithTrait
(Class<? extends Trait> trait) Gets an immutable set of all unions in the Model that have a specific trait.int
hashCode()
boolean
isTraitApplied
(Class<? extends Trait> trait) Returns true if the given trait shape ID was used in the model.shapes()
Gets a stream ofShape
s in the index.Gets a stream of shapes in the index of a specific typeT
.Take this object and create a builder that contains all of the current property values of this object.toSet()
Converts the model to an immutable Set of shapes.Gets an immutable Set of shapes of a specific type.
-
Field Details
-
MODEL_VERSION
Specifies the highest supported version of the IDL.- See Also:
-
-
Method Details
-
builder
Builds an explicitly configured Smithy model.Note that the builder does not validate the correctness of the model. Use the
assembler()
method to build and validate a model.- Returns:
- Returns a model builder.
- See Also:
-
assembler
Assembles and validates a Smithy model from files, nodes, and other disparate sources.- Returns:
- Returns a model assembler.
-
assembler
Creates aModelAssembler
that is configured to discover traits, validators, and built-in validators using the givenClassLoader
.- Parameters:
classLoader
- Class loader used to discover services.- Returns:
- Returns a model assembler.
-
getMetadataProperty
Gets a metadata property by namespace and name.- Parameters:
name
- Name of the property to retrieve.- Returns:
- Returns the optional property.
-
getMetadata
- Returns:
- Gets the unmodifiable metadata of the model across all namespaces.
-
getTraitDefinition
Gets the trait definition of a specific trait shape ID.- Parameters:
traitId
- ID of the shape to get the trait definition of.- Returns:
- Returns the optionally found trait definition.
-
getShapesWithTrait
Gets a set of shapes in the model marked with a specific trait.- Parameters:
trait
- Trait shape ID to look for on shapes.- Returns:
- Returns the immutable set of matching shapes.
-
getShapeIds
Gets the immutable set ofShapeId
in the model.- Returns:
- Returns the shape IDs.
-
getShapesWithTrait
Gets a set of shapes in the model marked with a specific trait.The result is an exact match on trait classes and does not utilize any kind of polymorphic instance of checks.
- Parameters:
trait
- Trait class to look for on shapes.- Returns:
- Returns the immutable set of matching shapes.
-
getBigDecimalShapes
Gets an immutable set of all bigDecimals in the Model.- Returns:
- Returns the Set of
bigDecimals
s.
-
getBigDecimalShapesWithTrait
Gets an immutable set of all bigDecimals in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
bigdecimal
s that have a specific trait.
-
getBigIntegerShapes
Gets an immutable set of all bigIntegers in the Model.- Returns:
- Returns the Set of
bigIntegers
s.
-
getBigIntegerShapesWithTrait
Gets an immutable set of all bigIntegers in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
bigIntegers
s that have a specific trait.
-
getBlobShapes
Gets an immutable set of all blobs in the Model.- Returns:
- Returns the Set of
blob
s.
-
getBlobShapesWithTrait
Gets an immutable set of all blobs in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
blob
s that have a specific trait.
-
getBooleanShapes
Gets an immutable set of all booleans in the Model.- Returns:
- Returns the Set of
boolean
s.
-
getBooleanShapesWithTrait
Gets an immutable set of all booleans in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
boolean
s that have a specific trait.
-
getByteShapes
Gets an immutable set of all bytes in the Model.- Returns:
- Returns the Set of
byte
s.
-
getByteShapesWithTrait
Gets an immutable set of all bytes in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
byte
s that have a specific trait.
-
getDocumentShapes
Gets an immutable set of all documents in the Model.- Returns:
- Returns the Set of
document
s.
-
getDocumentShapesWithTrait
Gets an immutable set of all documents in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
document
s that have a specific trait.
-
getDoubleShapes
Gets an immutable set of all doubles in the Model.- Returns:
- Returns the Set of
double
s.
-
getDoubleShapesWithTrait
Gets an immutable set of all doubles in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
double
s that have a specific trait.
-
getFloatShapes
Gets an immutable set of all floats in the Model.- Returns:
- Returns the Set of
float
s.
-
getFloatShapesWithTrait
Gets an immutable set of all floats in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
float
s that have a specific trait.
-
getIntegerShapes
Gets an immutable set of all integers in the Model.- Returns:
- Returns the Set of
integer
s.
-
getIntegerShapesWithTrait
Gets an immutable set of all integers in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
integer
s that have a specific trait.
-
getIntEnumShapes
Gets an immutable set of all intEnums in the Model.- Returns:
- Returns the Set of
intEnum
s.
-
getIntEnumShapesWithTrait
Gets an immutable set of all intEnums in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
intEnum
s that have a specific trait.
-
getListShapes
Gets an immutable set of all lists in the Model.- Returns:
- Returns the Set of
list
s.
-
getListShapesWithTrait
Gets an immutable set of all lists in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
list
s that have a specific trait.
-
getLongShapes
Gets an immutable set of all longs in the Model.- Returns:
- Returns the Set of
long
s.
-
getLongShapesWithTrait
Gets an immutable set of all longs in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
long
s that have a specific trait.
-
getMapShapes
Gets an immutable set of all maps in the Model.- Returns:
- Returns the Set of
map
s.
-
getMapShapesWithTrait
Gets an immutable set of all maps in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
map
s that have a specific trait.
-
getMemberShapes
Gets an immutable set of all members in the Model.- Returns:
- Returns the Set of
member
s.
-
getMemberShapesWithTrait
Gets an immutable set of all members in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
member
s that have a specific trait.
-
getOperationShapes
Gets an immutable set of all operations in the Model.- Returns:
- Returns the Set of
operation
s.
-
getOperationShapesWithTrait
Gets an immutable set of all operations in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
operation
s that have a specific trait.
-
getResourceShapes
Gets an immutable set of all resources in the Model.- Returns:
- Returns the Set of
resource
s.
-
getResourceShapesWithTrait
Gets an immutable set of all resources in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
resource
s that have a specific trait.
-
getServiceShapes
Gets an immutable set of all services in the Model.- Returns:
- Returns the Set of
service
s.
-
getServiceShapesWithTrait
Gets an immutable set of all services in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
service
s that have a specific trait.
-
getSetShapes
Deprecated.Gets an immutable set of all sets in the Model.- Returns:
- Returns the Set of
set
s.
-
getSetShapesWithTrait
Deprecated.Gets an immutable set of all sets in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
set
s that have a specific trait.
-
getShortShapes
Gets an immutable set of all shorts in the Model.- Returns:
- Returns the Set of
short
s.
-
getShortShapesWithTrait
Gets an immutable set of all shorts in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
short
s that have a specific trait.
-
getStringShapes
Gets an immutable set of all strings in the Model.- Returns:
- Returns the Set of
string
s.
-
getStringShapesWithTrait
Gets an immutable set of all strings in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
string
s that have a specific trait.
-
getEnumShapes
Gets an immutable set of all enums in the Model.- Returns:
- Returns the Set of
enum
s.
-
getEnumShapesWithTrait
Gets an immutable set of all enums in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
enum
s that have a specific trait.
-
getStructureShapes
Gets an immutable set of all structures in the Model.- Returns:
- Returns the Set of
structure
s.
-
getStructureShapesWithTrait
Gets an immutable set of all structures in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
structure
s that have a specific trait.
-
getTimestampShapes
Gets an immutable set of all timestamps in the Model.- Returns:
- Returns the Set of
timestamp
s.
-
getTimestampShapesWithTrait
Gets an immutable set of all timestamps in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
timestamp
s that have a specific trait.
-
getUnionShapes
Gets an immutable set of all unions in the Model.- Returns:
- Returns the Set of
union
s.
-
getUnionShapesWithTrait
Gets an immutable set of all unions in the Model that have a specific trait.- Parameters:
trait
- The exact trait class to look for on shapes.- Returns:
- Returns the set of
union
s that have a specific trait.
-
getAppliedTraits
Gets a set of every trait shape ID that is used in the model.- Returns:
- Returns the shape IDs of traits used in the model.
-
isTraitApplied
Returns true if the given trait shape ID was used in the model.- Parameters:
trait
- The trait class to check.- Returns:
- Returns true if the trait was used in the model.
-
getShape
- Parameters:
id
- Shape to retrieve by ID.- Returns:
- Returns the optional shape.
-
expectShape
- Parameters:
id
- Shape to retrieve by ID.- Returns:
- Returns the shape.
- Throws:
ExpectationNotMetException
- if the shape is not found.
-
expectShape
Attempts to retrieve aShape
byShapeId
and throws if not found or if the shape is not of the expected type.- Type Parameters:
T
- Expected shape type.- Parameters:
id
- Shape to retrieve by ID.type
- Shape type to expect and convert to.- Returns:
- Returns the shape.
- Throws:
ExpectationNotMetException
- if the shape is not found or is not the expected type.
-
shapes
Gets a stream ofShape
s in the index.- Returns:
- Returns a stream of shapes.
-
shapes
Gets a stream of shapes in the index of a specific typeT
.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 likeNumberShape
.- Type Parameters:
T
- Shape type to stream from the index.- Parameters:
shapeType
- Shape typeT
to retrieve.- Returns:
- A stream of shapes of
T
matchingshapeType
.
-
toSet
Gets an immutable Set of shapes of a specific type.- Type Parameters:
T
- Shape type to get from the index.- Parameters:
shapeType
- Type of shape to get a set of.- Returns:
- Returns an unmodifiable set of shapes.
-
toSet
Converts the model to an immutable Set of shapes.- Returns:
- Returns an unmodifiable set of shapes.
-
equals
-
hashCode
public int hashCode() -
toBuilder
Description copied from interface:ToSmithyBuilder
Take this object and create a builder that contains all of the current property values of this object.- Specified by:
toBuilder
in interfaceToSmithyBuilder<Model>
- Returns:
- a builder for type T
-
getKnowledge
Deprecated.This method is deprecated. Use theof
method of theKnowledgeIndex
you wish to create instead.- Type Parameters:
T
- The type of knowledge index to retrieve.- Parameters:
type
- Type of knowledge index to retrieve.- Returns:
- Returns the computed knowledge index.
-
getKnowledge
Gets a computed "knowledge index" of a specific type for the model and caches it for subsequent retrieval.This method should not typically be called directly because KnowledgeIndex classes should all provide a public static
of
method that accepts aModel
and returns an instance of the index by invokinggetKnowledge
.If a
KnowledgeIndex
of the given type has not yet been computed, one will be created using the providedconstructor
function that accepts aModel
. Computed knowledge indexes are cached and returned on subsequent retrievals.- Type Parameters:
T
- The type of knowledge index to retrieve.- Parameters:
type
- Type of knowledge index to retrieve.constructor
- The method used to createtype
.- Returns:
- Returns the computed knowledge index.
-