/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠS IA ĠJ oom Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . jo om . lights aber . processor . analysis Ċ Ċ import Ġcom . jo om . g rip . G rip Ċ import Ġcom . jo om . g rip . classes Ċ import Ġcom . jo om . g rip . mir rors . Class Mirror Ċ import Ġcom . jo om . g rip . super Type Ċ import Ġcom . jo om . lights aber . processor . commons . Types Ċ import Ġcom . jo om . lights aber . processor . model . Contract Ċ import Ġcom . jo om . lights aber . processor . model . Contract Configuration Ċ import Ġjava . io . File Ċ Ċ interface ĠContract Configuration Analyzer Ġ{ ĊĠ Ġfun Ġanalyze ( files : ĠCollection < File >): ĠCollection < Contract Configuration > Ċ } Ċ Ċ class ĠContract Configuration Analyzer Impl ( ĊĠ Ġprivate Ġval Ġg rip : ĠG rip , ĊĠ Ġprivate Ġval Ġanalyzer Helper : ĠAnalyzer Helper , ĊĠ Ġprivate Ġval Ġmodule Parser : ĠModule Parser , ĊĠ Ġprivate Ġval Ġcontract Parser : ĠContract Parser Ċ ) Ġ: ĠContract Configuration Analyzer Ġ{ ĊĊĠ Ġoverride Ġfun Ġanalyze ( files : ĠCollection < File >): ĠCollection < Contract Configuration > Ġ{ ĊĠĠĠ Ġval Ġconfigurations Query Ġ= Ġg rip Ġselect Ġclasses Ġfrom Ġfiles Ġwhere Ġsuper Type Ġ{ Ġ_, Ġtype Ġ-> Ġtype Ġ== ĠTypes . CONTRACT _ CONFIGURATION _ TYPE Ġ} ĊĠĠĠ Ġreturn Ġconfigurations Query . execute (). classes . map NotNull Ġ{ Ġmirror Ġ-> ĊĠĠĠĠĠ Ġval Ġcontract Ġ= Ġextract Configuration Contract ( mirror ) Ġ?: Ġreturn @ map NotNull Ġnull ĊĠĠĠĠĠ Ġval Ġmodule Ġ= Ġmodule Parser . parse Module ( mirror . type , Ġis Imported Ġ= Ġfalse ) ĊĠĠĠĠĠ ĠContract Configuration ( mirror . type , Ġcontract , Ġmodule ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġextract Configuration Contract ( mirror : ĠClass Mirror ): ĠContract ? Ġ{ ĊĠĠĠ Ġval Ġcontract Type Ġ= Ġanalyzer Helper . find Configuration Contract Type ( mirror ) Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġreturn Ġcontract Parser . parse Contract ( contract Type ) ĊĠ Ġ} Ċ } Ċ