[
https://issues.apache.org/jira/browse/TAP5-2745?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17737024#comment-17737024
]
Hudson commented on TAP5-2745:
------------------------------
FAILURE: Integrated in Jenkins build Tapestry » tapestry-java-8-freestyle #19
(See
[https://ci-builds.apache.org/job/Tapestry/job/tapestry-java-8-freestyle/19/])
TAP5-2745: Tree component supports empty TreeModel (ben: rev
83c24a77eeea6e79b8fbccaec465a56c535d39a8)
* (edit)
tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Tree.java
* (edit)
tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeModel.java
* (add)
tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/TreeNoRootsDemo.tml
* (edit)
tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/TreeTests.groovy
* (edit)
tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
* (add)
tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeNoRootsDemo.java
* (edit)
tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java
> 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
> Assignee: Ben Weidig
> Priority: Major
> Labels: patch
> Attachments: TAP5-2745-suggested-fix.patch
>
>
> 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)