[ 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