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, includingSmithyIntegration
,SymbolProvider
,CodegenContext
,SymbolWriter
, andWriterDelegator
.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description C
createContext(CreateContextDirective<S,I> directive)
Creates the codegen context object.SymbolProvider
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
generateOperation(GenerateOperationDirective<C,S> directive)
Generates the code needed for an operation 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 Detail
-
createSymbolProvider
SymbolProvider createSymbolProvider(CreateSymbolProviderDirective<S> directive)
Create theSymbolProvider
used to map shapes to code symbols.- Parameters:
directive
- Directive context data.- Returns:
- Returns the created SymbolProvider.
-
createContext
C createContext(CreateContextDirective<S,I> directive)
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
void generateService(GenerateServiceDirective<C,S> directive)
Generates the code needed for a service shape.- Parameters:
directive
- Directive to perform.
-
generateResource
default void generateResource(GenerateResourceDirective<C,S> directive)
Generates the code needed for a resource shape.- Parameters:
directive
- Directive to perform.
-
generateOperation
default void generateOperation(GenerateOperationDirective<C,S> directive)
Generates the code needed for an operation shape.- Parameters:
directive
- Directive to perform.
-
generateStructure
void generateStructure(GenerateStructureDirective<C,S> directive)
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
void generateError(GenerateErrorDirective<C,S> directive)
Generates the code needed for an error structure.- Parameters:
directive
- Directive to perform.
-
generateUnion
void generateUnion(GenerateUnionDirective<C,S> directive)
Generates the code needed for a union shape.- Parameters:
directive
- Directive to perform.
-
generateEnumShape
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.- Parameters:
directive
- Directive to perform.
-
generateIntEnumShape
void generateIntEnumShape(GenerateIntEnumDirective<C,S> directive)
Generates the code needed for an intEnum shape.- Parameters:
directive
- Directive to perform.
-
customizeBeforeShapeGeneration
default void customizeBeforeShapeGeneration(CustomizeDirective<C,S> directive)
Performs any necessary code generation before all shapes are generated, using the created codegen context object.- Parameters:
directive
- Directive to perform.
-
customizeBeforeIntegrations
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.- Parameters:
directive
- Directive to perform.
-
customizeAfterIntegrations
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.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.
-
-