From b5297bd7e64dae96b496c7326aad62acb2d6edb7 Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 9 Nov 2019 13:51:30 +0800 Subject: [PATCH] fix bugs --- CHANGELOG.md | 2 ++ .../cn/hutool/core/map/CaseInsensitiveMap.java | 4 ++-- .../main/java/cn/hutool/core/util/IdcardUtil.java | 15 ++++++++------- .../java/cn/hutool/core/util/IdcardUtilTest.java | 7 +++++++ .../java/cn/hutool/extra/servlet/ServletUtil.java | 14 +++++++------- 5 files changed, 26 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ce3cdf4b..e1d284c2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ ### Bug修复 * 【db】 修复MetaUtil.getTableMeta()方法未释放ResultSet的bug(issue#I148GH@Gitee) * 【core】 修复DateUtil.age闰年导致的问题(issue#I14BVN@Gitee) +* 【extra】 修复ServletUtil.getCookie大小写问题(pr#79@Gitee) +* 【core】 修复IdcardUtil.isValidCard18报错问题(issue#I14LTJ@Gitee) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveMap.java b/hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveMap.java index 7ca6fd3b1..0b36ffbbb 100644 --- a/hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveMap.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveMap.java @@ -61,7 +61,7 @@ public class CaseInsensitiveMap extends CustomKeyMap { * @param loadFactor 加载因子 */ public CaseInsensitiveMap(int initialCapacity, float loadFactor) { - super(new HashMap(initialCapacity, loadFactor)); + super(new HashMap<>(initialCapacity, loadFactor)); } //------------------------------------------------------------------------- Constructor end @@ -73,7 +73,7 @@ public class CaseInsensitiveMap extends CustomKeyMap { */ @Override protected Object customKey(Object key) { - if (null != key && key instanceof CharSequence) { + if (key instanceof CharSequence) { key = key.toString().toLowerCase(); } return key; diff --git a/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java index 133a39baf..3829d254b 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.PatternPool; import cn.hutool.core.lang.Validator; import java.util.Date; @@ -137,7 +138,7 @@ public class IdcardUtil { if (idCard.length() != CHINA_ID_MIN_LENGTH) { return null; } - if (Validator.isNumber(idCard)) { + if (ReUtil.isMatch(PatternPool.NUMBERS, idCard)) { // 获取出生年月日 String birthday = idCard.substring(6, 12); Date birthDate = DateUtil.parse(birthday, "yyMMdd"); @@ -168,9 +169,9 @@ public class IdcardUtil { int length = idCard.length(); switch (length) { case 18:// 18位身份证 - return isvalidCard18(idCard); + return isValidCard18(idCard); case 15:// 15位身份证 - return isvalidCard15(idCard); + return isValidCard15(idCard); case 10: {// 10位身份证,港澳台地区 String[] cardval = isValidCard10(idCard); return null != cardval && cardval[2].equals("true"); @@ -211,7 +212,7 @@ public class IdcardUtil { * @param idCard 待验证的身份证 * @return 是否有效的18位身份证 */ - public static boolean isvalidCard18(String idCard) { + public static boolean isValidCard18(String idCard) { if (CHINA_ID_MAX_LENGTH != idCard.length()) { return false; } @@ -225,7 +226,7 @@ public class IdcardUtil { String code17 = idCard.substring(0, 17); // 第18位 char code18 = Character.toLowerCase(idCard.charAt(17)); - if (Validator.isNumber(code17)) { + if (ReUtil.isMatch(PatternPool.NUMBERS, code17)) { // 获取校验位 char val = getCheckCode18(code17); return val == code18; @@ -239,11 +240,11 @@ public class IdcardUtil { * @param idCard 身份编码 * @return 是否合法 */ - public static boolean isvalidCard15(String idCard) { + public static boolean isValidCard15(String idCard) { if (CHINA_ID_MIN_LENGTH != idCard.length()) { return false; } - if (Validator.isNumber(idCard)) { + if (ReUtil.isMatch(PatternPool.NUMBERS, idCard)) { // 省份 String proCode = idCard.substring(0, 2); if (null == cityCodes.get(proCode)) { diff --git a/hutool-core/src/test/java/cn/hutool/core/util/IdcardUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/IdcardUtilTest.java index 8dbe2d1e9..bfda34a53 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/IdcardUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/IdcardUtilTest.java @@ -12,6 +12,7 @@ import org.junit.Test; * */ public class IdcardUtilTest { + private static final String ID_18 = "321083197812162119"; private static final String ID_15 = "150102880730303"; @@ -71,4 +72,10 @@ public class IdcardUtilTest { Assert.assertEquals(1, gender); } + @Test + public void isValidCard18Test(){ + final boolean isValidCard18 = IdcardUtil.isValidCard18("3301022011022000D6"); + Assert.assertFalse(isValidCard18); + } + } diff --git a/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java index 6dde1f479..41e911471 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java @@ -27,6 +27,7 @@ import cn.hutool.core.exceptions.UtilException; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IoUtil; +import cn.hutool.core.map.CaseInsensitiveMap; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.ObjectUtil; @@ -410,13 +411,12 @@ public class ServletUtil { * @return Cookie map */ public static Map readCookieMap(HttpServletRequest httpServletRequest) { - Map cookieMap = new HashMap<>(); - Cookie[] cookies = httpServletRequest.getCookies(); - if (null == cookies) { - return null; - } - for (Cookie cookie : cookies) { - cookieMap.put(cookie.getName(), cookie); + final Map cookieMap = new CaseInsensitiveMap<>(); + final Cookie[] cookies = httpServletRequest.getCookies(); + if (null != cookies) { + for (Cookie cookie : cookies) { + cookieMap.put(cookie.getName(), cookie); + } } return cookieMap; }