diff --git a/CHANGELOG.md b/CHANGELOG.md index 8122799e0..f9b4ca8ed 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,12 +3,15 @@ ------------------------------------------------------------------------------------------------------------- -# 5.8.2.M1 (2022-05-18) +# 5.8.2.M1 (2022-05-20) ### 🐣新特性 +* 【core 】 BeanUtil拷贝对象增加空检查(issue#I58CJ3@Gitee) ### 🐞Bug修复 * 【extra 】 修复SshjSftp初始化未能代入端口配置问题(issue#2333@Github) * 【core 】 修复Convert.numberToSimple转换问题(issue#2334@Github) +* 【core 】 修复TemporalAccessorConverter导致的转换问题(issue#2341@Github) +* 【core 】 修复TemporalAccessorConverter导致的转换问题(issue#2341@Github) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java index 84dee2e01..401f1ee3e 100755 --- a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java @@ -728,6 +728,9 @@ public class BeanUtil { * @return 目标对象 */ public static T copyProperties(Object source, Class tClass, String... ignoreProperties) { + if(null == source){ + return null; + } T target = ReflectUtil.newInstanceIfPossible(tClass); copyProperties(source, target, CopyOptions.create().setIgnoreProperties(ignoreProperties)); return target; @@ -765,6 +768,9 @@ public class BeanUtil { * @param copyOptions 拷贝选项,见 {@link CopyOptions} */ public static void copyProperties(Object source, Object target, CopyOptions copyOptions) { + if(null == source){ + return; + } BeanCopier.create(source, target, ObjectUtil.defaultIfNull(copyOptions, CopyOptions::create)).copy(); } diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/copier/BeanCopier.java b/hutool-core/src/main/java/cn/hutool/core/bean/copier/BeanCopier.java index 8d3fd418f..e7a5b47fe 100755 --- a/hutool-core/src/main/java/cn/hutool/core/bean/copier/BeanCopier.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/copier/BeanCopier.java @@ -1,5 +1,6 @@ package cn.hutool.core.bean.copier; +import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.copier.Copier; import java.io.Serializable; @@ -62,6 +63,8 @@ public class BeanCopier implements Copier, Serializable { * @param copyOptions 拷贝属性选项 */ public BeanCopier(Object source, T target, Type targetType, CopyOptions copyOptions) { + Assert.notNull(source, "Source bean must be not null!"); + Assert.notNull(target, "Target bean must be not null!"); Copier copier; if (source instanceof Map) { if (target instanceof Map) { diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/impl/TemporalAccessorConverter.java b/hutool-core/src/main/java/cn/hutool/core/convert/impl/TemporalAccessorConverter.java index 46c5384e8..367d67916 100644 --- a/hutool-core/src/main/java/cn/hutool/core/convert/impl/TemporalAccessorConverter.java +++ b/hutool-core/src/main/java/cn/hutool/core/convert/impl/TemporalAccessorConverter.java @@ -84,6 +84,12 @@ public class TemporalAccessorConverter extends AbstractConverter getTargetType() { + return (Class) this.targetType; + } + @Override protected TemporalAccessor convertInternal(Object value) { if (value instanceof Long) { diff --git a/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java index 60f602fe0..06526b7f5 100755 --- a/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java @@ -567,6 +567,11 @@ public class BeanUtilTest { Assert.assertNull(newFood.getCode()); } + @Test + public void copyNullTest() { + Assert.assertNull(BeanUtil.copyProperties(null, Food.class)); + } + @Test public void copyBeanPropertiesFilterTest() { Food info = new Food(); diff --git a/hutool-core/src/test/java/cn/hutool/core/convert/ConvertTest.java b/hutool-core/src/test/java/cn/hutool/core/convert/ConvertTest.java index 18cd78b14..89ab9421f 100755 --- a/hutool-core/src/test/java/cn/hutool/core/convert/ConvertTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/convert/ConvertTest.java @@ -15,6 +15,8 @@ import org.junit.Test; import java.io.Serializable; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; @@ -383,4 +385,11 @@ public class ConvertTest { float b = Convert.toFloat(a); Assert.assertEquals(a, b, 5); } + + @Test + public void localDateTimeToLocalDateTest(){ + final LocalDateTime localDateTime = LocalDateTime.now(); + final LocalDate convert = Convert.convert(LocalDate.class, localDateTime); + Assert.assertEquals(localDateTime.toLocalDate(), convert); + } } diff --git a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java index f3a8e4859..72551904f 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java @@ -439,6 +439,9 @@ public class NumberUtilTest { Assert.assertFalse(NumberUtil.isEven(a[4])); } - + @Test + public void divIntegerTest(){ + Assert.assertEquals(1001013, NumberUtil.div(100101300, (Number) 100).intValue()); + } }