Skip to content

Commit 6fa2db4

Browse files
committed
GH-2298 - Read empty collections as empty values
1 parent e974c67 commit 6fa2db4

3 files changed

Lines changed: 22 additions & 2 deletions

File tree

src/main/java/org/springframework/data/redis/core/convert/MappingRedisConverter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@
101101
* @author Mark Paluch
102102
* @author Golam Mazid Sajib
103103
* @author Leehyoungwoo
104+
* @author Hyeonseop Won
104105
* @since 1.7
105106
*/
106107
public class MappingRedisConverter implements RedisConverter, InitializingBean {
@@ -852,7 +853,7 @@ private void writeToBucket(String path, @Nullable Object value, RedisData sink,
852853
}
853854
}
854855

855-
return isArray ? toArray(target, collectionType, valueType) : (target.isEmpty() ? null : target);
856+
return isArray ? toArray(target, collectionType, valueType) : target;
856857
}
857858

858859
/**

src/test/java/org/springframework/data/redis/core/convert/ConversionTestEntities.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
* @author Mark Paluch
4646
* @author Golam Mazid Sajib
4747
* @author John Blum
48+
* @author Hyeonseop Won
4849
*/
4950
public class ConversionTestEntities {
5051

@@ -61,6 +62,7 @@ public static class Person {
6162
Gender gender;
6263

6364
List<String> nicknames;
65+
Set<String> aliases;
6466
List<Person> coworkers;
6567
List<Integer> positions;
6668
Integer age;

src/test/java/org/springframework/data/redis/core/convert/MappingRedisConverterUnitTests.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
* @author Mark Paluch
6565
* @author Golam Mazid Sajib
6666
* @author John Blum
67+
* @author Hyeonseop Won
6768
*/
6869
@ExtendWith(MockitoExtension.class)
6970
class MappingRedisConverterUnitTests {
@@ -286,6 +287,22 @@ void readConvertsListOfSimplePropertiesCorrectly() {
286287
assertThat(converter.read(Person.class, rdo).nicknames).containsExactly("dragon reborn", "lews therin");
287288
}
288289

290+
@Test // GH-2298
291+
void readConvertsEmptyListToEmptyCollection() {
292+
293+
RedisData rdo = new RedisData(Bucket.newBucketFromStringMap(Collections.emptyMap()));
294+
295+
assertThat(converter.read(Person.class, rdo).nicknames).isEmpty();
296+
}
297+
298+
@Test // GH-2298
299+
void readConvertsEmptySetToEmptyCollection() {
300+
301+
RedisData rdo = new RedisData(Bucket.newBucketFromStringMap(Collections.emptyMap()));
302+
303+
assertThat(converter.read(Person.class, rdo).aliases).isEmpty();
304+
}
305+
289306
@Test // DATAREDIS-425
290307
void readConvertsUnorderedListOfSimplePropertiesCorrectly() {
291308

@@ -1880,7 +1897,7 @@ void readInnerListShouldNotInfluenceOuterWithSameNameWhenNull() {
18801897

18811898
Outer outer = read(Outer.class, source);
18821899

1883-
assertThat(outer.values).isNull();
1900+
assertThat(outer.values).isEmpty();
18841901
assertThat(outer.inners.get(0).values).isEqualTo(Arrays.asList("i-1", "i-2"));
18851902
}
18861903

0 commit comments

Comments
 (0)