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


Reply via email to