diff --git a/CHANGELOG.md b/CHANGELOG.md index d1aade0e7..a835bd400 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,13 +2,14 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.20(2023-05-29) +# 5.8.20(2023-05-31) ### 🐣新特性 * 【core 】 UrlQuery增加setStrict方法,区分是否严格模式(issue#I78PB1@Gitee) * 【poi 】 添加系列方法writeCol,以支持按列输出(pr#1003@Gitee) ### 🐞Bug修复 +* 【core 】 修复TreeUtil.getParentsName()获取到的路径集合中存在值为null的路径名称问题(issue#I795IN@Gitee) ------------------------------------------------------------------------------------------------------------- # 5.8.19(2023-05-27) diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/tree/TreeUtil.java b/hutool-core/src/main/java/cn/hutool/core/lang/tree/TreeUtil.java index fb69fb2b8..710497e03 100755 --- a/hutool-core/src/main/java/cn/hutool/core/lang/tree/TreeUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/tree/TreeUtil.java @@ -218,9 +218,14 @@ public class TreeUtil { } Tree parent = node.getParent(); + CharSequence name; while (null != parent) { - result.add(parent.getName()); + name = parent.getName(); parent = parent.getParent(); + if(null != name || null != parent){ + // issue#I795IN,根节点的null不加入 + result.add(name); + } } return result; } diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/tree/IssueI795INTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/tree/IssueI795INTest.java new file mode 100755 index 000000000..4aeb29753 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/lang/tree/IssueI795INTest.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package cn.hutool.core.lang.tree; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +public class IssueI795INTest { + static List> all_menu=new ArrayList<>(); + static { + /* + * root + * /module-A + * /module-A-menu-1 + * /module-B + * /module-B-menu-1 + * /module-B-menu-2 + */ + all_menu.add(new TreeNode<>(1L, 0L, "root", 0L)); + all_menu.add(new TreeNode<>(2L,1L,"module-A",0L)); + all_menu.add(new TreeNode<>(3L,1L,"module-B",0L)); + all_menu.add(new TreeNode<>(4L,2L,"module-A-menu-1",0L)); + all_menu.add(new TreeNode<>(5L,3L,"module-B-menu-1",0L)); + all_menu.add(new TreeNode<>(6L,3L,"module-B-menu-2",0L)); + } + + @Test + public void getParentsNameTest() { + final Tree tree = TreeUtil.buildSingle(all_menu, 0L); + final Tree chid = tree.getChildren().get(0).getChildren().get(0).getChildren().get(0); + Assert.assertEquals("[module-A-menu-1, module-A, root]", chid.getParentsName(true).toString()); + } +}