From 46fafeeb868f7b7682fde28c8aa292006ca93ce4 Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 22 Sep 2020 09:35:07 +0800 Subject: [PATCH] add method --- CHANGELOG.md | 3 ++- .../java/cn/hutool/core/date/DateUtil.java | 24 ----------------- .../main/java/cn/hutool/core/net/NetUtil.java | 27 ++++++++++++------- .../cn/hutool/core/date/DateUtilTest.java | 9 ------- .../crypto/test/asymmetric/SM2Test.java | 14 ++++++++++ .../main/java/cn/hutool/setting/Setting.java | 18 ++++++++++--- 6 files changed, 48 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d38e344df..67e7085c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,10 +3,11 @@ ------------------------------------------------------------------------------------------------------------- -# 5.4.4 (2020-09-19) +# 5.4.4 (2020-09-22) ### 新特性 * 【core 】 ServiceLoaderUtil改为使用contextClassLoader(pr#183@Gitee) +* 【core 】 NetUtil增加getLocalHostName(pr#1103@Github) ### Bug修复 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 460583fae..88d94c4c5 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 @@ -1383,30 +1383,6 @@ public class DateUtil extends CalendarUtil { return new DateBetween(beginDate, endDate).betweenMonth(isReset); } - /** - * 获取两个日期之间所有的月份 - * @param start 开始时间 - * @param end 结束时间 - * @return List 格式为yyyMM格式的月份列表 包含收尾 - * @since 5.4.4 - */ - public static List getBetweenMonths(Date start, Date end) { - List result = new ArrayList<>(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM"); - Calendar tempStart = Calendar.getInstance(); - tempStart.setTime(start); - // 加一个月,保证开始和结束同步时返回当月 - tempStart.add(Calendar.MONTH, 1); - Calendar tempEnd = Calendar.getInstance(); - tempEnd.setTime(end); - result.add(sdf.format(start)); - while (tempStart.before(tempEnd) || tempStart.equals(tempEnd)) { - result.add(sdf.format(tempStart.getTime())); - tempStart.add(Calendar.MONTH, 1); - } - return result; - } - /** * 计算两个日期相差年数
* 在非重置情况下,如果起始日期的月小于结束日期的月,年数要少算1(不足1年) diff --git a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java index 829d7697b..a27af3716 100644 --- a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java @@ -42,7 +42,8 @@ import java.util.TreeSet; public class NetUtil { public final static String LOCAL_IP = "127.0.0.1"; - public static String LOCAL_HOSTNAME = ""; + + public static String localhostName; /** * 默认最小端口,1024 @@ -535,20 +536,26 @@ public class NetUtil { } /** - * 获取主机名称 + * 获取主机名称,一次获取会缓存名称 + * * @return 主机名称 * @since 5.4.4 */ public static String getLocalHostName() { - try { - if (StrUtil.isNotBlank(LOCAL_HOSTNAME)) { - return LOCAL_HOSTNAME; - } - LOCAL_HOSTNAME = InetAddress.getLocalHost().getHostName(); - } catch (UnknownHostException e) { - LOCAL_HOSTNAME = getLocalhostStr(); + if (StrUtil.isNotBlank(localhostName)) { + return localhostName; } - return LOCAL_HOSTNAME; + + final InetAddress localhost = getLocalhost(); + if(null != localhost){ + String name = localhost.getHostName(); + if(StrUtil.isEmpty(name)){ + name = localhost.getHostAddress(); + } + localhostName = name; + } + + return localhostName; } /** 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 bad0f72a5..8d8d00213 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 @@ -3,7 +3,6 @@ package cn.hutool.core.date; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.BetweenFormater.Level; import cn.hutool.core.date.format.FastDateFormat; -import cn.hutool.core.lang.Console; import org.junit.Assert; import org.junit.Test; @@ -820,12 +819,4 @@ public class DateUtilTest { final DateTime parse = DateUtil.parse(dt); Assert.assertEquals("2020-06-03 12:32:12", parse.toString()); } - - @Test - public void getBetweenMonthsTest() { - List months1 = DateUtil.getBetweenMonths(new Date(), new Date()); - Assert.assertEquals(1, months1.size()); - List months = DateUtil.getBetweenMonths(DateUtil.parse("2020-05-08 3:12:3"), new Date()); - Assert.assertEquals(5, months.size()); - } } diff --git a/hutool-crypto/src/test/java/cn/hutool/crypto/test/asymmetric/SM2Test.java b/hutool-crypto/src/test/java/cn/hutool/crypto/test/asymmetric/SM2Test.java index 40d5f12f5..42e2bcb97 100644 --- a/hutool-crypto/src/test/java/cn/hutool/crypto/test/asymmetric/SM2Test.java +++ b/hutool-crypto/src/test/java/cn/hutool/crypto/test/asymmetric/SM2Test.java @@ -229,4 +229,18 @@ public class SM2Test { Assert.assertEquals(data, decryptStr); } + @Test + public void encryptAndSignTest(){ + SM2 sm2 = SmUtil.sm2(); + + String src = "Sm2Test"; + byte[] data = sm2.encrypt(src, KeyType.PublicKey); + byte[] sign = sm2.sign(src.getBytes()); + + Assert.assertTrue(sm2.verify( src.getBytes(), sign)); + + byte[] dec = sm2.decrypt(data, KeyType.PrivateKey); + Assert.assertArrayEquals(dec, src.getBytes()); + } + } diff --git a/hutool-setting/src/main/java/cn/hutool/setting/Setting.java b/hutool-setting/src/main/java/cn/hutool/setting/Setting.java index f6004fa7b..44eaff7ce 100644 --- a/hutool-setting/src/main/java/cn/hutool/setting/Setting.java +++ b/hutool-setting/src/main/java/cn/hutool/setting/Setting.java @@ -164,6 +164,18 @@ public class Setting extends AbsSetting implements Map { Assert.notNull(url, "Null setting url define!"); this.init(new UrlResource(url), charset, isUseVariable); } + + /** + * 构造 + * + * @param resource Setting的Resource + * @param charset 字符集 + * @param isUseVariable 是否使用变量 + * @since 5.4.4 + */ + public Setting(Resource resource, Charset charset, boolean isUseVariable) { + this.init(resource, charset, isUseVariable); + } // ------------------------------------------------------------------------------------- Constructor end /** @@ -176,7 +188,7 @@ public class Setting extends AbsSetting implements Map { */ public boolean init(Resource resource, Charset charset, boolean isUseVariable) { if (resource == null) { - throw new NullPointerException("Null setting url define!"); + throw new NullPointerException("Null setting resource define!"); } this.settingUrl = resource.getUrl(); this.charset = charset; @@ -319,10 +331,10 @@ public class Setting extends AbsSetting implements Map { } /** - * 获取group分组下所有配置键值对,组成新的{@link Setting} + * 获取group分组下所有配置键值对,组成新的Setting * * @param group 分组 - * @return {@link Setting} + * @return Setting */ public Setting getSetting(String group) { final Setting setting = new Setting();