Skip to content

Commit 4bbc6bb

Browse files
Fix NPE when mapping insert / delete events. (#143)
Insert event does not have oldImage. Remove event does not have newImage. At this moment library just throws nullPointerException Co-authored-by: Carl Zogheib <[email protected]>
1 parent dca57f2 commit 4bbc6bb

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbStreamRecordTransformer.java

+9-4
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,23 @@
55
public class DynamodbStreamRecordTransformer {
66

77
public static StreamRecord toStreamRecordV2(final com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord streamRecord) {
8+
89
return StreamRecord.builder()
910
.approximateCreationDateTime(
10-
streamRecord.getApproximateCreationDateTime().toInstant()
11+
streamRecord.getApproximateCreationDateTime().toInstant()
1112
)
1213
.keys(
13-
DynamodbAttributeValueTransformer.toAttributeValueMapV2(streamRecord.getKeys())
14+
DynamodbAttributeValueTransformer.toAttributeValueMapV2(streamRecord.getKeys())
1415
)
1516
.newImage(
16-
DynamodbAttributeValueTransformer.toAttributeValueMapV2(streamRecord.getNewImage())
17+
streamRecord.getNewImage() != null
18+
? DynamodbAttributeValueTransformer.toAttributeValueMapV2(streamRecord.getNewImage())
19+
: null
1720
)
1821
.oldImage(
19-
DynamodbAttributeValueTransformer.toAttributeValueMapV2(streamRecord.getOldImage())
22+
streamRecord.getOldImage() != null
23+
? DynamodbAttributeValueTransformer.toAttributeValueMapV2(streamRecord.getOldImage())
24+
: null
2025
)
2126
.sequenceNumber(streamRecord.getSequenceNumber())
2227
.sizeBytes(streamRecord.getSizeBytes())

aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbStreamRecordTransformerTest.java

+20
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,24 @@ public void testToStreamRecordV2() {
101101
StreamRecord convertedStreamRecord = DynamodbStreamRecordTransformer.toStreamRecordV2(streamRecord_event);
102102
Assertions.assertEquals(streamRecord_v2, convertedStreamRecord);
103103
}
104+
105+
@Test
106+
public void testToStreamRecordV2WhenOldImageIsNull() {
107+
com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord streamRecord = streamRecord_event.clone();
108+
streamRecord.setOldImage(null);
109+
110+
Assertions.assertDoesNotThrow(() -> {
111+
DynamodbStreamRecordTransformer.toStreamRecordV2(streamRecord);
112+
});
113+
}
114+
115+
@Test
116+
public void testToStreamRecordV2WhenNewImageIsNull() {
117+
com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord streamRecord = streamRecord_event.clone();
118+
streamRecord.setNewImage(null);
119+
120+
Assertions.assertDoesNotThrow(() -> {
121+
DynamodbStreamRecordTransformer.toStreamRecordV2(streamRecord);
122+
});
123+
}
104124
}

0 commit comments

Comments
 (0)