initial joda time support courtesy of Oliver Gierke
This commit is contained in:
@@ -36,5 +36,6 @@
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/org.springframework.expression"/>
|
||||
<classpathentry kind="lib" path="/org.springframework.asm/target/artifacts/org.springframework.asm.jar" sourcepath="/org.springframework.asm/target/artifacts/org.springframework.asm-sources.jar"/>
|
||||
<classpathentry kind="var" path="IVY_CACHE/org.hibernate/com.springsource.org.hibernate.validator/4.0.0.Beta2/com.springsource.org.hibernate.validator-4.0.0.Beta2.jar"/>
|
||||
<classpathentry kind="var" path="IVY_CACHE/org.joda/com.springsource.org.joda.time/1.6.0/com.springsource.org.joda.time-1.6.0.jar" sourcepath="/IVY_CACHE/org.joda/com.springsource.org.joda.time/1.6.0/com.springsource.org.joda.time-sources-1.6.0.jar"/>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
<dependency org="org.aspectj" name="com.springsource.org.aspectj.weaver" rev="1.6.5.RELEASE" conf="optional, aspectj->compile"/>
|
||||
<dependency org="org.beanshell" name="com.springsource.bsh" rev="2.0.0.b4" conf="optional, beanshell->compile"/>
|
||||
<dependency org="org.codehaus.groovy" name="com.springsource.org.codehaus.groovy" rev="1.6.3" conf="optional, groovy->compile"/>
|
||||
<dependency org="org.joda" name="com.springsource.org.joda.time" rev="1.6.0" />
|
||||
<dependency org="org.jruby" name="com.springsource.org.jruby" rev="1.2.0" conf="optional, jruby->compile"/>
|
||||
<dependency org="org.springframework" name="org.springframework.asm" rev="latest.integration" conf="compile->compile"/>
|
||||
<dependency org="org.springframework" name="org.springframework.aop" rev="latest.integration" conf="compile->compile"/>
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright 2002-2009 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.ui.format.jodatime;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.format.DateTimeFormat;
|
||||
import org.springframework.ui.format.Formatter;
|
||||
|
||||
/**
|
||||
* {@link Formatter} implementation to handle JodaTime {@link DateTime} instances.
|
||||
* @author Oliver Gierke
|
||||
*/
|
||||
public class DateTimeFormatter implements Formatter<DateTime> {
|
||||
|
||||
private org.joda.time.format.DateTimeFormatter formatter;
|
||||
|
||||
/**
|
||||
* Creates a new {@link DateTimeFormatter} for the given JodaTime formatting pattern.
|
||||
* @param pattern
|
||||
* @see DateTimeFormat
|
||||
*/
|
||||
public DateTimeFormatter(String pattern) {
|
||||
this.formatter = DateTimeFormat.forPattern(pattern);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@link DateTimeFormatter} for the given JodaTime formatter.
|
||||
*/
|
||||
public DateTimeFormatter(org.joda.time.format.DateTimeFormatter formatter) {
|
||||
this.formatter = formatter;
|
||||
}
|
||||
|
||||
public String format(DateTime object, Locale locale) {
|
||||
return null == object ? "" : object.toString(formatter);
|
||||
}
|
||||
|
||||
public DateTime parse(String formatted, Locale locale) throws ParseException {
|
||||
return formatter.withLocale(locale).parseDateTime(formatted);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2002-2009 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.ui.format.jodatime;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.format.DateTimeFormat;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* @author Keith Donald
|
||||
*/
|
||||
public class DateTimeFormatterTests {
|
||||
|
||||
private DateTimeFormatter formatter = new DateTimeFormatter("yyyy-MM-dd");
|
||||
|
||||
@Test
|
||||
public void formatValue() {
|
||||
DateTime dateTime = DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime("2009-06-01");
|
||||
assertEquals("2009-06-01", formatter.format(dateTime, Locale.US));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parseValue() throws ParseException {
|
||||
DateTime dateTime = DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime("2009-06-01");
|
||||
assertEquals(dateTime, formatter.parse("2009-06-01", Locale.US));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -29,6 +29,7 @@ Import-Template:
|
||||
org.apache.commons.logging.*;version="[1.1.1, 2.0.0)",
|
||||
org.aspectj.weaver.*;version="[1.5.4, 2.0.0)";resolution:=optional,
|
||||
org.codehaus.groovy.*;version="[1.5.0, 2.0.0)";resolution:=optional,
|
||||
org.joda.*;version="[1.6.0, 2.0.0)";resolution:=optional,
|
||||
org.jruby.*;version="[1.1.0, 2.0.0)";resolution:=optional,
|
||||
org.omg.CORBA.*;version="0";resolution:=optional,
|
||||
org.springframework.aop.*;version="[3.0.0, 3.0.1)";resolution:=optional,
|
||||
|
||||
@@ -962,6 +962,7 @@ public interface Formatter<T> {
|
||||
Several Formatter implementations are provided in subpackages of <filename>ui.format</filename> as a convenience.
|
||||
The <filename>date</filename> package provides a DateFormatter to format java.util.Date objects with a java.text.DateFormat.
|
||||
The <filename>number</filename> package provides a DecimalFormatter, IntegerFormatter, CurrencyFormatter, and PercentFormatter to format java.lang.Number objects using a java.text.NumberFormat.
|
||||
The <filename>jodatime</filename> package provides a DateTimeFormatter to format Joda DateTime objects, a popular alternative to java.util.Date/Calendar.
|
||||
</para>
|
||||
<para>
|
||||
Consider <classname>DateFormatter</classname> as an example <interfacename>Formatter</interfacename> implementation:
|
||||
@@ -1000,7 +1001,6 @@ public final class DateFormatter implements Formatter<Date> {
|
||||
}]]></programlisting>
|
||||
<para>
|
||||
The Spring team welcomes community-driven Formatter contributions; see <ulink url="http://jira.springframework.org">http://jira.springframework.org</ulink> to contribute.
|
||||
In particular, the team hopes to integrate support for Joda Time and Money Formatters in the future.
|
||||
</para>
|
||||
</section>
|
||||
<section id="ui-format-Formatted-Annotation">
|
||||
|
||||
Reference in New Issue
Block a user