Interface DirectedCodegen<C extends CodegenContext<S,?,I>,S,I extends SmithyIntegration<S,?,C>>
- Type Parameters:
C
- SmithyCodegenContext
to use in directed methods.S
- Settings object passed to directed methods as part of the context.I
-SmithyIntegration
type to use in directed methods.
public interface DirectedCodegen<C extends CodegenContext<S,?,I>,S,I extends SmithyIntegration<S,?,C>>
Provides a directed code generation abstraction to make it easier to
implement a Smithy code generator for a single service that leverages
other abstractions in smithy-codegen-core, including
SmithyIntegration
,
SymbolProvider
, CodegenContext
, SymbolWriter
,
and WriterDelegator
.-
Method Summary
Modifier and TypeMethodDescriptioncreateContext
(CreateContextDirective<S, I> directive) Creates the codegen context object.createSymbolProvider
(CreateSymbolProviderDirective<S> directive) Create theSymbolProvider
used to map shapes to code symbols.default void
customizeAfterIntegrations
(CustomizeDirective<C, S> directive) Performs any necessary code generation after all shapes are generated, using the created codegen context object after all integrations have performed customizations.default void
customizeBeforeIntegrations
(CustomizeDirective<C, S> directive) Performs any necessary code generation after all shapes are generated, using the created codegen context object before integrations perform customizations.default void
customizeBeforeShapeGeneration
(CustomizeDirective<C, S> directive) Performs any necessary code generation before all shapes are generated, using the created codegen context object.void
generateEnumShape
(GenerateEnumDirective<C, S> directive) Generates the code needed for an enum shape, whether it's a string shape marked with the enum trait, or a proper enum shape introduced in Smithy IDL 2.0.void
generateError
(GenerateErrorDirective<C, S> directive) Generates the code needed for an error structure.void
generateIntEnumShape
(GenerateIntEnumDirective<C, S> directive) Generates the code needed for an intEnum shape.default void
generateResource
(GenerateResourceDirective<C, S> directive) Generates the code needed for a resource shape.void
generateService
(GenerateServiceDirective<C, S> directive) Generates the code needed for a service shape.void
generateStructure
(GenerateStructureDirective<C, S> directive) Generates the code needed for a structure shape.void
generateUnion
(GenerateUnionDirective<C, S> directive) Generates the code needed for a union shape.
-
Method Details
-
createSymbolProvider
Create theSymbolProvider
used to map shapes to code symbols.- Parameters:
directive
- Directive context data.- Returns:
- Returns the created SymbolProvider.
-
createContext
Creates the codegen context object.- Parameters:
directive
- Directive context data.- Returns:
- Returns the created context object used by the rest of the directed generation.
-
generateService
Generates the code needed for a service shape.- Parameters:
directive
- Directive to perform.
-
generateResource
Generates the code needed for a resource shape.- Parameters:
directive
- Directive to perform.
-
generateStructure
Generates the code needed for a structure shape.This method should not be invoked for structures marked with the
error
trait.- Parameters:
directive
- Directive to perform.
-
generateError
Generates the code needed for an error structure.- Parameters:
directive
- Directive to perform.
-
generateUnion
Generates the code needed for a union shape.- Parameters:
directive
- Directive to perform.
-
generateEnumShape
Generates the code needed for an enum shape, whether it's a string shape marked with the enum trait, or a proper enum shape introduced in Smithy IDL 2.0.- Parameters:
directive
- Directive to perform.
-
generateIntEnumShape
Generates the code needed for an intEnum shape.- Parameters:
directive
- Directive to perform.
-
customizeBeforeShapeGeneration
Performs any necessary code generation before all shapes are generated, using the created codegen context object.- Parameters:
directive
- Directive to perform.
-
customizeBeforeIntegrations
Performs any necessary code generation after all shapes are generated, using the created codegen context object before integrations perform customizations.- Parameters:
directive
- Directive to perform.
-
customizeAfterIntegrations
Performs any necessary code generation after all shapes are generated, using the created codegen context object after all integrations have performed customizations.This method should be used to do things like:
- Flush any code writers created by your WriterDelegator.
- Generate dependency manifests (e.g., poms) from WriterDelegator.
- Perform any remaining codegen tasks like formatting or validating the generated output.
- Parameters:
directive
- Directive to perform.
-