package Ġcom . s aint dan . framework . enums Ċ Ċ import Ġcom . s aint dan . framework . constant . Resource Path Ċ import Ġcom . s aint dan . framework . param .* Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠResource Ġuri Ġenums . Ċ Ġ* Ċ Ġ* Ġ@ author Ġ< a Ġhref =" http :// github . com / s aint dan "> L iao ĠY if an </ a > Ċ Ġ* Ġ@ date Ġ 0 7 / 1 2 / 2 0 1 7 Ċ Ġ* Ġ@ since ĠJDK 1 . 8 Ċ Ġ*/ Ċ enum Ġclass ĠResource Uri ( private Ġval Ġuri : ĠString , Ġprivate Ġval Ġclazz : ĠClass <* >) Ġ{ ĊĊĠ ĠLOGIN ( Resource Path . API Ġ+ ĠResource Path . V 1 Ġ+ ĠResource Path . OPEN Ġ+ ĠResource Path . LOGIN , ĠLogin Param :: class . java ), ĊĠ ĠREF RESH ( Resource Path . API Ġ+ ĠResource Path . V 1 Ġ+ ĠResource Path . OPEN Ġ+ ĠResource Path . REFRESH , ĠLogin Param :: class . java ), ĊĠ ĠCLIENT ( Resource Path . API Ġ+ ĠResource Path . V 1 Ġ+ ĠResource Path . MANAGE MENT Ġ+ ĠResource Path . CLIENT S , ĠClient Param :: class . java ), ĊĠ ĠUSER ( Resource Path . API Ġ+ ĠResource Path . V 1 Ġ+ ĠResource Path . MANAGE MENT Ġ+ ĠResource Path . USERS , ĠUser Param :: class . java ), ĊĠ ĠROLE ( Resource Path . API Ġ+ ĠResource Path . V 1 Ġ+ ĠResource Path . MANAGE MENT Ġ+ ĠResource Path . RO LES , ĠRole Param :: class . java ), ĊĠ ĠRESOURCE ( Resource Path . API Ġ+ ĠResource Path . V 1 Ġ+ ĠResource Path . MANAGE MENT Ġ+ ĠResource Path . RESOURCES , ĠResource Param :: class . java ), ĊĠ ĠUNKNOWN (" unknown ", ĠNothing :: class . java ); ĊĊĠ Ġval Ġis Unknown : ĠBoolean ĊĠĠĠ Ġget () Ġ= ĠResource Uri . UNKNOWN . uri Ġ== Ġthis . uri ĊĊĠ Ġfun Ġuri (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġuri ĊĠ Ġ} ĊĊĠ Ġfun Ġclazz (): ĠClass < *> Ġ{ ĊĠĠĠ Ġreturn Ġclazz ĊĠ Ġ} ĊĊĠ Ġfun Ġmatches ( uri : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġthis Ġ== Ġresolve ( uri ) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmappings Ġ= ĠHashMap < String , ĠResource Uri >( 2 ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠ Ġfor Ġ( resource Uri Ġin Ġvalues ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġmappings . put ( resource Uri . uri , Ġresource Uri ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresolve ( uri : ĠString ): ĠResource Uri Ġ{ ĊĠĠĠĠĠ Ġval Ġmatch Uri Ġ= Ġmappings . keys . stream () ĊĠĠĠĠĠĠĠĠĠ Ġ. filter ({ Ġuri . contains ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠ Ġ. findFirst () ĊĠĠĠĠĠĠĠĠĠ Ġ. orElse ( null ) ĊĠĠĠĠĠ Ġreturn Ġif Ġ( match Uri Ġ!= Ġnull ) Ġmappings . getValue ( match Uri ) Ġelse ĠUNKNOWN ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ }