package Ġcom . most ly cert ain . jav ap o et dsl Ċ Ċ import Ġcom . most ly cert ain . jav ap o et dsl . Type Names . types Ċ import Ġcom . squareup . jav ap o et . ClassName Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . InputStream Reader Ċ import Ġjava . net . Malformed URLException Ċ import Ġjava . net . URL Ċ import Ġjava . net . URLConnection Ċ import Ġjavax . lang . model . element . Modifier . FINAL Ċ import Ġjavax . lang . model . element . Modifier . PRIVATE Ċ import Ġjavax . lang . model . element . Modifier . PUBLIC Ċ Ċ class ĠClass Spec Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` toString Ġwith Ġexample Ġin Ġreadme `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy Class Ġ= Ġclass Spec (" My Class ", ĠlistOf ( PUBLIC , ĠFIN AL )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Decl ( Int :: class , Ġ" foo ", ĠlistOf ( PRIVATE )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Decl ( listOf ( parameter Spec ( Int :: class , Ġ" foo ")), ĠlistOf ( PUBLIC )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs (" this . foo Ġ= Ġfoo ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Decl (" add ", ĠlistOf ( parameter Spec ( Int :: class , Ġ" value ")), ĠlistOf ( PUBLIC )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs (" this . foo Ġ+= Ġvalue ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Decl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturns Ġ= ĠString :: class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" request Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠlistOf ( parameter Spec ( String :: class , Ġ" url Str ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifiers Ġ= ĠlistOf ( PUBLIC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrows Ġ= Ġtypes ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ( StringBuilder :: class , Ġ" content ", Ġe (" new ĠStringBuilder () ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ( BufferedReader :: class , Ġ" buffered Reader ", Ġliteral Null ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Decl Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ( URL :: class , Ġ" url ", Ġe (" new Ġ% T ( url Str )", ĠURL :: class )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ( URLConnection :: class , Ġ" url Connection ", Ġe (" url . open Connection () ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs (" buffered Reader Ġ= Ġnew Ġ% T ( new Ġ% T ( url Connection . getInputStream ()) ", ĠBufferedReader :: class , ĠInputStreamReader :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ( String :: class , Ġ" line ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Decl ("( line Ġ= Ġbuffered Reader . readLine ()) Ġ!= Ġnull ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs (" content . append ( line Ġ+ Ġ% S )", Ġ"\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. catch Decl ( Malformed URLException :: class , Ġ" ex ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs (" throw Ġnew Ġ% T ( url Str , Ġex )", ĠIllegalArgumentException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. catch Decl ( Exception :: class , Ġ" ex ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs (" throw Ġnew Ġ% T (% S , Ġex )", ĠIOException :: class , Ġ" I / O Ġerror Ġrequesting Ġdata ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. finally Decl Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Decl (" buffered Reader Ġ!= Ġnull ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs (" buffered Reader . close () ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs (" return Ġcontent . toString () ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġfinal Ġclass ĠMy Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġint Ġfoo ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMy Class ( final Ġint Ġfoo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . foo Ġ= Ġfoo ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġadd ( final Ġint Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . foo Ġ+= Ġvalue ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġjava . lang . String Ġrequest Data ( final Ġjava . lang . String Ġurl Str ) Ġthrows Ġjava . io . IOException Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . lang . StringBuilder Ġcontent Ġ= Ġnew ĠStringBuilder (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . io . BufferedReader Ġbuffered Reader Ġ= Ġnull ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . net . URL Ġurl Ġ= Ġnew Ġjava . net . URL ( url Str ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . net . URLConnection Ġurl Connection Ġ= Ġurl . open Connection (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffered Reader Ġ= Ġnew Ġjava . io . BufferedReader ( new Ġjava . io . InputStream Reader ( url Connection . getInputStream ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . lang . String Ġline ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(( line Ġ= Ġbuffered Reader . readLine ()) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . append ( line Ġ+ Ġ"\ n "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( final Ġjava . net . Malformed URLException Ġex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġnew Ġjava . lang . IllegalArgumentException ( url Str , Ġex ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( final Ġjava . lang . Exception Ġex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġnew Ġjava . io . IOException (" I / O Ġerror Ġrequesting Ġdata ", Ġex ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( buffered Reader Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffered Reader . close (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontent . toString (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (), Ġmy Class . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` toString Ġwith Ġclass Ġpackage `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy Class Ġ= Ġclass Spec ( ClassName . get (" a . b . c ", Ġ" My Class ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Decl ( String :: class , Ġ" fieldName ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Decl ( InputStream :: class , Ġ" stream ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġa . b . c ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠMy Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . lang . String ĠfieldName ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . io . InputStream Ġstream ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (), Ġmy Class . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` to Java File Ġwith Ġdefaults `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy Class Ġ= Ġclass Spec ( ClassName . get (" a . b . c ", Ġ" My Class ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Decl ( String :: class , Ġ" fieldName ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Decl ( InputStream :: class , Ġ" stream ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġa . b . c ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . io . InputStream ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . lang . String ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠMy Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString ĠfieldName ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInputStream Ġstream ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (), Ġmy Class . to Java File (). write ToString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` to Java File Ġwith Ġskip Ġjava Ġlang Ġimports `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy Class Ġ= Ġclass Spec ( ClassName . get (" a . b . c ", Ġ" My Class ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Decl ( String :: class , Ġ" fieldName ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Decl ( InputStream :: class , Ġ" stream ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġa . b . c ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġjava . io . InputStream ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠMy Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString ĠfieldName ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInputStream Ġstream ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (), Ġmy Class . to Java File ( skip Java Lang Imports Ġ= Ġtrue ). write ToString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest FilePath () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Class . java ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Spec (" My Class ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. filePath . toString ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a / b / c / My Class . java ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Spec ( ClassName . get (" a . b . c ", Ġ" My Class ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. filePath . toString ()) ĊĠĠĠ Ġ} Ċ }