Package-level declarations

Types

Link copied to clipboard
abstract class Tree<T : TreeState<*, *, *, *, *>, C : Create<*>, U : Update<*>, D : Delete<*>, M : Move<*>>(state: T)

A reusable aggregate of one tree, such as a tenant's categories or departments: subclass it with the concrete commands, annotate the subclass @AggregateRoot, and the compiler binds the command functions declared here, with the type arguments the subclass gives (its state T, and its commands C, U, D and M):

Link copied to clipboard

The codes a Tree rejects a command with. 9.x threw IllegalStateException or IllegalArgumentException; in 10.x a rejection is a value with a stable code. Each rejection's extensions carry the codes or levels at fault.

Link copied to clipboard
abstract class TreeState<F : CopySortIdFlat<F>, C : Created, U : Updated, D : Deleted, M : Moved> : ITreeState<F>

The state of a Tree: its nodes as flat Fs. Subclass it with the concrete events (C, U, D, M) and toFlat; the compiler binds the sourcing functions declared here with the subclass's type arguments: