Robert Hailey created TAP5-2745:
-----------------------------------

             Summary: Tree component with empty list of root nodes causes 
NullPointerException
                 Key: TAP5-2745
                 URL: https://issues.apache.org/jira/browse/TAP5-2745
             Project: Tapestry 5
          Issue Type: Bug
          Components: tapestry-core
    Affects Versions: 5.8.2
            Reporter: Robert Hailey


An edge case, perhaps, but it seems as though attempting to create a Tree 
component with no root nodes does not produce an empty list, but throws a null 
pointer exception.
{noformat}
java.lang.NullPointerException: Cannot invoke 
"org.apache.tapestry5.tree.TreeNode.getValue()" because "this.val$node" is null
    at org.apache.tapestry5.corelib.components.Tree$4.render(Tree.java:169) 
~[tapestry-core-5.8.2.jar:?]
    at 
org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:79)
 ~[tapestry-core-5.8.2.jar:?]
    at 
org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
 ~[tapestry-core-5.8.2.jar:?]
{noformat}
To the best of my understanding, the fix is straight forward:
{noformat}
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Tree.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Tree.java
@@ -265,7 +265,12 @@ public class Tree
             writer.element("ul");
             queue.push(RENDER_CLOSE_TAG);
 
-            queue.push(toRenderCommand(nodes.first(), true));
+            TreeNode first = nodes.first();
+
+            if (first != null)
+            {
+                queue.push(toRenderCommand(first, true));
+            }
 
             nodes.rest().each(new Worker<TreeNode>()
             {
{noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to