/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 . android . build . gradle . internal . manifest Ċ Ċ import Ġcom . android . build . gradle . internal . services . Project Services Ċ import Ġorg . gradle . api . file . Regular File Ċ import Ġorg . gradle . api . provider . Provider Ċ import Ġjava . util . function . Boolean Supplier Ċ Ċ /** Ċ Ġ* Ġa Ġlazy Ġmanifest Ġparser Ġthat Ġcan Ġcreate Ġa Ġ` Provider < Manifest Data >` Ċ Ġ*/ Ċ class ĠLazy Manifest Parser ( ĊĠĠĠ Ġprivate Ġval Ġmanifest File : ĠProvider < Regular File >, ĊĠĠĠ Ġprivate Ġval Ġmanifest File Required : ĠBoolean , ĊĠĠĠ Ġprivate Ġval Ġproject Services : ĠProject Services , ĊĠĠĠ Ġprivate Ġval Ġmanifest Parsing Allowed : ĠBoolean Supplier Ċ ): ĠManifest DataProvider Ġ{ ĊĊĠĠĠĠ Ġoverride Ġval Ġmanifest Data : ĠProvider < Manifest Data > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġusing Ġmap Ġwill Ġallow Ġus Ġto Ġkeep Ġtask Ġdependency Ġshould Ġthe Ġmanifest Ġbe Ġgenerated Ġor ĊĠĠĠĠĠĠĠ Ġ// Ġtransformed Ġvia Ġa Ġtask ĊĠĠĠĠĠĠĠ Ġval Ġprovider Ġ= Ġmanifest File . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse Manifest ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . as File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanifest File Required , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanifest Parsing Allowed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Services . issue Reporter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwrap Ġthe Ġprovider Ġin Ġa Ġproperty Ġto Ġallow Ġmemo ization ĊĠĠĠĠĠĠĠ Ġproject Services . object Factory . property ( Manifest Data :: class . java ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set ( provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . finalize Value On Read () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġdisable Ġearly Ġget ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġmanifest Location : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmanifest File . get (). as File . absolute Path Ċ } Ċ