package Ġcom . soft mot ions . nc ms . mt t . http Ċ Ċ import Ġcom . google . inject . Singleton Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjavax . annotation . concurrent . Thread Safe Ċ import Ġjavax . servlet . http . HttpServletResponse Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author ĠAdam ans ky ĠAnt on Ġ( adam ans ky @ soft mot ions . com ) Ċ Ġ*/ Ċ @ Singleton Ċ @ Thread Safe Ċ open Ġclass ĠM tt Group Action Ġ: ĠM tt Action Handler Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( java Class ) ĊĊĠĠĠ Ġoverride Ġval Ġtype : ĠString Ġ= Ġ" group " ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( ctx : ĠM tt Action HandlerContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr mc : ĠM tt Request Modification Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresp : ĠHttpServletResponse ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġg list Ġ= Ġctx . find Group Actions (); ĊĠĠĠĠĠĠĠ Ġif Ġ( log . isDebugEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . debug (" Groups ={ }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg list . map Ġ{ Ġit . action Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġsum Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( ac Ġin Ġg list ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġac . action . group Weight ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( sum Ġ== Ġ 0 . 0 ) Ġ{ Ġ// Ġzero Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= ĠMath . random () Ġ* Ġsum ĊĠĠĠĠĠĠĠ Ġvar Ġcp Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( log . isDebugEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . debug (" P =${ p }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( ac Ġin Ġg list ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcp Ġ+= Ġac . action . group Weight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p Ġ<= Ġcp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . isDebugEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . debug (" Executing : Ġ${ cp }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġac . execute ( rm c , Ġresp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ }