Browse Source

Move AggregateReference converter registration into MappingJdbcConverter.

See #1750
Original pull request: #1785
pull/1794/head
Mark Paluch 2 years ago
parent
commit
3224b49117
No known key found for this signature in database
GPG Key ID: 55BC6374BAA9D973
  1. 33
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcCustomConversions.java
  2. 14
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/MappingJdbcConverter.java
  3. 1
      spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/MappingRelationalConverter.java

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

@ -39,18 +39,8 @@ import org.springframework.data.jdbc.core.mapping.JdbcSimpleTypes; @@ -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 { @@ -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 { @@ -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.

14
spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/MappingJdbcConverter.java

@ -29,6 +29,7 @@ import org.apache.commons.logging.LogFactory; @@ -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 @@ -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 @@ -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 @@ -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;
}

1
spring-data-relational/src/main/java/org/springframework/data/relational/core/conversion/MappingRelationalConverter.java

@ -134,7 +134,6 @@ public class MappingRelationalConverter extends AbstractRelationalConverter @@ -134,7 +134,6 @@ public class MappingRelationalConverter extends AbstractRelationalConverter
this.spELContext = new SpELContext(DocumentPropertyAccessor.INSTANCE);
this.introspector = createIntrospector(projectionFactory, getConversions(), getMappingContext());
}
private static EntityProjectionIntrospector createIntrospector(ProjectionFactory projectionFactory,

Loading…
Cancel
Save