package Ġpl sar . startup Ċ Ċ import Ġpl sar . PL SAR Ċ import Ġpl sar . jdbc . Mediator Ċ import Ġpl sar . model . Element Ċ import Ġpl sar . processor .* Ċ import Ġpl sar . util . Settings Ċ import Ġjava . lang . reflect . Invocation TargetException Ċ import Ġjava . util .* Ċ import Ġjavax . sql . DataSource Ċ Ċ class ĠContainer Init Ġ{ ĊĠĠĠ Ġclass ĠBuilder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġport Ġ: ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġcache : ĠP LS AR . Cache ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġrepo : ĠP LS AR . Repo ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġsupport : ĠP LS AR . Support ĊĠĠĠĠĠĠĠ Ġvar Ġsettings : ĠSettings ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġwith Repo ( repo : ĠP LS AR . Repo ?): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . repo Ġ= Ġrepo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġwith Cache ( cache : ĠP LS AR . Cache ?): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cache Ġ= Ġcache ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġwith Settings ( settings : ĠSettings ?): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . settings Ġ= Ġsettings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Attributes () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= ĠElement () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement . element Ġ= Ġcache ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache ?. element Storage ?. elements ?. set (" cache ", Ġelement ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepo Element Ġ= ĠElement () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Element . element Ġ= Ġrepo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache ?. element Storage ?. elements ?. set (" repo ", Ġrepo Element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsupport Element Ġ= ĠElement () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport Element . element Ġ= Ġsupport ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache ?. element Storage ?. elements ?. set (" support ", Ġsupport Element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cache ?. resources Ġ== Ġnull ) Ġcache !!. resources Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cache ?. properties Files Ġ== Ġnull ) Ġcache !!. properties Files Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġinit Database () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedi ator Ġ= ĠMed iator ( settings , Ġsupport , Ġcache ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= ĠElement () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement . element Ġ= Ġmedi ator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache ?. element Storage ?. elements ?. set (" db medi ator ", Ġelement ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedi ator . create Db () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġvalidate Datasource () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġcache ?. element Storage ?. elements ?. get (" datasource ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdataSource Ġ= Ġelement . element Ġas ĠDataSource ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo !!. set DataSource ( dataSource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Db Attributes () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Datasource () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Database () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( NoSuch Method Exception :: class , ĠIllegal AccessException :: class , ĠInvocation TargetException :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdispatch Event () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cache ?. events Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsetup Complete Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache ?. events !!. java Class . getDeclared Method (" setup Complete ", ĠP LS AR . Cache :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( setup Complete Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Complete . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Complete . invoke ( cache ?. events , Ġ* array Of ( cache )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġrun Elements Processor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelements Processor Ġ= ĠElement Processor ( cache ). run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache ?. element Processor Ġ= Ġelements Processor ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġrun Config Processor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cache ?. element Processor ?. configurations Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache ?. element Processor ?. configurations ?. size !! Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration Processor ( cache ). run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġrun Annotation Processor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnnotation Processor ( cache ). run () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġrun Endpoint Processor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġendpoint Processor Ġ= ĠEndpoint Processor ( cache ). run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġendpoint Mappings Ġ= Ġendpoint Processor . mappings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache ?. endpoint Mappings Ġ= Ġendpoint Mappings ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġrun Properties Processor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! cache ?. properties Files ?. isEmpty () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProperties Processor ( cache ). run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġrun Instance Processor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInstance Processor ( cache ). run () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġrun Processors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Properties Processor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Instance Processor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Elements Processor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Config Processor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Annotation Processor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Endpoint Processor () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġwith Port ( port : ĠInt ?): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . port Ġ= Ġport ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠContainer Init Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Attributes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Processors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Db Attributes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch Event () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠContainer Init () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport Ġ= ĠP LS AR . Support () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }