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;
}