Skip to content

Commit 2e88a32

Browse files
committed
Applied feedback from review.
Originial pull request #981 See #935
1 parent 42df931 commit 2e88a32

File tree

17 files changed

+78
-58
lines changed

17 files changed

+78
-58
lines changed

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/dialect/JdbcDb2Dialect.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717

1818
import java.util.ArrayList;
1919
import java.util.Collection;
20+
import java.util.List;
2021

2122
import org.springframework.data.relational.core.dialect.Db2Dialect;
22-
import org.springframework.data.relational.core.sql.IdentifierProcessing;
2323

2424
/**
2525
* {@link Db2Dialect} that registers JDBC specific converters.
@@ -34,8 +34,8 @@ public class JdbcDb2Dialect extends Db2Dialect {
3434
@Override
3535
public Collection<Object> getConverters() {
3636

37-
ArrayList<Object> converters = new ArrayList<>(super.getConverters());
38-
converters.add(OffsetDateTime2TimestampConverter.INSTANCE);
37+
List<Object> converters = new ArrayList<>(super.getConverters());
38+
converters.add(OffsetDateTimeToTimestampConverter.INSTANCE);
3939

4040
return converters;
4141
}

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/dialect/JdbcH2Dialect.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ public class JdbcH2Dialect extends H2Dialect {
3838

3939
@Override
4040
public Collection<Object> getConverters() {
41-
return Collections.singletonList(TimestampWithTimeZone2OffsetDateTimeConverter.INSTANCE);
41+
return Collections.singletonList(TimestampWithTimeZoneToOffsetDateTimeConverter.INSTANCE);
4242
}
4343

4444
@ReadingConverter
45-
enum TimestampWithTimeZone2OffsetDateTimeConverter implements Converter<TimestampWithTimeZone, OffsetDateTime> {
45+
enum TimestampWithTimeZoneToOffsetDateTimeConverter implements Converter<TimestampWithTimeZone, OffsetDateTime> {
4646
INSTANCE;
4747

4848

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/dialect/JdbcMySqlDialect.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,13 @@ public JdbcMySqlDialect(IdentifierProcessing identifierProcessing) {
4343
public Collection<Object> getConverters() {
4444

4545
ArrayList<Object> converters = new ArrayList<>(super.getConverters());
46-
converters.add(OffsetDateTime2TimestampJdbcValueConverter.INSTANCE);
46+
converters.add(OffsetDateTimeToTimestampJdbcValueConverter.INSTANCE);
4747

4848
return converters;
4949
}
5050

5151
@WritingConverter
52-
enum OffsetDateTime2TimestampJdbcValueConverter implements Converter<OffsetDateTime, JdbcValue> {
52+
enum OffsetDateTimeToTimestampJdbcValueConverter implements Converter<OffsetDateTime, JdbcValue> {
5353
INSTANCE;
5454

5555
@Override

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/dialect/JdbcSqlServerDialect.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@
2323

2424
import org.springframework.core.convert.converter.Converter;
2525
import org.springframework.data.convert.ReadingConverter;
26-
import org.springframework.data.relational.core.dialect.Db2Dialect;
2726
import org.springframework.data.relational.core.dialect.SqlServerDialect;
2827

2928
/**
30-
* {@link Db2Dialect} that registers JDBC specific converters.
29+
* {@link SqlServerDialect} that registers JDBC specific converters.
3130
*
3231
* @author Jens Schauder
3332
* @since 2.3
@@ -38,11 +37,11 @@ public class JdbcSqlServerDialect extends SqlServerDialect {
3837

3938
@Override
4039
public Collection<Object> getConverters() {
41-
return Collections.singletonList(DateTimeOffset2OffsetDateTimeConverter.INSTANCE);
40+
return Collections.singletonList(DateTimeOffsetToOffsetDateTimeConverter.INSTANCE);
4241
}
4342

4443
@ReadingConverter
45-
enum DateTimeOffset2OffsetDateTimeConverter implements Converter<DateTimeOffset, OffsetDateTime> {
44+
enum DateTimeOffsetToOffsetDateTimeConverter implements Converter<DateTimeOffset, OffsetDateTime> {
4645
INSTANCE;
4746

4847
@Override
+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
* @since 2.3
3232
*/
3333
@WritingConverter
34-
enum OffsetDateTime2TimestampConverter implements Converter<OffsetDateTime, Timestamp> {
34+
enum OffsetDateTimeToTimestampConverter implements Converter<OffsetDateTime, Timestamp> {
3535

3636
INSTANCE;
3737
@Override

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

+33-8
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,12 @@
2020
import java.util.List;
2121
import java.util.Optional;
2222

23+
import org.slf4j.Logger;
24+
import org.slf4j.LoggerFactory;
25+
import org.springframework.beans.BeansException;
26+
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
2327
import org.springframework.context.ApplicationContext;
28+
import org.springframework.context.ApplicationContextAware;
2429
import org.springframework.context.annotation.Bean;
2530
import org.springframework.context.annotation.Configuration;
2631
import org.springframework.context.annotation.Lazy;
@@ -55,13 +60,17 @@
5560
* @since 1.1
5661
*/
5762
@Configuration(proxyBeanMethods = false)
58-
public class AbstractJdbcConfiguration {
63+
public class AbstractJdbcConfiguration implements ApplicationContextAware {
64+
65+
private static Logger LOG = LoggerFactory.getLogger(AbstractJdbcConfiguration.class);
66+
67+
private ApplicationContext applicationContext;
5968

6069
/**
6170
* Register a {@link JdbcMappingContext} and apply an optional {@link NamingStrategy}.
6271
*
6372
* @param namingStrategy optional {@link NamingStrategy}. Use {@link NamingStrategy#INSTANCE} as fallback.
64-
* @param customConversions see {@link #jdbcCustomConversions(Dialect)}.
73+
* @param customConversions see {@link #jdbcCustomConversions()}.
6574
* @return must not be {@literal null}.
6675
*/
6776
@Bean
@@ -76,10 +85,11 @@ public JdbcMappingContext jdbcMappingContext(Optional<NamingStrategy> namingStra
7685

7786
/**
7887
* Creates a {@link RelationalConverter} using the configured
79-
* {@link #jdbcMappingContext(Optional, JdbcCustomConversions)}. Will get {@link #jdbcCustomConversions(Dialect)} ()} applied.
88+
* {@link #jdbcMappingContext(Optional, JdbcCustomConversions)}. Will get {@link #jdbcCustomConversions()} ()}
89+
* applied.
8090
*
8191
* @see #jdbcMappingContext(Optional, JdbcCustomConversions)
82-
* @see #jdbcCustomConversions(Dialect) ()
92+
* @see #jdbcCustomConversions()
8393
* @return must not be {@literal null}.
8494
*/
8595
@Bean
@@ -89,7 +99,7 @@ public JdbcConverter jdbcConverter(JdbcMappingContext mappingContext, NamedParam
8999
DefaultJdbcTypeFactory jdbcTypeFactory = new DefaultJdbcTypeFactory(operations.getJdbcOperations());
90100

91101
return new BasicJdbcConverter(mappingContext, relationResolver, conversions, jdbcTypeFactory,
92-
dialect.getIdentifierProcessing());
102+
dialect.getIdentifierProcessing());
93103
}
94104

95105
/**
@@ -101,10 +111,20 @@ public JdbcConverter jdbcConverter(JdbcMappingContext mappingContext, NamedParam
101111
* @return will never be {@literal null}.
102112
*/
103113
@Bean
104-
public JdbcCustomConversions jdbcCustomConversions(Dialect dialect) {
114+
public JdbcCustomConversions jdbcCustomConversions() {
115+
116+
try {
117+
118+
Dialect dialect = applicationContext.getBean(Dialect.class);
105119

106-
return new JdbcCustomConversions(CustomConversions.StoreConversions.of(JdbcSimpleTypes.HOLDER,
107-
storeConverters(dialect)), userConverters());
120+
return new JdbcCustomConversions(
121+
CustomConversions.StoreConversions.of(JdbcSimpleTypes.HOLDER, storeConverters(dialect)), userConverters());
122+
} catch (NoSuchBeanDefinitionException exception) {
123+
124+
LOG.warn("No dialect found. CustomConversions will be configured without dialect specific conversions.");
125+
126+
return new JdbcCustomConversions();
127+
}
108128
}
109129

110130
private List<?> userConverters() {
@@ -162,4 +182,9 @@ public DataAccessStrategy dataAccessStrategyBean(NamedParameterJdbcOperations op
162182
public Dialect jdbcDialect(NamedParameterJdbcOperations operations) {
163183
return DialectResolver.getDialect(operations.getJdbcOperations());
164184
}
185+
186+
@Override
187+
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
188+
this.applicationContext = applicationContext;
189+
}
165190
}

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/dialect/JdbcH2DialectTests.java

+10-11
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,3 @@
1-
package org.springframework.data.jdbc.core.dialect;
2-
3-
import static org.assertj.core.api.Assertions.*;
4-
5-
import java.time.OffsetDateTime;
6-
7-
import org.h2.api.TimestampWithTimeZone;
8-
import org.h2.util.DateTimeUtils;
9-
import org.junit.jupiter.api.Test;
10-
111
/*
122
* Copyright 2021 the original author or authors.
133
*
@@ -23,6 +13,15 @@
2313
* See the License for the specific language governing permissions and
2414
* limitations under the License.
2515
*/
16+
package org.springframework.data.jdbc.core.dialect;
17+
18+
import static org.assertj.core.api.Assertions.*;
19+
20+
import java.time.OffsetDateTime;
21+
22+
import org.h2.api.TimestampWithTimeZone;
23+
import org.h2.util.DateTimeUtils;
24+
import org.junit.jupiter.api.Test;
2625

2726
/**
2827
* Tests for {@link JdbcH2Dialect}.
@@ -34,7 +33,7 @@ class JdbcH2DialectTests {
3433
@Test
3534
void TimestampWithTimeZone2OffsetDateTimeConverterConvertsProperly() {
3635

37-
JdbcH2Dialect.TimestampWithTimeZone2OffsetDateTimeConverter converter = JdbcH2Dialect.TimestampWithTimeZone2OffsetDateTimeConverter.INSTANCE;
36+
JdbcH2Dialect.TimestampWithTimeZoneToOffsetDateTimeConverter converter = JdbcH2Dialect.TimestampWithTimeZoneToOffsetDateTimeConverter.INSTANCE;
3837
long dateValue = 123456789;
3938
long timeNanos = 987654321;
4039
int timeZoneOffsetSeconds = 4 * 60 * 60;
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.time.ZoneOffset;
88

99
import static org.assertj.core.api.Assertions.*;
10-
import static org.junit.jupiter.api.Assertions.*;
1110

1211
/*
1312
* Copyright 2021 the original author or authors.
@@ -26,18 +25,18 @@
2625
*/
2726

2827
/**
29-
* Tests for {@link OffsetDateTime2TimestampConverter}.
28+
* Tests for {@link OffsetDateTimeToTimestampConverter}.
3029
*
3130
* @author Jens Schauder
3231
*/
33-
class OffsetDateTime2TimestampConverterUnitTests {
32+
class OffsetDateTimeToTimestampConverterUnitTests {
3433

3534
@Test
3635
void conversionPreservesInstant() {
3736

3837
OffsetDateTime offsetDateTime = OffsetDateTime.of(5, 5, 5, 5,5,5,123456789, ZoneOffset.ofHours(3));
3938

40-
Timestamp timestamp = OffsetDateTime2TimestampConverter.INSTANCE.convert(offsetDateTime);
39+
Timestamp timestamp = OffsetDateTimeToTimestampConverter.INSTANCE.convert(offsetDateTime);
4140

4241
assertThat(timestamp.toInstant()).isEqualTo(offsetDateTime.toInstant());
4342
}

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public Dialect jdbcDialect(NamedParameterJdbcOperations operations) {
110110
}
111111

112112
@Override
113-
public JdbcCustomConversions jdbcCustomConversions(Dialect dialect) {
113+
public JdbcCustomConversions jdbcCustomConversions() {
114114
return new JdbcCustomConversions(Collections.singletonList(Blah2BlubbConverter.INSTANCE));
115115
}
116116

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/support/JdbcUtilTests.java

+8-9
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,3 @@
1-
package org.springframework.data.jdbc.support;
2-
3-
import static org.assertj.core.api.Assertions.*;
4-
5-
import java.sql.Types;
6-
import java.time.OffsetDateTime;
7-
8-
import org.junit.jupiter.api.Test;
9-
101
/*
112
* Copyright 2021 the original author or authors.
123
*
@@ -22,6 +13,14 @@
2213
* See the License for the specific language governing permissions and
2314
* limitations under the License.
2415
*/
16+
package org.springframework.data.jdbc.support;
17+
18+
import static org.assertj.core.api.Assertions.*;
19+
20+
import java.sql.Types;
21+
import java.time.OffsetDateTime;
22+
23+
import org.junit.jupiter.api.Test;
2524

2625
/**
2726
* Tests for {@link JdbcUtil}.

spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/Db2Dialect.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,6 @@ public IdentifierProcessing getIdentifierProcessing() {
116116

117117
@Override
118118
public Collection<Object> getConverters() {
119-
return Collections.singletonList(Timestamp2OffsetDateTimeConverter.INSTANCE);
119+
return Collections.singletonList(TimestampAtUtcToOffsetDateTimeConverter.INSTANCE);
120120
}
121121
}

spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/MariaDbDialect.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@ public MariaDbDialect(IdentifierProcessing identifierProcessing) {
3434

3535
@Override
3636
public Collection<Object> getConverters() {
37-
return Collections.singletonList(Timestamp2OffsetDateTimeConverter.INSTANCE);
37+
return Collections.singletonList(TimestampAtUtcToOffsetDateTimeConverter.INSTANCE);
3838
}
3939
}

spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/MySqlDialect.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,6 @@ public IdentifierProcessing getIdentifierProcessing() {
167167

168168
@Override
169169
public Collection<Object> getConverters() {
170-
return Collections.singletonList(Timestamp2OffsetDateTimeConverter.INSTANCE);
170+
return Collections.singletonList(TimestampAtUtcToOffsetDateTimeConverter.INSTANCE);
171171
}
172172
}

spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/OracleDialect.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public IdGeneration getIdGeneration() {
4747

4848
@Override
4949
public Collection<Object> getConverters() {
50-
return Collections.singletonList(Timestamp2OffsetDateTimeConverter.INSTANCE);
50+
return Collections.singletonList(TimestampAtUtcToOffsetDateTimeConverter.INSTANCE);
5151
}
5252

5353
}

spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/PostgresDialect.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public ArrayColumns getArraySupport() {
117117

118118
@Override
119119
public Collection<Object> getConverters() {
120-
return Collections.singletonList(Timestamp2OffsetDateTimeConverter.INSTANCE);
120+
return Collections.singletonList(TimestampAtUtcToOffsetDateTimeConverter.INSTANCE);
121121
}
122122

123123
static class PostgresLockClause implements LockClause {
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
* @since 2.3
3232
*/
3333
@ReadingConverter
34-
enum Timestamp2OffsetDateTimeConverter implements Converter<Timestamp, OffsetDateTime> {
34+
enum TimestampAtUtcToOffsetDateTimeConverter implements Converter<Timestamp, OffsetDateTime> {
3535

3636
INSTANCE;
3737

Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package org.springframework.data.relational.core.dialect;
22

3-
import org.junit.jupiter.api.Test;
3+
import static org.assertj.core.api.Assertions.*;
44

55
import java.sql.Timestamp;
66
import java.time.Instant;
77
import java.time.OffsetDateTime;
88

9-
import static org.assertj.core.api.Assertions.*;
10-
import static org.junit.jupiter.api.Assertions.*;
9+
import org.junit.jupiter.api.Test;
1110

1211
/*
1312
* Copyright 2021 the original author or authors.
@@ -26,18 +25,18 @@
2625
*/
2726

2827
/**
29-
* Tests {@link Timestamp2OffsetDateTimeConverter}.
28+
* Tests {@link TimestampAtUtcToOffsetDateTimeConverter}.
3029
*
3130
* @author Jens Schauder
3231
*/
33-
class Timestamp2OffsetDateTimeConverterUnitTests {
32+
class TimestampAtUtcToOffsetDateTimeConverterUnitTests {
3433

3534
@Test
3635
void conversionMaintainsInstant() {
3736

3837
Timestamp timestamp = Timestamp.from(Instant.now());
39-
OffsetDateTime converted = Timestamp2OffsetDateTimeConverter.INSTANCE.convert(timestamp);
38+
OffsetDateTime converted = TimestampAtUtcToOffsetDateTimeConverter.INSTANCE.convert(timestamp);
4039

4140
assertThat(converted.toInstant()).isEqualTo(timestamp.toInstant());
4241
}
43-
}
42+
}

0 commit comments

Comments
 (0)