From 734c2bdbb17642f4ee429fe476c51bffe1e11172 Mon Sep 17 00:00:00 2001
From: Carl Zogheib <11421173+carlzogh@users.noreply.github.com>
Date: Tue, 8 Dec 2020 11:24:43 +0000
Subject: [PATCH] Add SDK v1 transformers, move v2 transformers to `v2`
package, bump transformer lib to `3.0.0`
---
README.md | 8 +-
.../README.md | 171 ++++++++--
.../RELEASE.CHANGELOG.md | 6 +
.../pom.xml | 14 +-
.../v1/DynamodbEventTransformer.java | 21 ++
.../DynamodbAttributeValueTransformer.java | 73 ++++
.../dynamodb/DynamodbIdentityTransformer.java | 12 +
.../dynamodb/DynamodbRecordTransformer.java | 22 ++
.../DynamodbStreamRecordTransformer.java | 25 ++
.../{ => v2}/DynamodbEventTransformer.java | 4 +-
.../DynamodbAttributeValueTransformer.java | 22 +-
.../dynamodb/DynamodbIdentityTransformer.java | 2 +-
.../dynamodb/DynamodbRecordTransformer.java | 2 +-
.../DynamodbStreamRecordTransformer.java | 2 +-
.../v1/DynamodbEventTransformerTest.java | 43 +++
...DynamodbAttributeValueTransformerTest.java | 313 ++++++++++++++++++
.../DynamodbIdentityTransformerTest.java | 30 ++
.../DynamodbRecordTransformerTest.java | 52 +++
.../DynamodbStreamRecordTransformerTest.java | 130 ++++++++
.../DynamodbEventTransformerTest.java | 7 +-
...DynamodbAttributeValueTransformerTest.java | 2 +-
.../DynamodbIdentityTransformerTest.java | 2 +-
.../DynamodbRecordTransformerTest.java | 26 +-
.../DynamodbStreamRecordTransformerTest.java | 27 +-
24 files changed, 937 insertions(+), 79 deletions(-)
create mode 100644 aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/DynamodbEventTransformer.java
create mode 100644 aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbAttributeValueTransformer.java
create mode 100644 aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbIdentityTransformer.java
create mode 100644 aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbRecordTransformer.java
create mode 100644 aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbStreamRecordTransformer.java
rename aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/{ => v2}/DynamodbEventTransformer.java (94%)
rename aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/{ => v2}/dynamodb/DynamodbAttributeValueTransformer.java (78%)
rename aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/{ => v2}/dynamodb/DynamodbIdentityTransformer.java (96%)
rename aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/{ => v2}/dynamodb/DynamodbRecordTransformer.java (98%)
rename aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/{ => v2}/dynamodb/DynamodbStreamRecordTransformer.java (98%)
create mode 100644 aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/DynamodbEventTransformerTest.java
create mode 100644 aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbAttributeValueTransformerTest.java
create mode 100644 aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbIdentityTransformerTest.java
create mode 100644 aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbRecordTransformerTest.java
create mode 100644 aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbStreamRecordTransformerTest.java
rename aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/{ => v2}/DynamodbEventTransformerTest.java (92%)
rename aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/{ => v2}/dynamodb/DynamodbAttributeValueTransformerTest.java (99%)
rename aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/{ => v2}/dynamodb/DynamodbIdentityTransformerTest.java (98%)
rename aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/{ => v2}/dynamodb/DynamodbRecordTransformerTest.java (74%)
rename aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/{ => v2}/dynamodb/DynamodbStreamRecordTransformerTest.java (65%)
diff --git a/README.md b/README.md
index ba4cf48e..3e2665b4 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@ ___
com.amazonaws
aws-lambda-java-events-sdk-transformer
- 2.0.8
+ 3.0.0
com.amazonaws
@@ -60,7 +60,7 @@ ___
```groovy
'com.amazonaws:aws-lambda-java-core:1.2.1'
'com.amazonaws:aws-lambda-java-events:3.6.0'
-'com.amazonaws:aws-lambda-java-events-sdk-transformer:2.0.8'
+'com.amazonaws:aws-lambda-java-events-sdk-transformer:3.0.0'
'com.amazonaws:aws-lambda-java-log4j2:1.2.0'
'com.amazonaws:aws-lambda-java-runtime-interface-client:1.0.0'
```
@@ -70,7 +70,7 @@ ___
```clojure
[com.amazonaws/aws-lambda-java-core "1.2.1"]
[com.amazonaws/aws-lambda-java-events "3.6.0"]
-[com.amazonaws/aws-lambda-java-events-sdk-transformer "2.0.8"]
+[com.amazonaws/aws-lambda-java-events-sdk-transformer "3.0.0"]
[com.amazonaws/aws-lambda-java-log4j2 "1.2.0"]
[com.amazonaws/aws-lambda-java-runtime-interface-client "1.0.0"]
```
@@ -80,7 +80,7 @@ ___
```scala
"com.amazonaws" % "aws-lambda-java-core" % "1.2.1"
"com.amazonaws" % "aws-lambda-java-events" % "3.6.0"
-"com.amazonaws" % "aws-lambda-java-events-sdk-transformer" % "2.0.8"
+"com.amazonaws" % "aws-lambda-java-events-sdk-transformer" % "3.0.0"
"com.amazonaws" % "aws-lambda-java-log4j2" % "1.2.0"
"com.amazonaws" % "aws-lambda-java-runtime-interface-client" % "1.0.0"
```
diff --git a/aws-lambda-java-events-sdk-transformer/README.md b/aws-lambda-java-events-sdk-transformer/README.md
index da19c996..1c900267 100644
--- a/aws-lambda-java-events-sdk-transformer/README.md
+++ b/aws-lambda-java-events-sdk-transformer/README.md
@@ -4,7 +4,7 @@
Provides helper classes/methods to use alongside `aws-lambda-java-events` in order to transform Lambda input event model
objects into SDK-compatible output model objects
- (eg. DynamodbEvent to a List of records writable back to DynamoDB through the AWS DynamoDB SDK v2).
+ (eg. DynamodbEvent to a List of records writable back to DynamoDB through the AWS DynamoDB SDK for Java v1 or v2).
### Getting started
@@ -16,7 +16,7 @@ Add the following Apache Maven dependencies to your `pom.xml` file:
com.amazonaws
aws-lambda-java-events-sdk-transformer
- 2.0.8
+ 3.0.0
com.amazonaws
@@ -33,7 +33,19 @@ To use this library as a transformer to the AWS DynamoDB Java SDK v2, also add t
software.amazon.awssdk
dynamodb
- 2.13.18
+ 2.15.40
+
+
+```
+
+To use this library as a transformer to the AWS DynamoDB Java SDK v1, add the following dependency to your `pom.xml` file instead:
+
+```xml
+
+
+ com.amazonaws
+ aws-java-sdk-dynamodb
+ 1.11.914
```
@@ -41,75 +53,162 @@ To use this library as a transformer to the AWS DynamoDB Java SDK v2, also add t
### Example Usage
+#### SDK v2
+
To convert a full `DynamodbEvent` object to an SDK v2 compatible `List`:
+
```java
-import com.amazonaws.services.lambda.runtime.events.transformers.DynamodbEventTransformer;
+import com.amazonaws.services.lambda.runtime.events.transformers.v2.DynamodbEventTransformer;
public class DDBEventProcessor implements RequestHandler {
- public String handleRequest(DynamodbEvent ddbEvent, Context context) {
- // Process input event
- List convertedRecords = DynamodbEventTransformer.toRecordsV2(ddbEvent);
- // Modify records as needed and write back to DynamoDB using the DynamoDB AWS SDK for Java 2.0
- }
+ public String handleRequest(DynamodbEvent ddbEvent, Context context) {
+ // Process input event
+ List convertedRecords = DynamodbEventTransformer.toRecordsV2(ddbEvent);
+ // Modify records as needed and write back to DynamoDB using the DynamoDB AWS SDK for Java 2.0
+ }
}
```
To convert a single `DynamodbEvent.DynamodbStreamRecord` object to an SDK v2 compatible `Record`:
+
```java
-import com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbRecordTransformer;
+import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbRecordTransformer;
public class MyClass {
- public void myMethod(DynamodbEvent.DynamodbStreamRecord record) {
- // ...
- Record convertedRecord = DynamodbRecordTransformer.toRecordV2(record);
- // ...
- }
+ public void myMethod(DynamodbEvent.DynamodbStreamRecord record) {
+ // ...
+ Record convertedRecord = DynamodbRecordTransformer.toRecordV2(record);
+ // ...
+ }
}
```
To convert a `StreamRecord` object originating from a `DynamodbEvent` to an SDK v2 compatible `StreamRecord`:
+
```java
-import com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbStreamRecordTransformer;
+import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbStreamRecordTransformer;
public class MyClass {
- public void myMethod(StreamRecord streamRecord) {
- // ...
- software.amazon.awssdk.services.dynamodb.model.StreamRecord convertedStreamRecord =
- DynamodbStreamRecordTransformer.toStreamRecordV2(streamRecord);
- // ...
- }
+ public void myMethod(StreamRecord streamRecord) {
+ // ...
+ software.amazon.awssdk.services.dynamodb.model.StreamRecord convertedStreamRecord =
+ DynamodbStreamRecordTransformer.toStreamRecordV2(streamRecord);
+ // ...
+ }
}
```
To convert an `AttributeValue` object originating from a `DynamodbEvent` to an SDK v2 compatible `AttributeValue`:
+
```java
-import com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbAttributeValueTransformer;
+import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformer;
public class MyClass {
- public void myMethod(AttributeValue attributeValue) {
- // ...
- software.amazon.awssdk.services.dynamodb.model.AttributeValue convertedAttributeValue =
- DynamodbAttributeValueTransformer.toAttributeValueV2(attributeValue);
- // ...
- }
+ public void myMethod(AttributeValue attributeValue) {
+ // ...
+ software.amazon.awssdk.services.dynamodb.model.AttributeValue convertedAttributeValue =
+ DynamodbAttributeValueTransformer.toAttributeValueV2(attributeValue);
+ // ...
+ }
}
```
To convert an `Identity` object originating from a `DynamodbEvent` to an SDK v2 compatible `Identity`:
+
+```java
+import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbIdentityTransformer;
+
+public class MyClass {
+
+ public void myMethod(Identity identity) {
+ // ...
+ software.amazon.awssdk.services.dynamodb.model.Identity convertedIdentity =
+ DynamodbIdentityTransformer.toIdentityV2(identity);
+ // ...
+ }
+}
+```
+
+#### SDK v1
+
+To convert a full `DynamodbEvent` object to an SDK v1 compatible `List`:
+
+```java
+import com.amazonaws.services.lambda.runtime.events.transformers.v1.DynamodbEventTransformer;
+
+public class DDBEventProcessor implements RequestHandler {
+
+ public String handleRequest(DynamodbEvent ddbEvent, Context context) {
+ // Process input event
+ List convertedRecords = DynamodbEventTransformer.toRecordsV1(ddbEvent);
+ // Modify records as needed and write back to DynamoDB using the DynamoDB AWS SDK for Java 2.0
+ }
+}
+```
+
+To convert a single `DynamodbEvent.DynamodbStreamRecord` object to an SDK v1 compatible `Record`:
+
+```java
+import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbRecordTransformer;
+
+public class MyClass {
+
+ public void myMethod(DynamodbEvent.DynamodbStreamRecord record) {
+ // ...
+ Record convertedRecord = DynamodbRecordTransformer.toRecordV1(record);
+ // ...
+ }
+}
+```
+
+To convert a `StreamRecord` object originating from a `DynamodbEvent` to an SDK v1 compatible `StreamRecord`:
+
+```java
+import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbStreamRecordTransformer;
+
+public class MyClass {
+
+ public void myMethod(StreamRecord streamRecord) {
+ // ...
+ com.amazonaws.services.dynamodbv2.model.StreamRecord convertedStreamRecord =
+ DynamodbStreamRecordTransformer.toStreamRecordV1(streamRecord);
+ // ...
+ }
+}
+```
+
+To convert an `AttributeValue` object originating from a `DynamodbEvent` to an SDK v1 compatible `AttributeValue`:
+
+```java
+import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformer;
+
+public class MyClass {
+
+ public void myMethod(AttributeValue attributeValue) {
+ // ...
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValue =
+ DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValue);
+ // ...
+ }
+}
+```
+
+To convert an `Identity` object originating from a `DynamodbEvent` to an SDK v1 compatible `Identity`:
+
```java
-import com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbIdentityTransformer;
+import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbIdentityTransformer;
public class MyClass {
- public void myMethod(Identity identity) {
- // ...
- software.amazon.awssdk.services.dynamodb.model.Identity convertedIdentity =
- DynamodbIdentityTransformer.toIdentityV2(identity);
- // ...
- }
+ public void myMethod(Identity identity) {
+ // ...
+ com.amazonaws.services.dynamodbv2.model.Identity convertedIdentity =
+ DynamodbIdentityTransformer.toIdentityV1(identity);
+ // ...
+ }
}
```
\ No newline at end of file
diff --git a/aws-lambda-java-events-sdk-transformer/RELEASE.CHANGELOG.md b/aws-lambda-java-events-sdk-transformer/RELEASE.CHANGELOG.md
index 3174c0e7..e30534e8 100644
--- a/aws-lambda-java-events-sdk-transformer/RELEASE.CHANGELOG.md
+++ b/aws-lambda-java-events-sdk-transformer/RELEASE.CHANGELOG.md
@@ -1,3 +1,9 @@
+### Upcoming
+`3.0.0`:
+- Added AWS SDK V1 transformers for `DynamodbEvent` in `aws-lambda-java-events` versions `3.0.0` and up
+- Moved existing SDK v2 transformers into `v2` package (from `com.amazonaws.services.lambda.runtime.events.transformers` to `com.amazonaws.services.lambda.runtime.events.transformers.v2`)
+- Bumped `software.amazon.awssdk:dynamodb` to version `2.15.40`
+
### November 06, 2020
`2.0.8`:
- Bumped `aws-lambda-java-events` to version `3.6.0`
diff --git a/aws-lambda-java-events-sdk-transformer/pom.xml b/aws-lambda-java-events-sdk-transformer/pom.xml
index 1702e9e1..5b033a7f 100644
--- a/aws-lambda-java-events-sdk-transformer/pom.xml
+++ b/aws-lambda-java-events-sdk-transformer/pom.xml
@@ -5,14 +5,14 @@
com.amazonaws
aws-lambda-java-events-sdk-transformer
- 2.0.8
+ 3.0.0
jar
AWS Lambda Java Events SDK Transformer Library
Provides helper classes/methods to use alongside aws-lambda-java-events in order to transform Lambda input event model
objects into SDK-compatible output model objects (eg. DynamodbEvent to a List of records writable back to DynamoDB
- through the AWS DynamoDB SDK v2)
+ through the AWS DynamoDB SDK for Java v1 or v2)
https://aws.amazon.com/lambda/
@@ -36,6 +36,8 @@
1.8
1.8
+ 1.11.914
+ 2.15.40
@@ -49,7 +51,13 @@
software.amazon.awssdk
dynamodb
- 2.13.18
+ ${sdk.v2.version}
+ provided
+
+
+ com.amazonaws
+ aws-java-sdk-dynamodb
+ ${sdk.v1.version}
provided
diff --git a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/DynamodbEventTransformer.java b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/DynamodbEventTransformer.java
new file mode 100644
index 00000000..c9686d10
--- /dev/null
+++ b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/DynamodbEventTransformer.java
@@ -0,0 +1,21 @@
+package com.amazonaws.services.lambda.runtime.events.transformers.v1;
+
+import com.amazonaws.services.dynamodbv2.model.Record;
+import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
+import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbRecordTransformer;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+public class DynamodbEventTransformer {
+
+ public static List toRecordsV1(final DynamodbEvent dynamodbEvent) {
+ return dynamodbEvent
+ .getRecords()
+ .stream()
+ .filter(record -> !Objects.isNull(record))
+ .map(DynamodbRecordTransformer::toRecordV1)
+ .collect(Collectors.toList());
+ }
+}
diff --git a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbAttributeValueTransformer.java b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbAttributeValueTransformer.java
new file mode 100644
index 00000000..4f485702
--- /dev/null
+++ b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbAttributeValueTransformer.java
@@ -0,0 +1,73 @@
+package com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb;
+
+import com.amazonaws.services.dynamodbv2.model.AttributeValue;
+
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+public class DynamodbAttributeValueTransformer {
+
+ public static AttributeValue toAttributeValueV1(final com.amazonaws.services.lambda.runtime.events.models.dynamodb.AttributeValue value) {
+ if (Objects.nonNull(value.getS())) {
+ return new AttributeValue()
+ .withS(value.getS());
+
+ } else if (Objects.nonNull(value.getSS())) {
+ return new AttributeValue()
+ .withSS(value.getSS().isEmpty() ? null : value.getSS());
+
+ } else if (Objects.nonNull(value.getN())) {
+ return new AttributeValue()
+ .withN(value.getN());
+
+ } else if (Objects.nonNull(value.getNS())) {
+ return new AttributeValue()
+ .withNS(value.getNS().isEmpty() ? null : value.getNS());
+
+ } else if (Objects.nonNull(value.getB())) {
+ return new AttributeValue()
+ .withB(value.getB());
+
+ } else if (Objects.nonNull(value.getBS())) {
+ return new AttributeValue()
+ .withBS(value.getBS().isEmpty() ? null : value.getBS());
+
+ } else if (Objects.nonNull(value.getBOOL())) {
+ return new AttributeValue()
+ .withBOOL(value.getBOOL());
+
+ } else if (Objects.nonNull(value.getL())) {
+ return new AttributeValue()
+ .withL(value.getL().isEmpty()
+ ? null
+ : value.getL().stream()
+ .map(DynamodbAttributeValueTransformer::toAttributeValueV1)
+ .collect(Collectors.toList()));
+
+ } else if (Objects.nonNull(value.getM())) {
+ return new AttributeValue()
+ .withM(toAttributeValueMapV1(value.getM()));
+
+ } else if (Objects.nonNull(value.getNULL())) {
+ return new AttributeValue()
+ .withNULL(value.getNULL());
+
+ } else {
+ throw new IllegalArgumentException(
+ String.format("Unsupported attributeValue type: %s", value));
+ }
+ }
+
+ static Map toAttributeValueMapV1(
+ final Map attributeValueMap
+ ) {
+ return attributeValueMap
+ .entrySet()
+ .stream()
+ .collect(Collectors.toMap(
+ Map.Entry::getKey,
+ entry -> toAttributeValueV1(entry.getValue())
+ ));
+ }
+}
diff --git a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbIdentityTransformer.java b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbIdentityTransformer.java
new file mode 100644
index 00000000..32f7aaff
--- /dev/null
+++ b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbIdentityTransformer.java
@@ -0,0 +1,12 @@
+package com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb;
+
+import com.amazonaws.services.dynamodbv2.model.Identity;
+
+public class DynamodbIdentityTransformer {
+
+ public static Identity toIdentityV1(final com.amazonaws.services.lambda.runtime.events.models.dynamodb.Identity identity) {
+ return new Identity()
+ .withPrincipalId(identity.getPrincipalId())
+ .withType(identity.getType());
+ }
+}
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
new file mode 100644
index 00000000..4f9480fc
--- /dev/null
+++ b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbRecordTransformer.java
@@ -0,0 +1,22 @@
+package com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb;
+
+import com.amazonaws.services.dynamodbv2.model.Record;
+import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
+
+public class DynamodbRecordTransformer {
+
+ public static Record toRecordV1(final DynamodbEvent.DynamodbStreamRecord record) {
+ return new Record()
+ .withAwsRegion(record.getAwsRegion())
+ .withDynamodb(
+ DynamodbStreamRecordTransformer.toStreamRecordV1(record.getDynamodb())
+ )
+ .withEventID(record.getEventID())
+ .withEventName(record.getEventName())
+ .withEventSource(record.getEventSource())
+ .withEventVersion(record.getEventVersion())
+ .withUserIdentity(
+ DynamodbIdentityTransformer.toIdentityV1(record.getUserIdentity())
+ );
+ }
+}
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
new file mode 100644
index 00000000..eec4b134
--- /dev/null
+++ b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbStreamRecordTransformer.java
@@ -0,0 +1,25 @@
+package com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb;
+
+import com.amazonaws.services.dynamodbv2.model.StreamRecord;
+
+public class DynamodbStreamRecordTransformer {
+
+ public static StreamRecord toStreamRecordV1(final com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord streamRecord) {
+ return new StreamRecord()
+ .withApproximateCreationDateTime(
+ streamRecord.getApproximateCreationDateTime()
+ )
+ .withKeys(
+ DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getKeys())
+ )
+ .withNewImage(
+ DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getNewImage())
+ )
+ .withOldImage(
+ DynamodbAttributeValueTransformer.toAttributeValueMapV1(streamRecord.getOldImage())
+ )
+ .withSequenceNumber(streamRecord.getSequenceNumber())
+ .withSizeBytes(streamRecord.getSizeBytes())
+ .withStreamViewType(streamRecord.getStreamViewType());
+ }
+}
diff --git a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/DynamodbEventTransformer.java b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/DynamodbEventTransformer.java
similarity index 94%
rename from aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/DynamodbEventTransformer.java
rename to aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/DynamodbEventTransformer.java
index c2c81ec5..43e57564 100644
--- a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/DynamodbEventTransformer.java
+++ b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/DynamodbEventTransformer.java
@@ -1,7 +1,7 @@
-package com.amazonaws.services.lambda.runtime.events.transformers;
+package com.amazonaws.services.lambda.runtime.events.transformers.v2;
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
-import com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbRecordTransformer;
+import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbRecordTransformer;
import software.amazon.awssdk.services.dynamodb.model.Record;
import java.util.List;
diff --git a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbAttributeValueTransformer.java b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbAttributeValueTransformer.java
similarity index 78%
rename from aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbAttributeValueTransformer.java
rename to aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbAttributeValueTransformer.java
index be630727..b9db01e3 100644
--- a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbAttributeValueTransformer.java
+++ b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbAttributeValueTransformer.java
@@ -1,4 +1,4 @@
-package com.amazonaws.services.lambda.runtime.events.transformers.dynamodb;
+package com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb;
import software.amazon.awssdk.core.SdkBytes;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
@@ -17,7 +17,7 @@ public static AttributeValue toAttributeValueV2(final com.amazonaws.services.lam
} else if (Objects.nonNull(value.getSS())) {
return AttributeValue.builder()
- .ss(value.getSS())
+ .ss(value.getSS().isEmpty() ? null : value.getSS())
.build();
} else if (Objects.nonNull(value.getN())) {
@@ -27,7 +27,7 @@ public static AttributeValue toAttributeValueV2(final com.amazonaws.services.lam
} else if (Objects.nonNull(value.getNS())) {
return AttributeValue.builder()
- .ns(value.getNS())
+ .ns(value.getNS().isEmpty() ? null : value.getNS())
.build();
} else if (Objects.nonNull(value.getB())) {
@@ -37,9 +37,11 @@ public static AttributeValue toAttributeValueV2(final com.amazonaws.services.lam
} else if (Objects.nonNull(value.getBS())) {
return AttributeValue.builder()
- .bs(value.getBS().stream()
- .map(SdkBytes::fromByteBuffer)
- .collect(Collectors.toList()))
+ .bs(value.getBS().isEmpty()
+ ? null
+ : value.getBS().stream()
+ .map(SdkBytes::fromByteBuffer)
+ .collect(Collectors.toList()))
.build();
} else if (Objects.nonNull(value.getBOOL())) {
@@ -49,9 +51,11 @@ public static AttributeValue toAttributeValueV2(final com.amazonaws.services.lam
} else if (Objects.nonNull(value.getL())) {
return AttributeValue.builder()
- .l(value.getL().stream()
- .map(DynamodbAttributeValueTransformer::toAttributeValueV2)
- .collect(Collectors.toList()))
+ .l(value.getL().isEmpty()
+ ? null
+ : value.getL().stream()
+ .map(DynamodbAttributeValueTransformer::toAttributeValueV2)
+ .collect(Collectors.toList()))
.build();
} else if (Objects.nonNull(value.getM())) {
diff --git a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbIdentityTransformer.java b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbIdentityTransformer.java
similarity index 96%
rename from aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbIdentityTransformer.java
rename to aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbIdentityTransformer.java
index 1699286f..34c5fe69 100644
--- a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbIdentityTransformer.java
+++ b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbIdentityTransformer.java
@@ -1,4 +1,4 @@
-package com.amazonaws.services.lambda.runtime.events.transformers.dynamodb;
+package com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb;
import software.amazon.awssdk.services.dynamodb.model.Identity;
diff --git a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbRecordTransformer.java b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbRecordTransformer.java
similarity index 98%
rename from aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbRecordTransformer.java
rename to aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbRecordTransformer.java
index 4f93ca20..0d035d19 100644
--- a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbRecordTransformer.java
+++ b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbRecordTransformer.java
@@ -1,4 +1,4 @@
-package com.amazonaws.services.lambda.runtime.events.transformers.dynamodb;
+package com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb;
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
import software.amazon.awssdk.services.dynamodb.model.Record;
diff --git a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbStreamRecordTransformer.java b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbStreamRecordTransformer.java
similarity index 98%
rename from aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbStreamRecordTransformer.java
rename to aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbStreamRecordTransformer.java
index 65985487..6cb1102d 100644
--- a/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbStreamRecordTransformer.java
+++ b/aws-lambda-java-events-sdk-transformer/src/main/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbStreamRecordTransformer.java
@@ -1,4 +1,4 @@
-package com.amazonaws.services.lambda.runtime.events.transformers.dynamodb;
+package com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb;
import software.amazon.awssdk.services.dynamodb.model.StreamRecord;
diff --git a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/DynamodbEventTransformerTest.java b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/DynamodbEventTransformerTest.java
new file mode 100644
index 00000000..234b97ae
--- /dev/null
+++ b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/DynamodbEventTransformerTest.java
@@ -0,0 +1,43 @@
+package com.amazonaws.services.lambda.runtime.events.transformers.v1;
+
+import com.amazonaws.services.dynamodbv2.model.Record;
+import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbRecordTransformerTest.record_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbRecordTransformerTest.record_v1;
+
+public class DynamodbEventTransformerTest {
+
+ private final DynamodbEvent dynamodbEvent;
+
+ {
+ record_event.setEventSourceARN("arn:aws:dynamodb:us-west-2:account-id:table/ExampleTableWithStream/stream/2015-06-27T00:48:05.899");
+ dynamodbEvent = new DynamodbEvent();
+ dynamodbEvent.setRecords(Collections.singletonList(record_event));
+ }
+
+ private final List expectedRecordsV2 = Collections.singletonList(record_v1);
+
+ @Test
+ public void testDynamodbEventToRecordsV2() {
+ List convertedRecords = DynamodbEventTransformer.toRecordsV1(dynamodbEvent);
+ Assertions.assertEquals(expectedRecordsV2, convertedRecords);
+ }
+
+ @Test
+ public void testDynamodbEventToRecordsV2_FiltersNullRecords() {
+ DynamodbEvent event = dynamodbEvent.clone();
+ event.setRecords(Arrays.asList(record_event, null));
+ Assertions.assertEquals(2, event.getRecords().size());
+
+ List convertedRecords = DynamodbEventTransformer.toRecordsV1(event);
+ Assertions.assertEquals(expectedRecordsV2, convertedRecords);
+ Assertions.assertEquals(1, convertedRecords.size());
+ }
+}
\ No newline at end of file
diff --git a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbAttributeValueTransformerTest.java b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbAttributeValueTransformerTest.java
new file mode 100644
index 00000000..de45474b
--- /dev/null
+++ b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbAttributeValueTransformerTest.java
@@ -0,0 +1,313 @@
+package com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb;
+
+import com.amazonaws.services.lambda.runtime.events.models.dynamodb.AttributeValue;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+
+class DynamodbAttributeValueTransformerTest {
+
+ private static final String valueN = "101";
+ private static final List valueNS = Arrays.asList("1", "2", "3");
+ private static final String valueS = "SVal";
+ private static final List valueSS = Arrays.asList("first", "second", "third");
+ private static final ByteBuffer valueB = ByteBuffer.wrap("BVal".getBytes());
+ private static final List valueBS = Arrays.asList(
+ ByteBuffer.wrap("first".getBytes()),
+ ByteBuffer.wrap("second".getBytes()),
+ ByteBuffer.wrap("third".getBytes()));
+ private static final boolean valueBOOL = true;
+ private static final boolean valueNUL = true;
+
+ private static final String keyM1 = "NestedMapKey1";
+ private static final String keyM2 = "NestedMapKey2";
+
+ //region AttributeValue_event
+ public static final AttributeValue attributeValueN_event = new AttributeValue().withN(valueN);
+ public static final AttributeValue attributeValueNS_event = new AttributeValue().withNS(valueNS);
+ public static final AttributeValue attributeValueS_event = new AttributeValue().withS(valueS);
+ public static final AttributeValue attributeValueSS_event = new AttributeValue().withSS(valueSS);
+ public static final AttributeValue attributeValueB_event = new AttributeValue().withB(valueB);
+ public static final AttributeValue attributeValueBS_event = new AttributeValue().withBS(valueBS);
+ public static final AttributeValue attributeValueBOOL_event = new AttributeValue().withBOOL(valueBOOL);
+ public static final AttributeValue attributeValueNUL_event = new AttributeValue().withNULL(valueNUL);
+ public static final AttributeValue attributeValueM_event = new AttributeValue().withM(new HashMap() {{
+ put(keyM1, attributeValueN_event);
+ put(keyM2, attributeValueS_event);
+ }});
+ public static final AttributeValue attributeValueL_event = new AttributeValue().withL(Arrays.asList(
+ attributeValueN_event,
+ attributeValueNS_event,
+ attributeValueS_event,
+ attributeValueSS_event,
+ attributeValueB_event,
+ attributeValueBS_event,
+ attributeValueBOOL_event,
+ attributeValueNUL_event,
+ attributeValueM_event,
+ new AttributeValue().withL(Arrays.asList(
+ attributeValueN_event,
+ attributeValueNS_event,
+ attributeValueS_event,
+ attributeValueSS_event,
+ attributeValueB_event,
+ attributeValueBS_event,
+ attributeValueBOOL_event,
+ attributeValueNUL_event,
+ attributeValueM_event
+ ))
+ ));
+ //endregion
+
+ //region AttributeValue_v1
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueN_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withN(valueN);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueNS_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withNS(valueNS);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueS_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withS(valueS);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueSS_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withSS(valueSS);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueB_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withB(valueB);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueBS_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withBS(valueBS);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueBOOL_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withBOOL(valueBOOL);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueNUL_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withNULL(valueNUL);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueM_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withM(new HashMap() {{
+ put(keyM1, attributeValueN_v1);
+ put(keyM2, attributeValueS_v1);
+ }});
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueL_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withL(Arrays.asList(
+ attributeValueN_v1,
+ attributeValueNS_v1,
+ attributeValueS_v1,
+ attributeValueSS_v1,
+ attributeValueB_v1,
+ attributeValueBS_v1,
+ attributeValueBOOL_v1,
+ attributeValueNUL_v1,
+ attributeValueM_v1,
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withL(Arrays.asList(
+ attributeValueN_v1,
+ attributeValueNS_v1,
+ attributeValueS_v1,
+ attributeValueSS_v1,
+ attributeValueB_v1,
+ attributeValueBS_v1,
+ attributeValueBOOL_v1,
+ attributeValueNUL_v1,
+ attributeValueM_v1
+ ))
+ ));
+ //endregion
+
+ @Test
+ public void testToAttributeValueV1_N() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueN =
+ DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValueN_event);
+ Assertions.assertEquals(attributeValueN_v1, convertedAttributeValueN);
+ }
+
+ @Test
+ public void testToAttributeValueV1_NS() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueNS =
+ DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValueNS_event);
+ Assertions.assertEquals(attributeValueNS_v1, convertedAttributeValueNS);
+ }
+
+ @Test
+ public void testToAttributeValueV1_S() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueS =
+ DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValueS_event);
+ Assertions.assertEquals(attributeValueS_v1, convertedAttributeValueS);
+ }
+
+ @Test
+ public void testToAttributeValueV1_SS() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueSS =
+ DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValueSS_event);
+ Assertions.assertEquals(attributeValueSS_v1, convertedAttributeValueSS);
+ }
+
+ @Test
+ public void testToAttributeValueV1_B() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueB =
+ DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValueB_event);
+ Assertions.assertEquals(attributeValueB_v1, convertedAttributeValueB);
+ }
+
+ @Test
+ public void testToAttributeValueV1_BS() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueBS =
+ DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValueBS_event);
+ Assertions.assertEquals(attributeValueBS_v1, convertedAttributeValueBS);
+ }
+
+ @Test
+ public void testToAttributeValueV1_BOOL() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueBOOL =
+ DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValueBOOL_event);
+ Assertions.assertEquals(attributeValueBOOL_v1, convertedAttributeValueBOOL);
+ }
+
+ @Test
+ public void testToAttributeValueV1_NUL() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueNUL =
+ DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValueNUL_event);
+ Assertions.assertEquals(attributeValueNUL_v1, convertedAttributeValueNUL);
+ }
+
+ @Test
+ public void testToAttributeValueV1_M() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueM =
+ DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValueM_event);
+ Assertions.assertEquals(attributeValueM_v1, convertedAttributeValueM);
+ }
+
+ @Test
+ public void testToAttributeValueV1_L() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueL =
+ DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValueL_event);
+ Assertions.assertEquals(attributeValueL_v1, convertedAttributeValueL);
+ }
+
+ @Test
+ public void testToAttributeValueV1_IllegalArgumentWhenNull() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue())
+ );
+ }
+
+ @Test
+ public void testToAttributeValueV1_IllegalArgumentWhenNull_N() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withN(null))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueV1_IllegalArgumentWhenNull_S() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withS(null))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueV1_IllegalArgumentWhenNull_B() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withB(null))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueV1_IllegalArgumentWhenNull_BOOL() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withBOOL(null))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueV1_IllegalArgumentWhenNull_NUL() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withNULL(null))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueV1_IllegalArgumentWhenNull_M() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withM(null))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueV1_DoesNotThrowWhenEmpty_NS() {
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withNS())
+ );
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withNS(Collections.emptyList()))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueV1_DoesNotThrowWhenEmpty_SS() {
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withSS())
+ );
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withSS(Collections.emptyList()))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueV1_DoesNotThrowWhenEmpty_BS() {
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withBS())
+ );
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withBS(Collections.emptyList()))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueV1_DoesNotThrowWhenEmpty_L() {
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withL())
+ );
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withL(Collections.emptyList()))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueV1_EmptyV1ObjectWhenEmpty_NS() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue expectedAttributeValue_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue();
+ Assertions.assertEquals(expectedAttributeValue_v1,
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withNS()));
+ Assertions.assertEquals(expectedAttributeValue_v1,
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withNS(Collections.emptyList())));
+ }
+
+ @Test
+ public void testToAttributeValueV1_EmptyV1ObjectWhenEmpty_SS() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue expectedAttributeValue_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue();
+ Assertions.assertEquals(expectedAttributeValue_v1,
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withSS()));
+ Assertions.assertEquals(expectedAttributeValue_v1,
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withSS(Collections.emptyList())));
+ }
+
+ @Test
+ public void testToAttributeValueV1_EmptyV1ObjectWhenEmpty_BS() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue expectedAttributeValue_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue();
+ Assertions.assertEquals(expectedAttributeValue_v1,
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withBS()));
+ Assertions.assertEquals(expectedAttributeValue_v1,
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withBS(Collections.emptyList())));
+ }
+
+ @Test
+ public void testToAttributeValueV1_EmptyV1ObjectWhenEmpty_L() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue expectedAttributeValue_v1 =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue();
+ Assertions.assertEquals(expectedAttributeValue_v1,
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withL()));
+ Assertions.assertEquals(expectedAttributeValue_v1,
+ DynamodbAttributeValueTransformer.toAttributeValueV1(new AttributeValue().withL(Collections.emptyList())));
+ }
+
+}
\ No newline at end of file
diff --git a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbIdentityTransformerTest.java b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbIdentityTransformerTest.java
new file mode 100644
index 00000000..5da2f319
--- /dev/null
+++ b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbIdentityTransformerTest.java
@@ -0,0 +1,30 @@
+package com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb;
+
+import com.amazonaws.services.dynamodbv2.model.Identity;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+class DynamodbIdentityTransformerTest {
+
+ private static final String principalId = "1234567890";
+ private static final String identityType = "type";
+
+ //region Identity_event
+ public static final com.amazonaws.services.lambda.runtime.events.models.dynamodb.Identity identity_event = new com.amazonaws.services.lambda.runtime.events.models.dynamodb.Identity()
+ .withPrincipalId(principalId)
+ .withType(identityType);
+ //endregion
+
+ //region Identity_v1
+ public static final Identity identity_v1 = new Identity()
+ .withPrincipalId(principalId)
+ .withType(identityType);
+ //endregion
+
+ @Test
+ public void testToIdentityV1() {
+ Identity convertedIdentity = DynamodbIdentityTransformer.toIdentityV1(identity_event);
+ Assertions.assertEquals(identity_v1, convertedIdentity);
+ }
+
+}
\ No newline at end of file
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
new file mode 100644
index 00000000..b121a9db
--- /dev/null
+++ b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbRecordTransformerTest.java
@@ -0,0 +1,52 @@
+package com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb;
+
+import com.amazonaws.services.dynamodbv2.model.OperationType;
+import com.amazonaws.services.dynamodbv2.model.Record;
+import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbIdentityTransformerTest.identity_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbIdentityTransformerTest.identity_v1;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbStreamRecordTransformerTest.streamRecord_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbStreamRecordTransformerTest.streamRecord_v1;
+
+public class DynamodbRecordTransformerTest {
+
+ private static final String eventId = "2";
+ private static final String eventName = OperationType.MODIFY.toString();
+ private static final String eventVersion = "1.0";
+ private static final String eventSource = "aws:dynamodb";
+ private static final String awsRegion = "us-west-2";
+
+ //region Record_event
+ public static final DynamodbEvent.DynamodbStreamRecord record_event = (DynamodbEvent.DynamodbStreamRecord)
+ new DynamodbEvent.DynamodbStreamRecord()
+ .withEventID(eventId)
+ .withEventName(eventName)
+ .withEventVersion(eventVersion)
+ .withEventSource(eventSource)
+ .withAwsRegion(awsRegion)
+ .withDynamodb(streamRecord_event)
+ .withUserIdentity(identity_event);
+ //endregion
+
+ //region Record_v1
+ public static final Record record_v1 =
+ new Record()
+ .withEventID(eventId)
+ .withEventName(eventName)
+ .withEventVersion(eventVersion)
+ .withEventSource(eventSource)
+ .withAwsRegion(awsRegion)
+ .withDynamodb(streamRecord_v1)
+ .withUserIdentity(identity_v1);
+ //endregion
+
+ @Test
+ public void testToRecordV1() {
+ Record convertedRecord = DynamodbRecordTransformer.toRecordV1(record_event);
+ Assertions.assertEquals(record_v1, convertedRecord);
+ }
+
+}
\ No newline at end of file
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
new file mode 100644
index 00000000..f209f24c
--- /dev/null
+++ b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v1/dynamodb/DynamodbStreamRecordTransformerTest.java
@@ -0,0 +1,130 @@
+package com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb;
+
+import com.amazonaws.services.dynamodbv2.model.StreamRecord;
+import com.amazonaws.services.dynamodbv2.model.StreamViewType;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.util.Date;
+import java.util.HashMap;
+
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueBOOL_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueBOOL_v1;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueBS_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueBS_v1;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueB_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueB_v1;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueL_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueL_v1;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueM_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueM_v1;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueNS_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueNS_v1;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueNUL_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueNUL_v1;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueN_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueN_v1;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueSS_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueSS_v1;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueS_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueS_v1;
+
+class DynamodbStreamRecordTransformerTest {
+
+ private static final String keyNK = "Id";
+ private static final String keyNSK = "KeyNS";
+
+ private static final String keySK = "SKey";
+ private static final String keySSK = "KeySS";
+
+ private static final String keyBK = "BKey";
+ private static final String keyBSK = "KeyBS";
+
+ private static final String keyBOOLK = "IsBool";
+ private static final String keyNULK = "nil";
+
+ private static final String keyMK = "MapKey";
+
+ private static final String keyLK = "LongNum";
+
+ private static final String oldImageSK = "Message";
+ private static final String newImageSK = "Message";
+ private static final String streamViewType = StreamViewType.NEW_AND_OLD_IMAGES.toString();
+ private static final String sequenceNumber = "222";
+ private static final Long sizeBytes = 59L;
+ private static final Date approximateCreationDateTime = new Date();
+
+ //region StreamRecord_event
+ public static final com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord streamRecord_event = new com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord()
+ .withKeys(new HashMap() {
+ {
+ put(keyNK, attributeValueN_event);
+ put(keyNSK, attributeValueNS_event);
+ put(keySK, attributeValueS_event);
+ put(keySSK, attributeValueSS_event);
+ put(keyBK, attributeValueB_event);
+ put(keyBSK, attributeValueBS_event);
+ put(keyBOOLK, attributeValueBOOL_event);
+ put(keyNULK, attributeValueNUL_event);
+ put(keyMK, attributeValueM_event);
+ put(keyLK, attributeValueL_event);
+ }
+ })
+ .withOldImage(new HashMap() {
+ {
+ put(oldImageSK, attributeValueS_event);
+ put(keyNK, attributeValueN_event);
+ }
+ })
+ .withNewImage(new HashMap() {
+ {
+ put(newImageSK, attributeValueS_event);
+ put(keyNK, attributeValueN_event);
+ }
+ })
+ .withStreamViewType(com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamViewType.fromValue(streamViewType))
+ .withSequenceNumber(sequenceNumber)
+ .withSizeBytes(sizeBytes)
+ .withApproximateCreationDateTime(approximateCreationDateTime);
+ //endregion
+
+ //region StreamRecord_v1
+ public static final StreamRecord streamRecord_v1 = new StreamRecord()
+ .withApproximateCreationDateTime(approximateCreationDateTime)
+ .withKeys(new HashMap() {
+ {
+ put(keyNK, attributeValueN_v1);
+ put(keyNSK, attributeValueNS_v1);
+ put(keySK, attributeValueS_v1);
+ put(keySSK, attributeValueSS_v1);
+ put(keyBK, attributeValueB_v1);
+ put(keyBSK, attributeValueBS_v1);
+ put(keyBOOLK, attributeValueBOOL_v1);
+ put(keyNULK, attributeValueNUL_v1);
+ put(keyMK, attributeValueM_v1);
+ put(keyLK, attributeValueL_v1);
+ }
+ })
+ .withOldImage(new HashMap() {
+ {
+ put(oldImageSK, attributeValueS_v1);
+ put(keyNK, attributeValueN_v1);
+ }
+ })
+ .withNewImage(new HashMap() {
+ {
+ put(newImageSK, attributeValueS_v1);
+ put(keyNK, attributeValueN_v1);
+ }
+ })
+ .withSequenceNumber(sequenceNumber)
+ .withSizeBytes(sizeBytes)
+ .withStreamViewType(streamViewType);
+ //endregion
+
+ @Test
+ public void testToStreamRecordV1() {
+ StreamRecord convertedStreamRecord = DynamodbStreamRecordTransformer.toStreamRecordV1(streamRecord_event);
+ Assertions.assertEquals(streamRecord_v1, convertedStreamRecord);
+ }
+}
\ No newline at end of file
diff --git a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/DynamodbEventTransformerTest.java b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/DynamodbEventTransformerTest.java
similarity index 92%
rename from aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/DynamodbEventTransformerTest.java
rename to aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/DynamodbEventTransformerTest.java
index 6fedb3fe..e9e38548 100644
--- a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/DynamodbEventTransformerTest.java
+++ b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/DynamodbEventTransformerTest.java
@@ -1,4 +1,4 @@
-package com.amazonaws.services.lambda.runtime.events.transformers;
+package com.amazonaws.services.lambda.runtime.events.transformers.v2;
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
import org.junit.jupiter.api.Assertions;
@@ -9,12 +9,13 @@
import java.util.Collections;
import java.util.List;
-import static com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbRecordTransformerTest.record_event;
-import static com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbRecordTransformerTest.record_v2;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbRecordTransformerTest.record_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbRecordTransformerTest.record_v2;
public class DynamodbEventTransformerTest {
private final DynamodbEvent dynamodbEvent;
+
{
record_event.setEventSourceARN("arn:aws:dynamodb:us-west-2:account-id:table/ExampleTableWithStream/stream/2015-06-27T00:48:05.899");
dynamodbEvent = new DynamodbEvent();
diff --git a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbAttributeValueTransformerTest.java b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbAttributeValueTransformerTest.java
similarity index 99%
rename from aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbAttributeValueTransformerTest.java
rename to aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbAttributeValueTransformerTest.java
index e9b3f7b5..8ae521f3 100644
--- a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbAttributeValueTransformerTest.java
+++ b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbAttributeValueTransformerTest.java
@@ -1,4 +1,4 @@
-package com.amazonaws.services.lambda.runtime.events.transformers.dynamodb;
+package com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb;
import com.amazonaws.services.lambda.runtime.events.models.dynamodb.AttributeValue;
import org.junit.jupiter.api.Assertions;
diff --git a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbIdentityTransformerTest.java b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbIdentityTransformerTest.java
similarity index 98%
rename from aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbIdentityTransformerTest.java
rename to aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbIdentityTransformerTest.java
index f3781445..f4ec64be 100644
--- a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbIdentityTransformerTest.java
+++ b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbIdentityTransformerTest.java
@@ -1,4 +1,4 @@
-package com.amazonaws.services.lambda.runtime.events.transformers.dynamodb;
+package com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbRecordTransformerTest.java b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbRecordTransformerTest.java
similarity index 74%
rename from aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbRecordTransformerTest.java
rename to aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbRecordTransformerTest.java
index 3218a856..cd8bbdc8 100644
--- a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbRecordTransformerTest.java
+++ b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbRecordTransformerTest.java
@@ -1,4 +1,4 @@
-package com.amazonaws.services.lambda.runtime.events.transformers.dynamodb;
+package com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb;
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
import org.junit.jupiter.api.Assertions;
@@ -6,10 +6,10 @@
import software.amazon.awssdk.services.dynamodb.model.OperationType;
import software.amazon.awssdk.services.dynamodb.model.Record;
-import static com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbIdentityTransformerTest.identity_event;
-import static com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbIdentityTransformerTest.identity_v2;
-import static com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbStreamRecordTransformerTest.streamRecord_event;
-import static com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbStreamRecordTransformerTest.streamRecord_v2;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbIdentityTransformerTest.identity_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbIdentityTransformerTest.identity_v2;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbStreamRecordTransformerTest.streamRecord_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbStreamRecordTransformerTest.streamRecord_v2;
public class DynamodbRecordTransformerTest {
@@ -21,14 +21,14 @@ public class DynamodbRecordTransformerTest {
//region Record_event
public static final DynamodbEvent.DynamodbStreamRecord record_event = (DynamodbEvent.DynamodbStreamRecord)
- new DynamodbEvent.DynamodbStreamRecord()
- .withEventID(eventId)
- .withEventName(eventName)
- .withEventVersion(eventVersion)
- .withEventSource(eventSource)
- .withAwsRegion(awsRegion)
- .withDynamodb(streamRecord_event)
- .withUserIdentity(identity_event);
+ new DynamodbEvent.DynamodbStreamRecord()
+ .withEventID(eventId)
+ .withEventName(eventName)
+ .withEventVersion(eventVersion)
+ .withEventSource(eventSource)
+ .withAwsRegion(awsRegion)
+ .withDynamodb(streamRecord_event)
+ .withUserIdentity(identity_event);
//endregion
//region Record_v2
diff --git a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbStreamRecordTransformerTest.java b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbStreamRecordTransformerTest.java
similarity index 65%
rename from aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbStreamRecordTransformerTest.java
rename to aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbStreamRecordTransformerTest.java
index 5cd3b01b..d663d1db 100644
--- a/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/dynamodb/DynamodbStreamRecordTransformerTest.java
+++ b/aws-lambda-java-events-sdk-transformer/src/test/java/com/amazonaws/services/lambda/runtime/events/transformers/v2/dynamodb/DynamodbStreamRecordTransformerTest.java
@@ -1,4 +1,4 @@
-package com.amazonaws.services.lambda.runtime.events.transformers.dynamodb;
+package com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb;
import com.amazonaws.services.lambda.runtime.events.models.dynamodb.AttributeValue;
import com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamViewType;
@@ -9,7 +9,26 @@
import java.util.Date;
-import static com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbAttributeValueTransformerTest.*;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueBOOL_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueBOOL_v2;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueBS_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueBS_v2;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueB_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueB_v2;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueL_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueL_v2;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueM_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueM_v2;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueNS_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueNS_v2;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueNUL_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueNUL_v2;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueN_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueN_v2;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueSS_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueSS_v2;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueS_event;
+import static com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformerTest.attributeValueS_v2;
class DynamodbStreamRecordTransformerTest {
@@ -39,7 +58,7 @@ class DynamodbStreamRecordTransformerTest {
//region StreamRecord_event
public static final com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord streamRecord_event =
new com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord()
- .withKeys(ImmutableMap. builder()
+ .withKeys(ImmutableMap.builder()
.put(keyNK, attributeValueN_event)
.put(keyNSK, attributeValueNS_event)
.put(keySK, attributeValueS_event)
@@ -69,7 +88,7 @@ class DynamodbStreamRecordTransformerTest {
//region StreamRecord_v2
public static final StreamRecord streamRecord_v2 = StreamRecord.builder()
.approximateCreationDateTime(approximateCreationDateTime.toInstant())
- .keys(ImmutableMap. builder()
+ .keys(ImmutableMap.builder()
.put(keyNK, attributeValueN_v2)
.put(keyNSK, attributeValueNS_v2)
.put(keySK, attributeValueS_v2)