[
https://issues.apache.org/jira/browse/WICKET-2178?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Steven Katz updated WICKET-2178:
--------------------------------
Description:
Source that replicates the problem is attached. Extract with 'tar xvzf
treeproblem.tgz'
The example works fine with wicket 1.3.4
The page displays a Tree Component
1) Expand the top node of the tree
2) Select the first child node (or any node really)
3) Press the Delete link
Here is the contents of the eclipse console window:
18:14:12.307 EVENT Statistics on = false for org.mortbay.jetty.ser...@19c26f5
18:14:12.333 EVENT Starting Jetty/4.2.24
18:14:12.421 EVENT Started WebApplicationContext[/quickstart,src/webapp]
18:14:12.587 WARN!! Delete existing temp dir /tmp/Jetty__8081__quickstart for
WebApplicationContext[/quickstart,src/webapp]
INFO - Application - [QuickStartApplication] init: Wicket core
library initializer
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IBehaviorListener, method=public abstract void
org.apache.wicket.behavior.IBehaviorListener.onRequest()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IBehaviorListener, method=public abstract void
org.apache.wicket.behavior.IBehaviorListener.onRequest()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IFormSubmitListener, method=public abstract void
org.apache.wicket.markup.html.form.IFormSubmitListener.onFormSubmitted()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IFormSubmitListener, method=public abstract void
org.apache.wicket.markup.html.form.IFormSubmitListener.onFormSubmitted()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=ILinkListener, method=public abstract void
org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=ILinkListener, method=public abstract void
org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IOnChangeListener, method=public abstract void
org.apache.wicket.markup.html.form.IOnChangeListener.onSelectionChanged()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IOnChangeListener, method=public abstract void
org.apache.wicket.markup.html.form.IOnChangeListener.onSelectionChanged()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IRedirectListener, method=public abstract void
org.apache.wicket.IRedirectListener.onRedirect()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IRedirectListener, method=public abstract void
org.apache.wicket.IRedirectListener.onRedirect()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IResourceListener, method=public abstract void
org.apache.wicket.IResourceListener.onResourceRequested()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IResourceListener, method=public abstract void
org.apache.wicket.IResourceListener.onResourceRequested()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IActivePageBehaviorListener, method=public
abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IActivePageBehaviorListener, method=public
abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()]
INFO - Application - [QuickStartApplication] init: Wicket
extensions initializer
INFO - WebApplication - [QuickStartApplication] Started Wicket
version 1.3.5 in development mode
********************************************************************
*** WARNING: Wicket is running in DEVELOPMENT mode. ***
*** ^^^^^^^^^^^ ***
*** Do NOT deploy to your live server(s) without changing this. ***
*** See Application#getConfigurationType() for more information. ***
********************************************************************
18:14:12.688 EVENT jsp: init
18:14:12.722 EVENT default: init
18:14:12.724 EVENT invoker: init
18:14:12.732 EVENT Started SocketListener on 0.0.0.0:8081
18:14:12.732 EVENT Started org.mortbay.jetty.ser...@19c26f5
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=INewBrowserWindowListener, method=public
abstract void
org.apache.wicket.markup.html.INewBrowserWindowListener.onNewBrowserWindow()]
INFO - Index - Yes I was Clicked!!
ERROR - RequestCycle - Cannot remove [MarkupContainer [Component
id = 1]] from null parent!
java.lang.IllegalStateException: Cannot remove [MarkupContainer [Component id =
1]] from null parent!
at org.apache.wicket.Component.remove(Component.java:2203)
at
org.apache.wicket.markup.html.tree.AbstractTree.removeItem(AbstractTree.java:1466)
at
org.apache.wicket.markup.html.tree.AbstractTree.treeNodesRemoved(AbstractTree.java:837)
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)
at wicket.quickstart.Index$1.onClick(Index.java:52)
at
org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:65)
at
org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:163)
at
org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297)
at
org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:100)
at
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
at
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1175)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
at
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355)
at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:200)
at
org.mortbay.jetty.servlet.WebApplicationHandler$Chain.doFilter(WebApplicationHandler.java:334)
at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:286)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
at
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
at
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:331)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:520)
Here is the stack trace displayed in the browser:
Root cause:
java.lang.IllegalStateException: Cannot remove [MarkupContainer [Component id =
1]] from null parent!
at org.apache.wicket.Component.remove(Component.java:2203)
at
org.apache.wicket.markup.html.tree.AbstractTree.removeItem(AbstractTree.java:1466)
at
org.apache.wicket.markup.html.tree.AbstractTree.treeNodesRemoved(AbstractTree.java:837)
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)
at wicket.quickstart.Index$1.onClick(Index.java:52)
at org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:65)
at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:163)
at
org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297)
at
org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:100)
at
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
at
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1175)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355)
at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:200)
at
org.mortbay.jetty.servlet.WebApplicationHandler$Chain.doFilter(WebApplicationHandler.java:334)
at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:286)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
at
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:331)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:520)
I investigated this down through the source and the problem seem related to a
change made to AbstractTree (the one in wicket not wicket-extensions)
Please see my comments on this nabble thread (reproduced below):
http://www.nabble.com/Illegal-State-Exception-on-DefaultTeeModel.removeNodeFromParent-td20185042.html#a22547387
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?
was:
Source that replicates the problem is attached. Extract with 'tar xvcf
treeproblem.tgz'
The example works fine with wicket 1.3.4
The page displays a Tree Component
1) Expand the top node of the tree
2) Select the first child node (or any node really)
3) Press the Delete link
Here is the contents of the eclipse console window:
18:14:12.307 EVENT Statistics on = false for org.mortbay.jetty.ser...@19c26f5
18:14:12.333 EVENT Starting Jetty/4.2.24
18:14:12.421 EVENT Started WebApplicationContext[/quickstart,src/webapp]
18:14:12.587 WARN!! Delete existing temp dir /tmp/Jetty__8081__quickstart for
WebApplicationContext[/quickstart,src/webapp]
INFO - Application - [QuickStartApplication] init: Wicket core
library initializer
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IBehaviorListener, method=public abstract void
org.apache.wicket.behavior.IBehaviorListener.onRequest()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IBehaviorListener, method=public abstract void
org.apache.wicket.behavior.IBehaviorListener.onRequest()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IFormSubmitListener, method=public abstract void
org.apache.wicket.markup.html.form.IFormSubmitListener.onFormSubmitted()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IFormSubmitListener, method=public abstract void
org.apache.wicket.markup.html.form.IFormSubmitListener.onFormSubmitted()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=ILinkListener, method=public abstract void
org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=ILinkListener, method=public abstract void
org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IOnChangeListener, method=public abstract void
org.apache.wicket.markup.html.form.IOnChangeListener.onSelectionChanged()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IOnChangeListener, method=public abstract void
org.apache.wicket.markup.html.form.IOnChangeListener.onSelectionChanged()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IRedirectListener, method=public abstract void
org.apache.wicket.IRedirectListener.onRedirect()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IRedirectListener, method=public abstract void
org.apache.wicket.IRedirectListener.onRedirect()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IResourceListener, method=public abstract void
org.apache.wicket.IResourceListener.onResourceRequested()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IResourceListener, method=public abstract void
org.apache.wicket.IResourceListener.onResourceRequested()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IActivePageBehaviorListener, method=public
abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()]
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=IActivePageBehaviorListener, method=public
abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()]
INFO - Application - [QuickStartApplication] init: Wicket
extensions initializer
INFO - WebApplication - [QuickStartApplication] Started Wicket
version 1.3.5 in development mode
********************************************************************
*** WARNING: Wicket is running in DEVELOPMENT mode. ***
*** ^^^^^^^^^^^ ***
*** Do NOT deploy to your live server(s) without changing this. ***
*** See Application#getConfigurationType() for more information. ***
********************************************************************
18:14:12.688 EVENT jsp: init
18:14:12.722 EVENT default: init
18:14:12.724 EVENT invoker: init
18:14:12.732 EVENT Started SocketListener on 0.0.0.0:8081
18:14:12.732 EVENT Started org.mortbay.jetty.ser...@19c26f5
INFO - RequestListenerInterface - registered listener interface
[RequestListenerInterface name=INewBrowserWindowListener, method=public
abstract void
org.apache.wicket.markup.html.INewBrowserWindowListener.onNewBrowserWindow()]
INFO - Index - Yes I was Clicked!!
ERROR - RequestCycle - Cannot remove [MarkupContainer [Component
id = 1]] from null parent!
java.lang.IllegalStateException: Cannot remove [MarkupContainer [Component id =
1]] from null parent!
at org.apache.wicket.Component.remove(Component.java:2203)
at
org.apache.wicket.markup.html.tree.AbstractTree.removeItem(AbstractTree.java:1466)
at
org.apache.wicket.markup.html.tree.AbstractTree.treeNodesRemoved(AbstractTree.java:837)
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)
at wicket.quickstart.Index$1.onClick(Index.java:52)
at
org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:65)
at
org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:163)
at
org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297)
at
org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:100)
at
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
at
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1175)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
at
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355)
at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:200)
at
org.mortbay.jetty.servlet.WebApplicationHandler$Chain.doFilter(WebApplicationHandler.java:334)
at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:286)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
at
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
at
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:331)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:520)
Here is the stack trace displayed in the browser:
Root cause:
java.lang.IllegalStateException: Cannot remove [MarkupContainer [Component id =
1]] from null parent!
at org.apache.wicket.Component.remove(Component.java:2203)
at
org.apache.wicket.markup.html.tree.AbstractTree.removeItem(AbstractTree.java:1466)
at
org.apache.wicket.markup.html.tree.AbstractTree.treeNodesRemoved(AbstractTree.java:837)
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)
at wicket.quickstart.Index$1.onClick(Index.java:52)
at org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:65)
at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:163)
at
org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297)
at
org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:100)
at
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
at
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1175)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355)
at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:200)
at
org.mortbay.jetty.servlet.WebApplicationHandler$Chain.doFilter(WebApplicationHandler.java:334)
at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:286)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
at
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:331)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:520)
I investigated this down through the source and the problem seem related to a
change made to AbstractTree (the one in wicket not wicket-extensions)
Please see my comments on this nabble thread (reproduced below):
http://www.nabble.com/Illegal-State-Exception-on-DefaultTeeModel.removeNodeFromParent-td20185042.html#a22547387
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?
> IllegalStateException Thrown when removing a node from
> org.apache.wicket.extensions.markup.html.tree.Tree
> ---------------------------------------------------------------------------------------------------------
>
> Key: WICKET-2178
> URL: https://issues.apache.org/jira/browse/WICKET-2178
> Project: Wicket
> Issue Type: Bug
> Components: wicket, wicket-extensions
> Affects Versions: 1.3.5
> Environment: Redhat Linux 4 WS
> Java 1.6.0_12 (from Sun)
> Reporter: Steven Katz
> Attachments: treeproblem.tgz
>
>
> Source that replicates the problem is attached. Extract with 'tar xvzf
> treeproblem.tgz'
> The example works fine with wicket 1.3.4
> The page displays a Tree Component
> 1) Expand the top node of the tree
> 2) Select the first child node (or any node really)
> 3) Press the Delete link
> Here is the contents of the eclipse console window:
> 18:14:12.307 EVENT Statistics on = false for org.mortbay.jetty.ser...@19c26f5
> 18:14:12.333 EVENT Starting Jetty/4.2.24
> 18:14:12.421 EVENT Started WebApplicationContext[/quickstart,src/webapp]
> 18:14:12.587 WARN!! Delete existing temp dir /tmp/Jetty__8081__quickstart for
> WebApplicationContext[/quickstart,src/webapp]
> INFO - Application - [QuickStartApplication] init: Wicket
> core library initializer
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=IBehaviorListener, method=public abstract void
> org.apache.wicket.behavior.IBehaviorListener.onRequest()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=IBehaviorListener, method=public abstract void
> org.apache.wicket.behavior.IBehaviorListener.onRequest()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=IFormSubmitListener, method=public abstract
> void org.apache.wicket.markup.html.form.IFormSubmitListener.onFormSubmitted()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=IFormSubmitListener, method=public abstract
> void org.apache.wicket.markup.html.form.IFormSubmitListener.onFormSubmitted()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=ILinkListener, method=public abstract void
> org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=ILinkListener, method=public abstract void
> org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=IOnChangeListener, method=public abstract void
> org.apache.wicket.markup.html.form.IOnChangeListener.onSelectionChanged()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=IOnChangeListener, method=public abstract void
> org.apache.wicket.markup.html.form.IOnChangeListener.onSelectionChanged()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=IRedirectListener, method=public abstract void
> org.apache.wicket.IRedirectListener.onRedirect()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=IRedirectListener, method=public abstract void
> org.apache.wicket.IRedirectListener.onRedirect()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=IResourceListener, method=public abstract void
> org.apache.wicket.IResourceListener.onResourceRequested()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=IResourceListener, method=public abstract void
> org.apache.wicket.IResourceListener.onResourceRequested()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=IActivePageBehaviorListener, method=public
> abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()]
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=IActivePageBehaviorListener, method=public
> abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()]
> INFO - Application - [QuickStartApplication] init: Wicket
> extensions initializer
> INFO - WebApplication - [QuickStartApplication] Started Wicket
> version 1.3.5 in development mode
> ********************************************************************
> *** WARNING: Wicket is running in DEVELOPMENT mode. ***
> *** ^^^^^^^^^^^ ***
> *** Do NOT deploy to your live server(s) without changing this. ***
> *** See Application#getConfigurationType() for more information. ***
> ********************************************************************
> 18:14:12.688 EVENT jsp: init
> 18:14:12.722 EVENT default: init
> 18:14:12.724 EVENT invoker: init
> 18:14:12.732 EVENT Started SocketListener on 0.0.0.0:8081
> 18:14:12.732 EVENT Started org.mortbay.jetty.ser...@19c26f5
> INFO - RequestListenerInterface - registered listener interface
> [RequestListenerInterface name=INewBrowserWindowListener, method=public
> abstract void
> org.apache.wicket.markup.html.INewBrowserWindowListener.onNewBrowserWindow()]
> INFO - Index - Yes I was Clicked!!
> ERROR - RequestCycle - Cannot remove [MarkupContainer
> [Component id = 1]] from null parent!
> java.lang.IllegalStateException: Cannot remove [MarkupContainer [Component id
> = 1]] from null parent!
> at org.apache.wicket.Component.remove(Component.java:2203)
> at
> org.apache.wicket.markup.html.tree.AbstractTree.removeItem(AbstractTree.java:1466)
> at
> org.apache.wicket.markup.html.tree.AbstractTree.treeNodesRemoved(AbstractTree.java:837)
> 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)
> at wicket.quickstart.Index$1.onClick(Index.java:52)
> at
> org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:65)
> at
> org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:163)
> at
> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297)
> at
> org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:100)
> at
> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
> at
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1175)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252)
> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353)
> at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
> at
> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355)
> at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:200)
> at
> org.mortbay.jetty.servlet.WebApplicationHandler$Chain.doFilter(WebApplicationHandler.java:334)
> at
> org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:286)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
> at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
> at
> org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
> at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
> at org.mortbay.http.HttpServer.service(HttpServer.java:879)
> at org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
> at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
> at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
> at
> org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
> at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:331)
> at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:520)
>
> Here is the stack trace displayed in the browser:
> Root cause:
> java.lang.IllegalStateException: Cannot remove [MarkupContainer [Component id
> = 1]] from null parent!
> at org.apache.wicket.Component.remove(Component.java:2203)
> at
> org.apache.wicket.markup.html.tree.AbstractTree.removeItem(AbstractTree.java:1466)
> at
> org.apache.wicket.markup.html.tree.AbstractTree.treeNodesRemoved(AbstractTree.java:837)
> 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)
> at wicket.quickstart.Index$1.onClick(Index.java:52)
> at org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:65)
> at
> org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:163)
> at
> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297)
> at
> org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:100)
> at
> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
> at
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1175)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252)
> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353)
> at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
> at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355)
> at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:200)
> at
> org.mortbay.jetty.servlet.WebApplicationHandler$Chain.doFilter(WebApplicationHandler.java:334)
> at
> org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:286)
> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
> at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
> at
> org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
> at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
> at org.mortbay.http.HttpServer.service(HttpServer.java:879)
> at org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
> at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
> at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
> at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
> at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:331)
> at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:520)
> I investigated this down through the source and the problem seem related to a
> change made to AbstractTree (the one in wicket not wicket-extensions)
> Please see my comments on this nabble thread (reproduced below):
> http://www.nabble.com/Illegal-State-Exception-on-DefaultTeeModel.removeNodeFromParent-td20185042.html#a22547387
> 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?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.