- Revision
- 746
- Author
- mauro
- Date
- 2008-06-19 11:55:21 -0500 (Thu, 19 Jun 2008)
Log Message
Updated freemarker example to show how multiple converters can coexist for same argument type but different raw types.
Modified Paths
- trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrar.java
- trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/model/Person.java
- trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/persister/PersistablePerson.java
- trunk/examples/freemarker-example/src/main/webapp/people/edit.ftl
Added Paths
Diff
Modified: trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrar.java (745 => 746)
--- trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrar.java 2008-06-19 16:52:58 UTC (rev 745) +++ trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/FreemarkerRegistrar.java 2008-06-19 16:55:21 UTC (rev 746) @@ -13,6 +13,7 @@ import org.codehaus.waffle.example.freemarker.controller.DateProvider; import org.codehaus.waffle.example.freemarker.controller.PersonController; import org.codehaus.waffle.example.freemarker.converters.PersonListValueConverter; +import org.codehaus.waffle.example.freemarker.converters.PersonValueConverter; import org.codehaus.waffle.example.freemarker.persister.SimplePersonPersister; import org.codehaus.waffle.registrar.AbstractRegistrar; import org.codehaus.waffle.registrar.Registrar; @@ -36,8 +37,10 @@ } registerInstance(dateProvider); register(SimplePersonPersister.class); + register(PersonValueConverter.class); register(PersonListValueConverter.class); ValueConverterFinder finder = registry.locateByType(ValueConverterFinder.class); + finder.registerConverter((ValueConverter) getRegistered(PersonValueConverter.class)); finder.registerConverter((ValueConverter) getRegistered(PersonListValueConverter.class)); register("people/manage", PersonController.class); }
Added: trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/converters/PersonValueConverter.java (0 => 746)
--- trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/converters/PersonValueConverter.java (rev 0) +++ trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/converters/PersonValueConverter.java 2008-06-19 16:55:21 UTC (rev 746) @@ -0,0 +1,39 @@ +package org.codehaus.waffle.example.freemarker.converters; + +import java.lang.reflect.Type; + +import org.codehaus.waffle.bind.ValueConverter; +import org.codehaus.waffle.example.freemarker.model.Person; +import org.codehaus.waffle.example.freemarker.persister.PersonPersister; + +/** + * ValueConverter for person lists as retrieved from persistable id + * + * @author Mauro Talevi + */ +public class PersonValueConverter implements ValueConverter { + + private final PersonPersister persister; + + public PersonValueConverter(PersonPersister persister){ + this.persister = persister; + } + + public boolean accept(Type type) { + if (type instanceof Class) { + return Person.class.isAssignableFrom((Class<?>) type); + } + return false; + } + + public Object convertValue(String propertyName, String value, Type toType) { + String[] values = value.split(","); + for (String current : values) { + if (current.trim().length() > 0) { + return persister.findById(Long.valueOf(current.trim())); + } + } + return null; + } + +}
Modified: trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/model/Person.java (745 => 746)
--- trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/model/Person.java 2008-06-19 16:52:58 UTC (rev 745) +++ trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/model/Person.java 2008-06-19 16:55:21 UTC (rev 746) @@ -22,7 +22,9 @@ Date getBirthDay(); Date getBirthTime(); - + + Person getBestFriend(); + List<Person> getFriends(); List<String> getSkills();
Modified: trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/persister/PersistablePerson.java (745 => 746)
--- trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/persister/PersistablePerson.java 2008-06-19 16:52:58 UTC (rev 745) +++ trunk/examples/freemarker-example/src/main/java/org/codehaus/waffle/example/freemarker/persister/PersistablePerson.java 2008-06-19 16:55:21 UTC (rev 746) @@ -24,6 +24,7 @@ private String notes; private boolean wizard; private Type type; + private Person bestFriend; private List<Person> friends; public PersistablePerson() { @@ -34,6 +35,7 @@ dateOfBirth = new Date(); birthDay = new Date(); birthTime = new Date(); + bestFriend = this; friends = new ArrayList<Person>(); skills = new ArrayList<String>(); levels = new ArrayList<Integer>(); @@ -51,6 +53,7 @@ this.dateOfBirth = person.getDateOfBirth(); this.birthDay = person.getBirthDay(); this.birthTime = person.getBirthTime(); + this.bestFriend = person.getBestFriend(); this.friends = person.getFriends(); this.skills = person.getSkills(); this.levels = person.getLevels(); @@ -116,6 +119,14 @@ this.birthTime = birthTime; } + public Person getBestFriend() { + return bestFriend; + } + + public void setBestFriend(Person bestFriend) { + this.bestFriend = bestFriend; + } + public List<Person> getFriends() { return friends; }
Modified: trunk/examples/freemarker-example/src/main/webapp/people/edit.ftl (745 => 746)
--- trunk/examples/freemarker-example/src/main/webapp/people/edit.ftl 2008-06-19 16:52:58 UTC (rev 745) +++ trunk/examples/freemarker-example/src/main/webapp/people/edit.ftl 2008-06-19 16:55:21 UTC (rev 746) @@ -50,6 +50,11 @@ </#if> </p> <p class="fieldRow"> + <label for="" Friend:</label> + <@w.hidden "person.bestFriend" ""/> + <@w.selectSingle "person.bestFriend" w.asNameableValues(controller.getPeople(),"id","firstName") person.getBestFriend().getId() /> + </p> + <p class="fieldRow"> <label for="" <@w.hidden "person.friends" ""/> <@w.selectMultiple "person.friends" w.asNameableValues(controller.getPeople(),"id","firstName") w.asValues(person.getFriends(),"id") "size='5'"/>
To unsubscribe from this list please visit:
