Class SymbolReference
- java.lang.Object
-
- software.amazon.smithy.codegen.core.SymbolReference
-
- All Implemented Interfaces:
SymbolContainer,SymbolDependencyContainer,ToSmithyBuilder<SymbolReference>
public final class SymbolReference extends java.lang.Object implements SymbolContainer, SymbolDependencyContainer, ToSmithyBuilder<SymbolReference>
Represents a reference from a Symbol to another Symbol.A reference from one symbol to another is used when a symbol definition refers to other symbols (for example, when using things like generic type parameters) or when using a symbol that has generic type parameters in its signature. References can contain arbitrary properties that can be accessed using
getProperties(),getProperty(java.lang.String), andexpectProperty(java.lang.String). Options can be added to a SymbolReference to give more context about the reference. For example, theSymbolReference.ContextOptionenum is used to define the context in which a reference is relevant (e.g., only when defining a symbol vs only when using/importing a symbol). If no options are provided when creating aSymbolReference, the reference defaults to using both theSymbolReference.ContextOption.DECLAREandSymbolReference.ContextOption.USEoptions, meaning that the reference is necessary both when defining and when using a symbol.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSymbolReference.BuilderBuilds a SymbolReference.static classSymbolReference.ContextOptionOptions used to control the context of when the symbol reference is needed.static interfaceSymbolReference.OptionTop-level interface for allSymbolReferenceoptions.
-
Constructor Summary
Constructors Constructor Description SymbolReference(Symbol symbol, java.util.Map<java.lang.String,java.lang.Object> properties, SymbolReference.Option... options)SymbolReference(Symbol symbol, SymbolReference.Option... options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static SymbolReference.Builderbuilder()booleanequals(java.lang.Object o)java.lang.ObjectexpectProperty(java.lang.String name)Gets a specific additional property or throws if missing.<T> TexpectProperty(java.lang.String name, java.lang.Class<T> type)Gets a specific additional property or throws if missing or if the property is not an instance of the given type.<T> TexpectProperty(Property<T> property)Get a property and throw if it isn't present.java.lang.StringgetAlias()Gets the alias to use when referring to the Symbol.java.util.List<SymbolDependency>getDependencies()Gets the list of dependencies that this object introduces.java.util.Set<SymbolReference.Option>getOptions()Gets all of the reference options.java.util.Map<java.lang.String,java.lang.Object>getProperties()Gets the additional properties of the object.java.util.Optional<java.lang.Object>getProperty(java.lang.String name)Gets a specific property if present.<T> java.util.Optional<T>getProperty(java.lang.String name, java.lang.Class<T> type)Gets an additional property of a specific type.<T> java.util.Optional<T>getProperty(Property<T> property)Get a typed property if present.SymbolgetSymbol()Gets the referenced symbol.java.util.List<Symbol>getSymbols()Returns anySymbolobjects contained in the object.java.util.Map<Property<?>,java.lang.Object>getTypedProperties()Gets the additional typed properties of the object.inthashCode()booleanhasOption(SymbolReference.Option option)Checks if the given option is set on the symbol.SymbolReference.BuildertoBuilder()Take this object and create a builder that contains all of the current property values of this object.java.lang.StringtoString()
-
-
-
Constructor Detail
-
SymbolReference
public SymbolReference(Symbol symbol, SymbolReference.Option... options)
- Parameters:
symbol- Symbol that is referenced.options- Options to store with the reference.
-
SymbolReference
public SymbolReference(Symbol symbol, java.util.Map<java.lang.String,java.lang.Object> properties, SymbolReference.Option... options)
- Parameters:
symbol- Symbol that is referenced.properties- Bag of reference properties.options- Options to store with the reference.
-
-
Method Detail
-
builder
public static SymbolReference.Builder builder()
- Returns:
- Returns a new builder.
-
getSymbol
public Symbol getSymbol()
Gets the referenced symbol.- Returns:
- Returns the symbol.
-
getAlias
public java.lang.String getAlias()
Gets the alias to use when referring to the Symbol.The value of
getSymbol().getName()is returned if no alias was explicitly configured on the reference.An alias is used in some programming languages to change the way a symbol is referenced in a source file. Aliases are often used for de-conflicting symbols.
- Returns:
- Returns the alias.
-
getOptions
public java.util.Set<SymbolReference.Option> getOptions()
Gets all of the reference options.- Returns:
- Returns the options set.
-
hasOption
public boolean hasOption(SymbolReference.Option option)
Checks if the given option is set on the symbol.- Parameters:
option- Option to check.- Returns:
- Returns true if this option is set.
-
getSymbols
public java.util.List<Symbol> getSymbols()
Description copied from interface:SymbolContainerReturns anySymbolobjects contained in the object.- Specified by:
getSymbolsin interfaceSymbolContainer- Returns:
- Returns a collection of
Symbols.
-
getDependencies
public java.util.List<SymbolDependency> getDependencies()
Description copied from interface:SymbolDependencyContainerGets the list of dependencies that this object introduces.A dependency is a dependency on another package that a Symbol or type requires. It is quite different from a reference since a reference only refers to a symbol; a reference provides no context as to whether or not a dependency is required or the dependency's coordinates.
- Specified by:
getDependenciesin interfaceSymbolDependencyContainer- Returns:
- Returns the dependencies.
-
toBuilder
public SymbolReference.Builder toBuilder()
Description copied from interface:ToSmithyBuilderTake this object and create a builder that contains all of the current property values of this object.- Specified by:
toBuilderin interfaceToSmithyBuilder<SymbolReference>- Returns:
- a builder for type T
-
equals
public boolean equals(java.lang.Object o)
-
hashCode
public int hashCode()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getProperties
public java.util.Map<java.lang.String,java.lang.Object> getProperties()
Gets the additional properties of the object.- Returns:
- Returns a map of additional property strings.
-
getTypedProperties
public java.util.Map<Property<?>,java.lang.Object> getTypedProperties()
Gets the additional typed properties of the object.- Returns:
- Returns a map of additional typed properties.
-
getProperty
public java.util.Optional<java.lang.Object> getProperty(java.lang.String name)
Gets a specific property if present.- Parameters:
name- Property to retrieve.- Returns:
- Returns the optionally found property.
-
getProperty
public <T> java.util.Optional<T> getProperty(Property<T> property)
Get a typed property if present.- Type Parameters:
T- value type of the property- Parameters:
property- property key to get by exact reference identity.- Returns:
- Returns the optionally found property.
-
getProperty
public <T> java.util.Optional<T> getProperty(java.lang.String name, java.lang.Class<T> type)Gets an additional property of a specific type.- Type Parameters:
T- Type of value to expect.- Parameters:
name- Name of the property to get.type- Type of value to expect.- Returns:
- Returns a map of additional property strings.
- Throws:
java.lang.IllegalArgumentException- if the value is not of the given type.
-
expectProperty
public java.lang.Object expectProperty(java.lang.String name)
Gets a specific additional property or throws if missing.- Parameters:
name- Property to retrieve.- Returns:
- Returns the found property.
- Throws:
java.lang.IllegalArgumentException- if the property is not present.
-
expectProperty
public <T> T expectProperty(java.lang.String name, java.lang.Class<T> type)Gets a specific additional property or throws if missing or if the property is not an instance of the given type.- Type Parameters:
T- Type of value to expect.- Parameters:
name- Property to retrieve.type- Type of value to expect.- Returns:
- Returns the found property.
- Throws:
java.lang.IllegalArgumentException- if the property is not present.java.lang.IllegalArgumentException- if the value is not of the given type.
-
expectProperty
public <T> T expectProperty(Property<T> property)
Get a property and throw if it isn't present.- Type Parameters:
T- value type of the property.- Parameters:
property- property key to get by exact reference identity.- Throws:
java.lang.IllegalArgumentException- if the property isn't found.
-
-