Skip to content

Commit 7d38994

Browse files
authored
Fix string converter null in map (#6737)
* Add test showcasing the issue * Add null handling in convertMap * Remove unused import
1 parent 6277772 commit 7d38994

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/StringAttributeConverter.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,14 @@ public String convertMap(Map<String, AttributeValue> value) {
125125
};
126126

127127
return value.entrySet().stream()
128-
.collect(Collectors.toMap(Map.Entry::getKey, i -> toString(i.getValue()),
129-
throwingMerger, LinkedHashMap::new))
128+
.collect(Collectors.toMap(
129+
Map.Entry::getKey,
130+
i -> {
131+
String converted = toString(i.getValue());
132+
return converted == null ? "null" : converted;
133+
},
134+
throwingMerger,
135+
LinkedHashMap::new))
130136
.toString();
131137
}
132138

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/converters/attribute/StringAttributeConvertersTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import software.amazon.awssdk.enhanced.dynamodb.internal.converter.attribute.UuidAttributeConverter;
5757
import software.amazon.awssdk.enhanced.dynamodb.internal.converter.attribute.ZoneIdAttributeConverter;
5858
import software.amazon.awssdk.enhanced.dynamodb.internal.converter.attribute.ZoneOffsetAttributeConverter;
59+
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
5960
import software.amazon.awssdk.utils.ImmutableMap;
6061

6162
public class StringAttributeConvertersTest {
@@ -254,4 +255,16 @@ public void stringSetAttributeConverter_ReturnsSSType() {
254255
SetAttributeConverter<Set<String>> converter = SetAttributeConverter.setConverter(StringAttributeConverter.create());
255256
assertThat(converter.attributeValueType()).isEqualTo(AttributeValueType.SS);
256257
}
258+
259+
@Test
260+
public void stringAttributeConverter_convertsMapWithNullValue() {
261+
StringAttributeConverter converter = StringAttributeConverter.create();
262+
263+
String result = transformTo(converter, fromMap(ImmutableMap.of(
264+
"stringField", AttributeValue.builder().s("value").build(),
265+
"nullField", AttributeValue.builder().nul(true).build())));
266+
267+
assertThat(result).contains("stringField=value");
268+
assertThat(result).contains("nullField=null");
269+
}
257270
}

0 commit comments

Comments
 (0)