package Ġcom . dw ol la . util Ċ Ċ import Ġcom . dw ol la . Client Ċ Ċ internal Ġclass ĠToken Manager ( private Ġval Ġclient : ĠClient ) Ġ{ ĊĊĠĠĠ Ġinternal Ġvar Ġtoken : ĠToken ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Synchron ized Ġfun Ġget AccessToken (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Token : ĠToken Ġ= Ġif Ġ( token Ġ== Ġnull ) Ġclient . fetch Token () Ġelse Ġtoken !! ĊĠĠĠĠĠĠĠ Ġval Ġfresh Token : ĠToken Ġ= Ġif Ġ( current Token . is Expired ()) Ġclient . fetch Token () Ġelse Ġcurrent Token ĊĠĠĠĠĠĠĠ Ġif Ġ( token Ġ!= Ġfresh Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġfresh Token ĊĠĠĠĠĠĠĠ Ġreturn Ġfresh Token . accessToken ĊĠĠĠ Ġ} Ċ } Ċ