Skip to content

Commit 4c585a0

Browse files
committed
Added support for @DynamoDbUpdateBehavior on attributes within nested objects
1 parent c15e09d commit 4c585a0

File tree

7 files changed

+145
-206
lines changed

7 files changed

+145
-206
lines changed

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/UpdateBehaviorTest.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import static org.assertj.core.api.Assertions.assertThat;
44
import static org.assertj.core.api.Assertions.assertThatThrownBy;
55
import static org.junit.jupiter.api.Assertions.assertTrue;
6-
import static software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.InvalidNestedAttributeBean.InvalidNestedAttributeChild;
6+
import static software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.UpdateBehaviorTestModels.BeanWithInvalidNestedAttributeName.BeanWithInvalidNestedAttributeNameChild;
77

88
import com.google.common.collect.ImmutableList;
99
import java.time.Instant;
@@ -23,11 +23,11 @@
2323
import software.amazon.awssdk.enhanced.dynamodb.extensions.AutoGeneratedTimestampRecordExtension;
2424
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.CompositeRecord;
2525
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.FlattenRecord;
26-
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.InvalidNestedAttributeBean;
27-
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.InvalidRootAttributeBean;
26+
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.UpdateBehaviorTestModels.BeanWithInvalidNestedAttributeName;
27+
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.UpdateBehaviorTestModels.BeanWithInvalidRootAttributeName;
2828
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.NestedRecordWithUpdateBehavior;
29+
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.NestedRecordWithUpdateBehavior.TimestampListElement;
2930
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.RecordWithUpdateBehaviors;
30-
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.TimestampListElement;
3131
import software.amazon.awssdk.enhanced.dynamodb.internal.client.ExtensionResolver;
3232
import software.amazon.awssdk.enhanced.dynamodb.model.IgnoreNullsMode;
3333
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
@@ -48,11 +48,11 @@ public class UpdateBehaviorTest extends LocalDynamoDbSyncTestBase {
4848
private static final TableSchema<FlattenRecord> TABLE_SCHEMA_FLATTEN_RECORD =
4949
TableSchema.fromClass(FlattenRecord.class);
5050

51-
private static final TableSchema<InvalidRootAttributeBean> TABLE_SCHEMA_INVALID_ATTR_NAME_ON_ROOT =
52-
TableSchema.fromClass(InvalidRootAttributeBean.class);
51+
private static final TableSchema<BeanWithInvalidRootAttributeName> TABLE_SCHEMA_INVALID_ATTR_NAME_ON_ROOT =
52+
TableSchema.fromClass(BeanWithInvalidRootAttributeName.class);
5353

54-
private static final TableSchema<InvalidNestedAttributeBean> TABLE_SCHEMA_INVALID_ATTR_NAME_ON_NESTED_LEVEL =
55-
TableSchema.fromClass(InvalidNestedAttributeBean.class);
54+
private static final TableSchema<BeanWithInvalidNestedAttributeName> TABLE_SCHEMA_INVALID_ATTR_NAME_ON_NESTED_LEVEL =
55+
TableSchema.fromClass(BeanWithInvalidNestedAttributeName.class);
5656

5757
private final DynamoDbEnhancedClient enhancedClient = DynamoDbEnhancedClient.builder()
5858
.dynamoDbClient(getDynamoDbClient()).extensions(
@@ -66,10 +66,10 @@ public class UpdateBehaviorTest extends LocalDynamoDbSyncTestBase {
6666
private final DynamoDbTable<FlattenRecord> flattenedMappedTable =
6767
enhancedClient.table(getConcreteTableName("table-name"), TABLE_SCHEMA_FLATTEN_RECORD);
6868

69-
private final DynamoDbTable<InvalidRootAttributeBean> beanWithInvalidRootAttrNameMappedTable =
69+
private final DynamoDbTable<BeanWithInvalidRootAttributeName> beanWithInvalidRootAttrNameMappedTable =
7070
enhancedClient.table(getConcreteTableName("table-name"), TABLE_SCHEMA_INVALID_ATTR_NAME_ON_ROOT);
7171

72-
private final DynamoDbTable<InvalidNestedAttributeBean> beanWithInvalidNestedAttrNameMappedTable =
72+
private final DynamoDbTable<BeanWithInvalidNestedAttributeName> beanWithInvalidNestedAttrNameMappedTable =
7373
enhancedClient.table(getConcreteTableName("table-name"), TABLE_SCHEMA_INVALID_ATTR_NAME_ON_NESTED_LEVEL);
7474

7575
@Rule
@@ -774,7 +774,7 @@ public void updateBehaviour_onItemWithRootAttributeNameContainingReservedMarker_
774774
thrown.expectMessage("Attribute name 'attr_NESTED_ATTR_UPDATE_' contains reserved marker "
775775
+ "'_NESTED_ATTR_UPDATE_' and is not allowed.");
776776

777-
InvalidRootAttributeBean record = new InvalidRootAttributeBean();
777+
BeanWithInvalidRootAttributeName record = new BeanWithInvalidRootAttributeName();
778778
record.setId("1");
779779
record.setAttr_NESTED_ATTR_UPDATE_(INSTANT_1);
780780

@@ -789,10 +789,10 @@ public void updateBehaviour_onItemWithNestedAttributeNameContainingReservedMarke
789789
thrown.expectMessage("Attribute name 'attr_NESTED_ATTR_UPDATE_' contains reserved marker "
790790
+ "'_NESTED_ATTR_UPDATE_' and is not allowed.");
791791

792-
InvalidNestedAttributeBean record = new InvalidNestedAttributeBean();
792+
BeanWithInvalidNestedAttributeName record = new BeanWithInvalidNestedAttributeName();
793793
record.setId("1");
794794

795-
InvalidNestedAttributeChild childBean = new InvalidNestedAttributeChild();
795+
BeanWithInvalidNestedAttributeNameChild childBean = new BeanWithInvalidNestedAttributeNameChild();
796796
childBean.setId("2");
797797
childBean.setAttr_NESTED_ATTR_UPDATE_(INSTANT_1);
798798
record.setNestedChildAttribute(childBean);

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/models/InvalidNestedAttributeBean.java

Lines changed: 0 additions & 89 deletions
This file was deleted.

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/models/InvalidRootAttributeBean.java

Lines changed: 0 additions & 50 deletions
This file was deleted.

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/models/NestedRecordWithUpdateBehavior.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,37 @@ public void setAttribute(String attribute) {
114114
public void setNestedRecordList(List<TimestampListElement> nestedRecordList) {
115115
this.nestedRecordList = nestedRecordList;
116116
}
117+
118+
@DynamoDbBean
119+
public static class TimestampListElement {
120+
private String id;
121+
private String attribute;
122+
private Instant timeAttributeElement;
123+
124+
@DynamoDbPartitionKey
125+
public String getId() {
126+
return id;
127+
}
128+
129+
public void setId(String id) {
130+
this.id = id;
131+
}
132+
133+
public String getAttribute() {
134+
return attribute;
135+
}
136+
137+
public void setAttribute(String attribute) {
138+
this.attribute = attribute;
139+
}
140+
141+
@DynamoDbAutoGeneratedTimestampAttribute
142+
public Instant getTimeAttributeElement() {
143+
return timeAttributeElement;
144+
}
145+
146+
public void setTimeAttributeElement(Instant timeAttributeElement) {
147+
this.timeAttributeElement = timeAttributeElement;
148+
}
149+
}
117150
}

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/models/RecordWithUpdateBehaviors.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import software.amazon.awssdk.enhanced.dynamodb.converters.TimeFormatUpdateTestConverter;
2424
import software.amazon.awssdk.enhanced.dynamodb.extensions.annotations.DynamoDbAutoGeneratedTimestampAttribute;
2525
import software.amazon.awssdk.enhanced.dynamodb.extensions.annotations.DynamoDbVersionAttribute;
26+
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.NestedRecordWithUpdateBehavior.TimestampListElement;
2627
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbAttribute;
2728
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
2829
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbConvertedBy;

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/models/TimestampListElement.java

Lines changed: 0 additions & 54 deletions
This file was deleted.

0 commit comments

Comments
 (0)