package Ġcom . art em k ax boy . tel er est . mapper Ċ Ċ import Ġcom . art em k ax boy . tel er est . dto . Abstract Dto Ċ import Ġcom . art em k ax boy . tel er est . entity . Abstract Entity Ċ import Ġorg . model mapper . Converter Ċ import Ġorg . model mapper . Model Mapper Ċ import Ġorg . model mapper . spi . Mapping Context Ċ Ċ abstract Ġclass ĠAbstract Mapper < E Ġ: ĠAbstract Entity , ĠD Ġ: ĠAbstract Dto >( ĊĠĠĠ Ġval Ġmapper : ĠModelMapper Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġentity Post Converter (): ĠConverter < D , ĠE > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠConverter Ġ{ Ġcontext : ĠMapping Context < D , ĠE > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Convert ( context . source , Ġcontext . destination ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġpost Convert ( source : ĠD , Ġdestination : ĠE ) Ġ= Ġdestination ĊĊĠĠĠ Ġfun Ġdto Post Converter (): ĠConverter < E , ĠD > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠConverter Ġ{ Ġcontext : ĠMapping Context < E , ĠD > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Convert ( context . source , Ġcontext . destination ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġpost Convert ( source : ĠE , Ġdestination : ĠD ) Ġ= Ġdestination Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠE Ġ: ĠAbstract Entity , ĠD Ġ: ĠAbstract Dto > ĠAbstract Mapper < E , ĠD >. to Entity ( dto : ĠD ): ĠE Ġ= ĊĠĠĠ Ġmapper . map ( dto , ĠE :: class . java ) Ċ Ċ inline Ġfun Ġ< E Ġ: ĠAbstract Entity , Ġre ified ĠD Ġ: ĠAbstract Dto > ĠAbstract Mapper < E , ĠD >. to Dto ( entity : ĠE ): ĠD Ġ= ĊĠĠĠ Ġmapper . map ( entity , ĠD :: class . java ) Ċ Ċ inline Ġfun Ġ< re ified ĠE Ġ: ĠAbstract Entity , Ġre ified ĠD Ġ: ĠAbstract Dto > ĠAbstract Mapper < E , ĠD >. create Type Maps () Ġ{ ĊĊĠĠĠ Ġmapper . create TypeMap ( D :: class . java , ĠE :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Post Converter ( entity Post Converter ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġmapper . create TypeMap ( E :: class . java , ĠD :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Post Converter ( dto Post Converter ()) ĊĠĠĠ Ġ} Ċ } Ċ