Move AggregateReference converter registration into MappingJdbcConverter.
See #1750 Original pull request: #1785
This commit is contained in:
@@ -39,18 +39,8 @@ import org.springframework.data.jdbc.core.mapping.JdbcSimpleTypes;
|
||||
*/
|
||||
public class JdbcCustomConversions extends CustomConversions {
|
||||
|
||||
private static final Collection<Object> STORE_CONVERTERS;
|
||||
|
||||
static {
|
||||
|
||||
List<Object> converters = new ArrayList<>(Jsr310TimestampBasedConverters.getConvertersToRegister());
|
||||
|
||||
converters
|
||||
.addAll(AggregateReferenceConverters.getConvertersToRegister(DefaultConversionService.getSharedInstance()));
|
||||
|
||||
STORE_CONVERTERS = Collections.unmodifiableCollection(converters);
|
||||
|
||||
}
|
||||
private static final Collection<Object> STORE_CONVERTERS = Collections
|
||||
.unmodifiableCollection(Jsr310TimestampBasedConverters.getConvertersToRegister());
|
||||
|
||||
/**
|
||||
* Creates an empty {@link JdbcCustomConversions} object.
|
||||
@@ -66,7 +56,6 @@ public class JdbcCustomConversions extends CustomConversions {
|
||||
* @param converters must not be {@literal null}.
|
||||
*/
|
||||
public JdbcCustomConversions(List<?> converters) {
|
||||
|
||||
super(constructConverterConfiguration(converters));
|
||||
}
|
||||
|
||||
@@ -98,29 +87,13 @@ public class JdbcCustomConversions extends CustomConversions {
|
||||
|
||||
private static ConverterConfiguration constructConverterConfiguration(List<?> converters) {
|
||||
|
||||
StoreConversions storeConversions = storeConversions(converters);
|
||||
|
||||
return new ConverterConfiguration( //
|
||||
storeConversions, //
|
||||
StoreConversions.of(JdbcSimpleTypes.HOLDER, STORE_CONVERTERS), //
|
||||
converters, //
|
||||
JdbcCustomConversions::excludeConversionsBetweenDateAndJsr310Types //
|
||||
);
|
||||
}
|
||||
|
||||
private static StoreConversions storeConversions(List<?> userConverters) {
|
||||
|
||||
List<Object> converters = new ArrayList<>(Jsr310TimestampBasedConverters.getConvertersToRegister());
|
||||
|
||||
DefaultConversionService defaultConversionService = new DefaultConversionService();
|
||||
for (Object userConverter : userConverters) {
|
||||
if (userConverter instanceof Converter<?, ?> converter)
|
||||
defaultConversionService.addConverter(converter);
|
||||
}
|
||||
|
||||
converters.addAll(AggregateReferenceConverters.getConvertersToRegister(defaultConversionService));
|
||||
|
||||
return StoreConversions.of(JdbcSimpleTypes.HOLDER, Collections.unmodifiableCollection(converters));
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtain a read only copy of default store converters.
|
||||
|
||||
@@ -29,6 +29,7 @@ import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.core.convert.ConverterNotFoundException;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.core.convert.converter.ConverterRegistry;
|
||||
import org.springframework.data.convert.CustomConversions;
|
||||
import org.springframework.data.jdbc.core.mapping.AggregateReference;
|
||||
import org.springframework.data.jdbc.core.mapping.JdbcValue;
|
||||
@@ -91,6 +92,8 @@ public class MappingJdbcConverter extends MappingRelationalConverter implements
|
||||
|
||||
this.typeFactory = JdbcTypeFactory.unsupported();
|
||||
this.relationResolver = relationResolver;
|
||||
|
||||
registerAggregateReferenceConverters();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -110,6 +113,14 @@ public class MappingJdbcConverter extends MappingRelationalConverter implements
|
||||
|
||||
this.typeFactory = typeFactory;
|
||||
this.relationResolver = relationResolver;
|
||||
|
||||
registerAggregateReferenceConverters();
|
||||
}
|
||||
|
||||
private void registerAggregateReferenceConverters() {
|
||||
|
||||
ConverterRegistry registry = (ConverterRegistry) getConversionService();
|
||||
AggregateReferenceConverters.getConvertersToRegister(getConversionService()).forEach(registry::addConverter);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -327,7 +338,8 @@ public class MappingJdbcConverter extends MappingRelationalConverter implements
|
||||
this.accessor = accessor;
|
||||
this.context = context;
|
||||
this.identifier = path.isEntity()
|
||||
? potentiallyAppendIdentifier(identifier, path.getRequiredLeafEntity(), property -> delegate.getValue(path.append(property)))
|
||||
? potentiallyAppendIdentifier(identifier, path.getRequiredLeafEntity(),
|
||||
property -> delegate.getValue(path.append(property)))
|
||||
: identifier;
|
||||
}
|
||||
|
||||
|
||||
@@ -120,7 +120,6 @@ public class MappingRelationalConverter extends AbstractRelationalConverter impl
|
||||
|
||||
this.spELContext = new SpELContext(DocumentPropertyAccessor.INSTANCE);
|
||||
this.introspector = createIntrospector(projectionFactory, getConversions(), getMappingContext());
|
||||
|
||||
}
|
||||
|
||||
private static EntityProjectionIntrospector createIntrospector(ProjectionFactory projectionFactory,
|
||||
|
||||
Reference in New Issue
Block a user