You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Hannes Schubert <in...@tele2.de> on 2008/11/04 15:20:13 UTC

Re: Illegal State Exception on DefaultTeeModel.removeNodeFromParent

Hi all,

so far I did not isolate the issue. However, I found a workaround: 
exception was thrown only if node had been expanded. If I do collapse 
the node before removal, it does not fail again...

Best regards
Hannes

Matej Knopp wrote:
> Might be a big. Jira issue with attached quickstart project to reproduce it
> would be helpful.
>
> -Matej
>
> On Mon, Oct 27, 2008 at 11:24 AM, Hannes Schubert <in...@tele2.de> wrote:
>
>   
>> Hi all,
>>
>> if I call removeNodeFromParent for the last (and only) child node of a
>> parent node on second or deeper level in a TreeTable, Wicket throws an
>> IllegalStateException like this:
>>
>> ERROR - RequestCycle               - Cannot remove [MarkupContainer
>> [Component id = 11, page = <No Page>, path = 11.AbstractTree$TreeItem]] from
>> null parent!
>> java.lang.IllegalStateException: Cannot remove [MarkupContainer [Component
>> id = 11, page = <No Page>, path = 11.AbstractTree$TreeItem]] from null
>> parent!
>>   at org.apache.wicket.Component.remove(Component.java:2204)
>>   at
>> org.apache.wicket.markup.html.tree.AbstractTree.removeItem(AbstractTree.java:1441)
>>   at
>> org.apache.wicket.markup.html.tree.AbstractTree.treeNodesRemoved(AbstractTree.java:832)
>>   at
>> javax.swing.tree.DefaultTreeModel.fireTreeNodesRemoved(DefaultTreeModel.java:530)
>>   at
>> javax.swing.tree.DefaultTreeModel.nodesWereRemoved(DefaultTreeModel.java:310)
>>   at
>> javax.swing.tree.DefaultTreeModel.removeNodeFromParent(DefaultTreeModel.java:244)
>>
>> It runs well if child node is not the last child of parent. Before calling
>> removeNodeFromParent() the instance method  TreeNode.getParent()  always
>> returns the valid instance of DefaultMutableTreeNode. So tree seems to be
>> intact for me...
>>
>> Any hints?
>>
>> Best regards
>> Hannes Schubert
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>>     
>
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Illegal State Exception on DefaultTeeModel.removeNodeFromParent

Posted by skatz <st...@nokia.com>.
I posted a bug (WICKET-2178) with a test case/source code.  The last action I
saw on it was it was assigned to Matej Knopp back in April.

I tested the same code against the 1.4 code and it seemed to work.


Leena wrote:
> 
> Any resolution on this? Or may be some workaround? I am facing a similar
> issue, so thought this could be related.
> 
> I am getting a NullPointerException while trying to move nodes within the
> tree (ajax requests)
> 
> Partial Stack trace:
> java.lang.NullPointerException
>      at
> org.apache.wicket.markup.html.tree.AbstractTree.treeNodesInserted(AbstractTree.java:790)
>      at javax.swing.tree.DefaultTreeModel.fireTreeNodesInserted(Unknown
> Source)
>      at javax.swing.tree.DefaultTreeModel.nodesWereInserted(Unknown
> Source)
>      at javax.swing.tree.DefaultTreeModel.insertNodeInto(Unknown Source)
> 
> Please let me know if there is any solution/workaround to this. I am using
> wicket-1.3.5.
> 
> +Leena
> 
> 
> skatz wrote:
>> 
>> I have the same problem using 1.3.5, but not when using 1.3.3.  I spent
>> some time tracing the source code and it seems related to the addition of
>> this line:
>> 
>> getTreeState().selectNode((TreeNode)item.getModelObject(), false);
>> 
>> at the very end of the function (line 835):
>> 
>> AbstractTree.treeNodesRemoved()
>> 
>> This line results (eventually) in a call to 
>> 
>> AbstractTree.invalidateNode()
>> 
>> which on line 1295 calls:
>> 
>> item.remove()
>> 
>> which alters the state of "item" such that the call to item.remove() in
>> AbstractTree.treeNodesRemoved() fails with the exception mentioned
>> previously.
>> 
>> I note that the IItemCallback() code, immediately above, calls two
>> identical lines in the reverse order.  I wonder reversing the later two
>> would fix the problem?
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Illegal-State-Exception-on-DefaultTeeModel.removeNodeFromParent-tp20185042p23640768.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Illegal State Exception on DefaultTeeModel.removeNodeFromParent

Posted by Leena <le...@yahoo.com>.
Collapsing the node works :)

+Leena
-- 
View this message in context: http://www.nabble.com/Illegal-State-Exception-on-DefaultTeeModel.removeNodeFromParent-tp20185042p23556124.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Illegal State Exception on DefaultTeeModel.removeNodeFromParent

Posted by Leena <le...@yahoo.com>.
Any resolution on this? Or may be some workaround?

+Leena


skatz wrote:
> 
> I have the same problem using 1.3.5, but not when using 1.3.3.  I spent
> some time tracing the source code and it seems related to the addition of
> this line:
> 
> getTreeState().selectNode((TreeNode)item.getModelObject(), false);
> 
> at the very end of the function (line 835):
> 
> AbstractTree.treeNodesRemoved()
> 
> This line results (eventually) in a call to 
> 
> AbstractTree.invalidateNode()
> 
> which on line 1295 calls:
> 
> item.remove()
> 
> which alters the state of "item" such that the call to item.remove() in
> AbstractTree.treeNodesRemoved() fails with the exception mentioned
> previously.
> 
> I note that the IItemCallback() code, immediately above, calls two
> identical lines in the reverse order.  I wonder reversing the later two
> would fix the problem?
> 
> 

-- 
View this message in context: http://www.nabble.com/Illegal-State-Exception-on-DefaultTeeModel.removeNodeFromParent-tp20185042p23541664.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Illegal State Exception on DefaultTeeModel.removeNodeFromParent

Posted by skatz <st...@nokia.com>.
I have the same problem using 1.3.5, but not when using 1.3.3.  I spent some
time tracing the source code and it seems related to the addition of this
line:

getTreeState().selectNode((TreeNode)item.getModelObject(), false);

at the very end of the function (line 835):

AbstractTree.treeNodesRemoved()

This line results (eventually) in a call to 

AbstractTree.invalidateNode()

which on line 1295 calls:

item.remove()

which alters the state of "item" such that the call to item.remove() in
AbstractTree.treeNodesRemoved() fails with the exception mentioned
previously.

I note that the IItemCallback() code, immediately above, calls two identical
lines in the reverse order.  I wonder reversing the later two would fix the
problem?

-- 
View this message in context: http://www.nabble.com/Illegal-State-Exception-on-DefaultTeeModel.removeNodeFromParent-tp20185042p22547387.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org