Skip to content

Commit 9ef82e0

Browse files
authored
Fix NPE when UserIdentity, OldImage, or NewImage is null for SDK v1 (#264)
1 parent baeaac9 commit 9ef82e0

File tree

4 files changed

+40
-3
lines changed

4 files changed

+40
-3
lines changed

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ public static Record toRecordV1(final DynamodbEvent.DynamodbStreamRecord record)
1616
.withEventSource(record.getEventSource())
1717
.withEventVersion(record.getEventVersion())
1818
.withUserIdentity(
19-
DynamodbIdentityTransformer.toIdentityV1(record.getUserIdentity())
19+
record.getUserIdentity() != null
20+
? DynamodbIdentityTransformer.toIdentityV1(record.getUserIdentity())
21+
: null
2022
);
2123
}
2224
}

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

+6-2
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,14 @@ public static StreamRecord toStreamRecordV1(final com.amazonaws.services.lambda.
1313
DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getKeys())
1414
)
1515
.withNewImage(
16-
DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getNewImage())
16+
streamRecord.getNewImage() != null
17+
? DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getNewImage())
18+
: null
1719
)
1820
.withOldImage(
19-
DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getOldImage())
21+
streamRecord.getOldImage() != null
22+
? DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getOldImage())
23+
: null
2024
)
2125
.withSequenceNumber(streamRecord.getSequenceNumber())
2226
.withSizeBytes(streamRecord.getSizeBytes())

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

+11
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.amazonaws.services.dynamodbv2.model.OperationType;
44
import com.amazonaws.services.dynamodbv2.model.Record;
55
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
6+
import com.amazonaws.services.lambda.runtime.events.transformers.v1.DynamodbEventTransformer;
67
import org.junit.jupiter.api.Assertions;
78
import org.junit.jupiter.api.Test;
89

@@ -49,4 +50,14 @@ public void testToRecordV1() {
4950
Assertions.assertEquals(record_v1, convertedRecord);
5051
}
5152

53+
@Test
54+
public void testToRecordV1WhenUserIdentityIsNull() {
55+
DynamodbEvent.DynamodbStreamRecord record = record_event.clone();
56+
record.setUserIdentity(null);
57+
58+
Assertions.assertDoesNotThrow(() -> {
59+
com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbRecordTransformer.toRecordV1(record);
60+
});
61+
}
62+
5263
}

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

+20
Original file line numberDiff line numberDiff line change
@@ -127,4 +127,24 @@ public void testToStreamRecordV1() {
127127
StreamRecord convertedStreamRecord = DynamodbStreamRecordTransformer.toStreamRecordV1(streamRecord_event);
128128
Assertions.assertEquals(streamRecord_v1, convertedStreamRecord);
129129
}
130+
131+
@Test
132+
public void testToStreamRecordV1WhenOldImageIsNull() {
133+
com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord streamRecord = streamRecord_event.clone();
134+
streamRecord.setOldImage(null);
135+
136+
Assertions.assertDoesNotThrow(() -> {
137+
com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbStreamRecordTransformer.toStreamRecordV1(streamRecord);
138+
});
139+
}
140+
141+
@Test
142+
public void testToStreamRecordV1WhenNewImageIsNull() {
143+
com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord streamRecord = streamRecord_event.clone();
144+
streamRecord.setNewImage(null);
145+
146+
Assertions.assertDoesNotThrow(() -> {
147+
com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbStreamRecordTransformer.toStreamRecordV1(streamRecord);
148+
});
149+
}
130150
}

0 commit comments

Comments
 (0)