Skip to content

Commit ec95d9f

Browse files
committed
made userConverters protected and used it in test to register CustomConversions
1 parent ea1882d commit ec95d9f

File tree

2 files changed

+76
-5
lines changed

2 files changed

+76
-5
lines changed

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/AbstractJdbcConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public JdbcCustomConversions jdbcCustomConversions() {
133133
}
134134
}
135135

136-
private List<?> userConverters() {
136+
protected List<?> userConverters() {
137137
return Collections.emptyList();
138138
}
139139

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/config/AbstractJdbcConfigurationIntegrationTests.java

+75-4
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
*/
1616
package org.springframework.data.jdbc.repository.config;
1717

18+
import static java.util.Arrays.*;
1819
import static org.assertj.core.api.Assertions.*;
1920
import static org.mockito.Mockito.*;
2021

2122
import java.util.Arrays;
23+
import java.util.Collection;
2224
import java.util.Collections;
2325
import java.util.List;
2426
import java.util.function.Consumer;
@@ -29,14 +31,19 @@
2931
import org.springframework.context.annotation.Bean;
3032
import org.springframework.context.annotation.Configuration;
3133
import org.springframework.core.convert.converter.Converter;
34+
import org.springframework.data.convert.ReadingConverter;
3235
import org.springframework.data.convert.WritingConverter;
3336
import org.springframework.data.jdbc.core.JdbcAggregateTemplate;
3437
import org.springframework.data.jdbc.core.convert.DataAccessStrategy;
3538
import org.springframework.data.jdbc.core.convert.JdbcConverter;
3639
import org.springframework.data.jdbc.core.convert.JdbcCustomConversions;
40+
import org.springframework.data.jdbc.core.convert.RelationResolver;
3741
import org.springframework.data.jdbc.core.mapping.JdbcMappingContext;
3842
import org.springframework.data.relational.core.dialect.Dialect;
3943
import org.springframework.data.relational.core.dialect.HsqlDbDialect;
44+
import org.springframework.data.relational.core.dialect.LimitClause;
45+
import org.springframework.data.relational.core.dialect.LockClause;
46+
import org.springframework.data.relational.core.sql.render.SelectRenderContext;
4047
import org.springframework.jdbc.core.JdbcOperations;
4148
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations;
4249
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
@@ -53,7 +60,7 @@ void configuresInfrastructureComponents() {
5360

5461
assertApplicationContext(context -> {
5562

56-
List<Class<?>> expectedBeanTypes = Arrays.asList(DataAccessStrategy.class, //
63+
List<Class<?>> expectedBeanTypes = asList(DataAccessStrategy.class, //
5764
JdbcMappingContext.class, //
5865
JdbcConverter.class, //
5966
JdbcCustomConversions.class, //
@@ -106,12 +113,12 @@ static class AbstractJdbcConfigurationUnderTest extends AbstractJdbcConfiguratio
106113
@Override
107114
@Bean
108115
public Dialect jdbcDialect(NamedParameterJdbcOperations operations) {
109-
return HsqlDbDialect.INSTANCE;
116+
return new DummyDialect();
110117
}
111118

112119
@Override
113-
public JdbcCustomConversions jdbcCustomConversions() {
114-
return new JdbcCustomConversions(Collections.singletonList(Blah2BlubbConverter.INSTANCE));
120+
protected List<?> userConverters() {
121+
return asList(Blah2BlubbConverter.INSTANCE);
115122
}
116123

117124
@WritingConverter
@@ -127,6 +134,70 @@ public Blubb convert(Blah blah) {
127134
private static class Blah {}
128135

129136
private static class Blubb {}
137+
138+
private static class DummyDialect implements Dialect {
139+
@Override
140+
public LimitClause limit() {
141+
return null;
142+
}
143+
144+
@Override
145+
public LockClause lock() {
146+
return null;
147+
}
148+
149+
@Override
150+
public SelectRenderContext getSelectContext() {
151+
return null;
152+
}
153+
154+
@Override
155+
public Collection<Object> getConverters() {
156+
return asList(BooleanToNumberConverter.INSTANCE);
157+
}
158+
}
159+
160+
@WritingConverter
161+
enum BooleanToNumberConverter implements Converter<Boolean, Number>{
162+
INSTANCE;
163+
164+
@Override
165+
public Number convert(Boolean source) {
166+
return source ? 1 : 0;
167+
}
168+
}
169+
170+
@ReadingConverter
171+
enum NumberToBooleanConverter implements Converter<Number, Boolean>{
172+
INSTANCE;
173+
174+
@Override
175+
public Boolean convert(Number source) {
176+
return source.intValue() == 0;
177+
}
178+
}
179+
180+
181+
@WritingConverter
182+
enum BooleanToYnConverter implements Converter<Boolean, String>{
183+
INSTANCE;
184+
185+
@Override
186+
public String convert(Boolean source) {
187+
return source ? "Y" : "N";
188+
}
189+
}
190+
191+
@ReadingConverter
192+
enum StringToBooleanConverter implements Converter<String, Boolean>{
193+
INSTANCE;
194+
195+
@Override
196+
public Boolean convert(String source) {
197+
return source.equals("Y") ;
198+
}
199+
}
200+
130201
}
131202

132203
}

0 commit comments

Comments
 (0)