Skip to content

Commit

Permalink
Remove spring-data dependency in support
Browse files Browse the repository at this point in the history
  • Loading branch information
IAM20 committed Dec 9, 2021
1 parent 8e9e3ff commit 4d86beb
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package com.navercorp.spring.data.jdbc.plus.sql.guide.config;

import static java.util.stream.Collectors.toList;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.ReadingConverter;
import org.springframework.data.jdbc.core.convert.JdbcConverter;
import org.springframework.data.jdbc.core.convert.JdbcCustomConversions;
import org.springframework.data.relational.core.dialect.Dialect;
Expand All @@ -30,14 +33,27 @@ public SqlParameterSourceFactory sqlParameterSourceFactory(
JdbcConverter jdbcConverter,
Dialect dialect) {
List<?> dialectConverters = (List<?>) dialect.getConverters();
List<Converter<?, ?>> converters = storeConverters();
converters.addAll((List<Converter<?, ?>>) dialectConverters);

return new EntityConvertibleSqlParameterSourceFactory(
new ConvertibleParameterSourceFactory(
new DefaultJdbcParameterSourceConverter((List<Converter<?, ?>>) dialectConverters),
new DefaultJdbcParameterSourceConverter(converters),
new NoneFallbackParameterSource()
),
mappingContext,
jdbcConverter,
IdentifierProcessing.ANSI
);
}

private static List<Converter<?, ?>> storeConverters() {
List<Converter<?, ?>> converters = new ArrayList<>();
for (Object obj : JdbcCustomConversions.storeConverters()) {
if (obj instanceof Converter<?, ?> && obj.getClass().getAnnotation(ReadingConverter.class) == null) {
converters.add((Converter<?, ?>) obj);
}
}
return converters;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ import com.navercorp.spring.jdbc.plus.support.parametersource.fallback.NoneFallb
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.core.convert.converter.Converter
import org.springframework.data.convert.ReadingConverter
import org.springframework.data.jdbc.core.convert.JdbcConverter
import org.springframework.data.jdbc.core.convert.JdbcCustomConversions
import org.springframework.data.relational.core.dialect.Dialect
import org.springframework.data.relational.core.mapping.RelationalMappingContext
import org.springframework.data.relational.core.sql.IdentifierProcessing
Expand All @@ -22,14 +24,28 @@ class JdbcConfiguration {
jdbcConverter: JdbcConverter,
dialect: Dialect
): SqlParameterSourceFactory {
val converters = storeConverters()
converters.addAll(dialect.converters as List<Converter<*, *>>)

return EntityConvertibleSqlParameterSourceFactory(
ConvertibleParameterSourceFactory(
DefaultJdbcParameterSourceConverter(dialect.converters as List<Converter<Any?, Any?>>),
DefaultJdbcParameterSourceConverter(converters),
NoneFallbackParameterSource()
),
mappingContext,
jdbcConverter,
IdentifierProcessing.ANSI
)
}

private fun storeConverters(): MutableList<Converter<*, *>> {
val result = mutableListOf<Converter<*, *>>()

JdbcCustomConversions.storeConverters().forEach {
if (it is Converter<*, *> && it.javaClass.getAnnotation(ReadingConverter::class.java) == null) {
result.add(it)
}
}
return result
}
}
1 change: 0 additions & 1 deletion spring-jdbc-plus-support/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
dependencies {
compile("org.springframework:spring-jdbc")
compile("org.springframework.data:spring-data-jdbc:2.3.0")

testImplementation("org.junit.jupiter:junit-jupiter")
testImplementation("org.junit.jupiter:junit-jupiter-api")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,6 @@

import org.springframework.core.ResolvableType;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.ReadingConverter;
import org.springframework.data.convert.WritingConverter;
import org.springframework.data.jdbc.core.convert.JdbcCustomConversions;
import org.springframework.data.util.ReflectionUtils;
import org.springframework.lang.Nullable;

import com.navercorp.spring.jdbc.plus.support.parametersource.converter.EnumParameterTypeConverter.EnumToNameConverter;
Expand Down Expand Up @@ -137,13 +133,12 @@ private static List<ConditionalUnwrapper<?>> getConditionalUnwrappers(List<Unwra
return conditionalUnwrappers;
}

@SuppressWarnings({"CollectionAddAllCanBeReplacedWithConstructor", "unchecked"})
@SuppressWarnings("CollectionAddAllCanBeReplacedWithConstructor")
private static Map<Class<?>, Converter<?, ?>> getDefaultConverters() {
List<Converter<?, ?>> converters = new ArrayList<>();
converters.addAll((List<Converter<?, ?>>) storeConverters());
converters.addAll(Jsr310TimestampBasedConverters.getConvertersToRegister());
converters.add(UuidParameterTypeConverter.UuidToStringTypeConverter.INSTANCE);
return converters.stream()
.filter(c -> c.getClass().getAnnotation(ReadingConverter.class) == null)
.collect(toMap(c -> resolveConverterGenerics(c.getClass()).get(0), c -> c));
}

Expand Down Expand Up @@ -172,16 +167,6 @@ private static Map<Class<?>, Unwrapper<?>> getUnwrappersMapExcludeConditional(Li
return Collections.unmodifiableMap(unwrapperMap);
}

private static List<Converter<?, ?>> storeConverters() {
List<Converter<?, ?>> converters = new ArrayList<>();
for (Object obj : JdbcCustomConversions.storeConverters()) {
if (obj instanceof Converter<?, ?>) {
converters.add((Converter<?, ?>) obj);
}
}
return converters;
}

private static List<Class<?>> resolveConverterGenerics(Class<?> type) {
return Arrays.asList(ResolvableType.forClass(Converter.class, type).resolveGenerics());
}
Expand Down

0 comments on commit 4d86beb

Please sign in to comment.