/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ġ< p > Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ġ< p > Ċ Ġ* Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ġ< p > Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġorg . open rewrite . java . style Ċ Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Feature Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . module . param names . Parameter Names Module Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . open rewrite . Tree . random Id Ċ import Ġorg . open rewrite . config . Decl arative Named Styles Ċ import Ġorg . open rewrite . style . Style Ċ Ċ class ĠImport Layout Style Test Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmapper Ġ= ĠObjectMapper () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Module ( Parameter Names Module ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. disable ( Deserialization Feature . FAIL _ ON _ UNKNOWN _ PROPERTIES ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġround Trip Serialize () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstyle Ġ= Ġmapper . writeValue AsString ( Import Layout Style ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. import Package (" import Ġjava .* ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. import All Others () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. import Static All Others () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Ġ= Ġmapper . readValue ( style , ĠImport Layout Style :: class . java ) ĊĠĠĠĠĠĠĠ ĠassertThat ( style ). isEqualTo ( mapper . writeValue AsString ( de serialized )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdeserialize Style () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstyle Config Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"@ c " Ġto ĠImport Layout Style :: class . qualified Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"@ ref " Ġto Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" class Count ToUse Star Import " Ġto Ġ 9 9 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name Count ToUse Star Import " Ġto Ġ 9 9 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" layout " Ġto ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" import Ġjava .* ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< blank Ġline >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" import Ġjavax .* ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< blank Ġline >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" import Ġall Ġother Ġimports ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< blank Ġline >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" import Ġorg . springframework .* ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< blank Ġline >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" import Ġstatic Ġall Ġother Ġimports " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġstyle Ġ= Ġmapper . convert Value ( style Config , ĠImport Layout Style :: class . java ) ĊĠĠĠĠĠĠĠ ĠassertThat ( style . class Count ToUse Star Import ). isEqualTo ( 9 9 9 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( style . name Count ToUse Star Import ). isEqualTo ( 9 9 8 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġround Ġtrip ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġimport Layout : ĠStyle Ġ= Ġmapper . readValue ( mapper . writeValue As Bytes ( style ), ĠStyle :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠImport Layout Style Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( import Layout . class Count ToUse Star Import ). isEqualTo ( 9 9 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( import Layout . name Count ToUse Star Import ). isEqualTo ( 9 9 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( import Layout . layout . size ). isEqualTo ( 9 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( import Layout . layout [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( Import Layout Style . Block . Import Package :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. matches Ġ{ Ġb Ġ-> Ġ!( b Ġas ĠImport Layout Style . Block . Import Package ). is Static Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. matches Ġ{ Ġb Ġ-> Ġ( b Ġas ĠImport Layout Style . Block . Import Package ). package Wildcard . toString () Ġ== Ġ" java \\ .. +" Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( import Layout . layout [ 1 ]). isInstanceOf ( Import Layout Style . Block . Blank Lines :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( import Layout . layout [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( Import Layout Style . Block . Import Package :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. matches Ġ{ Ġb Ġ-> Ġ!( b Ġas ĠImport Layout Style . Block . Import Package ). is Static Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. matches Ġ{ Ġb Ġ-> Ġ( b Ġas ĠImport Layout Style . Block . Import Package ). package Wildcard . toString () Ġ== Ġ" javax \\ .. +" Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( import Layout . layout [ 3 ]). isInstanceOf ( Import Layout Style . Block . Blank Lines :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( import Layout . layout [ 4 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( Import Layout Style . Block . Import Package :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. matches Ġ{ Ġb Ġ-> Ġ!( b Ġas ĠImport Layout Style . Block . Import Package ). is Static Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. matches Ġ{ Ġb Ġ-> Ġ( b Ġas ĠImport Layout Style . Block . Import Package ). package Wildcard . toString () Ġ== Ġ". +" Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( import Layout . layout [ 5 ]). isInstanceOf ( Import Layout Style . Block . Blank Lines :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( import Layout . layout [ 6 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( Import Layout Style . Block . Import Package :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. matches Ġ{ Ġb Ġ-> Ġ!( b Ġas ĠImport Layout Style . Block . Import Package ). is Static Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. matches Ġ{ Ġb Ġ-> Ġ( b Ġas ĠImport Layout Style . Block . Import Package ). package Wildcard . toString () Ġ== Ġ" org \\. springframework \\ .. +" Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( import Layout . layout [ 7 ]). isInstanceOf ( Import Layout Style . Block . Blank Lines :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( import Layout . layout [ 8 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isInstanceOf ( Import Layout Style . Block . Import Package :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. matches Ġ{ Ġb Ġ-> Ġ( b Ġas ĠImport Layout Style . Block . Import Package ). is Static Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. matches Ġ{ Ġb Ġ-> Ġ( b Ġas ĠImport Layout Style . Block . Import Package ). package Wildcard . toString () Ġ== Ġ". +" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdeserialize In Decl arative Named Styles () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstyle Ġ= ĠDecl arative Named Styles ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Id (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" displayName ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" description ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Of (" tag 1 ", Ġ" tag 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf < Style >( Import Layout Style . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. class Count ToUse Star Import ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. name Count ToUse Star Import ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. import Package (" java .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. blank Line () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. import Package (" javax .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. blank Line () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. import All Others () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. blank Line () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. import Package (" org . springframework .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. blank Line () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. import Static All Others () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġmapper . readValue ( mapper . writeValue As Bytes ( style ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDecl arative Named Styles :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ