package Ġcom . github . s quir rel g rip . sc ient ist 4 k . http . server Ċ Ċ import Ġcom . github . s quir rel g rip . sc ient ist 4 k . core . configuration . Experiment Configuration Ċ import Ġcom . github . s quir rel g rip . sc ient ist 4 k . core . model . sample . Sample Ċ import Ġcom . github . s quir rel g rip . sc ient ist 4 k . http . core . Abstract Simple Http Experiment Ċ import Ġcom . github . s quir rel g rip . sc ient ist 4 k . http . core . Http Experiment Util Ċ import Ġcom . github . s quir rel g rip . sc ient ist 4 k . http . core . Http Experiment Util . process Response Ċ import Ġcom . github . s quir rel g rip . sc ient ist 4 k . http . core . configuration . EndPoint Configuration Ċ import Ġcom . github . s quir rel g rip . sc ient ist 4 k . http . core . configuration . Mapping Configuration Ċ import Ġcom . github . s quir rel g rip . sc ient ist 4 k . http . core . configuration . Mappings Configuration Ċ import Ġcom . github . s quir rel g rip . sc ient ist 4 k . http . core . factory . Request Factory Ċ import Ġcom . github . s quir rel g rip . sc ient ist 4 k . http . core . model . Experiment Request Ċ import Ġcom . github . s quir rel g rip . sc ient ist 4 k . http . core . model . Experiment Response Ċ import Ġcom . google . common . event bus . EventBus Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjavax . servlet . http . HttpServletResponse Ċ Ċ class ĠSimple Http Experiment ( ĊĠĠĠ Ġexperiment Configuration : ĠExperiment Configuration , ĊĠĠĠ Ġevent Bus : ĠEvent Bus Ġ= ĠDEFAULT _ EVENT _ BUS , ĊĠĠĠ Ġcontrol Config : ĠEnd Point Configuration , ĊĠĠĠ Ġprivate Ġval Ġmappings : ĠM appings Configuration , ĊĠĠĠ Ġprivate Ġval Ġcandidate Config : ĠEnd Point Configuration Ċ ) Ġ: ĠAbstract Simple Http Experiment ( ĊĠĠĠ Ġexperiment Configuration , ĊĠĠĠ Ġevent Bus , Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcontrol Request Factory Ġ= ĠRequest Factory ( control Config , ĠHttp Experiment Util . CONTROL _ COOKIE _ STORE ) ĊĠĠĠ Ġprivate Ġval Ġcandidate Request Factory Ġ= ĠRequest Factory ( candidate Config , ĠHttp Experiment Util . C AND ID ATE _ COOKIE _ STORE , Ġmappings ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOGGER : ĠLogger Ġ= ĠLoggerFactory . getLogger ( Simple Http Experiment :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun ( ĊĠĠĠĠĠĠĠ Ġinbound Request : ĠHttpServletRequest , ĊĠĠĠĠĠĠĠ Ġinbound Response : ĠHttpServletResponse ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsample : ĠSample Ġ= Ġsample Factory . create ( mappings . get Run Options ( inbound Request )) ĊĠĠĠĠĠĠĠ Ġval Ġexperiment Request Ġ= ĠHttp Experiment Util . create Request ( inbound Request , Ġsample ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcontrol Request Ġ= Ġcreate Control Request ( experiment Request ) ĊĠĠĠĠĠĠĠ Ġval Ġcandidate Request Ġ= Ġcreate Candidate Request ( experiment Request ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Response Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Method Allowed ( inbound Request )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( control Request , Ġcandidate Request , Ġsample ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Return Candidate ( sample )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcandidate Request . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Request . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprocess Response ( inbound Response , Ġresult Response ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Method Allowed ( inbound Request : ĠHttpServletRequest ) Ġ= ĊĠĠĠĠĠĠĠ Ġcandidate Config . allowed Methods . contains ("* ") Ġor Ġcandidate Config . allowed Methods . contains ( inbound Request . method ) ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Control Request ( ĊĠĠĠĠĠĠĠ Ġrequest : ĠExperiment Request ĊĠĠĠ Ġ): Ġ() Ġ-> ĠExperiment Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontrol Request Factory . create ( request ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Candidate Request ( ĊĠĠĠĠĠĠĠ Ġrequest : ĠExperiment Request ĊĠĠĠ Ġ): Ġ() Ġ-> ĠExperiment Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcandidate Request Factory . create ( request ) ĊĠĠĠ Ġ} Ċ Ċ } ĊĊĊ