From d3d406a1295dd738f4cd5947fbde5bc58fe57058 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 31 May 2023 19:01:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DTreeUtil.getParentsName()?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=88=B0=E7=9A=84=E8=B7=AF=E5=BE=84=E9=9B=86?= =?UTF-8?q?=E5=90=88=E4=B8=AD=E5=AD=98=E5=9C=A8=E5=80=BC=E4=B8=BAnull?= =?UTF-8?q?=E7=9A=84=E8=B7=AF=E5=BE=84=E5=90=8D=E7=A7=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 +- .../cn/hutool/core/lang/tree/TreeUtil.java | 7 ++- .../core/lang/tree/IssueI795INTest.java | 46 +++++++++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100755 hutool-core/src/test/java/cn/hutool/core/lang/tree/IssueI795INTest.java 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()); + } +}