Browse Source

Extraneous warnings related to `JdbcSqlServerDialect`.

Add tests for R2DBC types as well.

Closes #2147
pull/2100/head
Mark Paluch 2 months ago
parent
commit
49f4b5f18b
No known key found for this signature in database
GPG Key ID: 55BC6374BAA9D973
  1. 6
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcCustomConversions.java
  2. 9
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/dialect/JdbcSqlServerDialect.java
  3. 14
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/dialect/JdbcSqlServerDialectTest.java
  4. 15
      spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/convert/R2dbcCustomConversions.java
  5. 2
      spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/R2dbcDialect.java
  6. 40
      spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/R2dbcCustomConversionsUnitTests.java
  7. 3
      spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/dialect/PostgresDialectUnitTests.java

6
spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcCustomConversions.java

@ -29,6 +29,7 @@ import org.springframework.core.convert.converter.GenericConverter.ConvertiblePa @@ -29,6 +29,7 @@ import org.springframework.core.convert.converter.GenericConverter.ConvertiblePa
import org.springframework.data.convert.ConverterBuilder;
import org.springframework.data.convert.CustomConversions;
import org.springframework.data.jdbc.core.mapping.JdbcSimpleTypes;
import org.springframework.data.mapping.model.SimpleTypeHolder;
import org.springframework.data.relational.core.dialect.Dialect;
import org.springframework.lang.Contract;
import org.springframework.util.Assert;
@ -177,9 +178,8 @@ public class JdbcCustomConversions extends CustomConversions { @@ -177,9 +178,8 @@ public class JdbcCustomConversions extends CustomConversions {
converters.addAll(dialect.getConverters());
converters.addAll(JdbcCustomConversions.storeConverters());
StoreConversions storeConversions = StoreConversions.of(JdbcSimpleTypes.HOLDER, converters);
return new JdbcConverterConfigurer(storeConversions);
SimpleTypeHolder simpleTypeHolder = new SimpleTypeHolder(dialect.simpleTypes(), JdbcSimpleTypes.HOLDER);
return new JdbcConverterConfigurer(StoreConversions.of(simpleTypeHolder, converters));
}
/**

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

@ -22,6 +22,7 @@ import java.time.OffsetDateTime; @@ -22,6 +22,7 @@ import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.ReadingConverter;
@ -33,12 +34,20 @@ import org.springframework.data.relational.core.dialect.SqlServerDialect; @@ -33,12 +34,20 @@ import org.springframework.data.relational.core.dialect.SqlServerDialect;
* @author Jens Schauder
* @author Christoph Strobl
* @author Mikhail Polivakha
* @author Mark Paluch
* @since 2.3
*/
public class JdbcSqlServerDialect extends SqlServerDialect implements JdbcDialect {
public static final JdbcSqlServerDialect INSTANCE = new JdbcSqlServerDialect();
private static final Set<Class<?>> SIMPLE_TYPES = Set.of(DateTimeOffset.class);
@Override
public Set<Class<?>> simpleTypes() {
return SIMPLE_TYPES;
}
@Override
public Collection<Object> getConverters() {

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

@ -17,6 +17,8 @@ package org.springframework.data.jdbc.core.dialect; @@ -17,6 +17,8 @@ package org.springframework.data.jdbc.core.dialect;
import static org.assertj.core.api.Assertions.*;
import microsoft.sql.DateTimeOffset;
import java.time.Instant;
import java.util.List;
@ -28,6 +30,7 @@ import org.springframework.data.jdbc.core.convert.JdbcCustomConversions; @@ -28,6 +30,7 @@ import org.springframework.data.jdbc.core.convert.JdbcCustomConversions;
* Tests for {@link JdbcSqlServerDialect}
*
* @author Mikhail Polivakha
* @author Mark Paluch
*/
class JdbcSqlServerDialectTest {
@ -36,7 +39,16 @@ class JdbcSqlServerDialectTest { @@ -36,7 +39,16 @@ class JdbcSqlServerDialectTest {
JdbcCustomConversions conversions = JdbcCustomConversions.of(JdbcSqlServerDialect.INSTANCE, List.of());
assertThat(conversions.hasCustomReadTarget(microsoft.sql.DateTimeOffset.class, Instant.class))
assertThat(conversions.hasCustomReadTarget(DateTimeOffset.class, Instant.class))
.isTrue();
}
@Test // GH-2147
void shouldReportSimpleTypes() {
JdbcCustomConversions conversions = JdbcCustomConversions.of(JdbcSqlServerDialect.INSTANCE, List.of());
assertThat(conversions.isSimpleType(DateTimeOffset.class)).isTrue();
assertThat(conversions.getSimpleTypeHolder().isSimpleType(DateTimeOffset.class)).isTrue();
}
}

15
spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/convert/R2dbcCustomConversions.java

@ -1,3 +1,18 @@ @@ -1,3 +1,18 @@
/*
* Copyright 2018-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.data.r2dbc.convert;
import java.util.ArrayList;

2
spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/R2dbcDialect.java

@ -49,7 +49,7 @@ public interface R2dbcDialect extends Dialect { @@ -49,7 +49,7 @@ public interface R2dbcDialect extends Dialect {
Set<Class<?>> simpleTypes = new HashSet<>(getSimpleTypes());
simpleTypes.addAll(R2dbcSimpleTypeHolder.R2DBC_SIMPLE_TYPES);
return new SimpleTypeHolder(simpleTypes, true);
return new SimpleTypeHolder(simpleTypes, R2dbcSimpleTypeHolder.HOLDER);
}
/**

40
spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/R2dbcCustomConversionsUnitTests.java

@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
/*
* Copyright 2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.data.r2dbc.convert;
import static org.assertj.core.api.Assertions.*;
import io.r2dbc.spi.Blob;
import org.junit.jupiter.api.Test;
import org.springframework.data.r2dbc.dialect.H2Dialect;
/**
* Unit tests for {@link R2dbcCustomConversions}.
*
* @author Mark Paluch
*/
class R2dbcCustomConversionsUnitTests {
@Test // GH-2147
void shouldReportR2dbcSimpleTypes() {
R2dbcCustomConversions conversions = R2dbcCustomConversions.of(H2Dialect.INSTANCE);
assertThat(conversions.isSimpleType(Blob.class)).isTrue();
}
}

3
spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/dialect/PostgresDialectUnitTests.java

@ -18,6 +18,8 @@ package org.springframework.data.r2dbc.dialect; @@ -18,6 +18,8 @@ package org.springframework.data.r2dbc.dialect;
import static org.assertj.core.api.Assertions.*;
import static org.assertj.core.api.SoftAssertions.*;
import io.r2dbc.postgresql.codec.Box;
import java.util.List;
import org.junit.jupiter.api.Test;
@ -55,6 +57,7 @@ class PostgresDialectUnitTests { @@ -55,6 +57,7 @@ class PostgresDialectUnitTests {
it.assertThat(holder.isSimpleType(String.class)).isTrue();
it.assertThat(holder.isSimpleType(int.class)).isTrue();
it.assertThat(holder.isSimpleType(Integer.class)).isTrue();
it.assertThat(holder.isSimpleType(Box.class)).isTrue();
});
}

Loading…
Cancel
Save