You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Matej Knopp (JIRA)" <ji...@apache.org> on 2007/12/20 16:50:43 UTC

[jira] Commented: (WICKET-1226) Deleting a treenode results in NPE

    [ https://issues.apache.org/jira/browse/WICKET-1226?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12553698 ] 

Matej Knopp commented on WICKET-1226:
-------------------------------------

Hi, I've committed the suggested fix. Can you please try if it helps?

> 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
>            Assignee: Matej Knopp
>             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.