committed by
Jens Schauder
parent
f417c4ca13
commit
582319a5fe
@@ -29,7 +29,6 @@ import org.springframework.data.annotation.CreatedDate;
|
||||
import org.springframework.data.annotation.LastModifiedBy;
|
||||
import org.springframework.data.annotation.LastModifiedDate;
|
||||
import org.springframework.data.convert.Jsr310Converters;
|
||||
import org.springframework.data.convert.ThreeTenBackPortConverters;
|
||||
import org.springframework.data.util.Optionals;
|
||||
import org.springframework.data.util.ReflectionUtils;
|
||||
import org.springframework.data.util.ReflectionUtils.AnnotationFieldFilter;
|
||||
@@ -54,16 +53,11 @@ final class AnnotationAuditingMetadata {
|
||||
|
||||
private static final Map<Class<?>, AnnotationAuditingMetadata> metadataCache = new ConcurrentHashMap<>();
|
||||
|
||||
public static final boolean IS_JDK_8 = org.springframework.util.ClassUtils.isPresent("java.time.Clock",
|
||||
AnnotationAuditingMetadata.class.getClassLoader());
|
||||
|
||||
static final List<String> SUPPORTED_DATE_TYPES;
|
||||
|
||||
static {
|
||||
|
||||
List<String> types = new ArrayList<>(5);
|
||||
types.add("org.joda.time.DateTime");
|
||||
types.add("org.joda.time.LocalDateTime");
|
||||
types.add(Date.class.getName());
|
||||
types.add(Long.class.getName());
|
||||
types.add(long.class.getName());
|
||||
@@ -109,7 +103,7 @@ final class AnnotationAuditingMetadata {
|
||||
|
||||
Class<?> type = it.getType();
|
||||
|
||||
if (Jsr310Converters.supports(type) || ThreeTenBackPortConverters.supports(type)) {
|
||||
if (Jsr310Converters.supports(type)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,9 +24,7 @@ import java.util.stream.Stream;
|
||||
|
||||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.data.convert.JodaTimeConverters;
|
||||
import org.springframework.data.convert.Jsr310Converters;
|
||||
import org.springframework.data.convert.ThreeTenBackPortConverters;
|
||||
import org.springframework.data.domain.Auditable;
|
||||
import org.springframework.data.util.ReflectionUtils;
|
||||
import org.springframework.format.support.DefaultFormattingConversionService;
|
||||
@@ -50,9 +48,7 @@ class DefaultAuditableBeanWrapperFactory implements AuditableBeanWrapperFactory
|
||||
|
||||
DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
|
||||
|
||||
JodaTimeConverters.getConvertersToRegister().forEach(conversionService::addConverter);
|
||||
Jsr310Converters.getConvertersToRegister().forEach(conversionService::addConverter);
|
||||
ThreeTenBackPortConverters.getConvertersToRegister().forEach(conversionService::addConverter);
|
||||
|
||||
this.conversionService = conversionService;
|
||||
}
|
||||
|
||||
@@ -79,9 +79,7 @@ public class CustomConversions {
|
||||
|
||||
List<Object> defaults = new ArrayList<>();
|
||||
|
||||
defaults.addAll(JodaTimeConverters.getConvertersToRegister());
|
||||
defaults.addAll(Jsr310Converters.getConvertersToRegister());
|
||||
defaults.addAll(ThreeTenBackPortConverters.getConvertersToRegister());
|
||||
defaults.addAll(JMoleculesConverters.getConvertersToRegister());
|
||||
|
||||
DEFAULT_CONVERTERS = Collections.unmodifiableList(defaults);
|
||||
|
||||
@@ -1,212 +0,0 @@
|
||||
/*
|
||||
* Copyright 2013-2021 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.convert;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.joda.time.LocalDateTime;
|
||||
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
/**
|
||||
* Helper class to register JodaTime specific {@link Converter} implementations in case the library is present on the
|
||||
* classpath.
|
||||
*
|
||||
* @author Oliver Gierke
|
||||
* @author Christoph Strobl
|
||||
* @author Jens Schauder
|
||||
* @author Mark Paluch
|
||||
* @deprecated since 2.3, use JSR-310 types as replacement for Joda-Time.
|
||||
*/
|
||||
@Deprecated
|
||||
public abstract class JodaTimeConverters {
|
||||
|
||||
private static final boolean JODA_TIME_IS_PRESENT = ClassUtils.isPresent("org.joda.time.LocalDate", null);
|
||||
|
||||
/**
|
||||
* Returns the converters to be registered. Will only return converters in case JodaTime is present on the class.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static Collection<Converter<?, ?>> getConvertersToRegister() {
|
||||
|
||||
if (!JODA_TIME_IS_PRESENT) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
List<Converter<?, ?>> converters = new ArrayList<>();
|
||||
converters.add(LocalDateToDateConverter.INSTANCE);
|
||||
converters.add(LocalDateTimeToDateConverter.INSTANCE);
|
||||
converters.add(DateTimeToDateConverter.INSTANCE);
|
||||
|
||||
converters.add(DateToLocalDateConverter.INSTANCE);
|
||||
converters.add(DateToLocalDateTimeConverter.INSTANCE);
|
||||
converters.add(DateToDateTimeConverter.INSTANCE);
|
||||
|
||||
converters.add(LocalDateTimeToJodaLocalDateTime.INSTANCE);
|
||||
converters.add(LocalDateTimeToJodaDateTime.INSTANCE);
|
||||
|
||||
converters.add(InstantToJodaLocalDateTime.INSTANCE);
|
||||
converters.add(JodaLocalDateTimeToInstant.INSTANCE);
|
||||
|
||||
converters.add(LocalDateTimeToJsr310Converter.INSTANCE);
|
||||
|
||||
return converters;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public enum LocalDateTimeToJsr310Converter implements Converter<LocalDateTime, java.time.LocalDateTime> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public java.time.LocalDateTime convert(LocalDateTime source) {
|
||||
return java.time.LocalDateTime.ofInstant(source.toDate().toInstant(), ZoneId.systemDefault());
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public enum LocalDateToDateConverter implements Converter<LocalDate, Date> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Date convert(LocalDate source) {
|
||||
return source.toDate();
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public enum LocalDateTimeToDateConverter implements Converter<LocalDateTime, Date> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Date convert(LocalDateTime source) {
|
||||
return source.toDate();
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public enum DateTimeToDateConverter implements Converter<DateTime, Date> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Date convert(DateTime source) {
|
||||
return source.toDate();
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public enum DateToLocalDateConverter implements Converter<Date, LocalDate> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public LocalDate convert(Date source) {
|
||||
return new LocalDate(source.getTime());
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public enum DateToLocalDateTimeConverter implements Converter<Date, LocalDateTime> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public LocalDateTime convert(Date source) {
|
||||
return new LocalDateTime(source.getTime());
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public enum DateToDateTimeConverter implements Converter<Date, DateTime> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public DateTime convert(Date source) {
|
||||
return new DateTime(source.getTime());
|
||||
}
|
||||
}
|
||||
|
||||
@ReadingConverter
|
||||
@Deprecated
|
||||
public enum LocalDateTimeToJodaLocalDateTime implements Converter<java.time.LocalDateTime, LocalDateTime> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public LocalDateTime convert(java.time.LocalDateTime source) {
|
||||
return LocalDateTime.fromDateFields(Jsr310Converters.LocalDateTimeToDateConverter.INSTANCE.convert(source));
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public enum InstantToJodaLocalDateTime implements Converter<java.time.Instant, LocalDateTime> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public LocalDateTime convert(java.time.Instant source) {
|
||||
return LocalDateTime.fromDateFields(new Date(source.toEpochMilli()));
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public enum JodaLocalDateTimeToInstant implements Converter<LocalDateTime, Instant> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Instant convert(LocalDateTime source) {
|
||||
return Instant.ofEpochMilli(source.toDateTime().getMillis());
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public enum LocalDateTimeToJodaDateTime implements Converter<java.time.LocalDateTime, DateTime> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public DateTime convert(java.time.LocalDateTime source) {
|
||||
return new DateTime(Jsr310Converters.LocalDateTimeToDateConverter.INSTANCE.convert(source));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,266 +0,0 @@
|
||||
/*
|
||||
* Copyright 2015-2021 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.convert;
|
||||
|
||||
import static org.threeten.bp.DateTimeUtils.*;
|
||||
import static org.threeten.bp.Instant.*;
|
||||
import static org.threeten.bp.LocalDateTime.*;
|
||||
import static org.threeten.bp.ZoneId.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
import org.threeten.bp.Instant;
|
||||
import org.threeten.bp.LocalDate;
|
||||
import org.threeten.bp.LocalDateTime;
|
||||
import org.threeten.bp.LocalTime;
|
||||
import org.threeten.bp.ZoneId;
|
||||
import org.threeten.bp.ZoneOffset;
|
||||
|
||||
/**
|
||||
* Helper class to register {@link Converter} implementations for the ThreeTen Backport project in case it's present on
|
||||
* the classpath.
|
||||
*
|
||||
* @author Oliver Gierke
|
||||
* @author Christoph Strobl
|
||||
* @author Jens Schauder
|
||||
* @author Mark Paluch
|
||||
* @see <a href="https://www.threeten.org/threetenbp">https://www.threeten.org/threetenbp</a>
|
||||
* @since 1.10
|
||||
* @deprecated since 2.3, use JSR-310 types as replacement for ThreeTenBackport.
|
||||
*/
|
||||
@Deprecated
|
||||
public abstract class ThreeTenBackPortConverters {
|
||||
|
||||
private static final boolean THREE_TEN_BACK_PORT_IS_PRESENT = ClassUtils.isPresent("org.threeten.bp.LocalDateTime",
|
||||
ThreeTenBackPortConverters.class.getClassLoader());
|
||||
private static final Collection<Class<?>> SUPPORTED_TYPES;
|
||||
|
||||
static {
|
||||
|
||||
SUPPORTED_TYPES = THREE_TEN_BACK_PORT_IS_PRESENT //
|
||||
? Arrays.asList(LocalDateTime.class, LocalDate.class, LocalTime.class, Instant.class, java.time.Instant.class)
|
||||
: Collections.emptySet();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the converters to be registered. Will only return converters in case we're running on Java 8.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static Collection<Converter<?, ?>> getConvertersToRegister() {
|
||||
|
||||
if (!THREE_TEN_BACK_PORT_IS_PRESENT) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
List<Converter<?, ?>> converters = new ArrayList<>();
|
||||
converters.add(DateToLocalDateTimeConverter.INSTANCE);
|
||||
converters.add(LocalDateTimeToDateConverter.INSTANCE);
|
||||
converters.add(DateToLocalDateConverter.INSTANCE);
|
||||
converters.add(LocalDateToDateConverter.INSTANCE);
|
||||
converters.add(DateToLocalTimeConverter.INSTANCE);
|
||||
converters.add(LocalTimeToDateConverter.INSTANCE);
|
||||
converters.add(DateToInstantConverter.INSTANCE);
|
||||
converters.add(InstantToDateConverter.INSTANCE);
|
||||
converters.add(ZoneIdToStringConverter.INSTANCE);
|
||||
converters.add(StringToZoneIdConverter.INSTANCE);
|
||||
converters.add(LocalDateTimeToJsr310LocalDateTimeConverter.INSTANCE);
|
||||
converters.add(LocalDateTimeToJavaTimeInstantConverter.INSTANCE);
|
||||
converters.add(JavaTimeInstantToLocalDateTimeConverter.INSTANCE);
|
||||
|
||||
return converters;
|
||||
}
|
||||
|
||||
public static boolean supports(Class<?> type) {
|
||||
return SUPPORTED_TYPES.contains(type);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static enum LocalDateTimeToJsr310LocalDateTimeConverter
|
||||
implements Converter<LocalDateTime, java.time.LocalDateTime> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object)
|
||||
*/
|
||||
@NonNull
|
||||
@Override
|
||||
public java.time.LocalDateTime convert(LocalDateTime source) {
|
||||
|
||||
Date date = toDate(source.atZone(ZoneId.systemDefault()).toInstant());
|
||||
|
||||
return Jsr310Converters.DateToLocalDateTimeConverter.INSTANCE.convert(date);
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static enum DateToLocalDateTimeConverter implements Converter<Date, LocalDateTime> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public LocalDateTime convert(Date source) {
|
||||
return ofInstant(toInstant(source), systemDefault());
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static enum LocalDateTimeToDateConverter implements Converter<LocalDateTime, Date> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Date convert(LocalDateTime source) {
|
||||
return toDate(source.atZone(systemDefault()).toInstant());
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static enum DateToLocalDateConverter implements Converter<Date, LocalDate> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public LocalDate convert(Date source) {
|
||||
return ofInstant(ofEpochMilli(source.getTime()), systemDefault()).toLocalDate();
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static enum LocalDateToDateConverter implements Converter<LocalDate, Date> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Date convert(LocalDate source) {
|
||||
return toDate(source.atStartOfDay(systemDefault()).toInstant());
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static enum DateToLocalTimeConverter implements Converter<Date, LocalTime> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public LocalTime convert(Date source) {
|
||||
return ofInstant(ofEpochMilli(source.getTime()), systemDefault()).toLocalTime();
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static enum LocalTimeToDateConverter implements Converter<LocalTime, Date> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Date convert(LocalTime source) {
|
||||
return toDate(source.atDate(LocalDate.now()).atZone(systemDefault()).toInstant());
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static enum DateToInstantConverter implements Converter<Date, Instant> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Instant convert(Date source) {
|
||||
return toInstant(source);
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static enum InstantToDateConverter implements Converter<Instant, Date> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Date convert(Instant source) {
|
||||
return toDate(source.atZone(systemDefault()).toInstant());
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static enum LocalDateTimeToJavaTimeInstantConverter implements Converter<LocalDateTime, java.time.Instant> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public java.time.Instant convert(LocalDateTime source) {
|
||||
return java.time.Instant.ofEpochMilli(source.atZone(ZoneOffset.systemDefault()).toInstant().toEpochMilli());
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static enum JavaTimeInstantToLocalDateTimeConverter implements Converter<java.time.Instant, LocalDateTime> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public LocalDateTime convert(java.time.Instant source) {
|
||||
return LocalDateTime.ofInstant(Instant.ofEpochMilli(source.toEpochMilli()), ZoneOffset.systemDefault());
|
||||
}
|
||||
}
|
||||
|
||||
@WritingConverter
|
||||
@Deprecated
|
||||
public static enum ZoneIdToStringConverter implements Converter<ZoneId, String> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String convert(ZoneId source) {
|
||||
return source.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@ReadingConverter
|
||||
@Deprecated
|
||||
public static enum StringToZoneIdConverter implements Converter<String, ZoneId> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ZoneId convert(String source) {
|
||||
return ZoneId.of(source);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user