more joda time formatting tests
This commit is contained in:
@@ -41,23 +41,23 @@ import org.springframework.ui.format.Printer;
|
||||
*/
|
||||
abstract class AbstractDateTimeAnnotationFormatterFactory<A extends Annotation> implements AnnotationFormatterFactory<A> {
|
||||
|
||||
private final Set<Class<?>> propertyTypes;
|
||||
private final Set<Class<?>> fieldTypes;
|
||||
|
||||
public AbstractDateTimeAnnotationFormatterFactory() {
|
||||
this.propertyTypes = Collections.unmodifiableSet(createFieldTypes());
|
||||
this.fieldTypes = Collections.unmodifiableSet(createFieldTypes());
|
||||
}
|
||||
|
||||
public Set<Class<?>> getFieldTypes() {
|
||||
return propertyTypes;
|
||||
return this.fieldTypes;
|
||||
}
|
||||
|
||||
public Printer<?> getPrinter(A annotation, Class<?> propertyType) {
|
||||
public Printer<?> getPrinter(A annotation, Class<?> fieldType) {
|
||||
DateTimeFormatter formatter = configureDateTimeFormatterFrom(annotation);
|
||||
if (ReadableInstant.class.isAssignableFrom(propertyType)) {
|
||||
if (ReadableInstant.class.isAssignableFrom(fieldType)) {
|
||||
return new ReadableInstantPrinter(formatter);
|
||||
} else if (ReadablePartial.class.isAssignableFrom(propertyType)) {
|
||||
} else if (ReadablePartial.class.isAssignableFrom(fieldType)) {
|
||||
return new ReadablePartialPrinter(formatter);
|
||||
} else if (Calendar.class.isAssignableFrom(propertyType)) {
|
||||
} else if (Calendar.class.isAssignableFrom(fieldType)) {
|
||||
// assumes Calendar->ReadableInstant converter is registered
|
||||
return new ReadableInstantPrinter(formatter);
|
||||
} else {
|
||||
@@ -80,15 +80,15 @@ abstract class AbstractDateTimeAnnotationFormatterFactory<A extends Annotation>
|
||||
// internal helpers
|
||||
|
||||
private Set<Class<?>> createFieldTypes() {
|
||||
Set<Class<?>> propertyTypes = new HashSet<Class<?>>(5);
|
||||
propertyTypes.add(LocalDate.class);
|
||||
propertyTypes.add(LocalTime.class);
|
||||
propertyTypes.add(LocalDateTime.class);
|
||||
propertyTypes.add(DateTime.class);
|
||||
propertyTypes.add(Date.class);
|
||||
propertyTypes.add(Calendar.class);
|
||||
propertyTypes.add(Long.class);
|
||||
return propertyTypes;
|
||||
Set<Class<?>> fieldTypes = new HashSet<Class<?>>(7);
|
||||
fieldTypes.add(LocalDate.class);
|
||||
fieldTypes.add(LocalTime.class);
|
||||
fieldTypes.add(LocalDateTime.class);
|
||||
fieldTypes.add(DateTime.class);
|
||||
fieldTypes.add(Date.class);
|
||||
fieldTypes.add(Calendar.class);
|
||||
fieldTypes.add(Long.class);
|
||||
return fieldTypes;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ final class JodaTimeConverters {
|
||||
registry.addConverter(new DateTimeToDateMidnightConverter());
|
||||
registry.addConverter(new DateTimeToDateConverter());
|
||||
registry.addConverter(new DateTimeToCalendarConverter());
|
||||
registry.addConverter(new DateTimeToLongConverter());
|
||||
registry.addConverter(new DateToLongConverter());
|
||||
registry.addConverter(new CalendarToReadableInstantConverter());
|
||||
}
|
||||
@@ -114,6 +115,16 @@ final class JodaTimeConverters {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used when binding a parsed DateTime to a java.lang.Long field.
|
||||
* @see DateTimeParser
|
||||
*/
|
||||
private static class DateTimeToLongConverter implements Converter<DateTime, Long> {
|
||||
public Long convert(DateTime source) {
|
||||
return source.getMillis();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used when printing a java.util.Date field with a MillisecondInstantPrinter.
|
||||
* @see MillisecondInstantPrinter
|
||||
|
||||
Reference in New Issue
Block a user