package Ġcom . map swith me . maps . widget . place page Ċ Ċ import Ġandroid . text . TextUtils Ċ import Ġandroidx . annotation . Int Def Ċ import Ġandroidx . annotation . Ui Thread Ċ import Ġcom . map swith me . maps . bookmarks . data . Map Object Ċ import Ġcom . map swith me . maps . bookmarks . data . Metadata Ċ import Ġcom . map swith me . maps . gallery . Image Ċ import Ġcom . map swith me . maps . review . Review Ċ import Ġcom . map swith me . maps . ug c . U GC Ċ import Ġcom . map swith me . util . Network Policy Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . util .* Ċ Ċ @ Ui Thread Ċ class ĠSp ons ored Ġprivate Ġconstructor ( ĊĠĠĠ Ġval Ġrating : ĠString , Ġ@ U GC . Imp ress Ġval Ġimp ress : ĠInt , Ġval Ġprice : ĠString , ĊĠĠĠ Ġval Ġurl : ĠString , Ġval Ġdeep Link : ĠString , Ġval Ġdescription Url : ĠString , ĊĠĠĠ Ġval Ġmore Url : ĠString , Ġval Ġreview Url : ĠString , Ġ@ field : Sp ons ored Type Ġ@ get : Sp ons ored Type ĊĠĠĠ Ġ@ param : Sp ons ored Type Ġval Ġtype : ĠInt , ĊĠĠĠ Ġval Ġpartner Index : ĠInt , Ġval Ġpartner Name : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġ@ kotlin . annotation . Retention ( Annotation Retention . SOURCE ) ĊĠĠĠ Ġ@ Int Def ( ĊĠĠĠĠĠĠĠ ĠTYPE _ NONE , ĊĠĠĠĠĠĠĠ ĠTYPE _ BOOK ING , ĊĠĠĠĠĠĠĠ ĠTYPE _ OP ENT ABLE , ĊĠĠĠĠĠĠĠ ĠTYPE _ PART NER , ĊĠĠĠĠĠĠĠ ĠTYPE _ H OL ID AY , ĊĠĠĠĠĠĠĠ ĠTYPE _ PRO MO _ CAT ALOG _ C ITY , ĊĠĠĠĠĠĠĠ ĠTYPE _ PRO MO _ CAT ALOG _ S IGHT SE E INGS , ĊĠĠĠĠĠĠĠ ĠTYPE _ PRO MO _ CAT ALOG _ OUT DO OR ĊĠĠĠ Ġ) ĊĠĠĠ Ġannotation Ġclass ĠSp ons ored Type ĊĊĠĠĠ Ġclass ĠFac ility Type ( val Ġkey : ĠString , Ġval Ġname : ĠString ) ĊĊĠĠĠ Ġclass ĠN ear by Object ( ĊĠĠĠĠĠĠĠ Ġval Ġcategory : ĠString , Ġval Ġtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġdistance : ĠString , Ġval Ġlatitude : ĠDouble , Ġval Ġlongitude : ĠDouble ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġclass ĠHot el Info ( ĊĠĠĠĠĠĠĠ Ġval Ġm Description : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval Ġm Photos : ĠArray < Image > ?, ĊĠĠĠĠĠĠĠ Ġval Ġm Fac ilities : ĠArray < Facility Type > ?, ĊĠĠĠĠĠĠĠ Ġval Ġm Reviews : ĠArray < Review > ?, ĊĠĠĠĠĠĠĠ Ġval Ġm Near by : ĠArray < Near by Object > ?, ĊĠĠĠĠĠĠĠ Ġval Ġm Reviews Amount : ĠLong ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinterface ĠOn Price Received Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġcalled Ġfrom Ġthe Ġnative Ġcore Ġon Ġthe ĠUI Ġthread ĊĠĠĠĠĠĠĠĠ Ġ* Ġwhen Ġthe ĠHot el Ġprice Ġwill Ġbe Ġobtained ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġprice Info ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Ui Thread ĊĠĠĠĠĠĠĠ Ġfun Ġon Price Received ( price Info : ĠHot el Price Info ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Hotel Info Received Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġcalled Ġfrom Ġthe Ġnative Ġcore Ġon Ġthe ĠUI Ġthread ĊĠĠĠĠĠĠĠĠ Ġ* Ġwhen Ġthe ĠHot el Ġinformation Ġwill Ġbe Ġobtained ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġid ĠA Ġhotel Ġid ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinfo ĠA Ġhotel Ġinfo ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Ui Thread ĊĠĠĠĠĠĠĠ Ġfun Ġon Hotel Info Received ( id : ĠString , Ġinfo : ĠHot el Info ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġid : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġfun Ġupdate Id ( point : ĠMap Object ) Ġ{ ĊĠĠĠĠĠĠĠ Ġid Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpoint . getMetadata ( Metadata . Metadata Type . F MD _ SP ON SO RED _ ID ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠOrder Ġis Ġimportant , Ġmust Ġmatch Ġplace _ page _ info . hpp / Sp ons ored Type . ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ NONE Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ BOOK ING Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ OP ENT ABLE Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ PART NER Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ H OL ID AY Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ PRO MO _ CAT ALOG _ C ITY Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ PRO MO _ CAT ALOG _ S IGHT SE E INGS Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ PRO MO _ CAT ALOG _ OUT DO OR Ġ= Ġ 7 ĊĠĠĠĠĠĠĠ Ġ// ĠHot el ĠID Ġ-> ĠPrice ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġs Price Cache : ĠMutable Map < String , ĠHot el Price Info > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHashMap () ĊĠĠĠĠĠĠĠ Ġ// ĠHot el ĠID Ġ-> ĠDescription ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġs Info Cache : ĠMutable Map < String , ĠHot el Info > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHashMap () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġs Price Listener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeak Reference < On Price Received Listener ? >( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġs Info Listener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeak Reference < On Hotel Info Received Listener ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġset Price Listener ( listener : ĠOn Price Received Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Price Listener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeak Reference ( listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġset Info Listener ( listener : ĠOn Hotel Info Received Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Info Listener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeak Reference ( listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠMake Ġrequest Ġto Ġobtain Ġhotel Ġprice Ġinformation . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġmethod Ġalso Ġchecks Ġcache Ġfor Ġrequested Ġhotel Ġid ĊĠĠĠĠĠĠĠĠ Ġ* Ġand Ġif Ġcache Ġexists Ġ- Ġcall Ġ[ on Price Received ][. on Price Received ] Ġimmediately ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġid ĠA ĠHot el Ġid ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcurrency Code ĠA Ġuser Ġcurrency ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġpolicy ĠA Ġnetwork Ġpolicy ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġrequest Price ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString , Ġcurrency Code : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy : ĠNetwork Policy ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġs Price Cache [ id ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp ?. let Ġ{ Ġon Price Received ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Request Price ( policy , Ġid , Ġcurrency Code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġrequest Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsp ons ored : ĠSp ons ored , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocale : ĠString , Ġpolicy : ĠNetwork Policy ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġsp ons ored . id Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( sp ons ored . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ BOOK ING Ġ-> Ġrequest Hotel Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocale , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ OP ENT ABLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ NONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠMake Ġrequest Ġto Ġobtain Ġhotel Ġinformation . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġmethod Ġalso Ġchecks Ġcache Ġfor Ġrequested Ġhotel Ġid ĊĠĠĠĠĠĠĠĠ Ġ* Ġand Ġif Ġcache Ġexists Ġ- Ġcall Ġ[ on Hotel Info Received ][. on Hotel Info Received ] Ġimmediately ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġid ĠA ĠHot el Ġid ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġlocale ĠA Ġuser Ġlocale ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġpolicy ĠA Ġnetwork Ġpolicy ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġrequest Hotel Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString , Ġlocale : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy : ĠNetwork Policy ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġs Info Cache [ id ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo ?. let Ġ{ Ġon Hotel Info Received ( id , Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Request Hotel Info ( policy , Ġid , Ġlocale ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġon Price Received ( price Info : ĠHot el Price Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( price Info . price )) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Price Cache . put ( price Info . id , Ġprice Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= Ġs Price Listener . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Price Received ( price Info ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġon Hotel Info Received ( id : ĠString , Ġinfo : ĠHot el Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Info Cache . put ( id , Ġinfo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= Ġs Info Listener . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Hotel Info Received ( id , Ġinfo ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget PackageName (@ Sp ons ored Type Ġtype : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ BOOK ING Ġ-> Ġ" com . booking " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠAssertionError (" Unsupported Ġsp ons ored Ġtype : Ġ$ type ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġexternal Ġfun Ġnative GetCurrent (): ĠSp ons ored ? ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġprivate Ġexternal Ġfun Ġnative Request Price ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy : ĠNetwork Policy , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString , Ġcurrency Code : ĠString ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġprivate Ġexternal Ġfun Ġnative Request Hotel Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy : ĠNetwork Policy , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString , Ġlocale : ĠString ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ }