Tapestry
  1. Tapestry
  2. TAPESTRY-2476

Unhelpful exception messages when a null value is bound to a required parameter

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 5.0.11
    • Fix Version/s: 5.0.14
    • Component/s: Core Components
    • Labels:
      None
    • Environment:
      Windows XP Service Pack 2, FireFox 2.0.0.14, Eclipse 3.3.2, Maven 2.0.9, Run-Jetty-Run, Java 1.6.0_3

      Description

      Example exception:
      Render queue error in SetupRender[MainPage:tilesetsearch.palette]:
      org.apache.tapestry.ioc.internal.util.TapestryException

      Example tml line:
      <t:palette t:model="keywordModel" t:selected="selectedKeywordIds" t:encoder="longEncoder" t:size="5"/>

      Example stack trace: java.lang.NullPointerException

      • org.apache.tapestry.corelib.components...
        Palette.setupRender(Palette.java:379)
      • Palette.setupRender(Palette.java)
      • org.apache.tapestry.internal.structure...
        ComponentPageElementImpl$13$1.run(ComponentPageElementImpl.java:478)
      • ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:880)
      • ComponentPageElementImpl.access$100(ComponentPageElementImpl.java:54)
      • ComponentPageElementImpl$13.render(ComponentPageElementImpl.java:482)
      • org.apache.tapestry.internal.services...
        RenderQueueImpl.run(RenderQueueImpl.java:63)
      • PageRenderQueueImpl.render(PageRenderQueueImpl.java:84)

      This constitutes one example where the t:selected parameter was null. Later I got the same exception message with a different stack trace when the same parameter was null, but for a different reason.

      Perhaps required parameters should not only be bound, but also null checked.

        Activity

        Transition Time In Source Status Execution Times Last Executer Last Execution Date
        Open Open In Progress In Progress
        6h 2m 1 Howard M. Lewis Ship 24/Jun/08 22:40
        In Progress In Progress Closed Closed
        1h 2m 1 Howard M. Lewis Ship 24/Jun/08 23:42
        Mark Thomas made changes -
        Workflow Default workflow, editable Closed status [ 12569342 ] jira [ 12590602 ]
        Mark Thomas made changes -
        Workflow jira [ 12433959 ] Default workflow, editable Closed status [ 12569342 ]
        Howard M. Lewis Ship made changes -
        Status In Progress [ 3 ] Closed [ 6 ]
        Fix Version/s 5.0.14 [ 12313214 ]
        Resolution Fixed [ 1 ]
        Howard M. Lewis Ship made changes -
        Summary Unhelpful exception messages when a null value is bound to a required parameter. Unhelpful exception messages when a null value is bound to a required parameter
        Hide
        Howard M. Lewis Ship added a comment -

        The solution here is to add another @Parameter attribute, allowNull. This defaults to true. When allowNull=false, and when a parameter is bound, and the value retrieved from the parameters is null, an exception is thrown. Often, but not always, required=true will be paired with allowNull=false. The exception is something like the value parameter of TextField, which must be bound, but doesn't have to have an initial value.

        Show
        Howard M. Lewis Ship added a comment - The solution here is to add another @Parameter attribute, allowNull. This defaults to true. When allowNull=false, and when a parameter is bound, and the value retrieved from the parameters is null, an exception is thrown. Often, but not always, required=true will be paired with allowNull=false. The exception is something like the value parameter of TextField, which must be bound, but doesn't have to have an initial value.
        Hide
        Howard M. Lewis Ship added a comment -

        Looking at the code, the issue here should be that keywordModel was returning null.

        Show
        Howard M. Lewis Ship added a comment - Looking at the code, the issue here should be that keywordModel was returning null.
        Howard M. Lewis Ship made changes -
        Status Open [ 1 ] In Progress [ 3 ]
        Howard M. Lewis Ship made changes -
        Field Original Value New Value
        Assignee Howard M. Lewis Ship [ hlship ]
        Daniel created issue -

          People

          • Assignee:
            Howard M. Lewis Ship
            Reporter:
            Daniel
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development