3939import software .amazon .awssdk .enhanced .dynamodb .model .TransactWriteItemsEnhancedRequest ;
4040import software .amazon .awssdk .services .dynamodb .model .AttributeValue ;
4141import software .amazon .awssdk .services .dynamodb .model .ConditionalCheckFailedException ;
42+ import software .amazon .awssdk .services .dynamodb .model .DeleteTableRequest ;
4243import software .amazon .awssdk .services .dynamodb .model .TransactionCanceledException ;
4344
4445public class OptimisticLockingAsyncCrudTest extends LocalDynamoDbAsyncTestBase {
4546
46- private static final TableSchema <Record > TABLE_SCHEMA = TableSchema .fromClass (Record .class );
47+ private static final TableSchema <Record > TABLE_SCHEMA =
48+ StaticTableSchema .builder (Record .class )
49+ .newItemSupplier (Record ::new )
50+ .addAttribute (String .class ,
51+ a -> a .name ("id" )
52+ .getter (Record ::getId )
53+ .setter (Record ::setId )
54+ .tags (primaryPartitionKey (), secondaryPartitionKey ("index1" )))
55+ .addAttribute (Integer .class ,
56+ a -> a .name ("sort" )
57+ .getter (Record ::getSort )
58+ .setter (Record ::setSort )
59+ .tags (primarySortKey (), secondarySortKey ("index1" )))
60+ .addAttribute (Integer .class ,
61+ a -> a .name ("value" )
62+ .getter (Record ::getValue )
63+ .setter (Record ::setValue ))
64+ .addAttribute (String .class ,
65+ a -> a .name ("gsi_id" )
66+ .getter (Record ::getGsiId )
67+ .setter (Record ::setGsiId )
68+ .tags (secondaryPartitionKey ("gsi_keys_only" )))
69+ .addAttribute (Integer .class ,
70+ a -> a .name ("gsi_sort" )
71+ .getter (Record ::getGsiSort )
72+ .setter (Record ::setGsiSort )
73+ .tags (secondarySortKey ("gsi_keys_only" )))
74+ .addAttribute (String .class ,
75+ a -> a .name ("stringAttribute" )
76+ .getter (Record ::getStringAttribute )
77+ .setter (Record ::setStringAttribute ))
78+ .build ();
79+
4780 private static final TableSchema <VersionedRecord > VERSIONED_RECORD_TABLE_SCHEMA =
4881 StaticTableSchema .builder (VersionedRecord .class )
4982 .newItemSupplier (VersionedRecord ::new )
50- .addAttribute (String .class , a -> a .name ("id" )
51- .getter (VersionedRecord ::getId )
52- .setter (VersionedRecord ::setId )
53- .tags (primaryPartitionKey (), secondaryPartitionKey ("index1" )))
54- .addAttribute (Integer .class , a -> a .name ("sort" )
55- .getter (VersionedRecord ::getSort )
56- .setter (VersionedRecord ::setSort )
57- .tags (primarySortKey (), secondarySortKey ("index1" )))
58- .addAttribute (Integer .class , a -> a .name ("value" )
59- .getter (VersionedRecord ::getValue )
60- .setter (VersionedRecord ::setValue ))
61- .addAttribute (String .class , a -> a .name ("gsi_id" )
62- .getter (VersionedRecord ::getGsiId )
63- .setter (VersionedRecord ::setGsiId )
64- .tags (secondaryPartitionKey ("gsi_keys_only" )))
65- .addAttribute (Integer .class , a -> a .name ("gsi_sort" )
66- .getter (VersionedRecord ::getGsiSort )
67- .setter (VersionedRecord ::setGsiSort )
68- .tags (secondarySortKey ("gsi_keys_only" )))
69- .addAttribute (String .class , a -> a .name ("stringAttribute" )
70- .getter (VersionedRecord ::getStringAttribute )
71- .setter (VersionedRecord ::setStringAttribute ))
72- .addAttribute (Integer .class , a -> a .name ("version" )
73- .getter (VersionedRecord ::getVersion )
74- .setter (VersionedRecord ::setVersion )
75- .tags (versionAttribute ()))
83+ .addAttribute (String .class ,
84+ a -> a .name ("id" )
85+ .getter (VersionedRecord ::getId )
86+ .setter (VersionedRecord ::setId )
87+ .tags (primaryPartitionKey (), secondaryPartitionKey ("index1" )))
88+ .addAttribute (Integer .class ,
89+ a -> a .name ("sort" )
90+ .getter (VersionedRecord ::getSort )
91+ .setter (VersionedRecord ::setSort )
92+ .tags (primarySortKey (), secondarySortKey ("index1" )))
93+ .addAttribute (Integer .class ,
94+ a -> a .name ("value" )
95+ .getter (VersionedRecord ::getValue )
96+ .setter (VersionedRecord ::setValue ))
97+ .addAttribute (String .class ,
98+ a -> a .name ("gsi_id" )
99+ .getter (VersionedRecord ::getGsiId )
100+ .setter (VersionedRecord ::setGsiId )
101+ .tags (secondaryPartitionKey ("gsi_keys_only" )))
102+ .addAttribute (Integer .class ,
103+ a -> a .name ("gsi_sort" )
104+ .getter (VersionedRecord ::getGsiSort )
105+ .setter (VersionedRecord ::setGsiSort )
106+ .tags (secondarySortKey ("gsi_keys_only" )))
107+ .addAttribute (String .class ,
108+ a -> a .name ("stringAttribute" )
109+ .getter (VersionedRecord ::getStringAttribute )
110+ .setter (VersionedRecord ::setStringAttribute ))
111+ .addAttribute (Integer .class ,
112+ a -> a .name ("version" )
113+ .getter (VersionedRecord ::getVersion )
114+ .setter (VersionedRecord ::setVersion )
115+ .tags (versionAttribute ()))
76116 .build ();
77117
78118
79- private final DynamoDbEnhancedAsyncClient enhancedClient = DynamoDbEnhancedAsyncClient .builder ()
80- .dynamoDbClient (getDynamoDbAsyncClient ())
81- .build ();
119+ private final DynamoDbEnhancedAsyncClient enhancedClient =
120+ DynamoDbEnhancedAsyncClient .builder ()
121+ .dynamoDbClient (getDynamoDbAsyncClient ())
122+ .build ();
82123
83124 private final DynamoDbAsyncTable <Record > mappedTable =
84125 enhancedClient .table (getConcreteTableName ("table-name" ), TABLE_SCHEMA );
@@ -87,14 +128,21 @@ public class OptimisticLockingAsyncCrudTest extends LocalDynamoDbAsyncTestBase {
87128
88129 @ Before
89130 public void createTable () {
90- mappedTable .createTable (r -> r .provisionedThroughput (getDefaultProvisionedThroughput ()));
91- versionedRecordTable .createTable (r -> r .provisionedThroughput (getDefaultProvisionedThroughput ()));
131+ mappedTable .createTable (r -> r .provisionedThroughput (getDefaultProvisionedThroughput ())). join () ;
132+ versionedRecordTable .createTable (r -> r .provisionedThroughput (getDefaultProvisionedThroughput ())). join () ;
92133 }
93134
94135 @ After
95136 public void deleteTable () {
96- getDynamoDbAsyncClient ().deleteTable (r -> r .tableName (getConcreteTableName ("table-name" )));
97- getDynamoDbAsyncClient ().deleteTable (r -> r .tableName (getConcreteTableName ("versioned-table-name" )));
137+ getDynamoDbAsyncClient ().deleteTable (
138+ DeleteTableRequest .builder ()
139+ .tableName (getConcreteTableName ("table-name" ))
140+ .build ()).join ();
141+
142+ getDynamoDbAsyncClient ().deleteTable (
143+ DeleteTableRequest .builder ()
144+ .tableName (getConcreteTableName ("versioned-table-name" ))
145+ .build ()).join ();
98146 }
99147
100148 // 1. deleteItem(T item) on Non-versioned record
0 commit comments