From badf7832723a7444ccd040177f84e452c50ddd87 Mon Sep 17 00:00:00 2001 From: Nikko Rush Date: Sat, 31 Jul 2021 00:20:32 +0000 Subject: [PATCH 1/2] Fix NPE when user identity is null for SDK v1 --- .../v1/dynamodb/DynamodbRecordTransformer.java | 4 +++- .../v1/dynamodb/DynamodbRecordTransformerTest.java | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbRecordTransformer.java b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbRecordTransformer.java index 4f9480fc..7527cd91 100644 --- a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbRecordTransformer.java +++ b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbRecordTransformer.java @@ -16,7 +16,9 @@ public static Record toRecordV1(final DynamodbEvent.DynamodbStreamRecord record) .withEventSource(record.getEventSource()) .withEventVersion(record.getEventVersion()) .withUserIdentity( - DynamodbIdentityTransformer.toIdentityV1(record.getUserIdentity()) + record.getUserIdentity() != null + ? DynamodbIdentityTransformer.toIdentityV1(record.getUserIdentity()) + : null ); } } diff --git a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbRecordTransformerTest.java b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbRecordTransformerTest.java index b121a9db..4504da1d 100644 --- a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbRecordTransformerTest.java +++ b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbRecordTransformerTest.java @@ -3,6 +3,7 @@ import com.amazonaws.services.dynamodbv2.model.OperationType; import com.amazonaws.services.dynamodbv2.model.Record; import com.amazonaws.services.lambda.runtime.events.DynamodbEvent; +import com.amazonaws.services.lambda.runtime.events.transformers.v1.DynamodbEventTransformer; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -49,4 +50,14 @@ public void testToRecordV1() { Assertions.assertEquals(record_v1, convertedRecord); } + @Test + public void testToRecordV1WhenUserIdentityIsNull() { + DynamodbEvent.DynamodbStreamRecord record = record_event.clone(); + record.setUserIdentity(null); + + Assertions.assertDoesNotThrow(() -> { + com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbRecordTransformer.toRecordV1(record); + }); + } + } \ No newline at end of file From 7e4596914e34cd11303eca8173c4046da9af794e Mon Sep 17 00:00:00 2001 From: Nikko Rush Date: Tue, 3 Aug 2021 17:46:43 +0000 Subject: [PATCH 2/2] Null check for OldImage and NewImage in dynamo stream record --- .../DynamodbStreamRecordTransformer.java | 8 ++++++-- .../DynamodbStreamRecordTransformerTest.java | 20 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbStreamRecordTransformer.java b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbStreamRecordTransformer.java index eec4b134..f7ca2c6d 100644 --- a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbStreamRecordTransformer.java +++ b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbStreamRecordTransformer.java @@ -13,10 +13,14 @@ public static StreamRecord toStreamRecordV1(final com.amazonaws.services.lambda. DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getKeys()) ) .withNewImage( - DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getNewImage()) + streamRecord.getNewImage() != null + ? DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getNewImage()) + : null ) .withOldImage( - DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getOldImage()) + streamRecord.getOldImage() != null + ? DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getOldImage()) + : null ) .withSequenceNumber(streamRecord.getSequenceNumber()) .withSizeBytes(streamRecord.getSizeBytes()) diff --git a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbStreamRecordTransformerTest.java b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbStreamRecordTransformerTest.java index f209f24c..594d2a1d 100644 --- a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbStreamRecordTransformerTest.java +++ b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbStreamRecordTransformerTest.java @@ -127,4 +127,24 @@ public void testToStreamRecordV1() { StreamRecord convertedStreamRecord = DynamodbStreamRecordTransformer.toStreamRecordV1(streamRecord_event); Assertions.assertEquals(streamRecord_v1, convertedStreamRecord); } + + @Test + public void testToStreamRecordV1WhenOldImageIsNull() { + com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord streamRecord = streamRecord_event.clone(); + streamRecord.setOldImage(null); + + Assertions.assertDoesNotThrow(() -> { + com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbStreamRecordTransformer.toStreamRecordV1(streamRecord); + }); + } + + @Test + public void testToStreamRecordV1WhenNewImageIsNull() { + com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord streamRecord = streamRecord_event.clone(); + streamRecord.setNewImage(null); + + Assertions.assertDoesNotThrow(() -> { + com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbStreamRecordTransformer.toStreamRecordV1(streamRecord); + }); + } } \ No newline at end of file