Class Apply
- java.lang.Object
-
- software.amazon.smithy.build.transforms.ConfigurableProjectionTransformer<T>
-
- software.amazon.smithy.build.transforms.Apply
-
- All Implemented Interfaces:
ProjectionTransformer
public final class Apply extends ConfigurableProjectionTransformer<T>
Recursively applies transforms of other projections.Note: this transform is special cased and not created using a normal factory. This is because this transformer needs to recursively transform models based on projections, and no other transform needs this functionality. We could *maybe* address this later if we really care that much.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
Apply.ApplyCallback
static class
Apply.Config
apply
configuration.
-
Constructor Summary
Constructors Constructor Description Apply(Apply.ApplyCallback applyCallback)
Sets the function used to apply projections.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Class<Apply.Config>
getConfigType()
Gets the configuration class type.java.lang.String
getName()
Gets the name of the transformer.Model
transform(TransformContext context)
Transforms the given model using the providedTransformContext
.protected Model
transformWithConfig(TransformContext context, Apply.Config config)
Executes the transform using the deserialized configuration object.
-
-
-
Constructor Detail
-
Apply
public Apply(Apply.ApplyCallback applyCallback)
Sets the function used to apply projections.- Parameters:
applyCallback
- Takes the projection name, model, and returns the updated model.
-
-
Method Detail
-
getConfigType
public java.lang.Class<Apply.Config> getConfigType()
Description copied from class:ConfigurableProjectionTransformer
Gets the configuration class type.The referenced
configType
class must be a public POJO with a public, zero-arg constructor, getters, and setters. If the POJO has a public staticfromNode
method, it will be invoked and is expected to deserialize the Node. If the POJO has a public staticbuilder
method, it will be invoked, setters will be called on the builder POJO, and finally the result of calling thebuild
method is used as the configuration type. Finally, the deserializer will attempt to create the type and call setters on the instantiated object that correspond to property names (either named "set" + property name, or just property name).- Specified by:
getConfigType
in classConfigurableProjectionTransformer<Apply.Config>
- Returns:
- Returns the configuration class (a POJO with setters/getters).
-
getName
public java.lang.String getName()
Description copied from interface:ProjectionTransformer
Gets the name of the transformer.- Returns:
- Returns the name (e.g., "traits").
-
transformWithConfig
protected Model transformWithConfig(TransformContext context, Apply.Config config)
Description copied from class:ConfigurableProjectionTransformer
Executes the transform using the deserialized configuration object.- Specified by:
transformWithConfig
in classConfigurableProjectionTransformer<Apply.Config>
- Parameters:
context
- Transform context.config
- Deserialized configuration object.- Returns:
- Returns the transformed model.
-
transform
public final Model transform(TransformContext context)
Description copied from interface:ProjectionTransformer
Transforms the given model using the providedTransformContext
.- Specified by:
transform
in interfaceProjectionTransformer
- Overrides:
transform
in classConfigurableProjectionTransformer<T>
- Parameters:
context
- Transformation context.- Returns:
- Returns the created transformer.
-
-