/* Ċ Ġ* Ġ ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠSer ge y ĠKom l ach Ġa ka ĠSal at - Cx 6 5 ; ĠOriginal Ġproject : Ġhttps :// github . com / Sal at - Cx 6 5 / Advanced Bio metric Prompt Compat Ċ Ġ* Ġ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġdev . sk om l ach . bio metric . compat . utils Ċ Ċ import Ġdev . sk om l ach . bio metric . compat . utils . logging . Bio metric Logger Impl . e Ċ import Ġjava . lang . reflect . Modifier ĊĊ Ċ object ĠReflection Utils Ġ{ ĊĠĠĠ Ġfun Ġprint Class ( name : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprint Ġclass Ġname Ġand Ġsuperclass Ġname Ġ( if Ġ!= ĠObject ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcl Ġ= ĠClass . forName ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Class ( cl ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠClass NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprint Class ( cl : ĠClass <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuper cl Ġ= Ġcl . super class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodifiers Ġ= ĠModifier . toString ( cl . modifiers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( modifiers . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ("$ modifiers Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print (" class Ġ" Ġ+ Ġcl . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( super cl Ġ!= Ġnull Ġ&& Ġsuper cl Ġ!= ĠAny :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġextends Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġsuper cl . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ("\ n {\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Construct ors ( cl ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Methods ( cl ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Fields ( cl ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" }") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPrints Ġall Ġconstructors Ġof Ġa Ġclass ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcl Ġa Ġclass ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġprint Construct ors ( cl : ĠClass <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconstructors Ġ= Ġcl . declared Construct ors ĊĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġconstructors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġc . name ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print (" ĠĠ Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodifiers Ġ= ĠModifier . toString ( c . modifiers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( modifiers . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ("$ modifiers Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ("$ name (" ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprint Ġparameter Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Types Ġ= Ġc . parameter Types ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġparam Types . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ( param Types [ j ]. name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" ); ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPrints Ġall Ġmethods Ġof Ġa Ġclass ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcl Ġa Ġclass ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġprint Methods ( cl : ĠClass <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmethods Ġ= Ġcl . declared Methods ĊĠĠĠĠĠĠĠ Ġfor Ġ( m Ġin Ġmethods ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret Type Ġ= Ġm . returnType ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġm . name ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print (" ĠĠ Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprint Ġmodifiers , Ġreturn Ġtype Ġand Ġmethod Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodifiers Ġ= ĠModifier . toString ( m . modifiers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( modifiers . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ("$ modifiers Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ( ret Type . name Ġ+ Ġ" Ġ" Ġ+ Ġname Ġ+ Ġ"(" ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprint Ġparameter Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Types Ġ= Ġm . parameter Types ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġparam Types . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ( param Types [ j ]. name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" ); ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPrints Ġall Ġfields Ġof Ġa Ġclass ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcl Ġa Ġclass ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Illegal AccessException :: class ) ĊĠĠĠ Ġfun Ġprint Fields ( cl : ĠClass <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġcl . declared Fields ĊĠĠĠĠĠĠĠ Ġfor Ġ( f Ġin Ġfields ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Accessible Ġ= Ġf . is Accessible ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Accessible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġf . type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġf . name ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print (" ĠĠ Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodifiers Ġ= ĠModifier . toString ( f . modifiers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( modifiers . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print ("$ modifiers Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Modifier . is Static ( f . modifiers )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠString :: class . java ) ĠSystem . err . println ( type . name Ġ+ Ġ" Ġ" Ġ+ Ġname Ġ+ Ġ" Ġ= Ġ\"" Ġ+ Ġf [ null ] Ġ+ Ġ"\ "; ") Ġelse ĠSystem . err . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . name Ġ+ Ġ" Ġ" Ġ+ Ġname Ġ+ Ġ" Ġ= Ġ" Ġ+ Ġf [ null ] Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠSystem . err . println ( type . name Ġ+ Ġ" Ġ" Ġ+ Ġname Ġ+ Ġ"; ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Accessible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }