Class PluginContext
- All Implemented Interfaces:
ToSmithyBuilder<PluginContext>
-
Nested Class Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic PluginContext.Builder
builder()
Creates a new PluginContext Builder.Gets the plugin artifact name, if present.Gets the validation events encountered after projecting the model.Gets the FileManifest used to create files in the projection.getModel()
Gets the model that was projected.Creates a new Model where shapes that define traits or shapes that are only used as part of a trait definition have been removed.Get the original model before applying the projection.Gets the ClassLoader that should be used in build plugins to load services.Gets the name of the projection being applied.Gets the plugin configuration settings.Gets the source models, or models that are considered the subject of the build.boolean
isSourceMetadata
(String metadataKey) Checks if the given metadata key-value pair is either not present in the old model (thus a new, source metadata), or is present and the filename of the entry in the original model matches one of the definedsources
.boolean
isSourceShape
(ToShapeId shape) Checks if the given shape/ID is either not present in the original model (thus a new, source shape), or is present and the filename of the shape in the original model matches one of the definedsources
.Take this object and create a builder that contains all of the current property values of this object.
-
Method Details
-
builder
Creates a new PluginContext Builder.- Returns:
- Returns the created builder.
-
getProjection
- Returns:
- Get the projection the plugin is optionally attached to.
-
getProjectionName
Gets the name of the projection being applied.If no projection could be found, "source" is assumed.
- Returns:
- Returns the explicit or assumed projection name.
-
getArtifactName
Gets the plugin artifact name, if present.An artifact name is given to a plugin by defining the plugin as "bar::foo", where "foo" is the artifact name and "bar" is the plugin name. An artifact name is useful for cases when a plugin is applied multiple times in a single projection. The artifact name changes the directory of where the plugin writes files. A plugin implementation should use the plugin name as the artifact name if no explicit artifact name is provided.
- Returns:
- Returns the optional artifact name.
-
getModel
Gets the model that was projected.- Returns:
- Get the projected model.
-
getOriginalModel
Get the original model before applying the projection.- Returns:
- The optionally provided original model.
-
getEvents
Gets the validation events encountered after projecting the model.- Returns:
- Get the validation events that were encountered.
-
getSettings
Gets the plugin configuration settings.- Returns:
- Plugins settings object.
-
getFileManifest
Gets the FileManifest used to create files in the projection.All files written by a plugin should either be written using this manifest or added to the manifest via
FileManifest.addFile(java.nio.file.Path)
.- Returns:
- Returns the file manifest.
-
getPluginClassLoader
Gets the ClassLoader that should be used in build plugins to load services.- Returns:
- Returns the optionally set ClassLoader.
-
getModelWithoutTraitShapes
Creates a new Model where shapes that define traits or shapes that are only used as part of a trait definition have been removed.This is typically functionality used by code generators when generating data structures from a model. It's useful because it only provides shapes that are used to describe data structures rather than shapes used to describe metadata about the data structures.
Note: this method just calls
ModelTransformer.getModelWithoutTraitShapes(software.amazon.smithy.model.Model)
. It's added toPluginContext
to make it more easily available to code generators.- Returns:
- Returns a Model containing matching shapes.
-
getSources
Gets the source models, or models that are considered the subject of the build.This does not return an exhaustive set of model paths! There are typically two kinds of models that are added to a build: source models and discovered models. Discovered models are someone else's models. Source models are the models owned by the package being built.
- Returns:
- Returns the source models.
-
isSourceShape
Checks if the given shape/ID is either not present in the original model (thus a new, source shape), or is present and the filename of the shape in the original model matches one of the definedsources
.- Parameters:
shape
- Shape or Shape ID to check.- Returns:
- Returns true if this shape is considered a source shape.
-
isSourceMetadata
Checks if the given metadata key-value pair is either not present in the old model (thus a new, source metadata), or is present and the filename of the entry in the original model matches one of the definedsources
.- Parameters:
metadataKey
- Metadata key to check.- Returns:
- Returns true if this metadata is considered a source entry.
-
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<PluginContext>
- Returns:
- a builder for type T
-