From 1f66719187151d1a1e93406d6aa5b8d847fd438e Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 15 Aug 2023 11:59:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96PatternParser=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=B9=B4=E7=9A=84=E6=AD=A5=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cron/pattern/parser/PartParser.java | 8 +++++- .../hutool/cron/pattern/IssueI7SMP7Test.java | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100755 hutool-cron/src/test/java/org/dromara/hutool/cron/pattern/IssueI7SMP7Test.java diff --git a/hutool-cron/src/main/java/org/dromara/hutool/cron/pattern/parser/PartParser.java b/hutool-cron/src/main/java/org/dromara/hutool/cron/pattern/parser/PartParser.java index d6a25a522..a2178cb75 100644 --- a/hutool-cron/src/main/java/org/dromara/hutool/cron/pattern/parser/PartParser.java +++ b/hutool-cron/src/main/java/org/dromara/hutool/cron/pattern/parser/PartParser.java @@ -84,7 +84,7 @@ public class PartParser { } final List values = parseArray(value); - if (values.size() == 0) { + if (values.isEmpty()) { throw new CronException("Invalid part value: [{}]", value); } @@ -263,6 +263,12 @@ public class PartParser { i = Week.SUNDAY.ordinal(); } + // issue#I7SMP7 + // 年的形式中,如果类似于*/2,不做范围检查 + if(Part.YEAR.equals(this.part)){ + return i; + } + return part.checkValue(i); } diff --git a/hutool-cron/src/test/java/org/dromara/hutool/cron/pattern/IssueI7SMP7Test.java b/hutool-cron/src/test/java/org/dromara/hutool/cron/pattern/IssueI7SMP7Test.java new file mode 100755 index 000000000..8280ab761 --- /dev/null +++ b/hutool-cron/src/test/java/org/dromara/hutool/cron/pattern/IssueI7SMP7Test.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * https://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package org.dromara.hutool.cron.pattern; + +import org.dromara.hutool.cron.pattern.matcher.PatternMatcher; +import org.dromara.hutool.cron.pattern.parser.PatternParser; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.List; + +public class IssueI7SMP7Test { + @Test + public void parseTest() { + final List parse = PatternParser.parse("0 0 3 1 1 ? */1"); + Assertions.assertNotNull(parse); + } +}