package Ġcom . android . test able . repository . repository Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . android . test able . repository . api . Post Ċ import Ġcom . android . test able . repository . api . Post Service Ċ import Ġcom . android . test able . repository . db . Post Dao Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġjava . util . concurrent . Executor Ċ Ċ class ĠPost Repository Impl ( ĊĠĠĠ Ġprivate Ġval Ġpost Service : ĠPost Service , ĊĠĠĠ Ġprivate Ġval Ġpost Dao : ĠPost Dao , ĊĠĠĠ Ġprivate Ġval Ġpost Mapper : ĠPost Mapper , ĊĠĠĠ Ġprivate Ġval Ġexecutor : ĠExecutor Ċ ) Ġ: ĠPost Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Posts (): ĠLive Data < Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMutable LiveData < Result >() ĊĠĠĠĠĠĠĠ Ġresult . post Value ( Result . Loading ) ĊĠĠĠĠĠĠĠ Ġpost Service . get Posts (). enqueue ( object Ġ: ĠCallback < List < Post >> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < List < Post >>, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . post Value ( Result . Error ( t )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < List < Post >>, Ġresponse : ĠResponse < List < Post >>) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ()?. let Ġ{ Ġposts Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecutor . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Dao . insert Posts ( posts . map Ġ{ Ġpost Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Mapper . service To Entity ( post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . post Value ( Result . Success ( posts . map Ġ{ Ġpost Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Mapper . service To Ui ( post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . post Value ( Result . Error ( RuntimeException (" Unexpected Ġerror "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }