TypeNames
The one rule that names aggregates and their command and event types: the compiler applies it to the declarations it reads and the kernel's DSL to the classes it is given, so a model written by hand stores the names the Manifest lists. It takes the names as strings, so both can call it.
Functions
Link copied to clipboard
An aggregate's name: its annotatedName (@Name), else its simpleName in snake_case, as 9.x's AggregateRootResolver names it.
Link copied to clipboard
PascalCase to snake_case (CartItem → cart_item), the result of 9.x's NamingConverter.PASCAL_TO_SNAKE, so an aggregate keeps the name 9.x gave it: every upper-case letter starts a new word (HTTPOrder → h_t_t_p_order).
Link copied to clipboard
The last part of a command or event type's name (context.aggregate.<this>): its annotatedName (@Name), else its simpleName.