Class Shape
- java.lang.Object
-
- software.amazon.smithy.model.shapes.Shape
-
- All Implemented Interfaces:
java.lang.Comparable<Shape>
,FromSourceLocation
,ToShapeId
,Tagged
- Direct Known Subclasses:
CollectionShape
,EntityShape
,MapShape
,MemberShape
,OperationShape
,SimpleShape
,StructureShape
,UnionShape
public abstract class Shape extends java.lang.Object implements FromSourceLocation, Tagged, ToShapeId, java.lang.Comparable<Shape>
AShape
defines a model component.A
Shape
may have an arbitrary number of typed traits attached to it, allowing additional information to be associated with the shape.Shape does implement
Comparable
, but comparisons are based solely on the ShapeId of the shape. This assumes that shapes are being compared in the context of a Model that forbids shape ID conflicts.
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description abstract <R> R
accept(ShapeVisitor<R> visitor)
Dispatches the shape to the appropriateShapeVisitor
method.java.util.Optional<BigDecimalShape>
asBigDecimalShape()
java.util.Optional<BigIntegerShape>
asBigIntegerShape()
java.util.Optional<BlobShape>
asBlobShape()
java.util.Optional<BooleanShape>
asBooleanShape()
java.util.Optional<ByteShape>
asByteShape()
java.util.Optional<DocumentShape>
asDocumentShape()
java.util.Optional<DoubleShape>
asDoubleShape()
java.util.Optional<EnumShape>
asEnumShape()
java.util.Optional<FloatShape>
asFloatShape()
java.util.Optional<IntegerShape>
asIntegerShape()
java.util.Optional<IntEnumShape>
asIntEnumShape()
java.util.Optional<ListShape>
asListShape()
java.util.Optional<LongShape>
asLongShape()
java.util.Optional<MapShape>
asMapShape()
java.util.Optional<MemberShape>
asMemberShape()
java.util.Optional<OperationShape>
asOperationShape()
java.util.Optional<ResourceShape>
asResourceShape()
java.util.Optional<ServiceShape>
asServiceShape()
java.util.Optional<SetShape>
asSetShape()
Deprecated.java.util.Optional<ShortShape>
asShortShape()
java.util.Optional<StringShape>
asStringShape()
java.util.Optional<StructureShape>
asStructureShape()
java.util.Optional<TimestampShape>
asTimestampShape()
java.util.Optional<UnionShape>
asUnionShape()
int
compareTo(Shape other)
boolean
equals(java.lang.Object o)
<T extends Trait>
TexpectTrait(java.lang.Class<T> traitClass)
Gets specificTrait
by class from the shape or throws if not found.java.util.Optional<Trait>
findMemberTrait(Model model, java.lang.String traitName)
Gets a trait from the member shape or from the shape targeted by the member.java.util.Optional<Trait>
findTrait(java.lang.String id)
Attempts to find a trait applied to the shape by ID.java.util.Optional<Trait>
findTrait(ShapeId id)
Attempts to find a trait applied to the shape by name.java.util.Map<java.lang.String,MemberShape>
getAllMembers()
Gets the members of the shape, including mixin members.java.util.Map<ShapeId,Trait>
getAllTraits()
Gets all of the traits attached to the shape.ShapeId
getId()
Get theShapeId
of the shape.java.util.Map<ShapeId,Trait>
getIntroducedTraits()
Gets the traits introduced by the shape and not inherited from mixins.java.util.Optional<MemberShape>
getMember(java.lang.String name)
Get a specific member by name.java.util.List<java.lang.String>
getMemberNames()
Returns an ordered list of member names based on the order they are defined in the model, including mixin members.<T extends Trait>
java.util.Optional<T>getMemberTrait(Model model, java.lang.Class<T> trait)
Gets a trait from the member shape or from the shape targeted by the member.java.util.Set<ShapeId>
getMixins()
Get an ordered set of mixins attached to the shape.protected MemberShape[]
getRequiredMembers(AbstractShapeBuilder<?,?> builder, java.lang.String... requiredMembersNames)
SourceLocation
getSourceLocation()
Gets the source location of a value.java.util.List<java.lang.String>
getTags()
Gets the tags applied to an object.<T extends Trait>
java.util.Optional<T>getTrait(java.lang.Class<T> traitClass)
Attempt to retrieve a specificTrait
by class from the shape.abstract ShapeType
getType()
Gets the type of the shape.int
hashCode()
boolean
hasTrait(java.lang.Class<? extends Trait> traitClass)
Checks if the shape has a specific trait by class.boolean
hasTrait(java.lang.String id)
Checks if the shape has a specific trait by name.boolean
hasTrait(ShapeId id)
Checks if the shape has a specific trait by name.boolean
isBigDecimalShape()
boolean
isBigIntegerShape()
boolean
isBlobShape()
boolean
isBooleanShape()
boolean
isByteShape()
boolean
isDocumentShape()
boolean
isDoubleShape()
boolean
isEnumShape()
boolean
isFloatShape()
boolean
isIntegerShape()
boolean
isIntEnumShape()
boolean
isListShape()
boolean
isLongShape()
boolean
isMapShape()
boolean
isMemberShape()
boolean
isOperationShape()
boolean
isResourceShape()
boolean
isServiceShape()
boolean
isSetShape()
Deprecated.boolean
isShortShape()
boolean
isStringShape()
boolean
isStructureShape()
boolean
isTimestampShape()
boolean
isUnionShape()
java.util.Collection<MemberShape>
members()
Gets all the members contained in the shape.static <B extends AbstractShapeBuilder<B,S>,S extends Shape>
BshapeToBuilder(S shape)
Converts a shape, potentially of an unknown concrete type, into a Shape builder.ShapeId
toShapeId()
java.lang.String
toString()
protected void
validateMemberShapeIds()
protected void
validateMixins(java.util.Map<ShapeId,Shape> mixins, java.util.Map<ShapeId,Trait> introducedTraits)
-
-
-
Method Detail
-
validateMixins
protected void validateMixins(java.util.Map<ShapeId,Shape> mixins, java.util.Map<ShapeId,Trait> introducedTraits)
-
getRequiredMembers
protected MemberShape[] getRequiredMembers(AbstractShapeBuilder<?,?> builder, java.lang.String... requiredMembersNames)
-
validateMemberShapeIds
protected final void validateMemberShapeIds()
-
shapeToBuilder
public static <B extends AbstractShapeBuilder<B,S>,S extends Shape> B shapeToBuilder(S shape)
Converts a shape, potentially of an unknown concrete type, into a Shape builder.- Type Parameters:
B
- Shape builder to create.S
- Shape that is being converted to a builder.- Parameters:
shape
- Shape to create a builder from.- Returns:
- Returns a shape fro the given shape.
-
getType
public abstract ShapeType getType()
Gets the type of the shape.- Returns:
- Returns the type;
-
accept
public abstract <R> R accept(ShapeVisitor<R> visitor)
Dispatches the shape to the appropriateShapeVisitor
method.- Type Parameters:
R
- Return type of the accept.- Parameters:
visitor
- ShapeVisitor to use.- Returns:
- Returns the result.
-
hasTrait
public boolean hasTrait(java.lang.String id)
Checks if the shape has a specific trait by name.Relative shape IDs are assumed to refer to the "smithy.api" namespace.
- Parameters:
id
- The possibly relative trait ID.- Returns:
- Returns true if the shape has the given trait.
-
hasTrait
public boolean hasTrait(ShapeId id)
Checks if the shape has a specific trait by name.- Parameters:
id
- The fully-qualified trait ID.- Returns:
- Returns true if the shape has the given trait.
-
hasTrait
public boolean hasTrait(java.lang.Class<? extends Trait> traitClass)
Checks if the shape has a specific trait by class.- Parameters:
traitClass
- Trait class to check.- Returns:
- Returns true if the shape has the given trait.
-
findTrait
public java.util.Optional<Trait> findTrait(ShapeId id)
Attempts to find a trait applied to the shape by name.- Parameters:
id
- The trait shape ID.- Returns:
- Returns the optionally found trait.
-
findTrait
public java.util.Optional<Trait> findTrait(java.lang.String id)
Attempts to find a trait applied to the shape by ID.Relative shape IDs are assumed to refer to the "smithy.api" namespace.
- Parameters:
id
- The trait ID.- Returns:
- Returns the optionally found trait.
-
getTrait
public final <T extends Trait> java.util.Optional<T> getTrait(java.lang.Class<T> traitClass)
Attempt to retrieve a specificTrait
by class from the shape.The first trait instance found matching the given type is returned.
- Type Parameters:
T
- The instance of the trait to retrieve.- Parameters:
traitClass
- Trait class to retrieve.- Returns:
- Returns the matching trait.
-
expectTrait
public final <T extends Trait> T expectTrait(java.lang.Class<T> traitClass)
Gets specificTrait
by class from the shape or throws if not found.- Type Parameters:
T
- The instance of the trait to retrieve.- Parameters:
traitClass
- Trait class to retrieve.- Returns:
- Returns the matching trait.
- Throws:
ExpectationNotMetException
- if the trait cannot be found.
-
getAllTraits
public final java.util.Map<ShapeId,Trait> getAllTraits()
Gets all of the traits attached to the shape.- Returns:
- Returns the attached traits.
-
getMemberTrait
public <T extends Trait> java.util.Optional<T> getMemberTrait(Model model, java.lang.Class<T> trait)
Gets a trait from the member shape or from the shape targeted by the member.If the shape is not a member, then the method functions the same as
getTrait(Class)
.- Type Parameters:
T
- Trait type to get.- Parameters:
model
- Model used to find member targets.trait
- Trait type to get.- Returns:
- Returns the optionally found trait on the shape or member.
- See Also:
getTrait(Class)
-
findMemberTrait
public java.util.Optional<Trait> findMemberTrait(Model model, java.lang.String traitName)
Gets a trait from the member shape or from the shape targeted by the member.If the shape is not a member, then the method functions the same as
findTrait(String)
.- Parameters:
model
- Model used to find member targets.traitName
- Trait name to get.- Returns:
- Returns the optionally found trait on the shape or member.
- See Also:
findTrait(String)
-
asBigDecimalShape
public java.util.Optional<BigDecimalShape> asBigDecimalShape()
- Returns:
- Optionally returns the shape as a
BigDecimalShape
.
-
asBigIntegerShape
public java.util.Optional<BigIntegerShape> asBigIntegerShape()
- Returns:
- Optionally returns the shape as a
BigIntegerShape
.
-
asBlobShape
public java.util.Optional<BlobShape> asBlobShape()
- Returns:
- Optionally returns the shape as a
BlobShape
.
-
asBooleanShape
public java.util.Optional<BooleanShape> asBooleanShape()
- Returns:
- Optionally returns the shape as a
BooleanShape
.
-
asByteShape
public java.util.Optional<ByteShape> asByteShape()
- Returns:
- Optionally returns the shape as a
ByteShape
.
-
asShortShape
public java.util.Optional<ShortShape> asShortShape()
- Returns:
- Optionally returns the shape as a
ShortShape
.
-
asFloatShape
public java.util.Optional<FloatShape> asFloatShape()
- Returns:
- Optionally returns the shape as a
FloatShape
.
-
asDocumentShape
public java.util.Optional<DocumentShape> asDocumentShape()
- Returns:
- Optionally returns the shape as a
DocumentShape
.
-
asDoubleShape
public java.util.Optional<DoubleShape> asDoubleShape()
- Returns:
- Optionally returns the shape as a
DoubleShape
.
-
asIntegerShape
public java.util.Optional<IntegerShape> asIntegerShape()
- Returns:
- Optionally returns the shape as a
IntegerShape
.
-
asIntEnumShape
public java.util.Optional<IntEnumShape> asIntEnumShape()
- Returns:
- Optionally returns the shape as a
IntEnumShape
.
-
asListShape
public java.util.Optional<ListShape> asListShape()
- Returns:
- Optionally returns the shape as a
ListShape
.
-
asSetShape
@Deprecated public java.util.Optional<SetShape> asSetShape()
Deprecated.- Returns:
- Optionally returns the shape as a
SetShape
.
-
asLongShape
public java.util.Optional<LongShape> asLongShape()
- Returns:
- Optionally returns the shape as a
LongShape
.
-
asMapShape
public java.util.Optional<MapShape> asMapShape()
- Returns:
- Optionally returns the shape as a
MapShape
.
-
asMemberShape
public java.util.Optional<MemberShape> asMemberShape()
- Returns:
- Optionally returns the shape as a
MemberShape
.
-
asOperationShape
public java.util.Optional<OperationShape> asOperationShape()
- Returns:
- Optionally returns the shape as an
OperationShape
.
-
asResourceShape
public java.util.Optional<ResourceShape> asResourceShape()
- Returns:
- Optionally returns the shape as a
ResourceShape
.
-
asServiceShape
public java.util.Optional<ServiceShape> asServiceShape()
- Returns:
- Optionally returns the shape as a
ServiceShape
.
-
asStringShape
public java.util.Optional<StringShape> asStringShape()
- Returns:
- Optionally returns the shape as a
StringShape
.
-
asEnumShape
public java.util.Optional<EnumShape> asEnumShape()
- Returns:
- Optionally returns the shape as a
EnumShape
.
-
asStructureShape
public java.util.Optional<StructureShape> asStructureShape()
- Returns:
- Optionally returns the shape as a
StructureShape
.
-
asUnionShape
public java.util.Optional<UnionShape> asUnionShape()
- Returns:
- Optionally returns the shape as a
UnionShape
.
-
asTimestampShape
public java.util.Optional<TimestampShape> asTimestampShape()
- Returns:
- Optionally returns the shape as a
TimestampShape
.
-
isBigDecimalShape
public final boolean isBigDecimalShape()
- Returns:
- Returns true if the shape is a
BigDecimalShape
shape.
-
isBigIntegerShape
public final boolean isBigIntegerShape()
- Returns:
- Returns true if the shape is a
BigIntegerShape
shape.
-
isBlobShape
public final boolean isBlobShape()
- Returns:
- Returns true if the shape is a
BlobShape
shape.
-
isBooleanShape
public final boolean isBooleanShape()
- Returns:
- Returns true if the shape is a
BooleanShape
shape.
-
isByteShape
public final boolean isByteShape()
- Returns:
- Returns true if the shape is a
ByteShape
shape.
-
isShortShape
public final boolean isShortShape()
- Returns:
- Returns true if the shape is a
ShortShape
shape.
-
isFloatShape
public final boolean isFloatShape()
- Returns:
- Returns true if the shape is a
FloatShape
shape.
-
isDocumentShape
public final boolean isDocumentShape()
- Returns:
- Returns true if the shape is an
DocumentShape
shape.
-
isDoubleShape
public final boolean isDoubleShape()
- Returns:
- Returns true if the shape is an
DoubleShape
shape.
-
isListShape
public final boolean isListShape()
- Returns:
- Returns true if the shape is a
ListShape
shape.
-
isSetShape
@Deprecated public final boolean isSetShape()
Deprecated.- Returns:
- Returns true if the shape is a
SetShape
shape.
-
isIntegerShape
public final boolean isIntegerShape()
- Returns:
- Returns true if the shape is a
IntegerShape
shape.
-
isIntEnumShape
public final boolean isIntEnumShape()
- Returns:
- Returns true if the shape is a
IntEnumShape
shape.
-
isLongShape
public final boolean isLongShape()
- Returns:
- Returns true if the shape is a
LongShape
shape.
-
isMapShape
public final boolean isMapShape()
- Returns:
- Returns true if the shape is a
MapShape
shape.
-
isMemberShape
public final boolean isMemberShape()
- Returns:
- Returns true if the shape is a
MemberShape
shape.
-
isOperationShape
public final boolean isOperationShape()
- Returns:
- Returns true if the shape is an
OperationShape
shape.
-
isResourceShape
public final boolean isResourceShape()
- Returns:
- Returns true if the shape is a
ResourceShape
shape.
-
isServiceShape
public final boolean isServiceShape()
- Returns:
- Returns true if the shape is a
ServiceShape
shape.
-
isStringShape
public final boolean isStringShape()
- Returns:
- Returns true if the shape is a
StringShape
shape.
-
isEnumShape
public final boolean isEnumShape()
- Returns:
- Returns true if the shape is an
EnumShape
shape.
-
isStructureShape
public final boolean isStructureShape()
- Returns:
- Returns true if the shape is a
StructureShape
shape.
-
isUnionShape
public final boolean isUnionShape()
- Returns:
- Returns true if the shape is a
UnionShape
shape.
-
isTimestampShape
public final boolean isTimestampShape()
- Returns:
- Returns true if the shape is a
TimestampShape
shape.
-
members
public java.util.Collection<MemberShape> members()
Gets all the members contained in the shape.- Returns:
- Returns the members contained in the shape (if any).
-
getMember
public java.util.Optional<MemberShape> getMember(java.lang.String name)
Get a specific member by name.Shapes with no members return an empty Optional.
- Parameters:
name
- Name of the member to retrieve.- Returns:
- Returns the optional member.
-
getAllMembers
public java.util.Map<java.lang.String,MemberShape> getAllMembers()
Gets the members of the shape, including mixin members.- Returns:
- Returns the immutable member map.
-
getMemberNames
public java.util.List<java.lang.String> getMemberNames()
Returns an ordered list of member names based on the order they are defined in the model, including mixin members.The order in which map key and value members are returned might not match the order in which they were defined in the model because their ordering is insignificant.
- Returns:
- Returns an immutable list of member names.
-
getMixins
public java.util.Set<ShapeId> getMixins()
Get an ordered set of mixins attached to the shape.- Returns:
- Returns the ordered mixin shape IDs.
-
getIntroducedTraits
public java.util.Map<ShapeId,Trait> getIntroducedTraits()
Gets the traits introduced by the shape and not inherited from mixins.- Returns:
- Returns the introduced traits.
-
toShapeId
public ShapeId toShapeId()
-
getTags
public final java.util.List<java.lang.String> getTags()
Description copied from interface:Tagged
Gets the tags applied to an object.
-
getSourceLocation
public final SourceLocation getSourceLocation()
Description copied from interface:FromSourceLocation
Gets the source location of a value.- Specified by:
getSourceLocation
in interfaceFromSourceLocation
- Returns:
- Returns the source location of the value.
-
compareTo
public int compareTo(Shape other)
- Specified by:
compareTo
in interfacejava.lang.Comparable<Shape>
-
toString
public final java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
-