Deleting a treenode results in NPE
----------------------------------
Key: WICKET-1226
URL: https://issues.apache.org/jira/browse/WICKET-1226
Project: Wicket
Issue Type: Bug
Components: wicket
Affects Versions: 1.3.0-rc1
Reporter: Doug Leeper
Fix For: 1.3.0-rc3
I have a LinkTree with the root node visible. When deleting the last child
tree node from the root, I get a NullPointerException.
java.lang.NullPointerException
at
org.apache.wicket.markup.html.tree.BaseTree.isNodeLast(BaseTree.java:167)
at org.apache.wicket.markup.html.tree.BaseTree.access$000(BaseTree.java:49)
at
org.apache.wicket.markup.html.tree.BaseTree$JunctionBorder.renderBefore(BaseTree.java:215)
at org.apache.wicket.Component.render(Component.java:2254)
at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1240)
at
org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1407)
at
org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1344)
at org.apache.wicket.Component.renderComponent(Component.java:2419)
at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1354)
at
org.apache.wicket.markup.html.tree.AbstractTree$TreeItem.onRender(AbstractTree.java:203)
at org.apache.wicket.Component.render(Component.java:2256)
at
org.apache.wicket.markup.html.tree.AbstractTree$TreeItemContainer$1.visitItem(AbstractTree.java:383)
at
org.apache.wicket.markup.html.tree.AbstractTree.visitItemAndChildren(AbstractTree.java:1430)
at
org.apache.wicket.markup.html.tree.AbstractTree.visitItemChildren(AbstractTree.java:1449)
at
org.apache.wicket.markup.html.tree.AbstractTree.visitItemAndChildren(AbstractTree.java:1431)
at
org.apache.wicket.markup.html.tree.AbstractTree.visitItemChildren(AbstractTree.java:1449)
at
org.apache.wicket.markup.html.tree.AbstractTree.visitItemAndChildren(AbstractTree.java:1431)
at
org.apache.wicket.markup.html.tree.AbstractTree.access$4(AbstractTree.java:1428)
at
org.apache.wicket.markup.html.tree.AbstractTree$TreeItemContainer.onRender(AbstractTree.java:390)
at org.apache.wicket.Component.render(Component.java:2256)
at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1240)
at
org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1407)
at
org.apache.wicket.MarkupContainer.renderAssociatedMarkup(MarkupContainer.java:631)
at
org.apache.wicket.markup.html.panel.Panel.onComponentTagBody(Panel.java:112)
at org.apache.wicket.Component.renderComponent(Component.java:2419)
at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1354)
at org.apache.wicket.Component.render(Component.java:2256)
at org.apache.wicket.Component.renderComponent(Component.java:2359)
at
org.apache.wicket.ajax.AjaxRequestTarget.respondComponent(AjaxRequestTarget.java:702)
at
org.apache.wicket.ajax.AjaxRequestTarget.respondComponents(AjaxRequestTarget.java:604)
at
org.apache.wicket.ajax.AjaxRequestTarget.respond(AjaxRequestTarget.java:519)
at
org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:103)
at
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1100)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1169)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1248)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:489)
at
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:194)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at homeiq.hib.web.HibernateFilter.doFilter(HibernateFilter.java:68)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
A possible fix is the following:
In BaseTree.java:
public void renderBefore(Component component)
{
Response response = RequestCycle.get().getResponse();
TreeNode parent = node.getParent();
CharSequence classes[] = new CharSequence[level];
for (int i = 0; i < level; ++i)
{
// FIX
//if (isNodeLast(parent))
if ( parent == null || isNodeLast(parent) ) {
{
classes[i] = "spacer";
}
else
{
classes[i] = "line";
}
parent = parent.getParent();
}
for (int i = level - 1; i >= 0; --i)
{
response.write("<td class=\"" + classes[i] +
"\"><span></span></td>");
}
if (isNodeLast(node))
{
response.write("<td class=\"half-line\">");
}
else
{
response.write("<td class=\"line\">");
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.