java.lang.NullPointerException

There are no available Samebug tips for this exception. Do you have an idea how to solve this issue? A short tip would help users who saw this issue last week.

  • when you has a tree at latest three level. with init with all node is closed. add code to set isOpen = true to all node to expand all tree node. with prev 8.0.0, code do well and all job done at one request. from 8.0.0 it will create node at first request, and do render at second request (second request fire by javascript code and is fire ON_RENDER event) code at tree class, block handle event ON_RENDER: {code:java} for (Treeitem ti : items) { if (ti.isRendered()) continue; int i = ti.getIndex(); if (maxItem == null) { maxItem = ti; maxIndex = i; } if (i > maxIndex) { maxItem = ti; maxIndex = i; } ti.getChildren().clear(); Treechildren parent = (Treechildren) ti.getParent(); Object childNode = getAssociatedNode(ti, this); renderChildren0(renderer, parent, ti, childNode, i); } {code} when render node at level 2. line ti.getChildren().clear(); will clear all child node. so when render not at level 3 code getAssociatedNode(ti, this) thru a NPE. below is code to re-proceduce bug: {code:java} // build tree when init page DefaultTreeNode<String> rootNode = new DefaultTreeNode<>("root", new ArrayList<DefaultTreeNode<String>>()); addChildNode (rootNode, 1, 3); for (TreeNode<String> nodeLv1:rootNode.getChildren()){ addChildNode (nodeLv1, 2, 3); for (TreeNode<String> nodeLv2:nodeLv1.getChildren()){ addChildNode (nodeLv2, 3, 3); } } DefaultTreeModel<String> model = new DefaultTreeModel<>(rootNode); expandAllTree = new Tree(); expandAllTree.setModel(model); this.appendChild(expandAllTree); // function add child node public void addChildNode (TreeNode<String> node, int level, int num){ for (int i = 0; i < num; i++){ DefaultTreeNode<String> child = new DefaultTreeNode<String> (String.valueOf(level) + "_" + String.valueOf(i), new ArrayList<DefaultTreeNode<String>>()); node.add(child); } } // function to expand tree protected void collapseTree (Component treeObject, boolean isOpen){ if (treeObject instanceof Treeitem) { Treeitem treeitem = (Treeitem) treeObject; treeitem.setOpen(isOpen); } Collection<?> com = treeObject.getChildren(); if (com != null) { for (Iterator<?> iterator = com.iterator(); iterator.hasNext();) { collapseTree((Component) iterator.next(), isOpen); } } } // call collapseTree in event handle button collapseTree (expandAllTree, true); {code} below is full NPE message java.lang.NullPointerException at org.zkoss.zul.Tree.getTreeitemPath(Tree.java:2385) at org.zkoss.zul.Tree.getAssociatedNode(Tree.java:2372) at org.zkoss.zul.Tree.service(Tree.java:2749) at org.zkoss.zk.ui.impl.DesktopImpl.service(DesktopImpl.java:713) at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1306) at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:611) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:485) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:494) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685) at org.eclipse.jetty.servlets.PushCacheFilter.doFilter(PushCacheFilter.java:119) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) at org.eclipse.jetty.server.Server.handle(Server.java:517) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) at java.lang.Thread.run(Thread.java:745)
    via by hiepgau,
  • when you has a tree at latest three level. with init with all node is closed. add code to set isOpen = true to all node to expand all tree node. with prev 8.0.0, code do well and all job done at one request. from 8.0.0 it will create node at first request, and do render at second request (second request fire by javascript code and is fire ON_RENDER event) code at tree class, block handle event ON_RENDER: {code:java} for (Treeitem ti : items) { if (ti.isRendered()) continue; int i = ti.getIndex(); if (maxItem == null) { maxItem = ti; maxIndex = i; } if (i > maxIndex) { maxItem = ti; maxIndex = i; } ti.getChildren().clear(); Treechildren parent = (Treechildren) ti.getParent(); Object childNode = getAssociatedNode(ti, this); renderChildren0(renderer, parent, ti, childNode, i); } {code} when render node at level 2. line ti.getChildren().clear(); will clear all child node. so when render not at level 3 code getAssociatedNode(ti, this) thru a NPE. below is code to re-proceduce bug: {code:java} // build tree when init page DefaultTreeNode<String> rootNode = new DefaultTreeNode<>("root", new ArrayList<DefaultTreeNode<String>>()); addChildNode (rootNode, 1, 3); for (TreeNode<String> nodeLv1:rootNode.getChildren()){ addChildNode (nodeLv1, 2, 3); for (TreeNode<String> nodeLv2:nodeLv1.getChildren()){ addChildNode (nodeLv2, 3, 3); } } DefaultTreeModel<String> model = new DefaultTreeModel<>(rootNode); expandAllTree = new Tree(); expandAllTree.setModel(model); this.appendChild(expandAllTree); // function add child node public void addChildNode (TreeNode<String> node, int level, int num){ for (int i = 0; i < num; i++){ DefaultTreeNode<String> child = new DefaultTreeNode<String> (String.valueOf(level) + "_" + String.valueOf(i), new ArrayList<DefaultTreeNode<String>>()); node.add(child); } } // function to expand tree protected void collapseTree (Component treeObject, boolean isOpen){ if (treeObject instanceof Treeitem) { Treeitem treeitem = (Treeitem) treeObject; treeitem.setOpen(isOpen); } Collection<?> com = treeObject.getChildren(); if (com != null) { for (Iterator<?> iterator = com.iterator(); iterator.hasNext();) { collapseTree((Component) iterator.next(), isOpen); } } } // call collapseTree in event handle button collapseTree (expandAllTree, true); {code} below is full NPE message java.lang.NullPointerException at org.zkoss.zul.Tree.getTreeitemPath(Tree.java:2385) at org.zkoss.zul.Tree.getAssociatedNode(Tree.java:2372) at org.zkoss.zul.Tree.service(Tree.java:2749) at org.zkoss.zk.ui.impl.DesktopImpl.service(DesktopImpl.java:713) at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1306) at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:611) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:485) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:494) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685) at org.eclipse.jetty.servlets.PushCacheFilter.doFilter(PushCacheFilter.java:119) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) at org.eclipse.jetty.server.Server.handle(Server.java:517) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) at java.lang.Thread.run(Thread.java:745)
    via by hiepgau,
    • java.lang.NullPointerException at org.zkoss.zul.Tree.getTreeitemPath(Tree.java:2385) at org.zkoss.zul.Tree.getAssociatedNode(Tree.java:2372) at org.zkoss.zul.Tree.service(Tree.java:2749) at org.zkoss.zk.ui.impl.DesktopImpl.service(DesktopImpl.java:713) at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1306) at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:611) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:485) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:494) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685) at org.eclipse.jetty.servlets.PushCacheFilter.doFilter(PushCacheFilter.java:119) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) at org.eclipse.jetty.server.Server.handle(Server.java:517) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) at java.lang.Thread.run(Thread.java:745)
    No Bugmate found.