Skip to content

Commit 5061593

Browse files
committed
Fix for handling special characters in attribute names with WRITE_IF_NOT_EXISTS update behavior
1 parent fc6860c commit 5061593

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"type": "bugfix",
3+
"category": "Amazon DynamoDB Enhanced Client",
4+
"description": "Fix for handling special characters in attribute names with WRITE_IF_NOT_EXISTS update behavior"
5+
}

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/UpdateItemOperation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ public class UpdateItemOperation<T>
5959
key -> "#AMZN_MAPPED_" + EnhancedClientUtils.cleanAttributeName(key);
6060

6161
private static final Function<String, String> CONDITIONAL_UPDATE_MAPPER =
62-
key -> "if_not_exists(" + key + ", " + EXPRESSION_VALUE_KEY_MAPPER.apply(key) + ")";
62+
key -> "if_not_exists(" + EXPRESSION_KEY_MAPPER.apply(key) + ", " +
63+
EXPRESSION_VALUE_KEY_MAPPER.apply(key) + ")";
6364

6465
private final UpdateItemEnhancedRequest<T> request;
6566

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.time.Instant;
1919
import software.amazon.awssdk.enhanced.dynamodb.extensions.annotations.DynamoDbVersionAttribute;
20+
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbAttribute;
2021
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
2122
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbPartitionKey;
2223
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbUpdateBehavior;
@@ -41,6 +42,7 @@ public void setId(String id) {
4142
}
4243

4344
@DynamoDbUpdateBehavior(WRITE_IF_NOT_EXISTS)
45+
@DynamoDbAttribute("created-on") // Forces a test on attribute name cleaning
4446
public Instant getCreatedOn() {
4547
return createdOn;
4648
}

0 commit comments

Comments
 (0)