1212import java .io .IOException ;
1313import java .time .DateTimeException ;
1414import java .time .ZoneId ;
15- import java .time .ZoneOffset ;
1615import java .util .HashMap ;
1716import java .util .Map ;
18- import java .util .Optional ;
1917import java .util .Set ;
2018import java .util .TimeZone ;
2119
22- import static java .util .Optional .ofNullable ;
23-
2420public class ScheduleRegistry {
2521 private final Map <String , Schedule .Parser <? extends Schedule >> parsers = new HashMap <>();
2622
@@ -36,19 +32,13 @@ public Schedule parse(String context, XContentParser parser) throws IOException
3632 String type = null ;
3733 XContentParser .Token token ;
3834 Schedule schedule = null ;
39- TimeZone timeZone = TimeZone . getTimeZone ( ZoneOffset . UTC ) ; // Default to UTC
35+ TimeZone timeZone = null ; // Default to UTC
4036 while ((token = parser .nextToken ()) != XContentParser .Token .END_OBJECT ) {
4137 if (token == XContentParser .Token .FIELD_NAME ) {
42- if (parser .currentName ().equals (ScheduleTrigger .TIMEZONE_FIELD )) {
43- if (schedule != null && schedule instanceof CronnableSchedule == false ) {
44- throw new ElasticsearchParseException (
45- "could not parse schedule. timezone is not supported for [{}] schedule type" ,
46- schedule .type ()
47- );
48- }
49- timeZone = parseTimezone (parser ).orElse (null );
38+ var fieldName = parser .currentName ();
39+ if (fieldName .equals (ScheduleTrigger .TIMEZONE_FIELD )) {
40+ timeZone = parseTimezone (parser );
5041 } else {
51- parser .nextToken ();
5242 type = parser .currentName ();
5343 }
5444 } else if (type != null ) {
@@ -66,12 +56,17 @@ public Schedule parse(String context, XContentParser parser) throws IOException
6656
6757 if (timeZone != null && schedule instanceof CronnableSchedule cronnableSchedule ) {
6858 cronnableSchedule .setTimeZone (timeZone );
59+ } else if (timeZone != null ) {
60+ throw new ElasticsearchParseException (
61+ "could not parse schedule. Timezone is not supported for schedule type [{}]" ,
62+ schedule .type ()
63+ );
6964 }
7065
7166 return schedule ;
7267 }
7368
74- private static Optional < TimeZone > parseTimezone (XContentParser parser ) throws IOException {
69+ private static TimeZone parseTimezone (XContentParser parser ) throws IOException {
7570 TimeZone timeZone ;
7671 XContentParser .Token token = parser .nextToken ();
7772 if (token == XContentParser .Token .VALUE_STRING ) {
@@ -87,7 +82,7 @@ private static Optional<TimeZone> parseTimezone(XContentParser parser) throws IO
8782 token
8883 );
8984 }
90- return ofNullable ( timeZone ) ;
85+ return timeZone ;
9186 }
9287
9388 public Schedule parse (String context , String type , XContentParser parser ) throws IOException {
0 commit comments