package Ġio . tool ist icon . addons . ax on . j given . saga Ċ Ċ import Ġorg . ax on framework . command handling . gateway . Command Gateway Ċ import Ġorg . ax on framework . mode lling . saga . End Saga Ċ import Ġorg . ax on framework . mode lling . saga . Saga EventHandler Ċ import Ġorg . ax on framework . mode lling . saga . Start Saga Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠCount ing Saga Ġ{ ĊĊĠ Ġ@ Inject ĊĠ Ġ@ Transient Ġprivate Ġlateinit Ġvar Ġcommand Gateway : ĠCommand Gateway ĊĊĊĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĊĠ Ġ@ Start Saga ĊĠ Ġ@ Saga EventHandler ( association Property Ġ= ĠS aga Event . association Property ) ĊĠ Ġfun Ġon ( event : ĠS aga Event . Started ) Ġ{ ĊĠĠĠ Ġprintln ( event ) ĊĠ Ġ} ĊĊĠ Ġ@ Saga EventHandler ( association Property Ġ= ĠS aga Event . association Property ) ĊĠ Ġfun Ġon ( event : ĠS aga Event . Increment ed ) Ġ{ ĊĠĠĠ Ġcounter Ġ+= Ġevent . num ĊĊĠĠĠ Ġcommand Gateway . send < Any >( Saga Command . Increment Aggregate ( event . id )) ĊĠ Ġ} ĊĊĠ Ġ@ End Saga ĊĠ Ġ@ Saga EventHandler ( association Property Ġ= ĠS aga Event . association Property ) ĊĠ Ġfun Ġon ( event : ĠS aga Event . Stopped ) Ġ{ ĊĠĠĠ Ġprintln ( event ) ĊĠ Ġ} Ċ Ċ } Ċ Ċ sealed Ġclass ĠS aga Event ( open Ġval Ġid : ĠString ) Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġconst Ġval Ġassociation Property Ġ= Ġ" id " ĊĠ Ġ} ĊĊĠ Ġdata Ġclass ĠStarted ( override Ġval Ġid : ĠString ) Ġ: ĠS aga Event ( id ) ĊĠ Ġdata Ġclass ĠIncrement ed ( override Ġval Ġid : ĠString , Ġval Ġnum : ĠInt ) Ġ: ĠS aga Event ( id ) ĊĠ Ġdata Ġclass ĠSto pped ( override Ġval Ġid : ĠString ) Ġ: ĠS aga Event ( id ) Ċ } Ċ Ċ sealed Ġclass ĠS aga Command ( open Ġval Ġid : ĠString ) Ġ{ ĊĠ Ġdata Ġclass ĠIncrement Aggregate ( override Ġval Ġid : ĠString ) Ġ: ĠS aga Command ( id ) Ċ } Ċ