Skip to content

Arrays are incorrectly considered Collections [DATAREDIS-495] #1071

Closed
@spring-projects-issues

Description

@spring-projects-issues

Nick opened DATAREDIS-495 and commented

For example, attempting to store an Exception fails with ClassCastException:

Caused by: java.lang.ClassCastException: [Ljava.lang.StackTraceElement; cannot be cast to java.util.Collection
at org.springframework.data.redis.core.convert.MappingRedisConverter$3.doWithPersistentProperty(MappingRedisConverter.java:411) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter$3.doWithPersistentProperty(MappingRedisConverter.java:394) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:310) ~[spring-data-commons-1.12.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.writeInternal(MappingRedisConverter.java:394) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.access$900(MappingRedisConverter.java:104) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter$3.doWithPersistentProperty(MappingRedisConverter.java:414) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter$3.doWithPersistentProperty(MappingRedisConverter.java:394) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:310) ~[spring-data-commons-1.12.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.writeInternal(MappingRedisConverter.java:394) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.write(MappingRedisConverter.java:349) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.write(MappingRedisConverter.java:104) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.RedisKeyValueAdapter.put(RedisKeyValueAdapter.java:177) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.keyvalue.core.KeyValueTemplate$2.doInKeyValue(KeyValueTemplate.java:213) ~[spring-data-keyvalue-1.1.1.RELEASE.jar:na]
at org.springframework.data.keyvalue.core.KeyValueTemplate.execute(KeyValueTemplate.java:377) ~[spring-data-keyvalue-1.1.1.RELEASE.jar:na]
... 32 common frames omitted

Similarly, attempting to save a String array results in:

Caused by: java.lang.IllegalArgumentException: Unsupported Collection type: [Ljava.lang.String;
at org.springframework.core.CollectionFactory.createCollection(CollectionFactory.java:201) ~[spring-core-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.data.redis.core.convert.MappingRedisConverter.readCollectionOfSimpleTypes(MappingRedisConverter.java:547) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.access$300(MappingRedisConverter.java:104) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter$1.doWithPersistentProperty(MappingRedisConverter.java:232) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter$1.doWithPersistentProperty(MappingRedisConverter.java:204) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:310) ~[spring-data-commons-1.12.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.readInternal(MappingRedisConverter.java:204) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.read(MappingRedisConverter.java:156) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.convert.MappingRedisConverter.read(MappingRedisConverter.java:104) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.redis.core.RedisKeyValueAdapter.get(RedisKeyValueAdapter.java:275) ~[spring-data-redis-1.7.1.RELEASE.jar:na]
at org.springframework.data.keyvalue.core.KeyValueTemplate$4.doInKeyValue(KeyValueTemplate.java:274) ~[spring-data-keyvalue-1.1.1.RELEASE.jar:na]
at org.springframework.data.keyvalue.core.KeyValueTemplate.execute(KeyValueTemplate.java:377) ~[spring-data-keyvalue-1.1.1.RELEASE.jar:na]
... 32 common frames omitted


Affects: 1.7.1 (Hopper SR1)

Issue Links:

  • DATAREDIS-492 "CollectionLike" properties are force cast into Collection<?> even though they could be arrays
    ("duplicates")

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions