You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "ning (JIRA)" <ji...@apache.org> on 2009/05/20 07:06:45 UTC

[jira] Commented: (TAP5-571) Misplaced results in an inscrutable exception

    [ https://issues.apache.org/jira/browse/TAP5-571?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12711008#action_12711008 ] 

ning commented on TAP5-571:
---------------------------

The fix is not so perfect.

<html xml:space="default" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" t:type="Layout" xmlns:p="tapestry:parameter"> 
   <p:body>
    simple test
  </p:/body>
</html>

is ok.

But

<html xml:space="default" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" t:type="Layout" xmlns:p="tapestry:parameter"> 
 <div>
   <p:body>
    simple test
  </p:/body>
 </div>
</html>

will lead to "Block parameters are only allowed directly within component elements.". Because p:body is embeded in general 'div' label.

To keep the html previewability, I think it is important to make this case legal.

> Misplaced <t:parameter> results in an inscrutable exception
> -----------------------------------------------------------
>
>                 Key: TAP5-571
>                 URL: https://issues.apache.org/jira/browse/TAP5-571
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.1.0.0
>            Reporter: Igor Drobiazko
>            Assignee: Howard M. Lewis Ship
>             Fix For: 5.1.0.4
>
>
> If <t:parameter> is used not inside a component, a inscrutable exception occurs. The message of the exception doesn't tell at all what the reason was.
> PageLoaderProcessor should catch the IllegalStateException inside the method parameter(ParameterToken) and throw TapestryException containing the location of the current token. This will provide a reasonable exception report.
> java.lang.IllegalStateException: Stack is empty.
> 	at org.apache.tapestry5.ioc.util.Stack.checkIfEmpty(Stack.java:119)
> 	at org.apache.tapestry5.ioc.util.Stack.peek(Stack.java:131)
> 	at org.apache.tapestry5.internal.services.PageLoaderProcessor.parameter(PageLoaderProcessor.java:594)
> 	at org.apache.tapestry5.internal.services.PageLoaderProcessor.loadTemplateForComponent(PageLoaderProcessor.java:519)
> 	at org.apache.tapestry5.internal.services.PageLoaderProcessor.workComponentQueue(PageLoaderProcessor.java:834)
> 	at org.apache.tapestry5.internal.services.PageLoaderProcessor.loadPage(PageLoaderProcessor.java:392)
> 	at org.apache.tapestry5.internal.services.PageLoaderImpl.loadPage(PageLoaderImpl.java:59)
> 	at $PageLoader_11ff4e54e7f.loadPage($PageLoader_11ff4e54e7f.java)
> 	at org.apache.tapestry5.internal.services.PagePoolCache.checkout(PagePoolCache.java:210)
> 	at org.apache.tapestry5.internal.services.PagePoolImpl.checkout(PagePoolImpl.java:99)
> To reproduce the problem create the following page:
> <html xml:space="default" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
>     <body>
>          <t:unless test="some condition">
>                     Foo
>           </t:unless>
>          <t:parameter name="else">
>                   Bar
>          </t:parameter>
>    </body>
> </html>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.