package Ġde . r ki . cor on aw arn app . util . worker Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . work . List enable Worker Ċ import Ġandroidx . work . Worker Factory Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġdagger . Re usable Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Provider Ċ Ċ @ Re usable Ċ class ĠC WA Worker Factory Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġfactories : Ġ@ Jvm Suppress W ild cards ĠMap < ĊĠĠĠĠĠĠĠ ĠClass < out ĠList enable Worker >, ĠProvider < Inject ed Worker Factory < out ĠList enable Worker >> ĊĠĠĠĠĠĠĠ Ġ> Ċ ) Ġ: ĠWorker Factory () Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . v (" C WA Worker Factory Ġready . ĠKnown Ġfactories : Ġ% s ", Ġfactories ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Worker ( ĊĠĠĠĠĠĠĠ Ġapp Context : ĠContext , ĊĠĠĠĠĠĠĠ Ġworker ClassName : ĠString , ĊĠĠĠĠĠĠĠ Ġworker Parameters : ĠWorker Parameters ĊĠĠĠ Ġ): ĠList enable Worker ? Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . v (" Looking Ġup Ġworker Ġfor Ġ% s ", Ġworker ClassName ) ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= Ġfactories . entries . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName ( worker ClassName ). isAssignableFrom ( it . key ) ĊĠĠĠĠĠĠĠ Ġ} ?. value ĊĊĠĠĠĠĠĠĠ Ġrequire NotNull ( factory ) Ġ{ Ġ" Unknown Ġworker : Ġ$ worker ClassName " Ġ} ĊĠĠĠĠĠĠĠ ĠTim ber . v (" Creating Ġworker Ġfor Ġ% s Ġwith Ġ% s ", Ġworker ClassName , Ġworker Parameters ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfactory . get (). create ( app Context , Ġworker Parameters ) ĊĠĠĠ Ġ} Ċ } Ċ