Skip to content

Commit f95d937

Browse files
authored
Add test to verify that DynamoDBEnhanced's @NestedBeanIgnoreNulls works on lists. (aws#2429)
1 parent 5054602 commit f95d937

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/mapper/BeanTableSchemaTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
package software.amazon.awssdk.enhanced.dynamodb.mapper;
1717

18+
import static java.util.Collections.emptyMap;
1819
import static java.util.Collections.singletonMap;
1920
import static org.hamcrest.MatcherAssert.assertThat;
2021
import static org.hamcrest.Matchers.contains;
@@ -29,6 +30,7 @@
2930

3031
import java.nio.charset.StandardCharsets;
3132
import java.util.Arrays;
33+
import java.util.Collections;
3234
import java.util.HashMap;
3335
import java.util.LinkedHashSet;
3436
import java.util.Map;
@@ -205,6 +207,25 @@ public void dynamoDbIgnoreNulls_shouldOmitNulls() {
205207
assertThat(itemMap.get("innerBean2").m(), hasEntry("attribute2", nullAttributeValue()));
206208
}
207209

210+
@Test
211+
public void dynamoDbIgnoreNulls_onList_shouldOmitNulls() {
212+
BeanTableSchema<NestedBeanIgnoreNulls> beanTableSchema = BeanTableSchema.create(NestedBeanIgnoreNulls.class);
213+
NestedBeanIgnoreNulls bean = new NestedBeanIgnoreNulls();
214+
215+
bean.setInnerBeanList1(Collections.singletonList(new AbstractBean()));
216+
bean.setInnerBeanList2(Collections.singletonList(new AbstractBean()));
217+
218+
Map<String, AttributeValue> itemMap = beanTableSchema.itemToMap(bean, true);
219+
AttributeValue expectedMapForInnerBean1 = AttributeValue.builder().l(l -> l.m(emptyMap())).build();
220+
AttributeValue expectedMapForInnerBean2 = AttributeValue.builder()
221+
.l(l -> l.m(singletonMap("attribute2", nullAttributeValue())))
222+
.build();
223+
224+
assertThat(itemMap.size(), is(2));
225+
assertThat(itemMap, hasEntry("innerBeanList1", expectedMapForInnerBean1));
226+
assertThat(itemMap, hasEntry("innerBeanList2", expectedMapForInnerBean2));
227+
}
228+
208229
@Test
209230
public void dynamoDbFlatten_correctlyFlattensImmutableAttributes() {
210231
BeanTableSchema<FlattenedImmutableBean> beanTableSchema = BeanTableSchema.create(FlattenedImmutableBean.class);

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/mapper/testbeans/NestedBeanIgnoreNulls.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
package software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans;
1717

18+
import java.util.List;
1819
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
1920
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbIgnoreNulls;
2021
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbPartitionKey;
@@ -24,6 +25,8 @@ public class NestedBeanIgnoreNulls {
2425
private String id;
2526
private AbstractBean innerBean1;
2627
private AbstractBean innerBean2;
28+
private List<AbstractBean> innerBeanList1;
29+
private List<AbstractBean> innerBeanList2;
2730

2831
@DynamoDbPartitionKey
2932
public String getId() {
@@ -47,4 +50,19 @@ public AbstractBean getInnerBean2() {
4750
public void setInnerBean2(AbstractBean innerBean) {
4851
this.innerBean2 = innerBean;
4952
}
53+
54+
@DynamoDbIgnoreNulls
55+
public List<AbstractBean> getInnerBeanList1() {
56+
return innerBeanList1;
57+
}
58+
public void setInnerBeanList1(List<AbstractBean> innerBeanList1) {
59+
this.innerBeanList1 = innerBeanList1;
60+
}
61+
62+
public List<AbstractBean> getInnerBeanList2() {
63+
return innerBeanList2;
64+
}
65+
public void setInnerBeanList2(List<AbstractBean> innerBeanList2) {
66+
this.innerBeanList2 = innerBeanList2;
67+
}
5068
}

0 commit comments

Comments
 (0)