package Ġpl . be one . prom ena . communication . common . converter Ċ Ċ import Ġpl . be one . prom ena . transformer . contract . data .* Ċ import Ġpl . be one . prom ena . transformer . contract . model . data . Data Ċ Ċ abstract Ġclass ĠAbstract Descriptor Converter < T Ġ: ĠData > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdata Descriptor Converter Ġ= ĠConverter < T , ĠData Descriptor . Single >( ĊĠĠĠĠĠĠĠ Ġ{ Ġit . data Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ ĠnewData , Ġold Descriptor Ġ-> Ġsingle Data Descriptor ( new Data , Ġold Descriptor . media Type , Ġold Descriptor . metadata ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ Ġconvert Data ( it ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ Ġcommunication Descriptor () Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ Ġis Compatible ( it ) Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġtransformed Data Descriptor Converter Ġ= ĠConverter < T , ĠTrans formed Data Descriptor . Single >( ĊĠĠĠĠĠĠĠ Ġ{ Ġit . data Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ ĠnewData , Ġold Descriptor Ġ-> Ġsingle Trans formed Data Descriptor ( new Data , Ġold Descriptor . metadata ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ Ġconvert Data ( it ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ Ġcommunication Descriptor () Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ Ġis Compatible ( it ) Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġconvert Data ( data : ĠData ): ĠT ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġcommunication Descriptor (): ĠString ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġis Compatible ( data : ĠData ): ĠBoolean ĊĊĊĠĠĠ Ġfun Ġconvert ( data Descriptor : ĠData Descriptor , Ġrequire New Instance : ĠBoolean ): ĠData Descriptor Ġ= ĊĠĠĠĠĠĠĠ Ġdata Descriptor Converter . convert ( data Descriptor . descriptors , Ġrequire New Instance ). to Data Descriptor () ĊĊĠĠĠ Ġfun Ġconvert ( transformed Data Descriptor : ĠTrans formed Data Descriptor , Ġrequire New Instance : ĠBoolean ): ĠTrans formed Data Descriptor Ġ= ĊĠĠĠĠĠĠĠ Ġtransformed Data Descriptor Converter . convert ( transformed Data Descriptor . descriptors , Ġrequire New Instance ). to Trans formed Data Descriptor () Ċ }