package Ġbr . com . simp li . ws Ċ Ċ import Ġjava . io .* Ċ import Ġjavax . activation .* Ċ Ċ class ĠByteArray DataSource Ġ: ĠDataSource Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġdata : ĠByteArray ? Ġ= Ġnull Ġ// Ġdata ĊĠĠĠ Ġprivate Ġvar Ġtype : ĠString ? Ġ= Ġnull Ġ// Ġcontent - type ĊĊĠĠĠ Ġ/* ĠCreate Ġa ĠDataSource Ġfrom Ġan Ġinput Ġstream Ġ*/ ĊĠĠĠ Ġconstructor (` is `: ĠInputStream , Ġtype : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġtype ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġos Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġch : ĠInt Ġ= Ġ` is `. read () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( ch Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġos . write ( ch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch Ġ= Ġ` is `. read () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġos . toByteArray () ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( io ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĠCreate Ġa ĠDataSource Ġfrom Ġa Ġbyte Ġarray Ġ*/ ĊĠĠĠ Ġconstructor ( data : ĠByteArray , Ġtype : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . data Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġtype ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĠCreate Ġa ĠDataSource Ġfrom Ġa ĠString Ġ*/ ĊĠĠĠ Ġconstructor ( data : ĠString , Ġtype : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAss umption Ġthat Ġthe Ġstring Ġcontains Ġonly ĠASCII ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcharacters ! ĠOtherwise Ġjust Ġpass Ġa Ġcharset Ġinto Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġconstructor Ġand Ġuse Ġit Ġin Ġget Bytes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . data Ġ= Ġdata . toByteArray ( charset (" UTF - 8 ")) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( uex : ĠUnsupported EncodingException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġtype ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġget InputStream (): ĠInputStream Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException (" no Ġdata ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠByteArrayInputStream ( data !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġget OutputStream (): ĠOutputStream Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠIOException (" cannot Ġdo Ġthis ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ContentType (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtype ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Name " ĊĠĠĠ Ġ} Ċ } Ċ