Skip to content

Commit 361d500

Browse files
committed
Revert "migrate to java.time"
This reverts commit e91515c.
1 parent 4bd175c commit 361d500

File tree

2 files changed

+206
-118
lines changed

2 files changed

+206
-118
lines changed

src/main/java/org/htmlunit/javascript/proxyautoconfig/ProxyAutoConfig.java

Lines changed: 78 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,10 @@
1515
package org.htmlunit.javascript.proxyautoconfig;
1616

1717
import java.net.InetAddress;
18-
import java.time.LocalDate;
19-
import java.time.LocalTime;
20-
import java.time.ZoneId;
21-
import java.time.ZonedDateTime;
22-
import java.time.format.DateTimeFormatter;
23-
import java.time.format.DateTimeParseException;
18+
import java.text.SimpleDateFormat;
19+
import java.util.Calendar;
2420
import java.util.Locale;
21+
import java.util.TimeZone;
2522

2623
import org.apache.commons.lang3.StringUtils;
2724
import org.htmlunit.javascript.HtmlUnitScriptable;
@@ -44,9 +41,6 @@
4441
public final class ProxyAutoConfig extends HtmlUnitScriptable {
4542

4643
private static final String TIMEZONE_GMT = "GMT";
47-
private static final ZoneId GMT_ZONE = ZoneId.of(TIMEZONE_GMT);
48-
private static final DateTimeFormatter WEEKDAY_FORMATTER = DateTimeFormatter.ofPattern("EEE", Locale.ROOT);
49-
private static final DateTimeFormatter MONTH_FORMATTER = DateTimeFormatter.ofPattern("MMM", Locale.ROOT);
5044

5145
private ProxyAutoConfig() {
5246
super();
@@ -182,25 +176,25 @@ public static boolean shExpMatch(final String str, final String shexp) {
182176
*/
183177
@JsxFunction
184178
public static boolean weekdayRange(final String wd1, Object wd2, final Object gmt) {
185-
ZoneId zoneId = ZoneId.systemDefault();
179+
TimeZone timezone = TimeZone.getDefault();
186180
if (TIMEZONE_GMT.equals(JavaScriptEngine.toString(gmt))
187181
|| TIMEZONE_GMT.equals(JavaScriptEngine.toString(wd2))) {
188-
zoneId = GMT_ZONE;
182+
timezone = TimeZone.getTimeZone(TIMEZONE_GMT);
189183
}
190184
if (JavaScriptEngine.isUndefined(wd2) || TIMEZONE_GMT.equals(JavaScriptEngine.toString(wd2))) {
191185
wd2 = wd1;
192186
}
193-
194-
LocalDate today = LocalDate.now(zoneId);
187+
final Calendar calendar = Calendar.getInstance(timezone);
195188
for (int i = 0; i < 7; i++) {
196-
final String day = today.format(WEEKDAY_FORMATTER).toUpperCase(Locale.ROOT);
189+
final String day = new SimpleDateFormat("EEE", Locale.ROOT)
190+
.format(calendar.getTime()).toUpperCase(Locale.ROOT);
197191
if (day.equals(wd2)) {
198192
return true;
199193
}
200194
if (day.equals(wd1)) {
201195
return i == 0;
202196
}
203-
today = today.plusDays(1);
197+
calendar.add(Calendar.DAY_OF_WEEK, 1);
204198
}
205199
return false;
206200
}
@@ -220,13 +214,13 @@ public static boolean weekdayRange(final String wd1, Object wd2, final Object gm
220214
public static boolean dateRange(final String value1, final Object value2, final Object value3,
221215
final Object value4, final Object value5, final Object value6, final Object value7) {
222216
final Object[] values = {value1, value2, value3, value4, value5, value6, value7};
223-
ZoneId zoneId = ZoneId.systemDefault();
217+
TimeZone timezone = TimeZone.getDefault();
224218

225-
// actual values length
219+
//actual values length
226220
int length;
227221
for (length = values.length - 1; length >= 0; length--) {
228222
if (TIMEZONE_GMT.equals(JavaScriptEngine.toString(values[length]))) {
229-
zoneId = GMT_ZONE;
223+
timezone = TimeZone.getTimeZone(TIMEZONE_GMT);
230224
break;
231225
}
232226
else if (!JavaScriptEngine.isUndefined(values[length])) {
@@ -241,78 +235,81 @@ else if (!JavaScriptEngine.isUndefined(values[length])) {
241235
final int month2;
242236
final int year1;
243237
final int year2;
244-
final ZonedDateTime dateTime1;
245-
final ZonedDateTime dateTime2;
246-
238+
final Calendar cal1;
239+
final Calendar cal2;
247240
switch (length) {
248241
case 1:
249242
final int day = getSmallInt(value1);
250243
final int month = dateRange_getMonth(value1);
251244
final int year = dateRange_getYear(value1);
252-
dateTime1 = dateRange_createDateTime(zoneId, day, month, year);
253-
dateTime2 = dateTime1;
245+
cal1 = dateRange_createCalendar(timezone, day, month, year);
246+
cal2 = (Calendar) cal1.clone();
254247
break;
248+
255249
case 2:
256250
day1 = getSmallInt(value1);
257251
month1 = dateRange_getMonth(value1);
258252
year1 = dateRange_getYear(value1);
259-
dateTime1 = dateRange_createDateTime(zoneId, day1, month1, year1);
253+
cal1 = dateRange_createCalendar(timezone, day1, month1, year1);
260254
day2 = getSmallInt(value2);
261255
month2 = dateRange_getMonth(value2);
262256
year2 = dateRange_getYear(value2);
263-
dateTime2 = dateRange_createDateTime(zoneId, day2, month2, year2);
257+
cal2 = dateRange_createCalendar(timezone, day2, month2, year2);
264258
break;
259+
265260
case 4:
266261
day1 = getSmallInt(value1);
267262
if (day1 != -1) {
268263
month1 = dateRange_getMonth(value2);
269264
day2 = getSmallInt(value3);
270265
month2 = dateRange_getMonth(value4);
271-
dateTime1 = dateRange_createDateTime(zoneId, day1, month1, -1);
272-
dateTime2 = dateRange_createDateTime(zoneId, day2, month2, -1);
266+
cal1 = dateRange_createCalendar(timezone, day1, month1, -1);
267+
cal2 = dateRange_createCalendar(timezone, day2, month2, -1);
273268
}
274269
else {
275270
month1 = dateRange_getMonth(value1);
276-
year1 = getSmallInt(value2);
277-
month2 = dateRange_getMonth(value3);
278-
year2 = getSmallInt(value4);
279-
dateTime1 = dateRange_createDateTime(zoneId, -1, month1, year1);
280-
dateTime2 = dateRange_createDateTime(zoneId, -1, month2, year2);
271+
year1 = dateRange_getMonth(value2);
272+
month2 = getSmallInt(value3);
273+
year2 = dateRange_getMonth(value4);
274+
cal1 = dateRange_createCalendar(timezone, -1, month1, year1);
275+
cal2 = dateRange_createCalendar(timezone, -1, month2, year2);
281276
}
282277
break;
278+
283279
default:
284280
day1 = getSmallInt(value1);
285281
month1 = dateRange_getMonth(value2);
286282
year1 = dateRange_getYear(value3);
287283
day2 = getSmallInt(value4);
288284
month2 = dateRange_getMonth(value5);
289285
year2 = dateRange_getYear(value6);
290-
dateTime1 = dateRange_createDateTime(zoneId, day1, month1, year1);
291-
dateTime2 = dateRange_createDateTime(zoneId, day2, month2, year2);
286+
cal1 = dateRange_createCalendar(timezone, day1, month1, year1);
287+
cal2 = dateRange_createCalendar(timezone, day2, month2, year2);
292288
}
293289

294-
final ZonedDateTime now = ZonedDateTime.now(zoneId)
295-
.withSecond(0)
296-
.withNano(0);
297-
final ZonedDateTime dt1 = dateTime1.withSecond(0).withNano(0);
298-
final ZonedDateTime dt2 = dateTime2.withSecond(0).withNano(0);
299-
300-
return now.isEqual(dt1) || (now.isAfter(dt1) && now.isBefore(dt2)) || now.isEqual(dt2);
290+
final Calendar today = Calendar.getInstance(timezone);
291+
today.set(Calendar.MILLISECOND, 0);
292+
today.set(Calendar.SECOND, 0);
293+
cal1.set(Calendar.MILLISECOND, 0);
294+
cal1.set(Calendar.SECOND, 0);
295+
cal2.set(Calendar.MILLISECOND, 0);
296+
cal2.set(Calendar.SECOND, 0);
297+
return today.equals(cal1) || (today.after(cal1) && today.before(cal2)) || today.equals(cal2);
301298
}
302299

303-
private static ZonedDateTime dateRange_createDateTime(final ZoneId zoneId,
300+
private static Calendar dateRange_createCalendar(final TimeZone timezone,
304301
final int day, final int month, final int year) {
305-
ZonedDateTime dateTime = ZonedDateTime.now(zoneId);
302+
final Calendar calendar = Calendar.getInstance(timezone);
306303
if (day != -1) {
307-
dateTime = dateTime.withDayOfMonth(day);
304+
calendar.set(Calendar.DAY_OF_MONTH, day);
308305
}
309306
if (month != -1) {
310-
dateTime = dateTime.withMonth(month + 1); // Calendar months are 0-based, java.time is 1-based
307+
calendar.set(Calendar.MONTH, month);
311308
}
312309
if (year != -1) {
313-
dateTime = dateTime.withYear(year);
310+
calendar.set(Calendar.YEAR, year);
314311
}
315-
return dateTime;
312+
return calendar;
316313
}
317314

318315
private static int getSmallInt(final Object object) {
@@ -330,11 +327,12 @@ private static int dateRange_getMonth(final Object object) {
330327
final String s = JavaScriptEngine.toString(object);
331328
if (Character.isLetter(s.charAt(0))) {
332329
try {
333-
final LocalDate date = LocalDate.parse(s + " 1",
334-
DateTimeFormatter.ofPattern("MMM d", Locale.ROOT));
335-
return date.getMonthValue() - 1; // Return 0-based month for compatibility
330+
final Calendar cal = Calendar.getInstance(Locale.ROOT);
331+
cal.clear();
332+
cal.setTime(new SimpleDateFormat("MMM", Locale.ROOT).parse(s));
333+
return cal.get(Calendar.MONTH);
336334
}
337-
catch (final DateTimeParseException ignored) {
335+
catch (final Exception ignored) {
338336
// empty
339337
}
340338
}
@@ -367,13 +365,13 @@ private static int dateRange_getYear(final Object object) {
367365
public static boolean timeRange(final String value1, final Object value2, final Object value3,
368366
final Object value4, final Object value5, final Object value6, final Object value7) {
369367
final Object[] values = {value1, value2, value3, value4, value5, value6, value7};
370-
ZoneId zoneId = ZoneId.systemDefault();
368+
TimeZone timezone = TimeZone.getDefault();
371369

372-
// actual values length
370+
//actual values length
373371
int length;
374372
for (length = values.length - 1; length >= 0; length--) {
375373
if (TIMEZONE_GMT.equals(JavaScriptEngine.toString(values[length]))) {
376-
zoneId = GMT_ZONE;
374+
timezone = TimeZone.getTimeZone(TIMEZONE_GMT);
377375
break;
378376
}
379377
else if (!JavaScriptEngine.isUndefined(values[length])) {
@@ -388,56 +386,60 @@ else if (!JavaScriptEngine.isUndefined(values[length])) {
388386
final int min2;
389387
final int second1;
390388
final int second2;
391-
final LocalTime time1;
392-
final LocalTime time2;
393-
389+
final Calendar cal1;
390+
final Calendar cal2;
394391
switch (length) {
395392
case 1:
396393
hour1 = getSmallInt(value1);
397-
time1 = timeRange_createTime(hour1, -1, -1);
398-
time2 = time1.plusHours(1);
394+
cal1 = timeRange_createCalendar(timezone, hour1, -1, -1);
395+
cal2 = (Calendar) cal1.clone();
396+
cal2.add(Calendar.HOUR_OF_DAY, 1);
399397
break;
398+
400399
case 2:
401400
hour1 = getSmallInt(value1);
402-
time1 = timeRange_createTime(hour1, -1, -1);
401+
cal1 = timeRange_createCalendar(timezone, hour1, -1, -1);
403402
hour2 = getSmallInt(value2);
404-
time2 = timeRange_createTime(hour2, -1, -1);
403+
cal2 = timeRange_createCalendar(timezone, hour2, -1, -1);
405404
break;
405+
406406
case 4:
407407
hour1 = getSmallInt(value1);
408408
min1 = getSmallInt(value2);
409409
hour2 = getSmallInt(value3);
410410
min2 = getSmallInt(value4);
411-
time1 = timeRange_createTime(hour1, min1, -1);
412-
time2 = timeRange_createTime(hour2, min2, -1);
411+
cal1 = dateRange_createCalendar(timezone, hour1, min1, -1);
412+
cal2 = dateRange_createCalendar(timezone, hour2, min2, -1);
413413
break;
414+
414415
default:
415416
hour1 = getSmallInt(value1);
416417
min1 = getSmallInt(value2);
417418
second1 = getSmallInt(value3);
418419
hour2 = getSmallInt(value4);
419420
min2 = getSmallInt(value5);
420421
second2 = getSmallInt(value6);
421-
time1 = timeRange_createTime(hour1, min1, second1);
422-
time2 = timeRange_createTime(hour2, min2, second2);
422+
cal1 = dateRange_createCalendar(timezone, hour1, min1, second1);
423+
cal2 = dateRange_createCalendar(timezone, hour2, min2, second2);
423424
}
424425

425-
final LocalTime now = LocalTime.now(zoneId);
426-
return now.equals(time1) || (now.isAfter(time1) && now.isBefore(time2)) || now.equals(time2);
426+
final Calendar now = Calendar.getInstance(timezone);
427+
return now.equals(cal1) || now.after(cal1) && now.before(cal2) || now.equals(cal2);
427428
}
428429

429-
private static LocalTime timeRange_createTime(final int hour, final int minute, final int second) {
430-
LocalTime time = LocalTime.now();
430+
private static Calendar timeRange_createCalendar(final TimeZone timezone,
431+
final int hour, final int minute, final int second) {
432+
final Calendar calendar = Calendar.getInstance(timezone);
431433
if (hour != -1) {
432-
time = time.withHour(hour);
434+
calendar.set(Calendar.HOUR_OF_DAY, hour);
433435
}
434436
if (minute != -1) {
435-
time = time.withMinute(minute);
437+
calendar.set(Calendar.MINUTE, minute);
436438
}
437439
if (second != -1) {
438-
time = time.withSecond(second);
440+
calendar.set(Calendar.SECOND, second);
439441
}
440-
return time;
442+
return calendar;
441443
}
442444

443445
/**
@@ -448,7 +450,9 @@ private static LocalTime timeRange_createTime(final int hour, final int minute,
448450
@JsxFunction(functionName = "convert_addr")
449451
public static long convertAddr(final String ip) {
450452
final String[] parts = StringUtils.split(ip, '.');
451-
return ((Integer.parseInt(parts[0]) & 0xff) << 24)
453+
454+
return
455+
((Integer.parseInt(parts[0]) & 0xff) << 24)
452456
| ((Integer.parseInt(parts[1]) & 0xff) << 16)
453457
| ((Integer.parseInt(parts[2]) & 0xff) << 8)
454458
| (Integer.parseInt(parts[3]) & 0xff);

0 commit comments

Comments
 (0)