package Ġnet . cord a . dj vm . rew iring Ċ Ċ import Ġnet . cord a . dj vm . analysis . Class Resolver Ċ import Ġnet . cord a . dj vm . analysis . Whitelist Ċ import Ġorg . object web . asm .* Ċ import Ġorg . object web . asm . commons . Rem apper Ċ Ċ /** Ċ Ġ* ĠClass Ġname Ġand Ġdescriptor Ġre - mapper Ġfor Ġuse Ġin Ġa Ġsandbox . Ċ Ġ* Ċ Ġ* Ġ@ property Ġclass Resolver ĠFunction ality Ġfor Ġresolving Ġthe Ġclass Ġname Ġof Ġa Ġsandbox ed Ġor Ġsandbox able Ġclass . Ċ Ġ* Ġ@ property Ġwhitelist ĠIdent ifies Ġthe ĠJava ĠAPIs Ġwhich Ġare Ġnot Ġmapped Ġinto Ġthe Ġsandbox Ġnamespace . Ċ Ġ*/ Ċ open Ġclass ĠSandbox Rem apper ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġclass Resolver : ĠClass Resolver , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġwhitelist : ĠWh itelist Ċ ) Ġ: ĠRem apper () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġunderlying Ġmapping Ġfunction Ġfor Ġdescriptors . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġmap Desc ( desc : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrewrite Descriptor ( super . map Desc ( desc )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġunderlying Ġmapping Ġfunction Ġfor Ġtype Ġnames . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġmap ( typename : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrewrite TypeName ( super . map ( typename )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMapper Ġfor Ġ[ Type ] Ġand Ġ[ Handle ] Ġobjects . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġmap Value ( obj : ĠAny ?): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( obj Ġis ĠHandle Ġ&& Ġwhitelist . matches ( obj . owner )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . map Value ( obj ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAll Ġ[ Object . toString ] Ġmethods Ġmust Ġbe Ġtransformed Ġto Ġ[ sandbox . java . lang . Object . to DJ VM String ], ĊĠĠĠĠ Ġ* Ġto Ġallow Ġthe Ġreturn Ġtype Ġto Ġchange Ġto Ġ[ sandbox . java . lang . String ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġ[ sandbox . java . lang . Object ] Ġclass Ġis Ġpinned Ġand Ġnot Ġmapped . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġmap MethodName ( owner : ĠString , Ġname : ĠString , Ġdescriptor : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠnewName Ġ= Ġif Ġ( name Ġ== Ġ" toString " Ġ&& Ġdescriptor Ġ== Ġ" () Ljava / lang / String ; ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" to DJ VM String " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . map MethodName ( owner , ĠnewName , Ġdescriptor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFunction Ġfor Ġre writing Ġa Ġdescriptor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġrewrite Descriptor ( descriptor : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Resolver . resolve Descriptor ( descriptor ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFunction Ġfor Ġre writing Ġa Ġtype Ġname . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġrewrite TypeName ( name : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Resolver . resolve ( name ) Ċ Ċ } Ċ