package Ġnl . t ude lf t . hyper ion . pipeline . pat hex tractor Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . databind . node . Object Node Ċ import Ġnl . t ude lf t . hyper ion . pipeline . find Parent Ċ Ċ private Ġval Ġmapper Ġ= ĠObjectMapper () Ċ Ċ /** Ċ Ġ* ĠFunction Ġthat Ġreplaces Ġthe Ġvalue Ġof Ġa Ġpackage Ġfield Ġwith Ġthe Ġactual Ġjava Ġclass Ġpath Ċ Ġ* Ġ@ param Ġinput ĠThe Ġjson Ġstring Ċ Ġ* Ġ@ param Ġconfig ĠThe Ġpath Ġrenaming Ġconfiguration Ċ Ġ* Ġ@ return ĠA ĠJSON Ġstring Ġwith Ġthe Ġnew Ġvalue Ċ Ġ*/ Ċ @ Suppress (" Return Count ", Ġ" Too Generic Exception Ca ught ") Ċ fun Ġextract Path ( input : ĠString , Ġconfig : ĠConfiguration ): ĠString Ġ{ ĊĠĠĠ Ġ// ĠReturn Ġvalue Ġun modified Ġif ĠJSON Ġis Ġinvalid Ġor Ġnot Ġan Ġobject ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtree Ġ= Ġmapper . read Tree ( input ) Ġas ĠObject Node ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġfind Parent ( tree , Ġconfig . field ) ĊĠĠĠĠĠĠĠ Ġval Ġpackage Node Ġ= Ġparent . find Value ( config . fieldName ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDrop ĠK t Ġsuffix Ġfor Ġkotlin Ġsupport . ĊĠĠĠĠĠĠĠ Ġval Ġpackage Fields Ġ= Ġpackage Node . text Value (). split (". "). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . endsWith (" Kt ")) Ġit . drop Last ( 2 ) Ġelse Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ"${ config . relative Path From Source }/${ package Fields . join ToString ("/") }${ config . postfix }" ĊĠĠĠĠĠĠĠ Ġparent . put ( config . fieldName , Ġvalue ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtree . toString () ĊĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinput ĊĠĠĠ Ġ} Ċ } Ċ