/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 - 2 0 2 2 ĠExact pro Ġ( Exact pro ĠSystems ĠLimited ) Ċ Ġ* Ċ Ġ* Ġ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 . exact pro . th 2 . codec . openapi Ċ Ċ import Ġcom . exact pro . th 2 . codec . openapi . throwable . Dictionary ValidationException Ċ import Ġio . swagger . v 3 . parser . core . models . Swagger Parse Result Ċ import Ġmu . Kotlin Logging Ċ import Ġorg . open ap it ools . codegen . valid ations . o as . Open Api Evaluator Ċ import Ġorg . open ap it ools . codegen . valid ations . o as . Rule Configuration Ċ Ċ class ĠDictionary Validator ( private Ġval Ġconfiguration : ĠRule Configuration ) Ġ{ ĊĊĠĠĠ Ġfun Ġvalidate ( dictionary : ĠSwagger Parse Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġopen API Ġ= Ġdictionary . open API ĊĠĠĠĠĠĠĠ Ġval Ġmessages Ġ= Ġdictionary . messages ĊĊĠĠĠĠĠĠĠ Ġval Ġevaluator Ġ= ĠOpen Api Evaluator ( configuration ) ĊĠĠĠĠĠĠĠ Ġval Ġvalidation Result Ġ= Ġevaluator . validate ( open API ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( validation Result . warnings . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . warn Ġ{ Ġ" Spec Ġhas Ġissues Ġor Ġrecommendations .\ n Issues :" Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Result . warnings . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . warn Ġ{ Ġ"\ t ${ it . message }| ${ it . details }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( messages . isNotEmpty () Ġ|| Ġvalidation Result . errors . isNotEmpty ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . error Ġ{ Ġ" Spec Ġis Ġinvalid .\ n Issues :" Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessages . forEach ( LOGGER :: error ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Result . errors . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . error Ġ{ Ġ"${ it . message }\ t ${ it . details }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠDictionary ValidationException (" Provided Ġdictionary - spec Ġis Ġnot Ġvalid .", Ġvalidation Result . errors , Ġmessages ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . debug Ġ{ Ġ" Provided Ġdictionary - spec Ġis Ġvalid " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOGGER Ġ= ĠKotlin Logging . logger Ġ{} ĊĠĠĠ Ġ} Ċ }