/** Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof Ġthe Ġpl . wr z as q . c form . Ċ Ġ* Ċ Ġ* Ġ@ license Ġhttp :// mit - license . org / ĠThe ĠMIT Ġlicense Ċ Ġ* Ġ@ copyright Ġ 2 0 2 2 ĠÂ© Ġby ĠR afa ÅĤ ĠW rz es z cz Ġ- ĠW rz as q . pl . Ċ Ġ*/ Ċ Ċ package Ġpl . wr z as q . c form . resource . aws . edge deploy . config Ċ Ċ import Ġcom . fasterxml . jackson . core . type . Type Reference Ċ import Ġpl . wr z as q . c form . commons . Resource Lambda Handler Ċ import Ġpl . wr z as q . c form . commons . action . Action Handler Ċ import Ġpl . wr z as q . c form . commons . config . Base Lambda Resources Factory Ċ import Ġpl . wr z as q . c form . commons . model . Tag Ċ import Ġpl . wr z as q . c form . resource . aws . edge deploy . action . Create Handler Ċ import Ġpl . wr z as q . c form . resource . aws . edge deploy . action . Delete Handler Ċ import Ġpl . wr z as q . c form . resource . aws . edge deploy . action . Read Handler Ċ import Ġpl . wr z as q . c form . resource . aws . edge deploy . action . Update Handler Ċ import Ġpl . wr z as q . c form . resource . aws . edge deploy . model . Resource Model Ċ import Ġsoftware . amazon . aw ssdk . regions . Region Ċ import Ġsoftware . amazon . aw ssdk . services . lambda . Lambda Client Ċ import Ġsoftware . amazon . aw ssdk . services . s 3 . S 3 Client Ċ import Ġsoftware . amazon . cloudformation . Action Ċ import Ġsoftware . amazon . cloudformation . proxy . Amazon Web Services Client Proxy Ċ import Ġsoftware . amazon . cloudformation . proxy . Handler Request Ċ import Ġsoftware . amazon . cloudformation . proxy . Proxy Client Ċ import Ġsoftware . amazon . cloudformation . proxy . Std Callback Context Ċ Ċ /** Ċ Ġ* ĠResources Ġfactory Ġfor ĠAWS ĠLambda Ġenvironment . Ċ Ġ*/ Ċ class ĠLambda Resources Factory Ġ: ĠResources Factory , ĠBase Lambda Resources Factory < Resource Model >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcreate Handler Ġby Ġlazy Ġ{ ĠCreate Handler ( this , ĠobjectMapper , Ġread Handler ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdelete Handler Ġby Ġlazy Ġ{ ĠDelete Handler ( this ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġread Handler Ġby Ġlazy Ġ{ ĠRead Handler ( this ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġupdate Handler : ĠAction Handler < Resource Model > Ġby Ġlazy Ġ{ ĠUpdate Handler ( this , ĠobjectMapper , Ġread Handler ) Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġlambda Handler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġwe Ġcan 't Ġhave Ġit Ġas Ġconstructor Ġarguments Ġof ĠResource Lambda Handler Ġas Ġthese Ġmethods Ġare Ġcalled Ġby Ġsuper ĊĠĠĠĠĠĠĠ Ġ// Ġconstructor Ġbefore Ġany Ġof Ġthe Ġchild Ġclasses Ġassignments Ġoccur ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠResource Lambda Handler < Resource Model >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Handlers () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprovide Resource Defined Tags ( resource Model : ĠResource Model ?) Ġ= Ġresource Model ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . tags ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . associate By ( Tag :: key , ĠTag :: value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetType Reference () Ġ= Ġget RequestType Reference () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetModel Type Reference () Ġ= Ġget ResourceType Reference () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget RequestType Reference () Ġ= ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠType Reference < Handler Request < Resource Model ?, ĠStd Callback Context >>() Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġget ResourceType Reference () Ġ= Ġobject Ġ: ĠType Reference < Resource Model ?> () Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Handlers () Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ ĠAction . CREATE Ġto Ġcreate Handler , ĊĠĠĠĠĠĠĠ ĠAction . READ Ġto Ġread Handler , ĊĠĠĠĠĠĠĠ ĠAction . DELETE Ġto Ġdelete Handler , ĊĠĠĠĠĠĠĠ ĠAction . UPDATE Ġto Ġupdate Handler ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Lambda Client ( proxy : ĠAmazon Web Services Client Proxy ): ĠProxy Client < Lambda Client > Ġ= Ġproxy . new Proxy Ġ{ ĊĠĠĠĠĠĠĠ ĠLambda Client . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLambda @ Edge Ġneeds Ġto Ġbe Ġdeployed Ġin ĠV irgin ia ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. region ( Region . US _ EAST _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetS 3 Client ( proxy : ĠAmazon Web Services Client Proxy ): ĠProxy Client < S 3 Client > Ġ= Ġproxy . new Proxy Ġ{ ĊĠĠĠĠĠĠĠ ĠS 3 Client . create () ĊĠĠĠ Ġ} Ċ } Ċ