DATAREDIS-911 - Polishing.
Reorder tests and remove deprecation warning in MappingRedisConverter. Original Pull Request: #537
This commit is contained in:
@@ -37,14 +37,14 @@ import org.springframework.core.convert.ConverterNotFoundException;
|
||||
import org.springframework.core.convert.support.DefaultConversionService;
|
||||
import org.springframework.core.convert.support.GenericConversionService;
|
||||
import org.springframework.data.convert.CustomConversions;
|
||||
import org.springframework.data.convert.EntityInstantiator;
|
||||
import org.springframework.data.convert.EntityInstantiators;
|
||||
import org.springframework.data.mapping.AssociationHandler;
|
||||
import org.springframework.data.mapping.MappingException;
|
||||
import org.springframework.data.mapping.PersistentPropertyAccessor;
|
||||
import org.springframework.data.mapping.PersistentPropertyPath;
|
||||
import org.springframework.data.mapping.PreferredConstructor;
|
||||
import org.springframework.data.mapping.PropertyHandler;
|
||||
import org.springframework.data.mapping.model.EntityInstantiator;
|
||||
import org.springframework.data.mapping.model.EntityInstantiators;
|
||||
import org.springframework.data.mapping.model.PersistentEntityParameterValueProvider;
|
||||
import org.springframework.data.mapping.model.PropertyValueProvider;
|
||||
import org.springframework.data.redis.core.PartialUpdate;
|
||||
@@ -567,9 +567,8 @@ public class MappingRedisConverter implements RedisConverter, InitializingBean {
|
||||
|
||||
Optional<Class<?>> targetType = customConversions.getCustomWriteTarget(value.getClass());
|
||||
|
||||
if (!StringUtils.hasText(path) && targetType.isPresent()
|
||||
&& (targetType.get().equals(byte[].class) || ClassUtils.isAssignable(byte[].class, targetType.get()))) {
|
||||
sink.getBucket().put(StringUtils.hasText(path) ? path : "_raw", conversionService.convert(value, byte[].class));
|
||||
if (!StringUtils.hasText(path) && targetType.isPresent() && ClassUtils.isAssignable(byte[].class, targetType.get())) {
|
||||
sink.getBucket().put(StringUtils.hasText(path) ? path : "_raw", conversionService.convert(value, byte[].class));
|
||||
} else {
|
||||
|
||||
if (!ClassUtils.isAssignable(typeHint.getType(), value.getClass())) {
|
||||
|
||||
@@ -18,8 +18,6 @@ package org.springframework.data.redis.core.convert;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
@@ -241,13 +239,12 @@ public class ConversionTestEntities {
|
||||
}
|
||||
|
||||
static class Inner {
|
||||
|
||||
|
||||
List<String> values;
|
||||
}
|
||||
|
||||
@RedisHash(KEYSPACE_ACCOUNT)
|
||||
@Getter
|
||||
@Setter
|
||||
@Data
|
||||
public static class AccountInfo {
|
||||
|
||||
@Id private String id;
|
||||
|
||||
@@ -1847,6 +1847,43 @@ public class MappingRedisConverterUnitTests {
|
||||
assertThat(outer.inners.get(0).values).isEqualTo(Arrays.asList("i-1", "i-2"));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-911
|
||||
public void writeEntityWithCustomConverter() {
|
||||
|
||||
this.converter = new MappingRedisConverter(null, null, resolverMock);
|
||||
this.converter
|
||||
.setCustomConversions(new RedisCustomConversions(Collections.singletonList(new AccountInfoToBytesConverter())));
|
||||
this.converter.afterPropertiesSet();
|
||||
|
||||
AccountInfo accountInfo = new AccountInfo();
|
||||
accountInfo.setId("ai-id-1");
|
||||
accountInfo.setAccount("123456");
|
||||
accountInfo.setAccountName("Inamur Rahman Sadid");
|
||||
|
||||
assertThat(write(accountInfo).getRedisData().getId()).isEqualTo(accountInfo.getId());
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-911
|
||||
public void readEntityWithCustomConverter() {
|
||||
|
||||
this.converter = new MappingRedisConverter(null, null, resolverMock);
|
||||
this.converter
|
||||
.setCustomConversions(new RedisCustomConversions(Collections.singletonList(new BytesToAccountInfoConverter())));
|
||||
this.converter.afterPropertiesSet();
|
||||
|
||||
Bucket bucket = new Bucket();
|
||||
bucket.put("_raw", "ai-id-1|123456|Golam Mazid Sajib".getBytes(StandardCharsets.UTF_8));
|
||||
|
||||
RedisData redisData = new RedisData(bucket);
|
||||
redisData.setKeyspace(KEYSPACE_ACCOUNT);
|
||||
redisData.setId("ai-id-1");
|
||||
|
||||
AccountInfo target = converter.read(AccountInfo.class, redisData);
|
||||
|
||||
assertThat(target.getAccount()).isEqualTo("123456");
|
||||
assertThat(target.getAccountName()).isEqualTo("Golam Mazid Sajib");
|
||||
}
|
||||
|
||||
private RedisTestData write(Object source) {
|
||||
|
||||
RedisData rdo = new RedisData();
|
||||
@@ -1947,43 +1984,6 @@ public class MappingRedisConverterUnitTests {
|
||||
}
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-911
|
||||
public void writeEntityWithCustomConverter() {
|
||||
|
||||
this.converter = new MappingRedisConverter(null, null, resolverMock);
|
||||
this.converter
|
||||
.setCustomConversions(new RedisCustomConversions(Collections.singletonList(new AccountInfoToBytesConverter())));
|
||||
this.converter.afterPropertiesSet();
|
||||
|
||||
AccountInfo accountInfo = new AccountInfo();
|
||||
accountInfo.setId("ai-id-1");
|
||||
accountInfo.setAccount("123456");
|
||||
accountInfo.setAccountName("Inamur Rahman Sadid");
|
||||
|
||||
assertThat(write(accountInfo).getRedisData().getId()).isEqualTo(accountInfo.getId());
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-911
|
||||
public void readEntityWithCustomConverter() {
|
||||
|
||||
this.converter = new MappingRedisConverter(null, null, resolverMock);
|
||||
this.converter
|
||||
.setCustomConversions(new RedisCustomConversions(Collections.singletonList(new BytesToAccountInfoConverter())));
|
||||
this.converter.afterPropertiesSet();
|
||||
|
||||
Bucket bucket = new Bucket();
|
||||
bucket.put("_raw", "ai-id-1|123456|Golam Mazid Sajib".getBytes(StandardCharsets.UTF_8));
|
||||
|
||||
RedisData redisData = new RedisData(bucket);
|
||||
redisData.setKeyspace(KEYSPACE_ACCOUNT);
|
||||
redisData.setId("ai-id-1");
|
||||
|
||||
AccountInfo target = converter.read(AccountInfo.class, redisData);
|
||||
|
||||
assertThat(target.getAccount()).isEqualTo("123456");
|
||||
assertThat(target.getAccountName()).isEqualTo("Golam Mazid Sajib");
|
||||
}
|
||||
|
||||
@WritingConverter
|
||||
static class AccountInfoToBytesConverter implements Converter<AccountInfo, byte[]> {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user