diff --git a/aws-lambda-java-events-sdk-transformer/pom.xml b/aws-lambda-java-events-sdk-transformer/pom.xml
index 88be0675..658803c4 100644
--- a/aws-lambda-java-events-sdk-transformer/pom.xml
+++ b/aws-lambda-java-events-sdk-transformer/pom.xml
@@ -52,6 +52,12 @@
2.13.18
provided
+
+ com.amazonaws
+ aws-java-sdk-dynamodb
+ 1.11.885
+ provided
+
com.amazonaws
aws-lambda-java-events
@@ -59,6 +65,7 @@
provided
+
org.junit.jupiter
junit-jupiter-engine
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/dynamodb/DynamodbAttributeValueTransformer.java
index be630727..5394ac59 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/dynamodb/DynamodbAttributeValueTransformer.java
@@ -81,4 +81,65 @@ static Map toAttributeValueMapV2(
entry -> toAttributeValueV2(entry.getValue())
));
}
+
+ public static com.amazonaws.services.dynamodbv2.model.AttributeValue toAttributeValue(final com.amazonaws.services.lambda.runtime.events.models.dynamodb.AttributeValue value) {
+ if (Objects.nonNull(value.getS())) {
+ return new com.amazonaws.services.dynamodbv2.model.AttributeValue()
+ .withS(value.getS());
+
+ } else if (Objects.nonNull(value.getSS())) {
+ return new com.amazonaws.services.dynamodbv2.model.AttributeValue()
+ .withSS(value.getSS());
+
+ } else if (Objects.nonNull(value.getN())) {
+ return new com.amazonaws.services.dynamodbv2.model.AttributeValue()
+ .withN(value.getN());
+
+ } else if (Objects.nonNull(value.getNS())) {
+ return new com.amazonaws.services.dynamodbv2.model.AttributeValue()
+ .withNS(value.getNS());
+
+ } else if (Objects.nonNull(value.getB())) {
+ return new com.amazonaws.services.dynamodbv2.model.AttributeValue()
+ .withB(value.getB());
+
+ } else if (Objects.nonNull(value.getBS())) {
+ return new com.amazonaws.services.dynamodbv2.model.AttributeValue()
+ .withBS(value.getBS());
+
+ } else if (Objects.nonNull(value.getBOOL())) {
+ return new com.amazonaws.services.dynamodbv2.model.AttributeValue()
+ .withBOOL(value.getBOOL());
+
+ } else if (Objects.nonNull(value.getL())) {
+ return new com.amazonaws.services.dynamodbv2.model.AttributeValue()
+ .withL(value.getL().stream()
+ .map(DynamodbAttributeValueTransformer::toAttributeValue)
+ .collect(Collectors.toList()));
+
+ } else if (Objects.nonNull(value.getM())) {
+ return new com.amazonaws.services.dynamodbv2.model.AttributeValue()
+ .withM(toAttributeValueMap(value.getM()));
+
+ } else if (Objects.nonNull(value.getNULL())) {
+ return new com.amazonaws.services.dynamodbv2.model.AttributeValue()
+ .withNULL(value.getNULL());
+
+ } else {
+ throw new IllegalArgumentException(
+ String.format("Unsupported attributeValue type: %s", value));
+ }
+ }
+
+ static Map toAttributeValueMap(
+ final Map attributeValueMap
+ ) {
+ return attributeValueMap
+ .entrySet()
+ .stream()
+ .collect(Collectors.toMap(
+ Map.Entry::getKey,
+ entry -> toAttributeValue(entry.getValue())
+ ));
+ }
}
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/dynamodb/DynamodbAttributeValueTransformerTest.java
index e9b3f7b5..0168ed21 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/dynamodb/DynamodbAttributeValueTransformerTest.java
@@ -115,6 +115,54 @@ class DynamodbAttributeValueTransformerTest {
)).build();
//endregion
+ //region AttributeValue
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueN =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withN(valueN);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueNS =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withNS(valueNS);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueS =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withS(valueS);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueSS =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withSS(valueSS);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueB =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withB(valueB);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueBS =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withBS(valueBS);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueBOOL =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withBOOL(valueBOOL);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueNUL =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withNULL(valueNUL);
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueM =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withM(ImmutableMap.of(
+ keyM1, attributeValueN,
+ keyM2, attributeValueS
+ ));
+ public static final com.amazonaws.services.dynamodbv2.model.AttributeValue attributeValueL =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withL(Arrays.asList(
+ attributeValueN,
+ attributeValueNS,
+ attributeValueS,
+ attributeValueSS,
+ attributeValueB,
+ attributeValueBS,
+ attributeValueBOOL,
+ attributeValueNUL,
+ attributeValueM,
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withL(Arrays.asList(
+ attributeValueN,
+ attributeValueNS,
+ attributeValueS,
+ attributeValueSS,
+ attributeValueB,
+ attributeValueBS,
+ attributeValueBOOL,
+ attributeValueNUL,
+ attributeValueM
+ ))
+ ));
+ //endregion
+
+ // region test toAttributeValueV2
@Test
public void testToAttributeValueV2_N() {
software.amazon.awssdk.services.dynamodb.model.AttributeValue convertedAttributeValueN =
@@ -313,5 +361,207 @@ public void testToAttributeValueV2_EmptyV2ObjectWhenEmpty_L() {
Assertions.assertEquals(expectedAttributeValue_v2,
DynamodbAttributeValueTransformer.toAttributeValueV2(new AttributeValue().withL(Collections.emptyList())));
}
+ //endregion
+
+ // region test toAttributeValue
+ @Test
+ public void testToAttributeValue_N() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueN =
+ DynamodbAttributeValueTransformer.toAttributeValue(attributeValueN_event);
+ Assertions.assertEquals(attributeValueN, convertedAttributeValueN);
+ }
+
+ @Test
+ public void testToAttributeValue_NS() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueNS =
+ DynamodbAttributeValueTransformer.toAttributeValue(attributeValueNS_event);
+ Assertions.assertEquals(attributeValueNS, convertedAttributeValueNS);
+ }
+
+ @Test
+ public void testToAttributeValue_S() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueS =
+ DynamodbAttributeValueTransformer.toAttributeValue(attributeValueS_event);
+ Assertions.assertEquals(attributeValueS, convertedAttributeValueS);
+ }
+
+ @Test
+ public void testToAttributeValue_SS() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueSS =
+ DynamodbAttributeValueTransformer.toAttributeValue(attributeValueSS_event);
+ Assertions.assertEquals(attributeValueSS, convertedAttributeValueSS);
+ }
+
+ @Test
+ public void testToAttributeValue_B() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueB =
+ DynamodbAttributeValueTransformer.toAttributeValue(attributeValueB_event);
+ Assertions.assertEquals(attributeValueB, convertedAttributeValueB);
+ }
+
+ @Test
+ public void testToAttributeValue_BS() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueBS =
+ DynamodbAttributeValueTransformer.toAttributeValue(attributeValueBS_event);
+ Assertions.assertEquals(attributeValueBS, convertedAttributeValueBS);
+ }
+
+ @Test
+ public void testToAttributeValue_BOOL() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueBOOL =
+ DynamodbAttributeValueTransformer.toAttributeValue(attributeValueBOOL_event);
+ Assertions.assertEquals(attributeValueBOOL, convertedAttributeValueBOOL);
+ }
+
+ @Test
+ public void testToAttributeValue_NULL() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueNUL =
+ DynamodbAttributeValueTransformer.toAttributeValue(attributeValueNUL_event);
+ Assertions.assertEquals(attributeValueNUL, convertedAttributeValueNUL);
+ }
+
+ @Test
+ public void testToAttributeValue_M() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueM =
+ DynamodbAttributeValueTransformer.toAttributeValue(attributeValueM_event);
+ Assertions.assertEquals(attributeValueM, convertedAttributeValueM);
+ }
+
+ @Test
+ public void testToAttributeValue_L() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValueL =
+ DynamodbAttributeValueTransformer.toAttributeValue(attributeValueL_event);
+ Assertions.assertEquals(attributeValueL, convertedAttributeValueL);
+ }
+
+ @Test
+ public void testToAttributeValueIllegalArgumentWhenNull() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue())
+ );
+ }
+
+ @Test
+ public void testToAttributeValueIllegalArgumentWhenNull_N() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withN(null))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueIllegalArgumentWhenNull_S() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withS(null))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueIllegalArgumentWhenNull_B() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withB(null))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueIllegalArgumentWhenNull_BOOL() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withBOOL(null))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueIllegalArgumentWhenNull_NULL() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withNULL(null))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueIllegalArgumentWhenNull_M() {
+ Assertions.assertThrows(IllegalArgumentException.class, () ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withM(null))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueDoesNotThrowWhenEmpty_NS() {
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withNS())
+ );
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withNS(Collections.emptyList()))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueDoesNotThrowWhenEmpty_SS() {
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withSS())
+ );
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withSS(Collections.emptyList()))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueDoesNotThrowWhenEmpty_BS() {
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withBS())
+ );
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withBS(Collections.emptyList()))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueDoesNotThrowWhenEmpty_L() {
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withL())
+ );
+ Assertions.assertDoesNotThrow(() ->
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withL(Collections.emptyList()))
+ );
+ }
+
+ @Test
+ public void testToAttributeValueEmptyObjectWhenEmpty_NS() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue expectedAttributeValue =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withNS();
+ Assertions.assertEquals(expectedAttributeValue,
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withNS()));
+ Assertions.assertEquals(expectedAttributeValue,
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withNS(Collections.emptyList())));
+ }
+
+ @Test
+ public void testToAttributeValueEmptyObjectWhenEmpty_SS() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue expectedAttributeValue =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withSS();
+ Assertions.assertEquals(expectedAttributeValue,
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withSS()));
+ Assertions.assertEquals(expectedAttributeValue,
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withSS(Collections.emptyList())));
+ }
+
+ @Test
+ public void testToAttributeValueEmptyObjectWhenEmpty_BS() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue expectedAttributeValue =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withBS();
+ Assertions.assertEquals(expectedAttributeValue,
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withBS()));
+ Assertions.assertEquals(expectedAttributeValue,
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withBS(Collections.emptyList())));
+ }
+
+ @Test
+ public void testToAttributeValueEmptyObjectWhenEmpty_L() {
+ com.amazonaws.services.dynamodbv2.model.AttributeValue expectedAttributeValue =
+ new com.amazonaws.services.dynamodbv2.model.AttributeValue().withL();
+ Assertions.assertEquals(expectedAttributeValue,
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withL()));
+ Assertions.assertEquals(expectedAttributeValue,
+ DynamodbAttributeValueTransformer.toAttributeValue(new AttributeValue().withL(Collections.emptyList())));
+ }
+ //endregion
-}
\ No newline at end of file
+}