Skip to content

Commit fee2853

Browse files
DATAREDIS-911 - Polishing.
Reorder tests and remove deprecation warning in MappingRedisConverter. Original Pull Request: spring-projects#537
1 parent 0a67b7a commit fee2853

File tree

3 files changed

+43
-47
lines changed

3 files changed

+43
-47
lines changed

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@
3737
import org.springframework.core.convert.support.DefaultConversionService;
3838
import org.springframework.core.convert.support.GenericConversionService;
3939
import org.springframework.data.convert.CustomConversions;
40-
import org.springframework.data.convert.EntityInstantiator;
41-
import org.springframework.data.convert.EntityInstantiators;
4240
import org.springframework.data.mapping.AssociationHandler;
4341
import org.springframework.data.mapping.MappingException;
4442
import org.springframework.data.mapping.PersistentPropertyAccessor;
4543
import org.springframework.data.mapping.PersistentPropertyPath;
4644
import org.springframework.data.mapping.PreferredConstructor;
4745
import org.springframework.data.mapping.PropertyHandler;
46+
import org.springframework.data.mapping.model.EntityInstantiator;
47+
import org.springframework.data.mapping.model.EntityInstantiators;
4848
import org.springframework.data.mapping.model.PersistentEntityParameterValueProvider;
4949
import org.springframework.data.mapping.model.PropertyValueProvider;
5050
import org.springframework.data.redis.core.PartialUpdate;
@@ -567,9 +567,8 @@ private void writeInternal(String keyspace, String path, @Nullable Object value,
567567

568568
Optional<Class<?>> targetType = customConversions.getCustomWriteTarget(value.getClass());
569569

570-
if (!StringUtils.hasText(path) && targetType.isPresent()
571-
&& (targetType.get().equals(byte[].class) || ClassUtils.isAssignable(byte[].class, targetType.get()))) {
572-
sink.getBucket().put(StringUtils.hasText(path) ? path : "_raw", conversionService.convert(value, byte[].class));
570+
if (!StringUtils.hasText(path) && targetType.isPresent() && ClassUtils.isAssignable(byte[].class, targetType.get())) {
571+
sink.getBucket().put(StringUtils.hasText(path) ? path : "_raw", conversionService.convert(value, byte[].class));
573572
} else {
574573

575574
if (!ClassUtils.isAssignable(typeHint.getType(), value.getClass())) {

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
import lombok.AllArgsConstructor;
1919
import lombok.Data;
2020
import lombok.EqualsAndHashCode;
21-
import lombok.Getter;
22-
import lombok.Setter;
2321

2422
import java.time.Duration;
2523
import java.time.Instant;
@@ -241,13 +239,12 @@ static class Outer {
241239
}
242240

243241
static class Inner {
244-
242+
245243
List<String> values;
246244
}
247245

248246
@RedisHash(KEYSPACE_ACCOUNT)
249-
@Getter
250-
@Setter
247+
@Data
251248
public static class AccountInfo {
252249

253250
@Id private String id;

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

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1847,6 +1847,43 @@ public void readInnerListShouldNotInfluenceOuterWithSameNameWhenNull() {
18471847
assertThat(outer.inners.get(0).values).isEqualTo(Arrays.asList("i-1", "i-2"));
18481848
}
18491849

1850+
@Test // DATAREDIS-911
1851+
public void writeEntityWithCustomConverter() {
1852+
1853+
this.converter = new MappingRedisConverter(null, null, resolverMock);
1854+
this.converter
1855+
.setCustomConversions(new RedisCustomConversions(Collections.singletonList(new AccountInfoToBytesConverter())));
1856+
this.converter.afterPropertiesSet();
1857+
1858+
AccountInfo accountInfo = new AccountInfo();
1859+
accountInfo.setId("ai-id-1");
1860+
accountInfo.setAccount("123456");
1861+
accountInfo.setAccountName("Inamur Rahman Sadid");
1862+
1863+
assertThat(write(accountInfo).getRedisData().getId()).isEqualTo(accountInfo.getId());
1864+
}
1865+
1866+
@Test // DATAREDIS-911
1867+
public void readEntityWithCustomConverter() {
1868+
1869+
this.converter = new MappingRedisConverter(null, null, resolverMock);
1870+
this.converter
1871+
.setCustomConversions(new RedisCustomConversions(Collections.singletonList(new BytesToAccountInfoConverter())));
1872+
this.converter.afterPropertiesSet();
1873+
1874+
Bucket bucket = new Bucket();
1875+
bucket.put("_raw", "ai-id-1|123456|Golam Mazid Sajib".getBytes(StandardCharsets.UTF_8));
1876+
1877+
RedisData redisData = new RedisData(bucket);
1878+
redisData.setKeyspace(KEYSPACE_ACCOUNT);
1879+
redisData.setId("ai-id-1");
1880+
1881+
AccountInfo target = converter.read(AccountInfo.class, redisData);
1882+
1883+
assertThat(target.getAccount()).isEqualTo("123456");
1884+
assertThat(target.getAccountName()).isEqualTo("Golam Mazid Sajib");
1885+
}
1886+
18501887
private RedisTestData write(Object source) {
18511888

18521889
RedisData rdo = new RedisData();
@@ -1947,43 +1984,6 @@ public Address convert(byte[] value) {
19471984
}
19481985
}
19491986

1950-
@Test // DATAREDIS-911
1951-
public void writeEntityWithCustomConverter() {
1952-
1953-
this.converter = new MappingRedisConverter(null, null, resolverMock);
1954-
this.converter
1955-
.setCustomConversions(new RedisCustomConversions(Collections.singletonList(new AccountInfoToBytesConverter())));
1956-
this.converter.afterPropertiesSet();
1957-
1958-
AccountInfo accountInfo = new AccountInfo();
1959-
accountInfo.setId("ai-id-1");
1960-
accountInfo.setAccount("123456");
1961-
accountInfo.setAccountName("Inamur Rahman Sadid");
1962-
1963-
assertThat(write(accountInfo).getRedisData().getId()).isEqualTo(accountInfo.getId());
1964-
}
1965-
1966-
@Test // DATAREDIS-911
1967-
public void readEntityWithCustomConverter() {
1968-
1969-
this.converter = new MappingRedisConverter(null, null, resolverMock);
1970-
this.converter
1971-
.setCustomConversions(new RedisCustomConversions(Collections.singletonList(new BytesToAccountInfoConverter())));
1972-
this.converter.afterPropertiesSet();
1973-
1974-
Bucket bucket = new Bucket();
1975-
bucket.put("_raw", "ai-id-1|123456|Golam Mazid Sajib".getBytes(StandardCharsets.UTF_8));
1976-
1977-
RedisData redisData = new RedisData(bucket);
1978-
redisData.setKeyspace(KEYSPACE_ACCOUNT);
1979-
redisData.setId("ai-id-1");
1980-
1981-
AccountInfo target = converter.read(AccountInfo.class, redisData);
1982-
1983-
assertThat(target.getAccount()).isEqualTo("123456");
1984-
assertThat(target.getAccountName()).isEqualTo("Golam Mazid Sajib");
1985-
}
1986-
19871987
@WritingConverter
19881988
static class AccountInfoToBytesConverter implements Converter<AccountInfo, byte[]> {
19891989

0 commit comments

Comments
 (0)