Browse Source

initial joda time support courtesy of Oliver Gierke

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2122 50f2f4bb-b051-0410-bef5-90022cba6387
pull/1/head
Keith Donald 17 years ago
parent
commit
88956c4788
  1. 1
      org.springframework.context/.classpath
  2. 1
      org.springframework.context/ivy.xml
  3. 56
      org.springframework.context/src/main/java/org/springframework/ui/format/jodatime/DateTimeFormatter.java
  4. 47
      org.springframework.context/src/test/java/org/springframework/ui/format/jodatime/DateTimeFormatterTests.java
  5. 1
      org.springframework.context/template.mf
  6. 2
      spring-framework-reference/src/validation.xml

1
org.springframework.context/.classpath

@ -36,5 +36,6 @@ @@ -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>

1
org.springframework.context/ivy.xml

@ -46,6 +46,7 @@ @@ -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"/>

56
org.springframework.context/src/main/java/org/springframework/ui/format/jodatime/DateTimeFormatter.java

@ -0,0 +1,56 @@ @@ -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);
}
}

47
org.springframework.context/src/test/java/org/springframework/ui/format/jodatime/DateTimeFormatterTests.java

@ -0,0 +1,47 @@ @@ -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));
}
}

1
org.springframework.context/template.mf

@ -29,6 +29,7 @@ Import-Template: @@ -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,

2
spring-framework-reference/src/validation.xml

@ -962,6 +962,7 @@ public interface Formatter<T> { @@ -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> { @@ -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">

Loading…
Cancel
Save