package Ġio . data wire . loom . terraform . jackson Ċ Ċ import Ġcom . fasterxml . jackson . core . Json Parser Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Context Ċ import Ġcom . fasterxml . jackson . databind . Json Mapping Exception Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġcom . fasterxml . jackson . databind . de ser . std . Std Deserializer Ċ import Ġio . data wire . loom . terraform .* Ċ Ċ object ĠResource Block Deserializer Ġ: ĠStd Deserializer < Resource Block >( Resource Block :: class . java ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( parser : ĠJson Parser , Ġctx : ĠDeserial ization Context ): ĠResource Block Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable Map Of < String , ĠMap < String , ĠResource >>() ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġparser . codec . read Tree < JsonNode >( parser ) ĊĠĠĠĠĠĠĠ Ġval Ġresources Node Ġ= Ġnode . get (" resource ") ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin Ġresources Node . field Names ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġmutable ListOf < Resource >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresources OfType Ġ= Ġresources Node . get ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( name , Ġdata ) Ġin Ġresources OfType . fields ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprops Ġ= Ġmutable Map Of < String , ĠTerraform Value <* >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( k , v Ġ) Ġin Ġdata . fields ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprops . put ( k , Ġjson Node To T erraform Value ( v ) Ġ?: Ġthrow ĠJson Mapping Exception ( parser , Ġ" Invalid ĠType ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . add ( Resource ( type , Ġname , Ġprops )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . put ( type , Ġresources . associate By Ġ{ Ġit . name Ġ} Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResource Block ( result ) ĊĠĠĠ Ġ} Ċ }