Skip to content

Added conversion to AttributeValue model of original dynamodb sdk #183

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions aws-lambda-java-events-sdk-transformer/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,20 @@
<version>2.13.18</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-dynamodb</artifactId>
<version>1.11.885</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>3.5.0</version>
<scope>provided</scope>
</dependency>


<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,65 @@ static Map<String, AttributeValue> 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<String, com.amazonaws.services.dynamodbv2.model.AttributeValue> toAttributeValueMap(
final Map<String, com.amazonaws.services.lambda.runtime.events.models.dynamodb.AttributeValue> attributeValueMap
) {
return attributeValueMap
.entrySet()
.stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> toAttributeValue(entry.getValue())
));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand Down Expand Up @@ -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

}
}