public abstract class Shape extends java.lang.Object implements FromSourceLocation, software.amazon.smithy.utils.Tagged, ToShapeId, java.lang.Comparable<Shape>
Shape 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.
| Modifier and Type | Method and Description |
|---|---|
abstract <R> R |
accept(ShapeVisitor<R> visitor)
Dispatches the shape to the appropriate
ShapeVisitor 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> |
expectTrait(java.lang.Class<T> traitClass)
Gets specific
Trait 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(ShapeId id)
Attempts to find a trait applied to the shape by name.
|
java.util.Optional<Trait> |
findTrait(java.lang.String id)
Attempts to find a trait applied to the shape by ID.
|
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 the
ShapeId 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> |
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() |
<T extends Trait> |
getTrait(java.lang.Class<T> traitClass)
Attempt to retrieve a specific
Trait 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(ShapeId id)
Checks if the shape has a specific trait by name.
|
boolean |
hasTrait(java.lang.String 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> |
shapeToBuilder(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) |
clone, finalize, getClass, notify, notifyAll, wait, wait, waitcompareprotected void validateMixins(java.util.Map<ShapeId,Shape> mixins, java.util.Map<ShapeId,Trait> introducedTraits)
protected MemberShape[] getRequiredMembers(AbstractShapeBuilder<?,?> builder, java.lang.String... requiredMembersNames)
protected final void validateMemberShapeIds()
public static <B extends AbstractShapeBuilder<B,S>,S extends Shape> B shapeToBuilder(S shape)
B - Shape builder to create.S - Shape that is being converted to a builder.shape - Shape to create a builder from.public abstract ShapeType getType()
public abstract <R> R accept(ShapeVisitor<R> visitor)
ShapeVisitor method.R - Return type of the accept.visitor - ShapeVisitor to use.public boolean hasTrait(java.lang.String id)
Relative shape IDs are assumed to refer to the "smithy.api" namespace.
id - The possibly relative trait ID.public boolean hasTrait(ShapeId id)
id - The fully-qualified trait ID.public boolean hasTrait(java.lang.Class<? extends Trait> traitClass)
traitClass - Trait class to check.public java.util.Optional<Trait> findTrait(ShapeId id)
id - The trait shape ID.public java.util.Optional<Trait> findTrait(java.lang.String id)
Relative shape IDs are assumed to refer to the "smithy.api" namespace.
id - The trait ID.public final <T extends Trait> java.util.Optional<T> getTrait(java.lang.Class<T> traitClass)
Trait by class from the shape.
The first trait instance found matching the given type is returned.
T - The instance of the trait to retrieve.traitClass - Trait class to retrieve.public final <T extends Trait> T expectTrait(java.lang.Class<T> traitClass)
Trait by class from the shape or throws if not found.T - The instance of the trait to retrieve.traitClass - Trait class to retrieve.ExpectationNotMetException - if the trait cannot be found.public final java.util.Map<ShapeId,Trait> getAllTraits()
public <T extends Trait> java.util.Optional<T> getMemberTrait(Model model, java.lang.Class<T> trait)
If the shape is not a member, then the method functions the same as
getTrait(Class).
T - Trait type to get.model - Model used to find member targets.trait - Trait type to get.getTrait(Class)public java.util.Optional<Trait> findMemberTrait(Model model, java.lang.String traitName)
If the shape is not a member, then the method functions the same as
findTrait(String).
model - Model used to find member targets.traitName - Trait name to get.findTrait(String)public java.util.Optional<BigDecimalShape> asBigDecimalShape()
BigDecimalShape.public java.util.Optional<BigIntegerShape> asBigIntegerShape()
BigIntegerShape.public java.util.Optional<BlobShape> asBlobShape()
BlobShape.public java.util.Optional<BooleanShape> asBooleanShape()
BooleanShape.public java.util.Optional<ByteShape> asByteShape()
ByteShape.public java.util.Optional<ShortShape> asShortShape()
ShortShape.public java.util.Optional<FloatShape> asFloatShape()
FloatShape.public java.util.Optional<DocumentShape> asDocumentShape()
DocumentShape.public java.util.Optional<DoubleShape> asDoubleShape()
DoubleShape.public java.util.Optional<IntegerShape> asIntegerShape()
IntegerShape.public java.util.Optional<IntEnumShape> asIntEnumShape()
IntEnumShape.public java.util.Optional<ListShape> asListShape()
ListShape.@Deprecated public java.util.Optional<SetShape> asSetShape()
SetShape.public java.util.Optional<LongShape> asLongShape()
LongShape.public java.util.Optional<MapShape> asMapShape()
MapShape.public java.util.Optional<MemberShape> asMemberShape()
MemberShape.public java.util.Optional<OperationShape> asOperationShape()
OperationShape.public java.util.Optional<ResourceShape> asResourceShape()
ResourceShape.public java.util.Optional<ServiceShape> asServiceShape()
ServiceShape.public java.util.Optional<StringShape> asStringShape()
StringShape.public java.util.Optional<EnumShape> asEnumShape()
EnumShape.public java.util.Optional<StructureShape> asStructureShape()
StructureShape.public java.util.Optional<UnionShape> asUnionShape()
UnionShape.public java.util.Optional<TimestampShape> asTimestampShape()
TimestampShape.public final boolean isBigDecimalShape()
BigDecimalShape shape.public final boolean isBigIntegerShape()
BigIntegerShape shape.public final boolean isBlobShape()
BlobShape shape.public final boolean isBooleanShape()
BooleanShape shape.public final boolean isByteShape()
ByteShape shape.public final boolean isShortShape()
ShortShape shape.public final boolean isFloatShape()
FloatShape shape.public final boolean isDocumentShape()
DocumentShape shape.public final boolean isDoubleShape()
DoubleShape shape.public final boolean isListShape()
ListShape shape.@Deprecated public final boolean isSetShape()
SetShape shape.public final boolean isIntegerShape()
IntegerShape shape.public final boolean isIntEnumShape()
IntEnumShape shape.public final boolean isLongShape()
LongShape shape.public final boolean isMapShape()
MapShape shape.public final boolean isMemberShape()
MemberShape shape.public final boolean isOperationShape()
OperationShape shape.public final boolean isResourceShape()
ResourceShape shape.public final boolean isServiceShape()
ServiceShape shape.public final boolean isStringShape()
StringShape shape.public final boolean isEnumShape()
EnumShape shape.public final boolean isStructureShape()
StructureShape shape.public final boolean isUnionShape()
UnionShape shape.public final boolean isTimestampShape()
TimestampShape shape.public java.util.Collection<MemberShape> members()
public java.util.Optional<MemberShape> getMember(java.lang.String name)
Shapes with no members return an empty Optional.
name - Name of the member to retrieve.public java.util.Map<java.lang.String,MemberShape> getAllMembers()
public java.util.List<java.lang.String> getMemberNames()
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.
public java.util.Set<ShapeId> getMixins()
public java.util.Map<ShapeId,Trait> getIntroducedTraits()
public ShapeId toShapeId()
public final java.util.List<java.lang.String> getTags()
getTags in interface software.amazon.smithy.utils.Taggedpublic final SourceLocation getSourceLocation()
FromSourceLocationgetSourceLocation in interface FromSourceLocationpublic int compareTo(Shape other)
compareTo in interface java.lang.Comparable<Shape>public final java.lang.String toString()
toString in class java.lang.Objectpublic int hashCode()
hashCode in class java.lang.Objectpublic boolean equals(java.lang.Object o)
equals in class java.lang.Object