- Revision
- 661
- Author
- mauro
- Date
- 2008-04-29 11:31:30 -0500 (Tue, 29 Apr 2008)
Log Message
Allow patterns to be modified in DateValueConverter after instantiation. Updated freemarker-example to show how the patterns can be changed (eg to match other application date configuration) in the registrar after the converter has been defined in the web.xml with default patterns.
Modified Paths
- trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrar.java
- trunk/examples/freemarker-example/src/test/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrarTest.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/converters/DateValueConverter.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/bind/converters/DateValueConverterTest.java
Diff
Modified: trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrar.java (660 => 661)
--- trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrar.java 2008-04-29 16:27:55 UTC (rev 660) +++ trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrar.java 2008-04-29 16:31:30 UTC (rev 661) @@ -1,9 +1,16 @@ package org.codehaus.waffle.example.freemarker; +import static org.codehaus.waffle.bind.converters.DateValueConverter.DAY_FORMAT_KEY; +import static org.codehaus.waffle.bind.converters.DateValueConverter.TIME_FORMAT_KEY; + +import java.util.Properties; + +import org.codehaus.waffle.ComponentRegistry; +import org.codehaus.waffle.bind.converters.DateValueConverter; +import org.codehaus.waffle.example.freemarker.controller.PersonController; +import org.codehaus.waffle.example.freemarker.persister.SimplePersonPersister; import org.codehaus.waffle.registrar.AbstractRegistrar; import org.codehaus.waffle.registrar.Registrar; -import org.codehaus.waffle.example.freemarker.controller.PersonController; -import org.codehaus.waffle.example.freemarker.persister.SimplePersonPersister; public class FreemarkerRegistrar extends AbstractRegistrar { @@ -13,6 +20,16 @@ @Override public void application() { + ComponentRegistry registry = getComponentRegistry(); + DateValueConverter converter = (DateValueConverter) registry.locateByType(DateValueConverter.class); + if (converter != null) { + System.out.println("Default DateValueConverter patterns: " + converter.getPatterns()); + Properties patterns = new Properties(); + patterns.setProperty(DAY_FORMAT_KEY, "dd/MM/yyyy"); + patterns.setProperty(TIME_FORMAT_KEY, "hh:mm:ss"); + converter.changePatterns(patterns); + System.out.println("Updated DateValueConverter patterns: " + converter.getPatterns()); + } register(SimplePersonPersister.class); }
Modified: trunk/examples/freemarker-example/src/test/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrarTest.java (660 => 661)
--- trunk/examples/freemarker-example/src/test/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrarTest.java 2008-04-29 16:27:55 UTC (rev 660) +++ trunk/examples/freemarker-example/src/test/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrarTest.java 2008-04-29 16:31:30 UTC (rev 661) @@ -1,13 +1,44 @@ package org.codehaus.waffle.example.freemarker; +import static java.util.Arrays.asList; + +import java.util.Collections; + +import javax.servlet.ServletContext; + +import org.codehaus.waffle.ComponentRegistry; +import org.codehaus.waffle.bind.converters.DateValueConverter; +import org.codehaus.waffle.context.pico.PicoComponentRegistry; import org.codehaus.waffle.mock.PicoRegistrarMockery; +import org.hamcrest.Matcher; +import org.hamcrest.core.IsEqual; +import org.hamcrest.core.IsNot; +import org.jmock.Expectations; import org.junit.Test; public class FreemarkerRegistrarTest { + @SuppressWarnings("unchecked") @Test public void canAssertConfiguration() { - new PicoRegistrarMockery().assertConfiguration(FreemarkerRegistrar.class); + PicoRegistrarMockery mockery = new PicoRegistrarMockery(); + final ServletContext context = mockery.mockServletContext(); + mockery.checking(new Expectations(){{ + atLeast(1).of(context).getInitParameterNames(); + will(returnValue(Collections.enumeration(asList("register:DateValueConverter")))); + atLeast(1).of(context).getInitParameter(with(notEqual("register:DateValueConverter"))); + will(returnValue(null)); + atLeast(1).of(context).getInitParameter(with(equal("register:DateValueConverter"))); + will(returnValue(DateValueConverter.class.getName())); + }}); + mockery.checking(new Expectations(){{ + atLeast(1).of(context).getAttribute(ComponentRegistry.class.getName()); + will(returnValue(new PicoComponentRegistry(context))); + }}); + mockery.assertConfiguration(FreemarkerRegistrar.class); } + public static <T> Matcher<T> notEqual(T value) { + return new IsNot<T>(new IsEqual<T>(value)); + } }
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/converters/DateValueConverter.java (660 => 661)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/converters/DateValueConverter.java 2008-04-29 16:27:55 UTC (rev 660) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/converters/DateValueConverter.java 2008-04-29 16:31:30 UTC (rev 661) @@ -91,6 +91,14 @@ } } + public Properties getPatterns() { + return patterns; + } + + public void changePatterns(Properties patterns) { + this.patterns = patterns; + } + private enum DateType { DAY, TIME, DATE }; @@ -136,5 +144,5 @@ } return messageFor(key, defaultPattern); } - + }
Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/bind/converters/DateValueConverterTest.java (660 => 661)
--- trunk/waffle-core/src/test/java/org/codehaus/waffle/bind/converters/DateValueConverterTest.java 2008-04-29 16:27:55 UTC (rev 660) +++ trunk/waffle-core/src/test/java/org/codehaus/waffle/bind/converters/DateValueConverterTest.java 2008-04-29 16:31:30 UTC (rev 661) @@ -79,13 +79,15 @@ @Test public void canConvertWithDateFormatsConfiguredViaProperties() { + DateValueConverter converter = new DateValueConverter(new DefaultMessageResources()); + assertTrue(converter.getPatterns().isEmpty()); Properties patterns = new Properties(); patterns.setProperty(DATE_FORMAT_KEY, "dd-MM-yyyy"); patterns.setProperty(DAY_FORMAT_KEY, "dd"); patterns.setProperty(TIME_FORMAT_KEY, "HH:mm:ss"); patterns.setProperty(DAY_NAME_KEY, "day.*"); patterns.setProperty(TIME_NAME_KEY, "time.*"); - DateValueConverter converter = new DateValueConverter(new DefaultMessageResources(), patterns); + converter.changePatterns(patterns); assertDateFormattable("04-03-2008", "dd-MM-yyyy", converter.convertValue("property-name", "04-03-2008", Date.class)); assertDateFormattable("04", "dd", converter.convertValue("day-property", "04", Date.class));
To unsubscribe from this list please visit:
