package Ġorg . bright ify . react ant . controller . util Ċ Ċ import Ġorg . bright ify . react ant . core . util . onChange Ċ Ċ /** Ċ Ġ* Ġ Ġ@ author Ġ< a Ġhref =" mailto : fil ip @ bright ify . org "> Fil ip ĠDol nik </ a > Ċ Ġ*/ Ċ internal Ġclass ĠTransaction Manager Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtransactions Ġ= ĠArrayList < () Ġ-> ĠUnit >() ĊĊĠĠĠ Ġval ĠisIn Transaction : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtransactions . isNotEmpty () ĊĊĠĠĠ Ġvar Ġenabled : ĠBoolean Ġby ĠonChange ( false ) Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommit Transactions () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< T > Ġtransaction ( cross inline Ġaction : Ġ() Ġ-> ĠT ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult : ĠT ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtransactions . add Ġ{ Ġresult Ġ= Ġaction () Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( transactions . size Ġ== Ġ 1 Ġ&& Ġenabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommit Transactions () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcommit Transactions () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġtransactions . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransactions [ i ]() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtransactions . clear () ĊĠĠĠ Ġ} Ċ }