From bd4a0a075f45e7d654ecdc8e59fa10e9c6ec035c Mon Sep 17 00:00:00 2001 From: Looly Date: Sun, 10 May 2020 00:06:11 +0800 Subject: [PATCH] fix bug --- CHANGELOG.md | 2 ++ .../cn/hutool/core/collection/CollUtil.java | 10 ++++++- .../java/cn/hutool/core/date/DateUtil.java | 17 +++++++++-- .../java/cn/hutool/core/util/XmlUtil.java | 17 ++++++++++- .../hutool/core/collection/CollUtilTest.java | 6 ++-- .../cn/hutool/core/date/DateUtilTest.java | 9 ++++++ .../java/cn/hutool/core/util/XmlUtilTest.java | 30 +++++++++++++++++++ 7 files changed, 85 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 191631139..268f22d9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ * 【extra 】 修复Ftp设置超时问题(issue#I1GMTQ@Gitee) * 【core 】 修复TreeUtil根据id查找子节点时的NPE问题(pr#120@Gitee) * 【core 】 修复BeanUtil.copyProperties中Alias注解无效问题(issue#I1GK3M@Gitee) +* 【core 】 修复CollUtil.containsAll空集合判断问题(issue#I1G9DE@Gitee) +* 【core 】 修复XmlUtil.xmlToBean失败问题(issue#865@Github) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java index b2f3a74f6..3efe98bfa 100644 --- a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java @@ -307,7 +307,15 @@ public class CollUtil { * @since 4.5.12 */ public static boolean containsAll(Collection coll1, Collection coll2) { - if (isEmpty(coll1) || isEmpty(coll2) || coll1.size() < coll2.size()) { + if(isEmpty(coll1)){ + return isEmpty(coll2); + } + + if(isEmpty(coll2)){ + return true; + } + + if (coll1.size() < coll2.size()) { return false; } diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java index 6bd5f0bfd..ae35f4c3f 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java @@ -714,7 +714,14 @@ public class DateUtil extends CalendarUtil { } /** - * 格式yyyy-MM-dd HH:mm:ss + * 解析日期时间字符串,格式支持: + * + *
+	 * yyyy-MM-dd HH:mm:ss
+	 * yyyy/MM/dd HH:mm:ss
+	 * yyyy.MM.dd HH:mm:ss
+	 * yyyy年MM月dd日 HH:mm:ss
+	 * 
* * @param dateString 标准形式的时间字符串 * @return 日期对象 @@ -725,7 +732,13 @@ public class DateUtil extends CalendarUtil { } /** - * 解析格式为yyyy-MM-dd的日期,忽略时分秒 + * 解析日期字符串,忽略时分秒,支持的格式包括: + *
+	 * yyyy-MM-dd
+	 * yyyy/MM/dd
+	 * yyyy.MM.dd
+	 * yyyy年MM月dd日
+	 * 
* * @param dateString 标准形式的日期字符串 * @return 日期对象 diff --git a/hutool-core/src/main/java/cn/hutool/core/util/XmlUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/XmlUtil.java index c7e6bd7bf..366f81763 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/XmlUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/XmlUtil.java @@ -835,7 +835,11 @@ public class XmlUtil { * @since 5.2.4 */ public static T xmlToBean(Node node, Class bean) { - return BeanUtil.toBean(xmlToMap(node), bean); + final Map map = xmlToMap(node); + if(null != map && map.size() == 1){ + return BeanUtil.toBean(map.get(bean.getSimpleName()), bean); + } + return BeanUtil.toBean(map, bean); } /** @@ -1042,6 +1046,17 @@ public class XmlUtil { return doc; } + /** + * 将Bean转换为XML + * + * @param bean Bean对象 + * @return XML + * @since 5.3.4 + */ + public static Document beanToXml(Object bean) { + return beanToXml(bean, null); + } + /** * 将Bean转换为XML * diff --git a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java index 114265d91..c3b98bd01 100644 --- a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java @@ -36,7 +36,6 @@ public class CollUtilTest { @Test public void isNotEmptyTest(){ Assert.assertFalse(CollUtil.isNotEmpty((Collection) null)); - ; } @Test @@ -589,8 +588,11 @@ public class CollUtilTest { public void containsAllTest() { ArrayList list1 = CollUtil.newArrayList(1, 2, 3, 4, 5); ArrayList list2 = CollUtil.newArrayList(5, 3, 1); - Assert.assertTrue(CollUtil.containsAll(list1, list2)); + + ArrayList list3 = CollUtil.newArrayList(1); + ArrayList list4 = CollUtil.newArrayList(); + Assert.assertTrue(CollUtil.containsAll(list3, list4)); } @Test diff --git a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java index d769e06b9..73af5b1f6 100644 --- a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.BetweenFormater.Level; import cn.hutool.core.date.format.FastDateFormat; import org.junit.Assert; +import org.junit.Ignore; import org.junit.Test; import java.text.SimpleDateFormat; @@ -379,6 +380,14 @@ public class DateUtilTest { Assert.assertEquals("2019-06-01 19:45:43", dateTime.toString()); } + @Test + @Ignore + public void parseTest8() { + String str = "2020-04-24 9:00:00"; + DateTime dateTime = DateUtil.parse(str); + Assert.assertEquals("2019-06-01 19:45:43", dateTime.toString()); + } + @Test public void parseAndOffsetTest() { // 检查UTC时间偏移是否准确 diff --git a/hutool-core/src/test/java/cn/hutool/core/util/XmlUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/XmlUtilTest.java index 0838cca6b..44bf1afbf 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/XmlUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/XmlUtilTest.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.map.MapBuilder; import cn.hutool.core.map.MapUtil; +import lombok.Data; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; @@ -174,4 +175,33 @@ public class XmlUtilTest { document,XPathConstants.STRING);// Assert.assertEquals("2020/04/15 21:01:21", value); } + + @Test + public void xmlToBeanTest(){ + final TestBean testBean = new TestBean(); + testBean.setReqCode("1111"); + testBean.setAccountName("账户名称"); + testBean.setOperator("cz"); + testBean.setProjectCode("123"); + testBean.setBankCode("00001"); + + final Document doc = XmlUtil.beanToXml(testBean); + Assert.assertEquals(TestBean.class.getSimpleName(), doc.getDocumentElement().getTagName()); + + final TestBean testBean2 = XmlUtil.xmlToBean(doc, TestBean.class); + Assert.assertEquals(testBean.getReqCode(), testBean2.getReqCode()); + Assert.assertEquals(testBean.getAccountName(), testBean2.getAccountName()); + Assert.assertEquals(testBean.getOperator(), testBean2.getOperator()); + Assert.assertEquals(testBean.getProjectCode(), testBean2.getProjectCode()); + Assert.assertEquals(testBean.getBankCode(), testBean2.getBankCode()); + } + + @Data + public static class TestBean{ + private String ReqCode; + private String AccountName; + private String Operator; + private String ProjectCode; + private String BankCode; + } }