package Ġo sp . le ob ert . utils . mock er . handler Ċ Ċ import Ġo sp . le ob ert . utils . mock er . Mock Context Ċ import Ġo sp . le ob ert . utils . mock er . Mock Exception Ċ import Ġjava . lang . reflect .* ĊĊ Ċ /** Ċ Ġ* Ġ< p >< b > Package :</ b > Ġo sp . le ob ert . utils . mock er . handler Ġ</ p > Ċ Ġ* Ġ< p >< b > Project :</ b > ĠM ocker Ġ</ p > Ċ Ġ* Ġ< p >< b > Class name :</ b > ĠBase Mock Handler Ġ</ p > Ċ Ġ* ĠCreated Ġby Ġle ob ert Ġon Ġ 2 0 2 0 / 1 1 / 1 9 . Ċ Ġ*/ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ class ĠBase Mock Handler < T >( ĊĠĠĠ Ġprivate Ġval Ġtype : ĠType , ĊĠĠĠ Ġprivate Ġval Ġgeneric Types : ĠArray < Type > Ġ= ĠarrayOf (), Ċ ) Ġ: ĠMock Handler < T > Ġ{ ĊĊĠĠĠ Ġ// if Ġit Ġis Ġa Ġfield , Ġwe Ġshould Ġuse ĠField Mock Handler , Ġthus Ġwe Ġcan Ġapply Ġthe Ġmock Ġresult ĊĠĠĠ Ġ// to Ġit 's Ġowner ; Ġotherwise Ġ, Ġwe Ġshould Ġuse ĠMock Handler Ġto Ġsupply Ġa Ġtarget Ġmock Ġresult ĊĊĠĠĠ Ġoverride Ġfun Ġmock ( context : ĠMock Context , Ġfield : ĠField ?, Ġowner : ĠAny ?): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠParameter ized Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGeneric Mock Handler ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGeneric ArrayType Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray Mock Handler ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠType Variable < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBase Mock Handler < T >( context . get Variable Type ( type . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠW ildcard Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBase Mock Handler < Any >( type . upper Bounds [ 0 ], Ġgeneric Types ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠClass < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Mock Handler ( type , Ġgeneric Types ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠMock Exception (" æļĤ ä¸į æĶ¯æĮģ ${ type . typeName }") ĊĠĠĠĠĠĠĠ Ġ}. mock ( context , Ġfield , Ġowner ) Ġas ĠT ĊĠĠĠ Ġ} ĊĊ Ċ }