You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2008/01/24 01:42:40 UTC

svn commit: r614759 - in /tapestry/tapestry5/trunk/tapestry-core/src/main: java/org/apache/tapestry/internal/renderers/ java/org/apache/tapestry/services/ resources/org/apache/tapestry/

Author: hlship
Date: Wed Jan 23 16:42:38 2008
New Revision: 614759

URL: http://svn.apache.org/viewvc?rev=614759&view=rev
Log:
TAPESTRY-1727: Exception report page doesn't display object arrays very nicely

Added:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/ListRenderer.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/ObjectArrayRenderer.java
Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/default.css

Added: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/ListRenderer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/ListRenderer.java?rev=614759&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/ListRenderer.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/ListRenderer.java Wed Jan 23 16:42:38 2008
@@ -0,0 +1,58 @@
+// Copyright 2008 The Apache Software Foundation
+//
+// 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.apache.tapestry.internal.renderers;
+
+import org.apache.tapestry.MarkupWriter;
+import org.apache.tapestry.ioc.annotations.Primary;
+import org.apache.tapestry.services.ObjectRenderer;
+
+import java.util.List;
+
+/**
+ * Renders a List, but rendering an unordered list.
+ */
+public class ListRenderer implements ObjectRenderer<List>
+{
+    private final ObjectRenderer _primaryObjectRenderer;
+
+    public ListRenderer(@Primary ObjectRenderer primaryObjectRenderer)
+    {
+        _primaryObjectRenderer = primaryObjectRenderer;
+    }
+
+    public void render(List list, MarkupWriter writer)
+    {
+        if (list.isEmpty())
+        {
+            writer.element("em");
+            writer.write("empty list");
+            writer.end();
+            return;
+        }
+
+        writer.element("ul", "class", "t-data-list");
+
+        for (Object element : list)
+        {
+            writer.element("li");
+
+            _primaryObjectRenderer.render(element, writer);
+
+            writer.end();
+        }
+
+        writer.end();
+    }
+}

Added: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/ObjectArrayRenderer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/ObjectArrayRenderer.java?rev=614759&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/ObjectArrayRenderer.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/renderers/ObjectArrayRenderer.java Wed Jan 23 16:42:38 2008
@@ -0,0 +1,50 @@
+// Copyright 2008 The Apache Software Foundation
+//
+// 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.apache.tapestry.internal.renderers;
+
+import org.apache.tapestry.MarkupWriter;
+import org.apache.tapestry.ioc.annotations.Primary;
+import org.apache.tapestry.services.ObjectRenderer;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Renders an Object[] array as an unordered list.
+ */
+public class ObjectArrayRenderer implements ObjectRenderer<Object[]>
+{
+    private final ObjectRenderer _masterObjectRenderer;
+
+    public ObjectArrayRenderer(@Primary ObjectRenderer masterObjectRenderer)
+    {
+        _masterObjectRenderer = masterObjectRenderer;
+    }
+
+    public void render(Object[] array, MarkupWriter writer)
+    {
+        if (array.length == 0)
+        {
+            writer.element("em");
+            writer.write("empty array");
+            writer.end();
+            return;
+        }
+
+        List list = Arrays.asList(array);
+
+        _masterObjectRenderer.render(list, writer);
+    }
+}

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java?rev=614759&r1=614758&r2=614759&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/services/TapestryModule.java Wed Jan 23 16:42:38 2008
@@ -26,6 +26,8 @@
 import org.apache.tapestry.internal.events.InvalidationListener;
 import org.apache.tapestry.internal.grid.CollectionGridDataSource;
 import org.apache.tapestry.internal.grid.NullDataSource;
+import org.apache.tapestry.internal.renderers.ListRenderer;
+import org.apache.tapestry.internal.renderers.ObjectArrayRenderer;
 import org.apache.tapestry.internal.services.*;
 import org.apache.tapestry.internal.structure.PageResourcesSource;
 import org.apache.tapestry.internal.structure.PageResourcesSourceImpl;
@@ -1233,15 +1235,17 @@
     }
 
     /**
-     * Contributes a default object renderer for type Object, plus specialized renderers for {@link Request} and {@link
-     * Location}.
+     * Contributes a default object renderer for type Object, plus specialized renderers for {@link Request}, {@link
+     * Location}, List, and Object[].
      */
     public void contributeObjectRenderer(MappedConfiguration<Class, ObjectRenderer> configuration,
 
                                          @InjectService("LocationRenderer")
                                          ObjectRenderer locationRenderer,
 
-                                         final TypeCoercer typeCoercer)
+                                         final TypeCoercer typeCoercer,
+
+                                         ObjectLocator locator)
     {
         configuration.add(Object.class, new ObjectRenderer()
         {
@@ -1266,6 +1270,9 @@
         };
 
         configuration.add(ClassTransformation.class, preformatted);
+
+        configuration.add(List.class, locator.autobuild(ListRenderer.class));
+        configuration.add(Object[].class, locator.autobuild(ObjectArrayRenderer.class));
     }
 
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/default.css
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/default.css?rev=614759&r1=614758&r2=614759&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/default.css (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/default.css Wed Jan 23 16:42:38 2008
@@ -365,4 +365,8 @@
 
 HTML>BODY DIV.t-error-popup {
     background: transparent url( 'error-bevel-right.png' ) no-repeat scroll top right;
+}
+
+UL.t-data-list LI {
+    list-style-type: square;
 }