Fixed a bug in PropertyColumn introduced by r8780.  PropertyColumn needs access to the underlying class literals in order to get the value to render.

Review at http://gwt-code-reviews.appspot.com/889801

Review by: rjrjr@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8794 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeListView.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeListView.java
index b918184..f02e603 100644
--- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeListView.java
+++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeListView.java
@@ -56,7 +56,7 @@
     columns.add(PropertyColumn.<EmployeeProxy> getStringPropertyColumn("password", "Password"));
 
     columns.add(new PropertyColumn<EmployeeProxy, EmployeeProxy>(
-        "supervisor", "Supervisor", EmployeeRenderer.instance()));
+        "supervisor", "Supervisor", EmployeeProxy.class, EmployeeRenderer.instance()));
 
     return columns;
   }
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportListView.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportListView.java
index 7d15040..511fa91 100644
--- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportListView.java
+++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportListView.java
@@ -56,16 +56,16 @@
 
     List<PropertyColumn<ReportProxy, ?>> columns = new ArrayList<PropertyColumn<ReportProxy, ?>>();
 
-    columns.add(new PropertyColumn<ReportProxy, Date>("created", "Created",
+    columns.add(new PropertyColumn<ReportProxy, Date>("created", "Created", Date.class,
         new DateTimeFormatRenderer(DateTimeFormat.getShortDateFormat())));
 
     columns.add(PropertyColumn.<ReportProxy> getStringPropertyColumn("purpose", "Purpose"));
 
     columns.add(new PropertyColumn<ReportProxy, EmployeeProxy>(
-        "reporter", "Reporter", EmployeeRenderer.instance()));
+        "reporter", "Reporter", EmployeeProxy.class, EmployeeRenderer.instance()));
 
     columns.add(new PropertyColumn<ReportProxy, EmployeeProxy>(
-        "approvedSupervisor", "Approved Supervisor Key", EmployeeRenderer.instance()));
+        "approvedSupervisor", "Approved Supervisor Key", EmployeeProxy.class, EmployeeRenderer.instance()));
 
     return columns;
   }
diff --git a/user/src/com/google/gwt/app/place/PropertyColumn.java b/user/src/com/google/gwt/app/place/PropertyColumn.java
index 44ee42f..af19cb7 100644
--- a/user/src/com/google/gwt/app/place/PropertyColumn.java
+++ b/user/src/com/google/gwt/app/place/PropertyColumn.java
@@ -38,24 +38,27 @@
   public static <R extends EntityProxy> PropertyColumn<R, String> getStringPropertyColumn(
       String property, String displayName) {
     return new PropertyColumn<R, String>(property, displayName,
-        PassthroughRenderer.instance());
+        String.class, PassthroughRenderer.instance());
   }
 
+  private final Class<T> clazz;
   private String displayName;
   private final Renderer<T> renderer;
   private final String property;
   private final String[] paths;
 
-  public PropertyColumn(String property, String displayName, ProxyRenderer<T> renderer) {
+  public PropertyColumn(String property, String displayName, Class<T> clazz, ProxyRenderer<T> renderer) {
     this.displayName = displayName;
     this.property = property;
+    this.clazz = clazz;
     this.renderer = renderer;
     this.paths = pathinate(property, renderer);
   }
 
-  public PropertyColumn(String property, String displayName, Renderer<T> renderer) {
+  public PropertyColumn(String property, String displayName, Class<T> clazz, Renderer<T> renderer) {
     this.displayName = displayName;
     this.property = property;
+    this.clazz = clazz;
     this.renderer = renderer;
     this.paths = new String[] {property};
   }
@@ -71,7 +74,7 @@
   @Override
   public String getValue(R object) {
     ProxyImpl proxyImpl = (ProxyImpl) object;
-    return renderer.render(proxyImpl.<T>get(property, String.class));
+    return renderer.render(proxyImpl.<T>get(property, clazz));
   }
 
   private String[] pathinate(String property, ProxyRenderer<T> renderer) {