From b69ae38829521c5875b291963abb2ea7f89e9a81 Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 20 Aug 2022 01:06:37 +0800 Subject: [PATCH] =?UTF-8?q?Tree=20add=20=E7=B1=BB=E5=9E=8B=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../cn/hutool/core/lang/tree/TreeBuilder.java | 15 ++-------- .../hutool/core/lang/tree/Issues2538Test.java | 29 ++----------------- 3 files changed, 6 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0ac18cc2..fefbf5eeb 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ * 【core 】 DateUtil.parseUTC支持只有时分的格式(issue#I5M6DP@Gitee) * 【core 】 NumberUtil.parseInt忽略科学计数法(issue#I5M55F@Gitee) * 【core 】 IterUtil.getFirst优化(pr#753@Gitee) +* 【core 】 增加Tree add 类型校验(pr#2542@Github) * ### 🐞Bug修复 * 【http 】 修复https下可能的Patch、Get请求失效问题(issue#I3Z3DH@Gitee) diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/tree/TreeBuilder.java b/hutool-core/src/main/java/cn/hutool/core/lang/tree/TreeBuilder.java index c315de921..cbc64fde0 100755 --- a/hutool-core/src/main/java/cn/hutool/core/lang/tree/TreeBuilder.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/tree/TreeBuilder.java @@ -158,17 +158,7 @@ public class TreeBuilder implements Builder> { * @return this */ public TreeBuilder append(List list, NodeParser nodeParser) { - checkBuilt(); - - final TreeNodeConfig config = this.root.getConfig(); - final Map> map = new LinkedHashMap<>(list.size(), 1); - Tree node; - for (T t : list) { - node = new Tree<>(config); - nodeParser.parse(t, node); - map.put(node.getId(), node); - } - return append(map); + return append(list, null, nodeParser); } /** @@ -178,6 +168,7 @@ public class TreeBuilder implements Builder> { * @param Bean类型 * @param nodeParser 节点转换器,用于定义一个Bean如何转换为Tree节点 * @return this + * @since 5.8.6 */ public TreeBuilder append(List list, E rootId, NodeParser nodeParser) { checkBuilt(); @@ -188,7 +179,7 @@ public class TreeBuilder implements Builder> { for (T t : list) { node = new Tree<>(config); nodeParser.parse(t, node); - if (!rootId.getClass().equals(node.getId().getClass())) { + if (null != rootId && false == rootId.getClass().equals(node.getId().getClass())) { throw new IllegalArgumentException("rootId type is node.getId().getClass()!"); } map.put(node.getId(), node); diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/tree/Issues2538Test.java b/hutool-core/src/test/java/cn/hutool/core/lang/tree/Issues2538Test.java index 58c2ccc74..c046f71f5 100644 --- a/hutool-core/src/test/java/cn/hutool/core/lang/tree/Issues2538Test.java +++ b/hutool-core/src/test/java/cn/hutool/core/lang/tree/Issues2538Test.java @@ -1,5 +1,6 @@ package cn.hutool.core.lang.tree; +import lombok.Data; import org.junit.Assert; import java.util.ArrayList; @@ -56,36 +57,10 @@ public class Issues2538Test { } } + @Data public static class Test { - private long id; - private long parentId; - private String name; - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - - public long getParentId() { - return parentId; - } - - public void setParentId(long parentId) { - this.parentId = parentId; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } } }