Spring uses Joda-Time 2.0's specific parseLocalDate/parseLocalTime/parseLocalDateTime methods now
Issue: SPR-11014
This commit is contained in:
@@ -22,7 +22,6 @@ import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.joda.time.LocalDateTime;
|
||||
import org.joda.time.LocalTime;
|
||||
@@ -40,6 +39,8 @@ import org.springframework.util.StringValueResolver;
|
||||
/**
|
||||
* Formats fields annotated with the {@link DateTimeFormat} annotation using Joda-Time.
|
||||
*
|
||||
* <p><b>NOTE:</b> Spring's Joda-Time support requires Joda-Time 2.x, as of Spring 4.0.
|
||||
*
|
||||
* @author Keith Donald
|
||||
* @author Juergen Hoeller
|
||||
* @since 3.0
|
||||
@@ -103,8 +104,19 @@ public class JodaDateTimeFormatAnnotationFormatterFactory
|
||||
}
|
||||
|
||||
@Override
|
||||
public Parser<DateTime> getParser(DateTimeFormat annotation, Class<?> fieldType) {
|
||||
return new DateTimeParser(getFormatter(annotation, fieldType));
|
||||
public Parser<?> getParser(DateTimeFormat annotation, Class<?> fieldType) {
|
||||
if (LocalDate.class.equals(fieldType)) {
|
||||
return new LocalDateParser(getFormatter(annotation, fieldType));
|
||||
}
|
||||
else if (LocalTime.class.equals(fieldType)) {
|
||||
return new LocalTimeParser(getFormatter(annotation, fieldType));
|
||||
}
|
||||
else if (LocalDateTime.class.equals(fieldType)) {
|
||||
return new LocalDateTimeParser(getFormatter(annotation, fieldType));
|
||||
}
|
||||
else {
|
||||
return new DateTimeParser(getFormatter(annotation, fieldType));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -38,6 +38,8 @@ import org.springframework.format.annotation.DateTimeFormat.ISO;
|
||||
/**
|
||||
* Configures Joda-Time's formatting system for use with Spring.
|
||||
*
|
||||
* <p><b>NOTE:</b> Spring's Joda-Time support requires Joda-Time 2.x, as of Spring 4.0.
|
||||
*
|
||||
* @author Keith Donald
|
||||
* @author Juergen Hoeller
|
||||
* @author Phillip Webb
|
||||
@@ -165,17 +167,17 @@ public class JodaTimeFormatterRegistrar implements FormatterRegistrar {
|
||||
|
||||
addFormatterForFields(registry,
|
||||
new ReadablePartialPrinter(dateFormatter),
|
||||
new DateTimeParser(dateFormatter),
|
||||
new LocalDateParser(dateFormatter),
|
||||
LocalDate.class);
|
||||
|
||||
addFormatterForFields(registry,
|
||||
new ReadablePartialPrinter(timeFormatter),
|
||||
new DateTimeParser(timeFormatter),
|
||||
new LocalTimeParser(timeFormatter),
|
||||
LocalTime.class);
|
||||
|
||||
addFormatterForFields(registry,
|
||||
new ReadablePartialPrinter(dateTimeFormatter),
|
||||
new DateTimeParser(dateTimeFormatter),
|
||||
new LocalDateTimeParser(dateTimeFormatter),
|
||||
LocalDateTime.class);
|
||||
|
||||
addFormatterForFields(registry,
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright 2002-2013 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
|
||||
*
|
||||
* http://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.format.datetime.joda;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.joda.time.LocalDate;
|
||||
import org.joda.time.format.DateTimeFormatter;
|
||||
|
||||
import org.springframework.format.Parser;
|
||||
|
||||
/**
|
||||
* Parses Joda {@link org.joda.time.LocalDate} instances using a {@link org.joda.time.format.DateTimeFormatter}.
|
||||
*
|
||||
* @author Juergen Hoeller
|
||||
* @since 4.0
|
||||
*/
|
||||
public final class LocalDateParser implements Parser<LocalDate> {
|
||||
|
||||
private final DateTimeFormatter formatter;
|
||||
|
||||
|
||||
/**
|
||||
* Create a new DateTimeParser.
|
||||
* @param formatter the Joda DateTimeFormatter instance
|
||||
*/
|
||||
public LocalDateParser(DateTimeFormatter formatter) {
|
||||
this.formatter = formatter;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public LocalDate parse(String text, Locale locale) throws ParseException {
|
||||
return JodaTimeContextHolder.getFormatter(this.formatter, locale).parseLocalDate(text);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright 2002-2013 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
|
||||
*
|
||||
* http://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.format.datetime.joda;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.joda.time.LocalDateTime;
|
||||
import org.joda.time.format.DateTimeFormatter;
|
||||
|
||||
import org.springframework.format.Parser;
|
||||
|
||||
/**
|
||||
* Parses Joda {@link org.joda.time.LocalDateTime} instances using a {@link org.joda.time.format.DateTimeFormatter}.
|
||||
*
|
||||
* @author Juergen Hoeller
|
||||
* @since 4.0
|
||||
*/
|
||||
public final class LocalDateTimeParser implements Parser<LocalDateTime> {
|
||||
|
||||
private final DateTimeFormatter formatter;
|
||||
|
||||
|
||||
/**
|
||||
* Create a new DateTimeParser.
|
||||
* @param formatter the Joda DateTimeFormatter instance
|
||||
*/
|
||||
public LocalDateTimeParser(DateTimeFormatter formatter) {
|
||||
this.formatter = formatter;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public LocalDateTime parse(String text, Locale locale) throws ParseException {
|
||||
return JodaTimeContextHolder.getFormatter(this.formatter, locale).parseLocalDateTime(text);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright 2002-2013 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
|
||||
*
|
||||
* http://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.format.datetime.joda;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.joda.time.LocalTime;
|
||||
import org.joda.time.format.DateTimeFormatter;
|
||||
|
||||
import org.springframework.format.Parser;
|
||||
|
||||
/**
|
||||
* Parses Joda {@link org.joda.time.LocalTime} instances using a {@link org.joda.time.format.DateTimeFormatter}.
|
||||
*
|
||||
* @author Juergen Hoeller
|
||||
* @since 4.0
|
||||
*/
|
||||
public final class LocalTimeParser implements Parser<LocalTime> {
|
||||
|
||||
private final DateTimeFormatter formatter;
|
||||
|
||||
|
||||
/**
|
||||
* Create a new DateTimeParser.
|
||||
* @param formatter the Joda DateTimeFormatter instance
|
||||
*/
|
||||
public LocalTimeParser(DateTimeFormatter formatter) {
|
||||
this.formatter = formatter;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public LocalTime parse(String text, Locale locale) throws ParseException {
|
||||
return JodaTimeContextHolder.getFormatter(this.formatter, locale).parseLocalTime(text);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user