/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 Ġ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 . dependency Ċ Ċ import Ġorg . gradle . api . Action Ċ import Ġorg . gradle . api . artifacts . Configuration Ċ import Ġorg . gradle . api . artifacts . Res olvable Dependencies Ċ import Ġorg . gradle . api . artifacts . component . Module Component Identifier Ċ import Ġorg . gradle . api . artifacts . dsl . Dependency Constraint Handler Ċ import Ġorg . gradle . api . artifacts . result . Resolved Component Result Ċ Ċ /** Ċ Ġ* ĠAn ĠAction Ġto Ġsynchronize Ġa Ġdependency Ġwith Ġa Ġruntime Classpath . Ċ Ġ* Ċ Ġ* ĠThis Ġis Ġmeant Ġto Ġbe Ġpassed Ġto Ġ[ Res olvable Dependencies . before Resolve ] Ċ Ġ*/ Ċ class ĠConstraint Handler ( ĊĠĠĠ Ġprivate Ġval Ġsrc Configuration : ĠConfiguration , ĊĠĠĠ Ġprivate Ġval Ġconstraints : ĠDependency Constraint Handler , ĊĠĠĠ Ġprivate Ġval Ġis Test : ĠBoolean Ċ ) Ġ: ĠAction < Res olvable Dependencies > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġexecute ( res olvable Dependencies : ĠRes olvable Dependencies ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsrc Config Name Ġ= Ġsrc Configuration . name ĊĠĠĠĠĠĠĠ Ġval Ġsrc Components : ĠSet < Resolved Component Result > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc Configuration . incoming . resolution Result . all Components ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Name Ġ= Ġresol vable Dependencies . name ĊĊĠĠĠĠĠĠĠ Ġ// Ġloop Ġon Ġall Ġthe Ġartifacts Ġand Ġset Ġconstraints Ġfor Ġthe Ġcompile Ġclasspath . ĊĠĠĠĠĠĠĠ Ġsrc Components . forEach Ġ{ Ġresolved Component Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġresolved Component Result . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġis ĠModule Component Identifier ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġusing Ġa Ġrepository Ġwith Ġa Ġflat Dir Ġto Ġstock Ġlocal ĠA AR s Ġwill Ġresult Ġin Ġan ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexternal Ġmodule Ġdependency Ġwith Ġno Ġversion . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! id . version . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Test Ġ|| Ġid . module Ġ!= Ġ" list enable future " Ġ|| Ġid . group Ġ!= Ġ" com . google . gu ava " Ġ|| Ġid . version Ġ!= Ġ" 1 . 0 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraints . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ id . group }:${ id . module }:${ id . version }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġconstraint Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint . because ( cache String ("$ src Config Name Ġuses Ġversion Ġ${ id . version } ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint . version Ġ{ Ġversion Constraint Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Constraint . strict ly ( id . version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġstrings Ġ= Ġmutable Map Of < String , ĠString >() ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġcache String ( new String : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( strings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexisting String Ġ= Ġstrings [ new String ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( existing String Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrings [ new String ] Ġ= Ġnew String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexisting String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġclear Cache () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( strings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrings . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }