Skip to content

Commit 80263a1

Browse files
authored
Merge pull request #3843 from aws/joviegas/stagging_revert-flatten-fix
Revert "Fixed DynamoDbEnhancedClient TableSchema::itemToMap to handle flattened members when ignoreNulls is false (#5832)
2 parents 0ea5285 + df7aae9 commit 80263a1

File tree

5 files changed

+2
-223
lines changed

5 files changed

+2
-223
lines changed

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchema.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ private B mapToItem(B thisBuilder,
126126
private Map<String, AttributeValue> itemToMap(T item, boolean ignoreNulls) {
127127
T1 otherItem = this.otherItemGetter.apply(item);
128128

129-
if (otherItem == null && ignoreNulls) {
129+
if (otherItem == null) {
130130
return Collections.emptyMap();
131131
}
132132

@@ -515,9 +515,7 @@ public Map<String, AttributeValue> itemToMap(T item, boolean ignoreNulls) {
515515

516516
attributeMappers.forEach(attributeMapper -> {
517517
String attributeKey = attributeMapper.attributeName();
518-
AttributeValue attributeValue = item == null ?
519-
AttributeValue.fromNul(true) :
520-
attributeMapper.attributeGetterMethod().apply(item);
518+
AttributeValue attributeValue = attributeMapper.attributeGetterMethod().apply(item);
521519

522520
if (!ignoreNulls || !isNullAttributeValue(attributeValue)) {
523521
attributeValueMap.put(attributeKey, attributeValue);

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

-63
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import software.amazon.awssdk.enhanced.dynamodb.internal.AttributeValues;
4646
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.AbstractBean;
4747
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.AbstractImmutable;
48-
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.AbstractNestedImmutable;
4948
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.AttributeConverterBean;
5049
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.AttributeConverterNoConstructorBean;
5150
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.CommonTypesBean;
@@ -56,7 +55,6 @@
5655
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.ExtendedBean;
5756
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.FlattenedBeanBean;
5857
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.FlattenedImmutableBean;
59-
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.FlattenedNestedImmutableBean;
6058
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.FluentSetterBean;
6159
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.IgnoredAttributeBean;
6260
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.InvalidBean;
@@ -259,67 +257,6 @@ public void dynamoDbFlatten_correctlyFlattensImmutableAttributes() {
259257
assertThat(itemMap, hasEntry("attribute2", stringValue("two")));
260258
}
261259

262-
@Test
263-
public void dynamoDbFlatten_correctlyFlattensNullImmutableAttributes() {
264-
BeanTableSchema<FlattenedImmutableBean> beanTableSchema = BeanTableSchema.create(FlattenedImmutableBean.class);
265-
AbstractImmutable abstractImmutable = AbstractImmutable.builder().build();
266-
FlattenedImmutableBean flattenedImmutableBean = new FlattenedImmutableBean();
267-
flattenedImmutableBean.setId("id-value");
268-
flattenedImmutableBean.setAbstractImmutable(abstractImmutable);
269-
270-
Map<String, AttributeValue> itemMap = beanTableSchema.itemToMap(flattenedImmutableBean, false);
271-
assertThat(itemMap.size(), is(3));
272-
assertThat(itemMap, hasEntry("id", stringValue("id-value")));
273-
assertThat(itemMap, hasEntry("attribute1", AttributeValue.fromNul(true)));
274-
assertThat(itemMap, hasEntry("attribute2", AttributeValue.fromNul(true)));
275-
}
276-
277-
@Test
278-
public void dynamoDbFlatten_correctlyFlattensNestedImmutableAttributes() {
279-
BeanTableSchema<FlattenedNestedImmutableBean> beanTableSchema =
280-
BeanTableSchema.create(FlattenedNestedImmutableBean.class);
281-
AbstractNestedImmutable abstractNestedImmutable2 =
282-
AbstractNestedImmutable.builder().attribute2("nested-two").build();
283-
AbstractNestedImmutable abstractNestedImmutable1 =
284-
AbstractNestedImmutable.builder().attribute2("two").abstractNestedImmutableOne(abstractNestedImmutable2).build();
285-
FlattenedNestedImmutableBean flattenedNestedImmutableBean = new FlattenedNestedImmutableBean();
286-
flattenedNestedImmutableBean.setId("id-value");
287-
flattenedNestedImmutableBean.setAttribute1("one");
288-
flattenedNestedImmutableBean.setAbstractNestedImmutable(abstractNestedImmutable1);
289-
290-
Map<String, AttributeValue> nestedAttributesMap = new HashMap<>();
291-
nestedAttributesMap.put("abstractNestedImmutableOne", AttributeValue.fromNul(true));
292-
nestedAttributesMap.put("attribute2", stringValue("nested-two"));
293-
294-
AttributeValue expectedNestedAttribute =
295-
AttributeValue.builder().m(Collections.unmodifiableMap(nestedAttributesMap)).build();
296-
297-
Map<String, AttributeValue> itemMap = beanTableSchema.itemToMap(flattenedNestedImmutableBean, false);
298-
assertThat(itemMap.size(), is(4));
299-
assertThat(itemMap, hasEntry("id", stringValue("id-value")));
300-
assertThat(itemMap, hasEntry("attribute1", stringValue("one")));
301-
assertThat(itemMap, hasEntry("attribute2", stringValue("two")));
302-
assertThat(itemMap, hasEntry("abstractNestedImmutableOne", expectedNestedAttribute));
303-
}
304-
305-
@Test
306-
public void dynamoDbFlatten_correctlyFlattensNullNestedImmutableAttributes() {
307-
BeanTableSchema<FlattenedNestedImmutableBean> beanTableSchema =
308-
BeanTableSchema.create(FlattenedNestedImmutableBean.class);
309-
AbstractNestedImmutable abstractNestedImmutable = AbstractNestedImmutable.builder().build();
310-
FlattenedNestedImmutableBean flattenedNestedImmutableBean = new FlattenedNestedImmutableBean();
311-
flattenedNestedImmutableBean.setId("id-value");
312-
flattenedNestedImmutableBean.setAttribute1("one");
313-
flattenedNestedImmutableBean.setAbstractNestedImmutable(abstractNestedImmutable);
314-
315-
Map<String, AttributeValue> itemMap = beanTableSchema.itemToMap(flattenedNestedImmutableBean, false);
316-
assertThat(itemMap.size(), is(4));
317-
assertThat(itemMap, hasEntry("id", stringValue("id-value")));
318-
assertThat(itemMap, hasEntry("attribute1", stringValue("one")));
319-
assertThat(itemMap, hasEntry("attribute2", AttributeValue.fromNul(true)));
320-
assertThat(itemMap, hasEntry("abstractNestedImmutableOne", AttributeValue.fromNul(true)));
321-
}
322-
323260
@Test
324261
public void documentBean_correctlyMapsBeanAttributes() {
325262
BeanTableSchema<DocumentBean> beanTableSchema = BeanTableSchema.create(DocumentBean.class);

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

-18
Original file line numberDiff line numberDiff line change
@@ -1388,24 +1388,6 @@ public void buildAbstractWithFlatten() {
13881388
is(singletonMap("documentString", AttributeValue.builder().s("test-string").build())));
13891389
}
13901390

1391-
@Test
1392-
public void buildAbstractWithFlattenAndIgnoreNullAsFalse() {
1393-
StaticTableSchema<FakeMappedItem> tableSchema =
1394-
StaticTableSchema.builder(FakeMappedItem.class)
1395-
.flatten(FAKE_DOCUMENT_TABLE_SCHEMA,
1396-
FakeMappedItem::getAFakeDocument,
1397-
FakeMappedItem::setAFakeDocument)
1398-
.build();
1399-
1400-
FakeDocument document = FakeDocument.of("test-string", null);
1401-
FakeMappedItem item = FakeMappedItem.builder().aFakeDocument(document).build();
1402-
1403-
Map<String, AttributeValue> attributeMapWithNulls = tableSchema.itemToMap(item, false);
1404-
assertThat(attributeMapWithNulls.size(), is(2));
1405-
assertThat(attributeMapWithNulls, hasEntry("documentString", AttributeValue.builder().s("test-string").build()));
1406-
assertThat(attributeMapWithNulls, hasEntry("documentInteger", AttributeValue.fromNul(true)));
1407-
}
1408-
14091391
@Test
14101392
public void buildAbstractExtends() {
14111393
StaticTableSchema<FakeAbstractSuperclass> superclassTableSchema =

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

-85
This file was deleted.

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

-53
This file was deleted.

0 commit comments

Comments
 (0)