From 85d067cdebf111eee12f6f80a9a3c1c9752cc24f Mon Sep 17 00:00:00 2001 From: debora-ito Date: Mon, 28 Feb 2022 16:02:51 -0800 Subject: [PATCH] Bugfix for handling '+' character in attribute names --- .../bugfix-AmazonDynamoDBEnhancedClient-7c4d1bf.json | 6 ++++++ .../enhanced/dynamodb/internal/EnhancedClientUtils.java | 1 + .../enhanced/dynamodb/functionaltests/BasicCrudTest.java | 2 +- .../enhanced/dynamodb/internal/EnhancedClientUtilsTest.java | 4 ++-- 4 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 .changes/next-release/bugfix-AmazonDynamoDBEnhancedClient-7c4d1bf.json diff --git a/.changes/next-release/bugfix-AmazonDynamoDBEnhancedClient-7c4d1bf.json b/.changes/next-release/bugfix-AmazonDynamoDBEnhancedClient-7c4d1bf.json new file mode 100644 index 000000000000..07170d1eaf71 --- /dev/null +++ b/.changes/next-release/bugfix-AmazonDynamoDBEnhancedClient-7c4d1bf.json @@ -0,0 +1,6 @@ +{ + "category": "Amazon DynamoDB Enhanced Client", + "contributor": "", + "type": "bugfix", + "description": "Bugfix for handling attribute names with `+` character" +} diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/EnhancedClientUtils.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/EnhancedClientUtils.java index c8f01ff19b3a..a696ef7040dd 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/EnhancedClientUtils.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/EnhancedClientUtils.java @@ -54,6 +54,7 @@ public static String cleanAttributeName(String key) { || chars[i] == '.' || chars[i] == '-' || chars[i] == '#' + || chars[i] == '+' || chars[i] == ':') { chars[i] = '_'; somethingChanged = true; diff --git a/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/BasicCrudTest.java b/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/BasicCrudTest.java index 205d9ec86fe2..86817338910c 100644 --- a/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/BasicCrudTest.java +++ b/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/BasicCrudTest.java @@ -45,7 +45,7 @@ import software.amazon.awssdk.services.dynamodb.model.ProjectionType; public class BasicCrudTest extends LocalDynamoDbSyncTestBase { - private static final String ATTRIBUTE_NAME_WITH_SPECIAL_CHARACTERS = "a*t:t.r-i#bute3"; + private static final String ATTRIBUTE_NAME_WITH_SPECIAL_CHARACTERS = "a*t:t.r-i#bute+3"; private static class Record { private String id; diff --git a/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/internal/EnhancedClientUtilsTest.java b/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/internal/EnhancedClientUtilsTest.java index 6f85a6019c57..1e5da7453591 100644 --- a/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/internal/EnhancedClientUtilsTest.java +++ b/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/internal/EnhancedClientUtilsTest.java @@ -60,8 +60,8 @@ public void createKeyFromMap_partitionAndSort() { @Test public void cleanAttributeName_cleansSpecialCharacters() { - String result = EnhancedClientUtils.cleanAttributeName("a*b.c-d:e#f"); + String result = EnhancedClientUtils.cleanAttributeName("a*b.c-d:e#f+g"); - assertThat(result).isEqualTo("a_b_c_d_e_f"); + assertThat(result).isEqualTo("a_b_c_d_e_f_g"); } } \ No newline at end of file