Title: [waffle-scm] [746] trunk/examples/freemarker-example/src/main/webapp/people: Updated freemarker example to show how multiple converters can coexist for same argument type but different raw types.

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:

http://xircles.codehaus.org/manage_email

Reply via email to