Looly 6 years ago
parent
commit
b5297bd7e6

+ 2 - 0
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)
 
 -------------------------------------------------------------------------------------------------------------
 

+ 2 - 2
hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveMap.java

@@ -61,7 +61,7 @@ public class CaseInsensitiveMap<K, V> extends CustomKeyMap<K, V> {
 	 * @param loadFactor 加载因子
 	 */
 	public CaseInsensitiveMap(int initialCapacity, float loadFactor) {
-		super(new HashMap<K, V>(initialCapacity, loadFactor));
+		super(new HashMap<>(initialCapacity, loadFactor));
 	}
 	//------------------------------------------------------------------------- Constructor end
 
@@ -73,7 +73,7 @@ public class CaseInsensitiveMap<K, V> extends CustomKeyMap<K, V> {
 	 */
 	@Override
 	protected Object customKey(Object key) {
-		if (null != key && key instanceof CharSequence) {
+		if (key instanceof CharSequence) {
 			key = key.toString().toLowerCase();
 		}
 		return key;

+ 8 - 7
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)) {

+ 7 - 0
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);
+	}
+
 }

+ 7 - 7
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<String, Cookie> readCookieMap(HttpServletRequest httpServletRequest) {
-		Map<String, Cookie> cookieMap = new HashMap<>();
-		Cookie[] cookies = httpServletRequest.getCookies();
-		if (null == cookies) {
-			return null;
-		}
-		for (Cookie cookie : cookies) {
-			cookieMap.put(cookie.getName(), cookie);
+		final Map<String, Cookie> cookieMap = new CaseInsensitiveMap<>();
+		final Cookie[] cookies = httpServletRequest.getCookies();
+		if (null != cookies) {
+			for (Cookie cookie : cookies) {
+				cookieMap.put(cookie.getName(), cookie);
+			}
 		}
 		return cookieMap;
 	}