diff --git a/CHANGELOG.md b/CHANGELOG.md index 024eed912..1608dfbca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ * 【core 】 CharUtil and StrUtil增加@(pr#1106@Github) * 【extra 】 优化EMOJ查询逻辑(pr#1112@Github) * 【extra 】 优化CollUtil交并集结果集合设置初始化大小,避免扩容成本(pr#1110@Github) +* 【core 】 优化PageUtil彩虹算法(issue#1110@Github) +* 【core 】 IoUtil增加readUtf8方法 +* 【core 】 优化全局邮箱账户初始化逻辑(pr#1114@Github) ### Bug修复 * 【crypto 】 修复SM2验签后无法解密问题(issue#I1W0VP@Gitee) 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 88d94c4c5..5b8df51ed 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 @@ -214,9 +214,14 @@ public class DateUtil extends CalendarUtil { /** * 获得指定日期是所在年份的第几周
+ * 此方法返回值与一周的第一天有关,比如:
+ * 2016年1月3日为周日,如果一周的第一天为周日,那这天是第二周(返回2)
+ * 如果一周的第一天为周一,那这天是第一周(返回1)
+ * 跨年的那个星期得到的结果总是1 * * @param date 日期 * @return 周 + * @see DateTime#setFirstDayOfWeek(Week) */ public static int weekOfYear(Date date) { return DateTime.of(date).weekOfYear(); diff --git a/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java index 6700bb29b..134f377fa 100644 --- a/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java @@ -421,6 +421,18 @@ public class IoUtil { // -------------------------------------------------------------------------------------- read start + /** + * 从流中读取UTF8编码的内容 + * + * @param in 输入流 + * @return 内容 + * @throws IORuntimeException IO异常 + * @since 5.4.4 + */ + public static String readUtf8(InputStream in) throws IORuntimeException { + return read(in, CharsetUtil.CHARSET_UTF_8); + } + /** * 从流中读取内容 * @@ -1251,7 +1263,7 @@ public class IoUtil { * @throws IORuntimeException IO异常 * @since 5.4.0 */ - public static long checksumValue(InputStream in, Checksum checksum){ + public static long checksumValue(InputStream in, Checksum checksum) { return checksum(in, checksum).getValue(); } } diff --git a/hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Escape.java b/hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Escape.java index e44b818b0..6b141626f 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Escape.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Escape.java @@ -5,6 +5,8 @@ import cn.hutool.core.text.replacer.ReplacerChain; /** * HTML4的ESCAPE + * 参考:Commons Lang3 + * * @author looly * */ diff --git a/hutool-core/src/main/java/cn/hutool/core/util/PageUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/PageUtil.java index b1e7081fc..59670070d 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/PageUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/PageUtil.java @@ -160,9 +160,10 @@ public class PageUtil { * @return 分页条 */ public static int[] rainbow(int pageNo, int totalPage, int displayCount) { - boolean isEven = displayCount % 2 == 0; - int left = displayCount / 2; - int right = displayCount / 2; + // displayCount % 2 + boolean isEven = (displayCount & 1) == 0; + int left = displayCount >> 1; + int right = displayCount >> 1; int length = displayCount; if (isEven) { diff --git a/hutool-core/src/test/java/cn/hutool/core/util/EscapeUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/EscapeUtilTest.java index 238667630..76cb16472 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/EscapeUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/EscapeUtilTest.java @@ -37,4 +37,11 @@ public class EscapeUtilTest { String unescape = EscapeUtil.unescape(escape); Assert.assertEquals(str, unescape); } + + @Test + public void escapeSinleQuotesTest(){ + String str = "'some text with single quotes'"; + final String s = EscapeUtil.escapeHtml4(str); + Assert.assertEquals(str, s); + } } diff --git a/hutool-extra/src/main/java/cn/hutool/extra/mail/GlobalMailAccount.java b/hutool-extra/src/main/java/cn/hutool/extra/mail/GlobalMailAccount.java index 417441b9f..ca9ab1796 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/mail/GlobalMailAccount.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/mail/GlobalMailAccount.java @@ -38,7 +38,7 @@ public enum GlobalMailAccount { for (String mailSettingPath : MailAccount.MAIL_SETTING_PATHS) { try { return new MailAccount(mailSettingPath); - } catch (IORuntimeException e) { + } catch (IORuntimeException ignore) { //ignore } } diff --git a/hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java b/hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java index d2dfc74b6..b13120f25 100644 --- a/hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java +++ b/hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java @@ -93,7 +93,7 @@ public class SoapClient extends HttpBase { * 创建SOAP客户端,默认使用soap1.1版本协议 * * @param url WS的URL地址 - * @return {@link SoapClient} + * @return this */ public static SoapClient create(String url) { return new SoapClient(url); @@ -104,7 +104,7 @@ public class SoapClient extends HttpBase { * * @param url WS的URL地址 * @param protocol 协议,见{@link SoapProtocol} - * @return {@link SoapClient} + * @return this */ public static SoapClient create(String url, SoapProtocol protocol) { return new SoapClient(url, protocol); @@ -116,7 +116,7 @@ public class SoapClient extends HttpBase { * @param url WS的URL地址 * @param protocol 协议,见{@link SoapProtocol} * @param namespaceURI 方法上的命名空间URI - * @return {@link SoapClient} + * @return this * @since 4.5.6 */ public static SoapClient create(String url, SoapProtocol protocol, String namespaceURI) {