Interface DirectedCodegen<C extends CodegenContext<S,?,I>,S,I extends SmithyIntegration<S,?,C>>
-
- Type Parameters:
C- SmithyCodegenContextto use in directed methods.S- Settings object passed to directed methods as part of the context.I-SmithyIntegrationtype 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 CcreateContext(CreateContextDirective<S,I> directive)Creates the codegen context object.SymbolProvidercreateSymbolProvider(CreateSymbolProviderDirective<S> directive)Create theSymbolProviderused to map shapes to code symbols.default voidcustomizeAfterIntegrations(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 voidcustomizeBeforeIntegrations(CustomizeDirective<C,S> directive)Performs any necessary code generation after all shapes are generated, using the created codegen context object before integrations perform customizations.voidgenerateEnumShape(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.voidgenerateError(GenerateErrorDirective<C,S> directive)Generates the code needed for an error structure.default voidgenerateResource(GenerateResourceDirective<C,S> directive)Generates the code needed for a resource shape.voidgenerateService(GenerateServiceDirective<C,S> directive)Generates the code needed for a service shape.voidgenerateStructure(GenerateStructureDirective<C,S> directive)Generates the code needed for a structure shape.voidgenerateUnion(GenerateUnionDirective<C,S> directive)Generates the code needed for a union shape.
-
-
-
Method Detail
-
createSymbolProvider
SymbolProvider createSymbolProvider(CreateSymbolProviderDirective<S> directive)
Create theSymbolProviderused 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.
-
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
errortrait.- 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.
-
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.
-
-