/* Ċ Ġ* Ġ ĠCopyright ĠÂ© Ġ 2 0 1 7 - 2 0 1 8 ĠAT & T ĠIntel lectual ĠProperty . Ċ Ġ* Ġ ĠMod ifications ĠCopyright ĠÂ© Ġ 2 0 1 8 ĠIBM . Ċ Ġ* Ċ Ġ* Ġ Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ Ġ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 . on ap . cc sdk . cds . blueprint spro cess or . functions . resource . resolution . processor Ċ Ċ import Ġcom . fasterxml . jackson . databind . node . Missing Node Ċ import Ġcom . fasterxml . jackson . databind . node . Null Node Ċ import Ġorg . on ap . cc sdk . cds . blueprint spro cess or . functions . resource . resolution . Resource Resolution Constants . PREFIX _ RESOURCE _ RESOL UTION _ PROCESS OR Ċ import Ġorg . on ap . cc sdk . cds . blueprint spro cess or . functions . resource . resolution . utils . Resource Assignment Utils Ċ import Ġorg . on ap . cc sdk . cds . controller blueprint s . core . Blue Print Processor Exception Ċ import Ġorg . on ap . cc sdk . cds . controller blueprint s . core . isNotEmpty Ċ import Ġorg . on ap . cc sdk . cds . controller blueprint s . resource . dict . Resource Assignment Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . config . Configurable BeanFactory Ċ import Ġorg . springframework . context . annotation . Scope Ċ import Ġorg . springframework . stereotype . Service Ċ Ċ /** Ċ Ġ* ĠInput Resource Resolution Processor Ċ Ġ* Ċ Ġ* Ġ@ author ĠK ap il ĠSing al Ċ Ġ*/ Ċ @ Service ("${ PREFIX _ RESOURCE _ RESOL UTION _ PROCESS OR } source - input ") Ċ @ Scope ( value Ġ= ĠConfigur able BeanFactory . SCOPE _ PRO TOT YPE ) Ċ open Ġclass ĠInput Resource Resolution Processor Ġ: ĠResource Assignment Processor () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Input Resource Resolution Processor :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ PREFIX _ RESOURCE _ RESOL UTION _ PROCESS OR } source - input " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġprocess NB ( resource Assignment : ĠResource Assignment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isNotEmpty ( resource Assignment . name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġra Runtime Service . getInput Value ( resource Assignment . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġvalue Ġis Ġnull Ġdon 't Ġcall Ġset Resource Data Value Ġto Ġpopulate Ġthe Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ! is ĠMissing Node Ġ&& Ġvalue Ġ! is ĠNull Node ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" input Ġsource Ġtemplate Ġkey Ġ(${ resource Assignment . name }) Ġfound Ġfrom Ġinput Ġand Ġvalue Ġis Ġ($ value )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource Assignment Utils . set Resource Data Value ( resource Assignment , Ġra Runtime Service , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġvalue Ġhas Ġpopulated Ġfor Ġmandatory Ġcase ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource Assignment Utils . assert Template KeyValue NotNull ( resource Assignment ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource Assignment Utils . set Failed Resource Data Value ( resource Assignment , Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠBlue Print Processor Exception (" Failed Ġin Ġtemplate Ġkey Ġ($ resource Assignment ) Ġassignments Ġwith Ġ: Ġ(${ e . message })", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġrecover NB ( runtime Exception : ĠRuntimeException , Ġresource Assignment : ĠResource Assignment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġra Runtime Service . get Blue Print Error (). add Error ( runtime Exception . message !! ) ĊĠĠĠ Ġ} Ċ }