Author: mgrigorov Date: Mon Sep 12 14:20:22 2011 New Revision: 1169759 URL: http://svn.apache.org/viewvc?rev=1169759&view=rev Log: WICKET-4016 MarkupContainer.toString(true) fails with MarkupNotFoundException if the call is made in the component constructor
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java wicket/trunk/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java wicket/trunk/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java?rev=1169759&r1=1169758&r2=1169759&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java (original) +++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java Mon Sep 12 14:20:22 2011 @@ -3207,23 +3207,22 @@ public abstract class Component { try { + final StringBuilder buffer = new StringBuilder(); + buffer.append("[Component id = ").append(getId()); + if (detailed) { final Page page = findPage(); if (page == null) { - return new StringBuilder("[Component id = ").append(getId()) - .append(", page = <No Page>, path = ") + buffer.append(", page = <No Page>, path = ") .append(getPath()) .append('.') - .append(Classes.simpleName(getClass())) - .append(']') - .toString(); + .append(Classes.simpleName(getClass())); } else { - return new StringBuilder("[Component id = ").append(getId()) - .append(", page = ") + buffer.append(", page = ") .append(getPage().getClass().getName()) .append(", path = ") .append(getPath()) @@ -3232,15 +3231,18 @@ public abstract class Component .append(", isVisible = ") .append((determineVisibility())) .append(", isVersioned = ") - .append(isVersioned()) - .append(']') - .toString(); + .append(isVersioned()); + } + + if (markup != null) + { + buffer.append(", markup = ").append(new MarkupStream(getMarkup()).toString()); } } - else - { - return "[Component id = " + getId() + ']'; - } + + buffer.append(']'); + + return buffer.toString(); } catch (Exception e) { Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java?rev=1169759&r1=1169758&r2=1169759&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java (original) +++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java Mon Sep 12 14:20:22 2011 @@ -860,32 +860,26 @@ public abstract class MarkupContainer ex public String toString(final boolean detailed) { final StringBuilder buffer = new StringBuilder(); - buffer.append("[").append(this.getClass().getSimpleName()).append(" "); + buffer.append('[').append(this.getClass().getSimpleName()).append(' '); buffer.append(super.toString(detailed)); - if (detailed) + if (detailed && children_size() != 0) { - if (getMarkup() != null) - { - buffer.append(", markup = ").append(new MarkupStream(getMarkup()).toString()); - } - if (children_size() != 0) - { - buffer.append(", children = "); + buffer.append(", children = "); - // Loop through child components - final int size = children_size(); - for (int i = 0; i < size; i++) + // Loop through child components + final int size = children_size(); + for (int i = 0; i < size; i++) + { + // Get next child + final Component child = children_get(i); + if (i != 0) { - // Get next child - final Component child = children_get(i); - if (i != 0) - { - buffer.append(' '); - } - buffer.append(child.toString()); + buffer.append(' '); } + buffer.append(child.toString()); } + } buffer.append(']'); return buffer.toString(); Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java?rev=1169759&r1=1169758&r2=1169759&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java (original) +++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java Mon Sep 12 14:20:22 2011 @@ -129,6 +129,24 @@ public class MarkupContainerTest extends assertEquals(1, page.afterRenderCalls); } + /** + * https://issues.apache.org/jira/browse/WICKET-4016 + */ + @Test + public void callToStringFromConstructor() + { + ToStringComponent page = new ToStringComponent(); + } + + private static class ToStringComponent extends WebMarkupContainer + { + private ToStringComponent() + { + super("id"); + toString(true); + } + } + private static class AfterRenderJustOncePage extends WebPage implements IMarkupResourceStreamProvider