[ 
https://issues.apache.org/jira/browse/WICKET-3741?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13043989#comment-13043989
 ] 

Juergen Donnerstag commented on WICKET-3741:
--------------------------------------------

Hi Martin,

the attached patch still has some severe issues. Because of your suggested 
getMarkupType change (and subsequent changes) upon return of getMarkup() we 
don't know anymore whether the markup can not be found or can not be loaded 
because of missing information. That in turn leads to plenty of additional 
getMarkupType() == null checks scattered throughout the code.

The exception in the current code is an indicator that the markup could not be 
loaded yet (compared to "not found"). I accept that plenty of exceptions are 
thrown because we essentially test upon add() whether markup is already 
available. As you found out getMarkupType() == null is the main reason why 
makup can not be loaded and an exception is thrown. May be instead introducing 
throwException, we should simply test getMarkupType() before trying (test) to 
load the markup thus avoiding the majority of exceptions

-Juergen

> Don't throw MarkupNotFoundException when the markup is acceptable to not be 
> available yet
> -----------------------------------------------------------------------------------------
>
>                 Key: WICKET-3741
>                 URL: https://issues.apache.org/jira/browse/WICKET-3741
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket-core
>    Affects Versions: 1.5-RC4
>            Reporter: Martin Grigorov
>            Assignee: Martin Grigorov
>         Attachments: 3741-panel-not-registered.log, WICKET-3741.patch, 
> WICKET-3741.patch, wicket-3741.patch
>
>
> Some areas in Wicket code do expensive creation of WicketRuntimeException and 
> then just ignores it.
> The most common case is :
> at java.lang.Throwable.fillInStackTrace(Native Method)
> at java.lang.Throwable.<init>(Throwable.java:218)
> at java.lang.Exception.<init>(Exception.java:59)
> at java.lang.RuntimeException.<init>(RuntimeException.java:61)
> at 
> org.apache.wicket.WicketRuntimeException.<init>(WicketRuntimeException.java:49)
> at org.apache.wicket.MarkupContainer.getMarkupType(MarkupContainer.java:476)
> at 
> org.apache.wicket.markup.DefaultMarkupCacheKeyProvider.getCacheKey(DefaultMarkupCacheKeyProvider.java:85)
> at org.apache.wicket.markup.MarkupCache.getMarkup(MarkupCache.java:274)
> at org.apache.wicket.markup.MarkupFactory.getMarkup(MarkupFactory.java:218)
> at org.apache.wicket.markup.MarkupFactory.getMarkup(MarkupFactory.java:192)
> at 
> org.apache.wicket.MarkupContainer.getAssociatedMarkup(MarkupContainer.java:410)
> at 
> org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy.getMarkup(PanelMarkupSourcingStrategy.java:70)
> at org.apache.wicket.MarkupContainer.getMarkup(MarkupContainer.java:456)
> at org.apache.wicket.Component.getMarkup(Component.java:734)
> at org.apache.wicket.MarkupContainer.add(MarkupContainer.java:173)
> ...
> and is ignored in MarkupContainer#add(). 
> Such an exception is created for every component which is added in the 
> constructor of another component (in contrast to onInitialize() where the 
> markup will be available).

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to