tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Howard Lewis Ship <hls...@gmail.com>
Subject Re: svn commit: r894918 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/services/ main/resources/org/apache/tapestry5/ test/app1/ test/java/org/apache/tapestry5/integration/app1/ test/java/org/apache/tapestry5/integra
Date Thu, 31 Dec 2009 18:23:15 GMT
Hm. Still getting the hang of the Git/Svn tools.    I think in the
future, I'll "svn merge --no-commit mybranch" so that I can do a
commit that specifies my traditional reference of the JIRA Issue &
description.

On Thu, Dec 31, 2009 at 10:17 AM,  <hlship@apache.org> wrote:
> Author: hlship
> Date: Thu Dec 31 18:17:49 2009
> New Revision: 894918
>
> URL: http://svn.apache.org/viewvc?rev=894918&view=rev
> Log:
> Merge branch 'tap5-964' into trunk
>
> Added:
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/DefaultObjectRenderer.java   (with props)
>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/RenderObjectExceptionDemo.tml
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/NullToString.java   (with props)
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderObjectExceptionDemo.java   (with props)
> Modified:
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/default.css
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
>
> Added: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/DefaultObjectRenderer.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/DefaultObjectRenderer.java?rev=894918&view=auto
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/DefaultObjectRenderer.java (added)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/DefaultObjectRenderer.java Thu Dec 31 18:17:49 2009
> @@ -0,0 +1,50 @@
> +// Copyright 2009 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.tapestry5.services;
> +
> +import org.apache.tapestry5.MarkupWriter;
> +
> +/**
> + * Default object renderer as a catch all for class <code>Object</code>.
> + *
> + * @since 5.2.0
> + */
> +public class DefaultObjectRenderer implements ObjectRenderer<Object>
> +{
> +    public void render(Object object, MarkupWriter writer)
> +    {
> +        try
> +        {
> +            writer.write(String.valueOf(object));
> +        }
> +        catch (Exception ex)
> +        {
> +            writer.element("span", "class", "t-render-object-error");
> +
> +            String message = ex.getMessage();
> +
> +            String exceptionClassName = ex.getClass().getName();
> +
> +            String exceptionId = message == null ? exceptionClassName : String.format("(%s) %s", ex
> +                    .getClass().getName(), message);
> +
> +            writer.writef("Exception rendering description for object of type %s: %s", object
> +                    .getClass().getName(), exceptionId);
> +
> +            writer.end();
> +
> +        }
> +    }
> +}
>
> Propchange: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/DefaultObjectRenderer.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=894918&r1=894917&r2=894918&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java Thu Dec 31 18:17:49 2009
> @@ -1862,13 +1862,7 @@
>
>     final TypeCoercer typeCoercer)
>     {
> -        configuration.add(Object.class, new ObjectRenderer()
> -        {
> -            public void render(Object object, MarkupWriter writer)
> -            {
> -                writer.write(String.valueOf(object));
> -            }
> -        });
> +        configuration.add(Object.class, new DefaultObjectRenderer());
>
>         configuration.addInstance(Request.class, RequestRenderer.class);
>
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/default.css
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/default.css?rev=894918&r1=894917&r2=894918&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/default.css (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/default.css Thu Dec 31 18:17:49 2009
> @@ -454,4 +454,11 @@
>     background: white url(ajax-loader.gif) no-repeat 4px center;
>     border-right: 2px solid black;
>     border-bottom: 2px solid black;
> +}
> +
> +SPAN.t-render-object-error
> +{
> +  font-weight: bold;
> +  font: italic;
> +  color: red;
>  }
> \ No newline at end of file
>
> Added: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/RenderObjectExceptionDemo.tml
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/RenderObjectExceptionDemo.tml?rev=894918&view=auto
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/RenderObjectExceptionDemo.tml (added)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/RenderObjectExceptionDemo.tml Thu Dec 31 18:17:49 2009
> @@ -0,0 +1,6 @@
> +<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
> +
> +  <span id="container">
> +    <t:renderobject object="badboy"/>
> +  </span>
> +</t:border>
> \ No newline at end of file
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java?rev=894918&r1=894917&r2=894918&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java Thu Dec 31 18:17:49 2009
> @@ -1221,7 +1221,6 @@
>         assertTextPresent("read Bar");
>     }
>
> -
>     /**
>      * TAPESTRY-1598
>      */
> @@ -1399,8 +1398,9 @@
>     @Test
>     public void test_asset_protection()
>     {
> -        // Have to watch out for minor differences in error messages from one version of Jetty to the next.
> -
> +        // Have to watch out for minor differences in error messages from one version of Jetty to
> +        // the next.
> +
>         // context resources should be available by default.
>         clickThru("Asset Protection Demo");
>         clickAndWait("link=Available File");
> @@ -1426,4 +1426,15 @@
>         clickAndWait("link=Available File2");
>         assertTextPresent("This file should be available to clients.");
>     }
> +
> +    /** TAP5-964 */
> +    @Test
> +    public void failure_inside_default_object_renderer()
> +    {
> +        clickThru("RenderObject Exception Demo");
> +
> +        assertText(
> +                "container",
> +                "Exception rendering description for object of type org.apache.tapestry5.integration.app1.data.NullToString: (java.lang.NullPointerException) NPE from NullToString");
> +    }
>  }
>
> Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/NullToString.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/NullToString.java?rev=894918&view=auto
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/NullToString.java (added)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/NullToString.java Thu Dec 31 18:17:49 2009
> @@ -0,0 +1,23 @@
> +// Copyright 2009 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.tapestry5.integration.app1.data;
> +
> +public class NullToString
> +{
> +    public String toString()
> +    {
> +        throw new NullPointerException("NPE from NullToString");
> +    }
> +}
>
> Propchange: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/NullToString.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java?rev=894918&r1=894917&r2=894918&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java Thu Dec 31 18:17:49 2009
> @@ -63,339 +63,397 @@
>         }
>     }
>
> -    private static final List<Item> ITEMS = CollectionFactory.newList(
> +    private static final List<Item> ITEMS = CollectionFactory
> +            .newList(
>
> -            new Item("MultiLevelInheritDemo", "Multi-Level Inherit Demo",
> -                     "Use of inherit: binding prefix across three levels"),
> +                    new Item("RenderObjectExceptionDemo", "RenderObject Exception Demo",
> +                            "Demonstrate how exceptions when rendering default objects are displayed."),
>
> -            new Item("HiddenDemo", "Hidden Demo", "Demo the use of the Hidden component."),
> +                    new Item("MultiLevelInheritDemo", "Multi-Level Inherit Demo",
> +                            "Use of inherit: binding prefix across three levels"),
>
> -            new Item("FormZoneDemo", "Form Zone Demo", "Use a form to update a zone."),
> +                    new Item("HiddenDemo", "Hidden Demo", "Demo the use of the Hidden component."),
>
> -            new Item("ZoneUpdateNamespace", "Zone/Namespace Interaction", "Prove that TAP5-573 is fixed"),
> +                    new Item("FormZoneDemo", "Form Zone Demo", "Use a form to update a zone."),
>
> -            new Item("AbstractComponentDemo", "Abstract Component Demo", "Error when a component is abstract"),
> +                    new Item("ZoneUpdateNamespace", "Zone/Namespace Interaction",
> +                            "Prove that TAP5-573 is fixed"),
>
> -            new Item("TemplateOverrideDemo", "Template Override Demo",
> -                     "Child component extends and overrides parent template."),
> +                    new Item("AbstractComponentDemo", "Abstract Component Demo",
> +                            "Error when a component is abstract"),
>
> -            new Item("MultiZoneUpdateDemo", "Multiple Zone Update Demo",
> -                     "A single request can now update multiple Zones"),
> +                    new Item("TemplateOverrideDemo", "Template Override Demo",
> +                            "Child component extends and overrides parent template."),
>
> -            new Item("LinkSubmitInZoneDemo", "LinkSubmit inside Zone",
> -                     "Ensure that a LinkSubmit works correctly when its containing Form updates a Zone"),
> +                    new Item("MultiZoneUpdateDemo", "Multiple Zone Update Demo",
> +                            "A single request can now update multiple Zones"),
>
> -            new Item("SlowAjaxDemo", "Slow Ajax Demo", "Handling of client-side Ajax before the page is fully loaded"),
> +                    new Item("LinkSubmitInZoneDemo", "LinkSubmit inside Zone",
> +                            "Ensure that a LinkSubmit works correctly when its containing Form updates a Zone"),
>
> -            new Item("ProgressiveDemo", "ProgressiveDisplay Demo", "Progressive Enhancement via a component"),
> +                    new Item("SlowAjaxDemo", "Slow Ajax Demo",
> +                            "Handling of client-side Ajax before the page is fully loaded"),
>
> -            new Item("ClientNumericValidationDemo", "Client-Side Numeric Validation",
> -                     "Client-side locale-specific validation"),
> +                    new Item("ProgressiveDemo", "ProgressiveDisplay Demo",
> +                            "Progressive Enhancement via a component"),
>
> -            new Item("PublishParametersDemo", "Publish Parameters Demo",
> -                     "Use of @Component.publishParameters attribute."),
> +                    new Item("ClientNumericValidationDemo", "Client-Side Numeric Validation",
> +                            "Client-side locale-specific validation"),
>
> -            new Item("LinkSubmitDemo", "LinkSubmit Demo", "JavaScript LinkSubmit component"),
> +                    new Item("PublishParametersDemo", "Publish Parameters Demo",
> +                            "Use of @Component.publishParameters attribute."),
>
> -            new Item("LinkSubmitWithoutValidatorDemo", "LinkSubmit Without Validator Demo",
> -                    "Demonstrates that the LinkSubmit component is working without a validator on any of fields in the form"),
> +                    new Item("LinkSubmitDemo", "LinkSubmit Demo", "JavaScript LinkSubmit component"),
>
> -            new Item("PerFormValidationMessageDemo", "Per-Form Validation Messages",
> -                     "Per-form configuration of validation messages and constraints."),
> +                    new Item(
> +                            "LinkSubmitWithoutValidatorDemo",
> +                            "LinkSubmit Without Validator Demo",
> +                            "Demonstrates that the LinkSubmit component is working without a validator on any of fields in the form"),
>
> -            new Item("EmptyLoopDemo", "Empty Loop Demo", "Use of empty parameter with the Loop component."),
> +                    new Item("PerFormValidationMessageDemo", "Per-Form Validation Messages",
> +                            "Per-form configuration of validation messages and constraints."),
>
> -            new Item("BlankPasswordDemo", "Blank Password Demo",
> -                     "Show that a blank value in a PasswordField does not update the server side value."),
> +                    new Item("EmptyLoopDemo", "Empty Loop Demo",
> +                            "Use of empty parameter with the Loop component."),
>
> -            new Item("GridFormEncoderDemo", "Grid Form Encoder Demo",
> -                     "Grid inside a Form using the PrimaryKeyEncoder option"),
> +                    new Item("BlankPasswordDemo", "Blank Password Demo",
> +                            "Show that a blank value in a PasswordField does not update the server side value."),
>
> -            new Item("DateFieldAjaxFormLoop", "DateField inside AjaxFormLoop",
> -                     "Show that DateField component works correctly inside AjaxFormLoop"),
> +                    new Item("GridFormEncoderDemo", "Grid Form Encoder Demo",
> +                            "Grid inside a Form using the PrimaryKeyEncoder option"),
>
> -            new Item("NestedForm", "Nested Form Demo", "Error when a Form is nested inside another Form."),
> +                    new Item("DateFieldAjaxFormLoop", "DateField inside AjaxFormLoop",
> +                            "Show that DateField component works correctly inside AjaxFormLoop"),
>
> -            new Item("UnhandledEventDemo", "Unhandled Event Demo",
> -                     "Events that don't have matching event handlers cause exceptions"),
> +                    new Item("NestedForm", "Nested Form Demo",
> +                            "Error when a Form is nested inside another Form."),
>
> -            new Item("PrimitiveDefaultDemo", "Primitive Default Demo",
> -                     "Primitive value returned from parameter default method"),
> +                    new Item("UnhandledEventDemo", "Unhandled Event Demo",
> +                            "Events that don't have matching event handlers cause exceptions"),
>
> -            new Item("ValidateFormValidationExceptionDemo",
> -                     "ValidationForm ValidationException Demo",
> -                     "Throwing a ValidationException from the validateForm event handler."),
> +                    new Item("PrimitiveDefaultDemo", "Primitive Default Demo",
> +                            "Primitive value returned from parameter default method"),
>
> -            new Item("ClientFormatDemo", "Client Format Validation", "Client-side input format validation"),
> +                    new Item("ValidateFormValidationExceptionDemo",
> +                            "ValidationForm ValidationException Demo",
> +                            "Throwing a ValidationException from the validateForm event handler."),
>
> -            new Item("ShortGrid", "Short Grid",
> -                     "Grid where the number of claimed rows is less than the number of actual rows"),
> +                    new Item("ClientFormatDemo", "Client Format Validation",
> +                            "Client-side input format validation"),
>
> -            new Item("NullParameterDemo", "Null Parameter Demo", "Binding a not-null parameter to null."),
> +                    new Item("ShortGrid", "Short Grid",
> +                            "Grid where the number of claimed rows is less than the number of actual rows"),
>
> -            new Item("nestedbeaneditor", "Nested BeanEditor",
> -                     "BeanEditor as override for property editor in BeanEditForm"),
> +                    new Item("NullParameterDemo", "Null Parameter Demo",
> +                            "Binding a not-null parameter to null."),
>
> -            new Item("actionpage", "Action Page", "tests fixture for ActionLink component"),
> +                    new Item("nestedbeaneditor", "Nested BeanEditor",
> +                            "BeanEditor as override for property editor in BeanEditForm"),
>
> -            new Item("cleancachedemo", "Clean Cache Demo", "cache cleared properly during Ajax calls"),
> +                    new Item("actionpage", "Action Page", "tests fixture for ActionLink component"),
>
> -            new Item("numberbeaneditordemo", "Number BeanEditor Demo",
> -                     "use of nulls and wrapper types with BeanEditor"),
> +                    new Item("cleancachedemo", "Clean Cache Demo",
> +                            "cache cleared properly during Ajax calls"),
>
> -            new Item("forminjectordemo", "FormInjector Demo", "extending a form dynamically via Ajax"),
> +                    new Item("numberbeaneditordemo", "Number BeanEditor Demo",
> +                            "use of nulls and wrapper types with BeanEditor"),
>
> -            new Item("music", "Music Page", "demo handling of edge cases of page naming"),
> +                    new Item("forminjectordemo", "FormInjector Demo",
> +                            "extending a form dynamically via Ajax"),
>
> -            new Item("PersistentDemo", "Persistent Demo", "storing and clearing persistent properties"),
> +                    new Item("music", "Music Page", "demo handling of edge cases of page naming"),
>
> -            new Item("ActionViaLinkDemo", "Action via Link Demo", "tests creating an action link explicitly"),
> +                    new Item("PersistentDemo", "Persistent Demo",
> +                            "storing and clearing persistent properties"),
>
> -            new Item("FormFragmentDemo", "Form Fragment Demo", "page with dynamic form sections"),
> +                    new Item("ActionViaLinkDemo", "Action via Link Demo",
> +                            "tests creating an action link explicitly"),
>
> -            new Item("BooleanDemo", "Boolean Property Demo", "demo boolean properties using both is and get prefixes"),
> +                    new Item("FormFragmentDemo", "Form Fragment Demo",
> +                            "page with dynamic form sections"),
>
> -            new Item("DeleteFromGridDemo", "Delete From Grid", "demo deleting items form a Grid"),
> +                    new Item("BooleanDemo", "Boolean Property Demo",
> +                            "demo boolean properties using both is and get prefixes"),
>
> -            new Item("RenderErrorDemo", "Render Error Demo", "reporting of errors while rendering"),
> +                    new Item("DeleteFromGridDemo", "Delete From Grid",
> +                            "demo deleting items form a Grid"),
>
> -            new Item("nested/AssetDemo", "AssetDemo", "declaring an image using Assets"),
> +                    new Item("RenderErrorDemo", "Render Error Demo",
> +                            "reporting of errors while rendering"),
>
> -            new Item("nested/ActionDemo", "Action With Context Demo",
> -                     "using action links with context on page with activation context"),
> +                    new Item("nested/AssetDemo", "AssetDemo", "declaring an image using Assets"),
>
> -            new Item("blockdemo", "BlockDemo", "use of blocks to control rendering"),
> +                    new Item("nested/ActionDemo", "Action With Context Demo",
> +                            "using action links with context on page with activation context"),
>
> -            new Item("countdown", "Countdown Page", "defining component using @Component annotation"),
> +                    new Item("blockdemo", "BlockDemo", "use of blocks to control rendering"),
>
> -            new Item("injectdemo", "Inject Demo", "use of various kinds of injection"),
> +                    new Item("countdown", "Countdown Page",
> +                            "defining component using @Component annotation"),
>
> -            new Item("instancemixin", "InstanceMixin", "mixin added to a particular component instance"),
> +                    new Item("injectdemo", "Inject Demo", "use of various kinds of injection"),
>
> -            new Item("TextFieldWrapperTypeDemo", "TextField Wrapper Types",
> -                     "use of TextField to edit numeric wrapper types (not primitives) "),
> +                    new Item("instancemixin", "InstanceMixin",
> +                            "mixin added to a particular component instance"),
>
> -            new Item("EnvironmentalDemo", "Environmental Annotation Usage",
> -                     "Storing and retrieving Environmental values"),
> +                    new Item("TextFieldWrapperTypeDemo", "TextField Wrapper Types",
> +                            "use of TextField to edit numeric wrapper types (not primitives) "),
>
> -            new Item("Expansion", "Expansion Page", "Use of expansions in templates"),
> +                    new Item("EnvironmentalDemo", "Environmental Annotation Usage",
> +                            "Storing and retrieving Environmental values"),
>
> -            new Item("ExpansionSubclass", "ExpansionSubclass", "components can inherit templates from base classes"),
> +                    new Item("Expansion", "Expansion Page", "Use of expansions in templates"),
>
> -            new Item("Localization", "Localization", "access localized messages from the component catalog"),
> +                    new Item("ExpansionSubclass", "ExpansionSubclass",
> +                            "components can inherit templates from base classes"),
>
> -            new Item("NumberSelect", "NumberSelect", "passivate/activate page context demo"),
> +                    new Item("Localization", "Localization",
> +                            "access localized messages from the component catalog"),
>
> -            new Item("ParameterConflict", "Template Overridden by Class Page",
> -                     "Parameters in the class override those in the template"),
> +                    new Item("NumberSelect", "NumberSelect", "passivate/activate page context demo"),
>
> -            new Item("ParameterDefault", "ParameterDefault", "defaulter methods for component parameters"),
> +                    new Item("ParameterConflict", "Template Overridden by Class Page",
> +                            "Parameters in the class override those in the template"),
>
> -            new Item("passwordfielddemo", "PasswordFieldDemo", "test for the PasswordField component"),
> +                    new Item("ParameterDefault", "ParameterDefault",
> +                            "defaulter methods for component parameters"),
>
> -            new Item("rendercomponentdemo", "RenderComponentDemo",
> -                     "components that \"nominate\" other components to render"),
> +                    new Item("passwordfielddemo", "PasswordFieldDemo",
> +                            "test for the PasswordField component"),
>
> -            new Item("renderphaseorder", "RenderPhaseOrder", "order of operations when invoking render phase methods"),
> +                    new Item("rendercomponentdemo", "RenderComponentDemo",
> +                            "components that \"nominate\" other components to render"),
>
> -            new Item("simpleform", "SimpleForm", "first pass at writing Form and TextField components"),
> +                    new Item("renderphaseorder", "RenderPhaseOrder",
> +                            "order of operations when invoking render phase methods"),
>
> -            new Item("validform", "ValidForm", "server-side input validation"),
> +                    new Item("simpleform", "SimpleForm",
> +                            "first pass at writing Form and TextField components"),
>
> -            new Item("ToDoListVolatile", "ToDo List (Volatile)", "Loops and Submit inside Form, volatile mode"),
> +                    new Item("validform", "ValidForm", "server-side input validation"),
>
> -            new Item("MissingTemplate", "Missing Template Demo",
> -                     "Demo for what happens when a template is not found for a page"),
> +                    new Item("ToDoListVolatile", "ToDo List (Volatile)",
> +                            "Loops and Submit inside Form, volatile mode"),
>
> -            new Item("nested/zonedemo", "Zone Demo", "dynamic updates within a page"),
> +                    new Item("MissingTemplate", "Missing Template Demo",
> +                            "Demo for what happens when a template is not found for a page"),
>
> -            new Item("todolist", "ToDo List", "Loops and Submit inside Form using primary key encoder"),
> +                    new Item("nested/zonedemo", "Zone Demo", "dynamic updates within a page"),
>
> -            new Item("flashdemo", "FlashDemo", "demonstrate 'flash' persistence"),
> +                    new Item("todolist", "ToDo List",
> +                            "Loops and Submit inside Form using primary key encoder"),
>
> -            new Item("beaneditordemo", "BeanEditor Demo", "demonstrate the BeanEditor mega-component"),
> +                    new Item("flashdemo", "FlashDemo", "demonstrate 'flash' persistence"),
>
> -            new Item("pageloadeddemo", "PageLoaded Demo", "shows that page lifecycle methods are invoked"),
> +                    new Item("beaneditordemo", "BeanEditor Demo",
> +                            "demonstrate the BeanEditor mega-component"),
>
> -            new Item("griddemo", "Grid Demo", "default Grid component"),
> +                    new Item("pageloadeddemo", "PageLoaded Demo",
> +                            "shows that page lifecycle methods are invoked"),
>
> -            new Item("nullgrid", "Null Grid", "handling of null source for Grid"),
> +                    new Item("griddemo", "Grid Demo", "default Grid component"),
>
> -            new Item("gridsetdemo", "Grid Set Demo", "handling of Set sources for Grid"),
> +                    new Item("nullgrid", "Null Grid", "handling of null source for Grid"),
>
> -            new Item("gridenumdemo", "Grid Enum Demo", "handling of enum types in the Grid"),
> +                    new Item("gridsetdemo", "Grid Set Demo", "handling of Set sources for Grid"),
>
> -            new Item("GridRemoveReorderDemo", "Grid Remove/Reorder Demo", "handling of remove and reorder parameters"),
> +                    new Item("gridenumdemo", "Grid Enum Demo", "handling of enum types in the Grid"),
>
> -            new Item("protected", "Protected Page",
> -                     "Demonstrate result of non-void return from a page's activate method"),
> +                    new Item("GridRemoveReorderDemo", "Grid Remove/Reorder Demo",
> +                            "handling of remove and reorder parameters"),
>
> -            new Item("Kicker", "Kicker", "demos complex page and component context in links"),
> +                    new Item("protected", "Protected Page",
> +                            "Demonstrate result of non-void return from a page's activate method"),
>
> -            new Item("simpletrackgriddemo", "SimpleTrack Grid Demo",
> -                     "customizing the model for a Grid around an interface"),
> +                    new Item("Kicker", "Kicker",
> +                            "demos complex page and component context in links"),
>
> -            new Item("pagelinkcontext", "PageLink Context Demo", "passing explicit context in a page render link"),
> +                    new Item("simpletrackgriddemo", "SimpleTrack Grid Demo",
> +                            "customizing the model for a Grid around an interface"),
>
> -            new Item("pagecontextinform", "Page Context in Form", "passivate/activate page context in Form"),
> +                    new Item("pagelinkcontext", "PageLink Context Demo",
> +                            "passing explicit context in a page render link"),
>
> -            new Item("ValidBeanEditorDemo", "Client Validation Demo", "BeanEditor with validation enabled"),
> +                    new Item("pagecontextinform", "Page Context in Form",
> +                            "passivate/activate page context in Form"),
>
> -            new Item("Unreachable", "Unreachable Page", "page not reachable due to IgnoredPathsFilter"),
> +                    new Item("ValidBeanEditorDemo", "Client Validation Demo",
> +                            "BeanEditor with validation enabled"),
>
> -            new Item("renderabledemo", "Renderable Demo", "shows that render phase methods can return a Renderable"),
> +                    new Item("Unreachable", "Unreachable Page",
> +                            "page not reachable due to IgnoredPathsFilter"),
>
> -            new Item("inheritedbindingsdemo", "Inherited Bindings Demo",
> -                     "Tests for components that inherit bindings from containing components"),
> +                    new Item("renderabledemo", "Renderable Demo",
> +                            "shows that render phase methods can return a Renderable"),
>
> -            new Item("ClientPersistenceDemo", "Client Persistence Demo",
> -                     "component field values persisted on the client side"),
> +                    new Item("inheritedbindingsdemo", "Inherited Bindings Demo",
> +                            "Tests for components that inherit bindings from containing components"),
>
> -            new Item("attributeExpansionsDemo", "Attribute Expansions Demo",
> -                     "use expansions inside attributes of ordinary elements"),
> +                    new Item("ClientPersistenceDemo", "Client Persistence Demo",
> +                            "component field values persisted on the client side"),
>
> -            new Item("PaletteDemo", "Palette Demo", "multiple selection component"),
> +                    new Item("attributeExpansionsDemo", "Attribute Expansions Demo",
> +                            "use expansions inside attributes of ordinary elements"),
>
> -            new Item("ReturnTypes", "Return Types", "tests various event handler return types"),
> +                    new Item("PaletteDemo", "Palette Demo", "multiple selection component"),
>
> -            new Item("FormEncodingType", "Form Encoding Type", "Test ability to set an encoding type for a Form"),
> +                    new Item("ReturnTypes", "Return Types",
> +                            "tests various event handler return types"),
>
> -            new Item("RadioDemo", "RadioDemo", "Use of the RadioGroup and Radio components"),
> +                    new Item("FormEncodingType", "Form Encoding Type",
> +                            "Test ability to set an encoding type for a Form"),
>
> -            new Item("RegexpDemo", "Regexp Demo", "Use of the Regexp validator"),
> +                    new Item("RadioDemo", "RadioDemo", "Use of the RadioGroup and Radio components"),
>
> -            new Item("BeanEditRemoveReorder", "BeanEdit Remove/Reorder",
> -                     "Use of the remove and reorder parameters with BeanEditForm"),
> +                    new Item("RegexpDemo", "Regexp Demo", "Use of the Regexp validator"),
>
> -            new Item("MultiBeanEditDemo", "MultiBeanEdit Demo", "Multiple BeanEditor components in a single form"),
> +                    new Item("BeanEditRemoveReorder", "BeanEdit Remove/Reorder",
> +                            "Use of the remove and reorder parameters with BeanEditForm"),
>
> -            new Item("GridFormDemo", "Grid Form Demo", "Grid operating inside a Form"),
> +                    new Item("MultiBeanEditDemo", "MultiBeanEdit Demo",
> +                            "Multiple BeanEditor components in a single form"),
>
> -            new Item("DateFieldDemo", "DateField Demo", "using DateField by itself on a page"),
> +                    new Item("GridFormDemo", "Grid Form Demo", "Grid operating inside a Form"),
>
> -            new Item("BeanEditDateDemo", "BeanEditor / Date Demo",
> -                     "Use of date properties inside BeanEditor and BeanDisplay"),
> +                    new Item("DateFieldDemo", "DateField Demo",
> +                            "using DateField by itself on a page"),
>
> -            new Item("eventmethodtranslate", "EventMethod Translator",
> -                     "Demo ability to provide toclient and parseclient event handler methods"),
> +                    new Item("BeanEditDateDemo", "BeanEditor / Date Demo",
> +                            "Use of date properties inside BeanEditor and BeanDisplay"),
>
> -            new Item("autocompletedemo", "Autocomplete Mixin Demo", "Demo the autocomplete mixin for text fields"),
> +                    new Item("eventmethodtranslate", "EventMethod Translator",
> +                            "Demo ability to provide toclient and parseclient event handler methods"),
>
> -            new Item("componentparameter", "ComponentParameter Demo",
> -                     " Demo using a component type as a parameter type and succesfuly passing a component"),
> +                    new Item("autocompletedemo", "Autocomplete Mixin Demo",
> +                            "Demo the autocomplete mixin for text fields"),
>
> -            new Item("inheritinformalsdemo", "Inherit Informal Parameters Demo",
> -                     "Demo a component which inherits informal parameters from its container"),
> +                    new Item("componentparameter", "ComponentParameter Demo",
> +                            " Demo using a component type as a parameter type and succesfuly passing a component"),
>
> -            new Item("disabledfields", "Disabled Fields",
> -                     "Demonstrate a bunch of disabled fields, to verify that the RenderDisabled mixin works and is being used properly"),
> +                    new Item("inheritinformalsdemo", "Inherit Informal Parameters Demo",
> +                            "Demo a component which inherits informal parameters from its container"),
>
> -            new Item("BeanEditorOverride", "BeanEditor Override",
> -                     "Property editor overrides work for the BeanEditor component itself (not just the BeanEditForm component)"),
> +                    new Item(
> +                            "disabledfields",
> +                            "Disabled Fields",
> +                            "Demonstrate a bunch of disabled fields, to verify that the RenderDisabled mixin works and is being used properly"),
>
> -            new Item("varbindingdemo", "Var Binding Demo", "use of the var: binding prefix"),
> +                    new Item(
> +                            "BeanEditorOverride",
> +                            "BeanEditor Override",
> +                            "Property editor overrides work for the BeanEditor component itself (not just the BeanEditForm component)"),
>
> -            new Item("leangriddemo", "Lean Grid Demo",
> -                     "Grid component with lean parameter turned on, to eliminate CSS class attributes in TD and TH elements"),
> +                    new Item("varbindingdemo", "Var Binding Demo", "use of the var: binding prefix"),
>
> -            new Item("blockcaller", "Action Links off of Active Page",
> -                     "Actions can exist on pages other than the active page, via Blocks."),
> +                    new Item(
> +                            "leangriddemo",
> +                            "Lean Grid Demo",
> +                            "Grid component with lean parameter turned on, to eliminate CSS class attributes in TD and TH elements"),
>
> -            new Item("unlessdemo", "Unless Demo", "use of the Unless component"),
> +                    new Item("blockcaller", "Action Links off of Active Page",
> +                            "Actions can exist on pages other than the active page, via Blocks."),
>
> -            new Item("MagicValueEncoder", "Magic ValueEncoder Demo",
> -                     "Automatic creation of ValueEncoder using the TypeCoercer"),
> +                    new Item("unlessdemo", "Unless Demo", "use of the Unless component"),
>
> -            new Item("NullStrategyDemo", "Null Field Strategy Demo", "use of the nulls parameter of TextField"),
> +                    new Item("MagicValueEncoder", "Magic ValueEncoder Demo",
> +                            "Automatic creation of ValueEncoder using the TypeCoercer"),
>
> -            new Item("OverrideValidationDecorator", "Override Validation Decorator",
> -                     "override the default validation decorator"),
> +                    new Item("NullStrategyDemo", "Null Field Strategy Demo",
> +                            "use of the nulls parameter of TextField"),
>
> -            new Item("ExceptionEventDemo", "Exception Event Demo", "handling component event exceptions"),
> +                    new Item("OverrideValidationDecorator", "Override Validation Decorator",
> +                            "override the default validation decorator"),
>
> -            new Item("AddedGridColumnsDemo", "Added Grid Columns Demo", "programatically adding grid columns"),
> +                    new Item("ExceptionEventDemo", "Exception Event Demo",
> +                            "handling component event exceptions"),
>
> -            new Item("PrimitiveArrayParameterDemo", "Primitive Array Parameter Demo",
> -                     "use primitive array as parameter type"),
> +                    new Item("AddedGridColumnsDemo", "Added Grid Columns Demo",
> +                            "programatically adding grid columns"),
>
> -            new Item("RenderPhaseMethodExceptionDemo", "Render Phase Method Exception Demo",
> -                     "render phase methods may throw checked exceptions"),
> +                    new Item("PrimitiveArrayParameterDemo", "Primitive Array Parameter Demo",
> +                            "use primitive array as parameter type"),
>
> -            new Item("TrackEditor", "Generic Page Class Demo",
> -                     "demo use of generics with component classes and, particularily, with property types"),
> +                    new Item("RenderPhaseMethodExceptionDemo",
> +                            "Render Phase Method Exception Demo",
> +                            "render phase methods may throw checked exceptions"),
>
> -            new Item("IndirectProtectedFields", "Protected Fields Demo",
> -                     "demo exception when component class contains protected fields"),
> +                    new Item("TrackEditor", "Generic Page Class Demo",
> +                            "demo use of generics with component classes and, particularily, with property types"),
>
> -            new Item("injectcomponentdemo", "Inject Component Demo",
> -                     "inject component defined in template"),
> +                    new Item("IndirectProtectedFields", "Protected Fields Demo",
> +                            "demo exception when component class contains protected fields"),
>
> -            new Item("cachedpage", "Cached Annotation", "Caching method return values"),
> +                    new Item("injectcomponentdemo", "Inject Component Demo",
> +                            "inject component defined in template"),
>
> -            new Item("cachedpage2", "Cached Annotation2", "Caching method return values w/ inheritence"),
> +                    new Item("cachedpage", "Cached Annotation", "Caching method return values"),
>
> -            new Item("inplacegriddemo", "In-Place Grid Demo", "Grid that updates in-place using Ajax"),
> +                    new Item("cachedpage2", "Cached Annotation2",
> +                            "Caching method return values w/ inheritence"),
>
> -            new Item("methodadvicedemo", "Method Advice Demo", "Advising component methods."),
> +                    new Item("inplacegriddemo", "In-Place Grid Demo",
> +                            "Grid that updates in-place using Ajax"),
>
> -            new Item("HasBodyDemo", "Has Body Demo", "Verify the hasBody() method of ComponentResources"),
> +                    new Item("methodadvicedemo", "Method Advice Demo",
> +                            "Advising component methods."),
>
> -            new Item("BeanEditorBeanEditContext", "BeanEditor BeanEditContext",
> -                     "BeanEditContext is pushed into enviroment by BeanEditor."),
> +                    new Item("HasBodyDemo", "Has Body Demo",
> +                            "Verify the hasBody() method of ComponentResources"),
>
> -            new Item("InformalParametersDemo", "Informal Parameters Demo",
> -                     "Access to informal parameters names and values"),
> +                    new Item("BeanEditorBeanEditContext", "BeanEditor BeanEditContext",
> +                            "BeanEditContext is pushed into enviroment by BeanEditor."),
>
> -            new Item("FormFieldOutsideForm", "Form Field Outside Form",
> -                     "Nice exception message for common problem of form fields outside forms"),
> +                    new Item("InformalParametersDemo", "Informal Parameters Demo",
> +                            "Access to informal parameters names and values"),
>
> -            new Item("SubmitWithContext", "Submit With Context",
> -                     "Providing a context for Submit component"),
> +                    new Item("FormFieldOutsideForm", "Form Field Outside Form",
> +                            "Nice exception message for common problem of form fields outside forms"),
>
> -            new Item("MessageConstraintGeneratorDemo",
> -                     "Validation Constraints From Messages",
> -                     "Providing validators to apply from a properties file"),
> +                    new Item("SubmitWithContext", "Submit With Context",
> +                            "Providing a context for Submit component"),
>
> -            new Item("RenderClientIdDemo",
> -                     "RenderClientId Mixin",
> -                     "Force render of client-side id of a client element via the RenderClientId mixin"),
> +                    new Item("MessageConstraintGeneratorDemo",
> +                            "Validation Constraints From Messages",
> +                            "Providing validators to apply from a properties file"),
>
> -            new Item("BindParameterDemo",
> -                     "BindParameter mixin annotation",
> -                     "Accessing component parameter values from a mixin"),
> +                    new Item("RenderClientIdDemo", "RenderClientId Mixin",
> +                            "Force render of client-side id of a client element via the RenderClientId mixin"),
>
> -            new Item("BindParameterNoSuchParameter",
> -                     "BindParameter error handling",
> -                     "BindParameter throws exception if the containing component doesn't have a matching parameter"),
> +                    new Item("BindParameterDemo", "BindParameter mixin annotation",
> +                            "Accessing component parameter values from a mixin"),
>
> -            new Item("BindParameterOnComponent",
> -                      "BindParameter on component",
> -                      "Verify that BindParameter can only be used on mixin fields"),
> +                    new Item("BindParameterNoSuchParameter", "BindParameter error handling",
> +                            "BindParameter throws exception if the containing component doesn't have a matching parameter"),
>
> -            new Item("MixinOrderingDemo",
> -                     "Mixin Ordering Demo",
> -                     "Various mixin-ordering scenarios"),
> +                    new Item("BindParameterOnComponent", "BindParameter on component",
> +                            "Verify that BindParameter can only be used on mixin fields"),
>
> -            new Item("MissingComponentClassException",
> -                     "Missing Component Class Exception",
> -                     "Meaningful exception message thrown when component class can't be determined from template or field in containing component."),
> +                    new Item("MixinOrderingDemo", "Mixin Ordering Demo",
> +                            "Various mixin-ordering scenarios"),
>
> -            new Item("SessionAttributeDemo",
> -                     "SessionAttribute Demo",
> -                     "Annotation to map a field to a specific session attribute"),
> +                    new Item(
> +                            "MissingComponentClassException",
> +                            "Missing Component Class Exception",
> +                            "Meaningful exception message thrown when component class can't be determined from template or field in containing component."),
>
> -            new Item("BeanEditCalendarDemo", "BeanEditor / Calendar Demo",
> -                     "Use of calendar properties inside BeanEditor and BeanDisplay"),
> +                    new Item("SessionAttributeDemo", "SessionAttribute Demo",
> +                            "Annotation to map a field to a specific session attribute"),
>
> -            new Item("TriggerDemo", "Trigger Demo", "Use of Trigger component"),
> -
> -            new Item("ImageSubmitDemo", "Submit with an Image Demo", "Make sure that submit with the image parameter set triggers the 'selected' event."),
> -
> -            new Item("SelectZoneDemo", "Select Zone Demo", "Use a Select component to update a zone."),
> +                    new Item("BeanEditCalendarDemo", "BeanEditor / Calendar Demo",
> +                            "Use of calendar properties inside BeanEditor and BeanDisplay"),
>
> -            new Item("AssetProtectionDemo", "Asset Protection Demo", "AssetProtectionDispatcher is properly contributed and functioning")
> +                    new Item("TriggerDemo", "Trigger Demo", "Use of Trigger component"),
>
> -    );
> +                    new Item("ImageSubmitDemo", "Submit with an Image Demo",
> +                            "Make sure that submit with the image parameter set triggers the 'selected' event."),
> +
> +                    new Item("SelectZoneDemo", "Select Zone Demo",
> +                            "Use a Select component to update a zone."),
> +
> +                    new Item("AssetProtectionDemo", "Asset Protection Demo",
> +                            "AssetProtectionDispatcher is properly contributed and functioning")
> +
> +            );
>
>     static
>     {
>
> Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderObjectExceptionDemo.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderObjectExceptionDemo.java?rev=894918&view=auto
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderObjectExceptionDemo.java (added)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderObjectExceptionDemo.java Thu Dec 31 18:17:49 2009
> @@ -0,0 +1,25 @@
> +// Copyright 2009 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.tapestry5.integration.app1.pages;
> +
> +import org.apache.tapestry5.integration.app1.data.NullToString;
> +
> +public class RenderObjectExceptionDemo
> +{
> +    public Object getBadBoy()
> +    {
> +        return new NullToString();
> +    }
> +}
>
> Propchange: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderObjectExceptionDemo.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
>
>
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Mime
View raw message