package Ġp oc . repository Ċ Ċ import Ġorg . test containers . containers . local stack . Local Stack Container Ċ import Ġorg . test containers . utility . Docker Image Name Ċ import Ġsoftware . amazon . aw ssdk . auth . credentials . Aws Basic Credentials Ċ import Ġsoftware . amazon . aw ssdk . auth . credentials . Static Credentials Provider Ċ import Ġsoftware . amazon . aw ssdk . regions . Region Ċ import Ġsoftware . amazon . aw ssdk . services . dynamodb . D ynamo Db Async Client Ċ import Ġsoftware . amazon . aw ssdk . services . dynamodb . model .* Ċ Ċ object ĠD ynamo Db Support Ġ{ ĊĊĠĠĠ Ġconst Ġval Ġtable Ġ= Ġ" table " ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcached D ynamo Client : ĠD ynamo Db Async Client ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcached Container : ĠLocal Stack Container ĊĊĠĠĠ Ġfun Ġd ynamo Db Client (): ĠD ynamo Db Async Client Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! :: cached D ynamo Client . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= Ġinit Container () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD ynamo Db Async Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. endpoint Override ( container . get Endpoint Override ( Local Stack Container . Service . DY NA MO DB )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. credentials Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatic Credentials Provider . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAws Basic Credentials . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . access Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . secret Key ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. region ( Region . of ( container . region )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached D ynamo Client ĊĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Price Table ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Container (): ĠLocal Stack Container Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! :: cached Container . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Stack Container ( Docker Image Name . parse (" local stack / local stack : 0 . 1 2 . 6 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Services ( Local Stack Container . Service . DY NA MO DB ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġstart () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġcached Container Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcached Container ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Price Table ( client : ĠD ynamo Db Async Client ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcreate Table Request Ġ= ĠCreate Table Request ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. tableName ( table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. attribute Definitions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAttribute Definition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. attribute Name ( D ynamo Db Field . ID . param ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. attribute Type ( Scalar AttributeType . S ). build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAttribute Definition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. attribute Name ( D ynamo Db Field . VERSION . param ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. attribute Type ( Scalar AttributeType . N ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. billing Mode ( Billing Mode . PAY _ PER _ REQUEST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. provision ed Through put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPro vision ed Through put . builder (). read Capacity Units ( 1 0 0 ). write Capacity Units ( 1 0 0 ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. key Schema ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Schema Element . builder (). attribute Name ( D ynamo Db Field . ID . param ). key Type ( KeyType . HASH ). build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Schema Element . builder (). attribute Name ( D ynamo Db Field . VERSION . param ). key Type ( KeyType . RANGE ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġclient . createTable ( createTable Request ). get () ĊĠĠĠĠĠĠĠ ĠwaitFor Table ToBe Created ( client ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠwaitFor Table ToBe Created ( client : ĠD ynamo Db Async Client ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 1 .. 3 ). find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġclient . describe Table ( Describe Table Request . builder (). tableName ( table ). build ()). get (). table () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. table Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Ready Ġ= Ġstatus Ġ== ĠTable Status . ACTIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Ready ) ĠThread . sleep ( 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Ready ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠIllegalStateException (" table Ġ$ table Ġis Ġnot Ġready Ġyet ") ĊĠĠĠ Ġ} Ċ }