You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Nili Adoram (JIRA)" <ji...@apache.org> on 2007/06/07 07:21:26 UTC

[jira] Created: (WICKET-622) Component.toString() is unsafe

Component.toString() is unsafe 
-------------------------------

                 Key: WICKET-622
                 URL: https://issues.apache.org/jira/browse/WICKET-622
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 1.2.2
            Reporter: Nili Adoram


I add a component to its container when the page is initialized, BEFORE
it is rendered and before page model finished to initialize.
if log4j is configured to enable wicket debug, the container toString()
is called.
This method invokes isVisible() of the container.
I have overridden isVisible(), to query the page model before deciding
whether the component is actually visible.
I assumed this method is called when the component is rendered, and by
that time the model is completely initialized.
However, since it was called before component rendering, my code failed
and the page failed to be created.
To sum up, toString() of Component should be safe.

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


[jira] Commented: (WICKET-622) Component.toString() is unsafe

Posted by "Johan Compagner (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WICKET-622?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12502286 ] 

Johan Compagner commented on WICKET-622:
----------------------------------------

in 1.3 its already safe:


		if (detailed)
		{
			final Page page = findPage();
			if (page == null)
			{
				return new StringBuffer("[Component id = ").append(getId()).append(
						", page = <No Page>, path = ").append(getPath()).append(".").append(
						Classes.simpleName(getClass())).append("]").toString();
			}
			else
			{
				return new StringBuffer("[Component id = ").append(getId()).append(", page = ")
						.append(getPage().getClass().getName()).append(", path = ").append(
								getPath()).append(".").append(Classes.simpleName(getClass()))
						.append(", isVisible = ").append((isRenderAllowed() && isVisible()))
						.append(", isVersioned = ").append(isVersioned()).append("]").toString();
			}
		}
		else
		{
			return "[Component id = " + getId() + "]";
		}
	
so if we don't find a page many things are not called.

> Component.toString() is unsafe 
> -------------------------------
>
>                 Key: WICKET-622
>                 URL: https://issues.apache.org/jira/browse/WICKET-622
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.2.2
>            Reporter: Nili Adoram
>
> I add a component to its container when the page is initialized, BEFORE
> it is rendered and before page model finished to initialize.
> if log4j is configured to enable wicket debug, the container toString()
> is called.
> This method invokes isVisible() of the container.
> I have overridden isVisible(), to query the page model before deciding
> whether the component is actually visible.
> I assumed this method is called when the component is rendered, and by
> that time the model is completely initialized.
> However, since it was called before component rendering, my code failed
> and the page failed to be created.
> To sum up, toString() of Component should be safe.

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


[jira] Updated: (WICKET-622) Component.toString() is unsafe

Posted by "Alastair Maw (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-622?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alastair Maw updated WICKET-622:
--------------------------------

    Fix Version/s:     (was: 1.3.0-rc1)
                   1.3.0-beta1

> Component.toString() is unsafe 
> -------------------------------
>
>                 Key: WICKET-622
>                 URL: https://issues.apache.org/jira/browse/WICKET-622
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.2.2
>            Reporter: Nili Adoram
>             Fix For: 1.2.7, 1.3.0-beta1
>
>
> I add a component to its container when the page is initialized, BEFORE
> it is rendered and before page model finished to initialize.
> if log4j is configured to enable wicket debug, the container toString()
> is called.
> This method invokes isVisible() of the container.
> I have overridden isVisible(), to query the page model before deciding
> whether the component is actually visible.
> I assumed this method is called when the component is rendered, and by
> that time the model is completely initialized.
> However, since it was called before component rendering, my code failed
> and the page failed to be created.
> To sum up, toString() of Component should be safe.

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


[jira] Commented: (WICKET-622) Component.toString() is unsafe

Posted by "Nili Adoram (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WICKET-622?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12502298 ] 

Nili Adoram commented on WICKET-622:
------------------------------------

the same code appears in 1.2.2 as well.
the page is already set, but the model is not completely initialized.
This is probably my fault and I should reverse the order.
However, toString() should not fail Container.add() .

> Component.toString() is unsafe 
> -------------------------------
>
>                 Key: WICKET-622
>                 URL: https://issues.apache.org/jira/browse/WICKET-622
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.2.2
>            Reporter: Nili Adoram
>
> I add a component to its container when the page is initialized, BEFORE
> it is rendered and before page model finished to initialize.
> if log4j is configured to enable wicket debug, the container toString()
> is called.
> This method invokes isVisible() of the container.
> I have overridden isVisible(), to query the page model before deciding
> whether the component is actually visible.
> I assumed this method is called when the component is rendered, and by
> that time the model is completely initialized.
> However, since it was called before component rendering, my code failed
> and the page failed to be created.
> To sum up, toString() of Component should be safe.

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


[jira] Commented: (WICKET-622) Component.toString() is unsafe

Posted by "Eelco Hillenius (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/WICKET-622?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12502369 ] 

Eelco Hillenius commented on WICKET-622:
----------------------------------------

I think that the thing that is wrong here is that toString calls this method with detailed == true. Why don't we make that false explicitly use this method with detailed == true when we use it for e.g. printing out the component etc?


> Component.toString() is unsafe 
> -------------------------------
>
>                 Key: WICKET-622
>                 URL: https://issues.apache.org/jira/browse/WICKET-622
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.2.2
>            Reporter: Nili Adoram
>
> I add a component to its container when the page is initialized, BEFORE
> it is rendered and before page model finished to initialize.
> if log4j is configured to enable wicket debug, the container toString()
> is called.
> This method invokes isVisible() of the container.
> I have overridden isVisible(), to query the page model before deciding
> whether the component is actually visible.
> I assumed this method is called when the component is rendered, and by
> that time the model is completely initialized.
> However, since it was called before component rendering, my code failed
> and the page failed to be created.
> To sum up, toString() of Component should be safe.

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


[jira] Updated: (WICKET-622) Component.toString() is unsafe

Posted by "Alastair Maw (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-622?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alastair Maw updated WICKET-622:
--------------------------------

    Fix Version/s:     (was: 1.2.7)
                       (was: 1.3.0-beta1)
                   1.3.0-rc1

Hmmm, this is still an issue in trunk, now I look. I think toString() on Component should call toString(false). Worse, toString(false) on MarkupContainer calls super.toString(true) regardless.

It's difficult to get Eclipse to tell me what calls .toString() ;-)

I guess we should just turn detailed output off and call it explicitly when we find we need it, or when people whinge.

> Component.toString() is unsafe 
> -------------------------------
>
>                 Key: WICKET-622
>                 URL: https://issues.apache.org/jira/browse/WICKET-622
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.2.2
>            Reporter: Nili Adoram
>             Fix For: 1.3.0-rc1
>
>
> I add a component to its container when the page is initialized, BEFORE
> it is rendered and before page model finished to initialize.
> if log4j is configured to enable wicket debug, the container toString()
> is called.
> This method invokes isVisible() of the container.
> I have overridden isVisible(), to query the page model before deciding
> whether the component is actually visible.
> I assumed this method is called when the component is rendered, and by
> that time the model is completely initialized.
> However, since it was called before component rendering, my code failed
> and the page failed to be created.
> To sum up, toString() of Component should be safe.

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


[jira] Updated: (WICKET-622) Component.toString() is unsafe

Posted by "Alastair Maw (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-622?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alastair Maw updated WICKET-622:
--------------------------------

    Fix Version/s: 1.3.0-rc1
                   1.2.7

> Component.toString() is unsafe 
> -------------------------------
>
>                 Key: WICKET-622
>                 URL: https://issues.apache.org/jira/browse/WICKET-622
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.2.2
>            Reporter: Nili Adoram
>             Fix For: 1.2.7, 1.3.0-rc1
>
>
> I add a component to its container when the page is initialized, BEFORE
> it is rendered and before page model finished to initialize.
> if log4j is configured to enable wicket debug, the container toString()
> is called.
> This method invokes isVisible() of the container.
> I have overridden isVisible(), to query the page model before deciding
> whether the component is actually visible.
> I assumed this method is called when the component is rendered, and by
> that time the model is completely initialized.
> However, since it was called before component rendering, my code failed
> and the page failed to be created.
> To sum up, toString() of Component should be safe.

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