Skip to content

Commit 4840f7c

Browse files
committed
Polishing.
Restructure test. Remove redundant code. Formatting. Original pull request #1876 See #1842
1 parent 5b76259 commit 4840f7c

File tree

2 files changed

+27
-35
lines changed

2 files changed

+27
-35
lines changed

spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/MappingRelationalConverter.java

+5-12
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,7 @@
4444
import org.springframework.data.mapping.PersistentPropertyAccessor;
4545
import org.springframework.data.mapping.PersistentPropertyPathAccessor;
4646
import org.springframework.data.mapping.context.MappingContext;
47-
import org.springframework.data.mapping.model.CachingValueExpressionEvaluatorFactory;
48-
import org.springframework.data.mapping.model.ConvertingPropertyAccessor;
49-
import org.springframework.data.mapping.model.EntityInstantiator;
50-
import org.springframework.data.mapping.model.ParameterValueProvider;
51-
import org.springframework.data.mapping.model.PersistentEntityParameterValueProvider;
52-
import org.springframework.data.mapping.model.PropertyValueProvider;
53-
import org.springframework.data.mapping.model.SimpleTypeHolder;
54-
import org.springframework.data.mapping.model.SpELContext;
55-
import org.springframework.data.mapping.model.ValueExpressionEvaluator;
56-
import org.springframework.data.mapping.model.ValueExpressionParameterValueProvider;
47+
import org.springframework.data.mapping.model.*;
5748
import org.springframework.data.projection.EntityProjection;
5849
import org.springframework.data.projection.EntityProjectionIntrospector;
5950
import org.springframework.data.projection.EntityProjectionIntrospector.ProjectionPredicate;
@@ -87,6 +78,7 @@
8778
* @author Chirag Tailor
8879
* @author Vincent Galloy
8980
* @author Chanhyeong Cho
81+
* @author Lukáš Křečan
9082
* @see org.springframework.data.mapping.context.MappingContext
9183
* @see SimpleTypeHolder
9284
* @see CustomConversions
@@ -694,8 +686,9 @@ public Object writeValue(@Nullable Object value, TypeInformation<?> type) {
694686
if (getConversions().isSimpleType(value.getClass())) {
695687

696688
Optional<Class<?>> customWriteTarget = getConversions().hasCustomWriteTarget(value.getClass(), type.getType())
697-
? getConversions().getCustomWriteTarget(value.getClass(), type.getType())
698-
: getConversions().getCustomWriteTarget(type.getType());
689+
? getConversions().getCustomWriteTarget(value.getClass(), type.getType())
690+
: getConversions().getCustomWriteTarget(type.getType());
691+
699692
if (customWriteTarget.isPresent()) {
700693
return getConversionService().convert(value, customWriteTarget.get());
701694
}

spring-data-relational/src/test/java/org/springframework/data/relational/core/conversion/MappingRelationalConverterUnitTests.java

+22-23
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424
import java.util.Map;
2525
import java.util.Objects;
2626
import java.util.Set;
27-
2827
import java.util.UUID;
29-
import org.junit.jupiter.api.Test;
3028

29+
import org.assertj.core.api.SoftAssertions;
30+
import org.junit.jupiter.api.Test;
3131
import org.springframework.beans.factory.annotation.Value;
3232
import org.springframework.core.convert.TypeDescriptor;
3333
import org.springframework.core.convert.converter.Converter;
@@ -52,6 +52,8 @@
5252
* Unit tests for {@link MappingRelationalConverter}.
5353
*
5454
* @author Mark Paluch
55+
* @author Lukáš Křečan
56+
* @author Jens Schauder
5557
*/
5658
class MappingRelationalConverterUnitTests {
5759

@@ -92,7 +94,7 @@ void shouldEvaluateExpression() {
9294
}
9395

9496
@Test
95-
// GH-1689
97+
// GH-1689
9698
void shouldApplySimpleTypeConverterSimpleType() {
9799

98100
converter = new MappingRelationalConverter(converter.getMappingContext(),
@@ -214,25 +216,24 @@ void projectShouldReadProjectionWithNestedEntity() {
214216
assertThat(person.getAddresses()).extracting(Address::getStreet).hasSize(1).containsOnly("hwy");
215217
}
216218

217-
@SuppressWarnings("unchecked")
218-
@Test
219+
@Test // GH-1842
219220
void shouldApplyGenericTypeConverter() {
220221

221222
converter = new MappingRelationalConverter(converter.getMappingContext(),
222-
new CustomConversions(StoreConversions.NONE, List.of(GenericTypeConverter.INSTANCE)));
223+
new CustomConversions(StoreConversions.NONE, List.of(GenericTypeConverter.INSTANCE)));
224+
225+
UUID uuid = UUID.randomUUID();
226+
GenericClass<UUID> wrappedUuid = new GenericClass<>(uuid);
227+
GenericClass<String> wrappedString = new GenericClass<>("test");
223228

224-
var stringResult = (GenericClass<String>) converter.writeValue("test", TypeInformation.of(GenericClass.class));
225-
var uuidResult = (GenericClass<UUID>) converter.writeValue(UUID.fromString("1234567-8910-1112-1314-151617181920"), TypeInformation.of(GenericClass.class));
229+
SoftAssertions.assertSoftly(softly -> {
226230

227-
var stringGeneric = new GenericClass<>("test");
228-
var stringGenericResult = (String) converter.writeValue(stringGeneric, TypeInformation.of(String.class));
229-
var uuidGeneric = new GenericClass<>(UUID.fromString("1234567-8910-1112-1314-151617181920"));
230-
var uuidGenericResult = (UUID) converter.writeValue(uuidGeneric, TypeInformation.of(UUID.class));
231+
softly.assertThat(converter.writeValue(uuid, TypeInformation.of(GenericClass.class))).isEqualTo(wrappedUuid);
232+
softly.assertThat(converter.writeValue(wrappedUuid, TypeInformation.of(UUID.class))).isEqualTo(uuid);
231233

232-
assertThat(stringResult.value()).isEqualTo("test");
233-
assertThat(uuidResult.value()).isEqualTo(UUID.fromString("1234567-8910-1112-1314-151617181920"));
234-
assertThat(stringGenericResult).isEqualTo("test");
235-
assertThat(uuidGenericResult).isEqualTo(UUID.fromString("1234567-8910-1112-1314-151617181920"));
234+
softly.assertThat(converter.writeValue("test", TypeInformation.of(GenericClass.class))).isEqualTo(wrappedString);
235+
softly.assertThat(converter.writeValue(wrappedString, TypeInformation.of(String.class))).isEqualTo("test");
236+
});
236237
}
237238

238239
static class SimpleType {
@@ -397,12 +398,9 @@ enum GenericTypeConverter implements GenericConverter {
397398

398399
@Override
399400
public Set<ConvertiblePair> getConvertibleTypes() {
400-
return Set.of(
401-
new ConvertiblePair(String.class, GenericClass.class),
402-
new ConvertiblePair(UUID.class, GenericClass.class),
403-
new ConvertiblePair(GenericClass.class, String.class),
404-
new ConvertiblePair(GenericClass.class, UUID.class)
405-
);
401+
return Set.of(new ConvertiblePair(String.class, GenericClass.class),
402+
new ConvertiblePair(UUID.class, GenericClass.class), new ConvertiblePair(GenericClass.class, String.class),
403+
new ConvertiblePair(GenericClass.class, UUID.class));
406404
}
407405

408406
@Override
@@ -415,6 +413,7 @@ public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor t
415413

416414
}
417415

418-
public record GenericClass<T>(T value) { }
416+
public record GenericClass<T>(T value) {
417+
}
419418

420419
}

0 commit comments

Comments
 (0)