Skip to content

Commit 7601e48

Browse files
authored
Merge pull request #166 from amoscatelli/master
fix multiple get, multiple delete operations
2 parents 141786c + a4b3e93 commit 7601e48

File tree

3 files changed

+35
-38
lines changed

3 files changed

+35
-38
lines changed

dynamodb-driver/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
<dependency>
3636
<groupId>software.amazon.awssdk</groupId>
3737
<artifactId>dynamodb</artifactId>
38-
<version>2.4.3</version>
38+
<version>2.15.40</version>
3939
</dependency>
4040
<dependency>
4141
<groupId>org.testcontainers</groupId>

dynamodb-driver/src/main/java/org/eclipse/jnosql/communication/dynamodb/DynamoDBUtils.java

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
*/
1515
package org.eclipse.jnosql.communication.dynamodb;
1616

17-
1817
import jakarta.nosql.keyvalue.KeyValueEntity;
1918
import org.eclipse.jnosql.communication.driver.JsonbSupplier;
2019
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
@@ -25,7 +24,6 @@
2524
import software.amazon.awssdk.services.dynamodb.model.WriteRequest;
2625

2726
import javax.json.bind.Jsonb;
28-
import java.util.Arrays;
2927
import java.util.Collection;
3028
import java.util.Collections;
3129
import java.util.HashMap;
@@ -48,23 +46,28 @@ private DynamoDBUtils() {
4846

4947
public static <K, V> Map<String, AttributeValue> createAttributeValues(K key, V value) {
5048

51-
Map<String, AttributeValue> createAttributeValues = createAttributeValues(key);
49+
Map<String, AttributeValue> createAttributeValues = createKeyAttributeValues(key);
5250
String valueAsJson = JSONB.toJson(value);
5351

5452
AttributeValue valueAttributeValue = attributeValueBuilder.s(valueAsJson).build();
5553
createAttributeValues.put(VALUE, valueAttributeValue);
5654
return createAttributeValues;
5755
}
5856

59-
public static <K, V> Map<String, AttributeValue> createAttributeValues(K key) {
60-
57+
public static <K, V> Map<String, AttributeValue> createKeyAttributeValues(K key) {
6158
Map<String, AttributeValue> map = new HashMap<>();
6259
AttributeValue keyAttributeValue = attributeValueBuilder.s(key.toString()).build();
6360
map.put(KEY, keyAttributeValue);
6461

6562
return map;
6663
}
6764

65+
public static <K, V> Collection<Map<String, AttributeValue>> createKeyAttributeValues(Iterable<K> keys) {
66+
return StreamSupport.stream(keys.spliterator(), false).map(
67+
k -> Collections.singletonMap(KEY, attributeValueBuilder.s(k.toString()).build())
68+
).collect(Collectors.toList());
69+
}
70+
6871
public static <K, V> Map<String, AttributeValue> createAttributeValues(KeyValueEntity entity) {
6972
return createAttributeValues(entity.getKey(), entity.getValue());
7073
}
@@ -76,27 +79,24 @@ public static <K> Collection<Map<String, AttributeValue>> createAttributeValues(
7679
.collect(Collectors.toList());
7780
}
7881

79-
private static Map<String, List<WriteRequest>> createMapWriteRequest(Map<String, AttributeValue> map) {
80-
return createMapWriteRequest(Arrays.asList(map));
81-
}
82-
83-
private static Map<String, List<WriteRequest>> createMapWriteRequest(Collection<Map<String, AttributeValue>> map) {
82+
private static Map<String, List<WriteRequest>> createMapWriteRequest(Collection<Map<String, AttributeValue>> map, String tableName) {
8483

8584
PutRequest.Builder putRequestBuilder = PutRequest.builder();
8685
WriteRequest.Builder writeRequestBuilder = WriteRequest.builder();
8786

88-
return map
89-
.stream()
90-
.map(m -> putRequestBuilder.item(m).build())
91-
.map(p -> writeRequestBuilder.putRequest(p).build())
92-
.collect(Collectors.groupingBy(w -> w.toString(), Collectors.toList()));
87+
return Collections.singletonMap(
88+
tableName,
89+
map
90+
.stream()
91+
.map(m -> putRequestBuilder.item(m).build())
92+
.map(p -> writeRequestBuilder.putRequest(p).build()).collect(Collectors.toList())
93+
);
9394
}
9495

95-
96-
public static <K> Map<String, List<WriteRequest>> createMapWriteRequest(Iterable<KeyValueEntity> entities) {
97-
96+
public static <K> Map<String, List<WriteRequest>> createMapWriteRequest(Iterable<KeyValueEntity> entities, String tableName) {
9897
Collection<Map<String, AttributeValue>> attributeValues = createAttributeValues(entities);
99-
return createMapWriteRequest(attributeValues);
98+
createMapWriteRequest(attributeValues, tableName);
99+
return createMapWriteRequest(attributeValues, tableName);
100100
}
101101

102102
public static <K> Map<String, AttributeValue> create(Iterable<K> keys) {
@@ -108,25 +108,23 @@ public static <K> Map<String, AttributeValue> create(Iterable<K> keys) {
108108
return Collections.unmodifiableMap(map);
109109
}
110110

111-
private static <K> Map<String, KeysAndAttributes> createKeysAndAttribute(Iterable<K> keys) {
111+
private static <K> Map<String, KeysAndAttributes> createKeysAndAttribute(Iterable<K> keys, String tableName) {
112112

113113
KeysAndAttributes.Builder keysAndAttributesBuilder = KeysAndAttributes.builder();
114114

115-
return StreamSupport.stream(keys.spliterator(), false)
116-
.collect(Collectors.toMap
117-
(
118-
e -> e.toString(),
119-
k -> keysAndAttributesBuilder.projectionExpression(KEY).keys(createAttributeValues(k)).build())
120-
);
115+
return Collections.singletonMap(
116+
tableName,
117+
keysAndAttributesBuilder.keys(createKeyAttributeValues(keys)).build()
118+
);
121119
}
122120

123-
public static <K> BatchGetItemRequest createBatchGetItemRequest(Iterable<K> keys) {
121+
public static <K> BatchGetItemRequest createBatchGetItemRequest(Iterable<K> keys, String tableName) {
124122
BatchGetItemRequest.Builder batchGetItemRequestBuilder = BatchGetItemRequest.builder();
125-
return batchGetItemRequestBuilder.requestItems(createKeysAndAttribute(keys)).build();
123+
return batchGetItemRequestBuilder.requestItems(createKeysAndAttribute(keys, tableName)).build();
126124
}
127125

128126
public static <K> GetItemRequest createGetItemRequest(K key, String tableName) {
129127
GetItemRequest.Builder getItemRequest = GetItemRequest.builder();
130-
return getItemRequest.tableName(tableName).key(createAttributeValues(key)).build();
128+
return getItemRequest.tableName(tableName).key(createKeyAttributeValues(key)).build();
131129
}
132-
}
130+
}

dynamodb-driver/src/main/java/org/eclipse/jnosql/communication/dynamodb/keyvalue/DynamoDBBucketManager.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import java.util.Optional;
3434
import java.util.function.Function;
3535
import java.util.stream.Collectors;
36-
import java.util.stream.StreamSupport;
3736

3837
public class DynamoDBBucketManager implements BucketManager {
3938

@@ -65,7 +64,7 @@ public void put(KeyValueEntity entity, Duration ttl)
6564

6665
@Override
6766
public void put(Iterable<KeyValueEntity> entities) throws NullPointerException {
68-
client.batchWriteItem(BatchWriteItemRequest.builder().requestItems(DynamoDBUtils.createMapWriteRequest(entities)).build());
67+
client.batchWriteItem(BatchWriteItemRequest.builder().requestItems(DynamoDBUtils.createMapWriteRequest(entities, tableName)).build());
6968
}
7069

7170
@Override
@@ -93,21 +92,21 @@ public <K> Optional<Value> get(K key) throws NullPointerException {
9392

9493
@Override
9594
public <K> Iterable<Value> get(Iterable<K> keys) throws NullPointerException {
96-
97-
return client.batchGetItem(DynamoDBUtils.createBatchGetItemRequest(keys))
95+
96+
return client.batchGetItem(DynamoDBUtils.createBatchGetItemRequest(keys, tableName))
9897
.responses()
9998
.values()
10099
.stream()
101-
.flatMap(l -> StreamSupport.stream(l.spliterator(), false))
102-
.flatMap(v -> v.values().stream())
100+
.flatMap(l -> l.stream())
101+
.map(v -> v.get(ConfigurationAmazonEntity.VALUE))
103102
.map(TO_JSON)
104103
.map(ValueJSON::of)
105104
.collect(Collectors.toList());
106105
}
107106

108107
@Override
109108
public <K> void delete(K key) throws NullPointerException {
110-
client.deleteItem(DeleteItemRequest.builder().tableName(tableName).key(DynamoDBUtils.createAttributeValues(key)).build());
109+
client.deleteItem(DeleteItemRequest.builder().tableName(tableName).key(DynamoDBUtils.createKeyAttributeValues(key)).build());
111110
}
112111

113112
@Override

0 commit comments

Comments
 (0)