mirror of
https://github.com/Eaglercraft-TeaVM-Fork/eagler-teavm.git
synced 2024-12-22 08:14:09 -08:00
java.time: remove jdk7 hacks
This commit is contained in:
parent
3513bacc2e
commit
051c3bb227
|
@ -35,6 +35,7 @@ import static org.threeten.bp.LocalTime.NANOS_PER_MINUTE;
|
|||
import static org.threeten.bp.LocalTime.NANOS_PER_SECOND;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
|
@ -153,7 +154,7 @@ public abstract class Clock {
|
|||
* @return a clock that uses the best available system clock in the specified zone, not null
|
||||
*/
|
||||
public static Clock system(ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
return new SystemClock(zone);
|
||||
}
|
||||
|
||||
|
@ -236,8 +237,8 @@ public abstract class Clock {
|
|||
* @throws ArithmeticException if the duration is too large to be represented as nanos
|
||||
*/
|
||||
public static Clock tick(Clock baseClock, Duration tickDuration) {
|
||||
Jdk8Methods.requireNonNull(baseClock, "baseClock");
|
||||
Jdk8Methods.requireNonNull(tickDuration, "tickDuration");
|
||||
Objects.requireNonNull(baseClock, "baseClock");
|
||||
Objects.requireNonNull(tickDuration, "tickDuration");
|
||||
if (tickDuration.isNegative()) {
|
||||
throw new IllegalArgumentException("Tick duration must not be negative");
|
||||
}
|
||||
|
@ -271,8 +272,8 @@ public abstract class Clock {
|
|||
* @return a clock that always returns the same instant, not null
|
||||
*/
|
||||
public static Clock fixed(Instant fixedInstant, ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(fixedInstant, "fixedInstant");
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(fixedInstant, "fixedInstant");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
return new FixedClock(fixedInstant, zone);
|
||||
}
|
||||
|
||||
|
@ -297,8 +298,8 @@ public abstract class Clock {
|
|||
* @return a clock based on the base clock with the duration added, not null
|
||||
*/
|
||||
public static Clock offset(Clock baseClock, Duration offsetDuration) {
|
||||
Jdk8Methods.requireNonNull(baseClock, "baseClock");
|
||||
Jdk8Methods.requireNonNull(offsetDuration, "offsetDuration");
|
||||
Objects.requireNonNull(baseClock, "baseClock");
|
||||
Objects.requireNonNull(offsetDuration, "offsetDuration");
|
||||
if (offsetDuration.equals(Duration.ZERO)) {
|
||||
return baseClock;
|
||||
}
|
||||
|
|
|
@ -1,269 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of JSR-310 nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package org.threeten.bp;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.TimeZone;
|
||||
|
||||
/**
|
||||
* A set of utilities to assist in bridging the gap to Java 8.
|
||||
* <p>
|
||||
* This class is not found in Java SE 8 but provides methods that are.
|
||||
*/
|
||||
public final class DateTimeUtils {
|
||||
|
||||
/**
|
||||
* Restricted constructor.
|
||||
*/
|
||||
private DateTimeUtils() {
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* Converts a {@code java.util.Date} to an {@code Instant}.
|
||||
*
|
||||
* @param utilDate the util date, not null
|
||||
* @return the instant, not null
|
||||
*/
|
||||
public static Instant toInstant(Date utilDate) {
|
||||
return Instant.ofEpochMilli(utilDate.getTime());
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an {@code Instant} to a {@code java.util.Date}.
|
||||
* <p>
|
||||
* Fractions of the instant smaller than milliseconds will be dropped.
|
||||
*
|
||||
* @param instant the instant, not null
|
||||
* @return the util date, not null
|
||||
* @throws IllegalArgumentException if the conversion fails
|
||||
*/
|
||||
public static Date toDate(Instant instant) {
|
||||
try {
|
||||
return new Date(instant.toEpochMilli());
|
||||
} catch (ArithmeticException ex) {
|
||||
throw new IllegalArgumentException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* Converts a {@code Calendar} to an {@code Instant}.
|
||||
*
|
||||
* @param calendar the calendar, not null
|
||||
* @return the instant, not null
|
||||
*/
|
||||
public static Instant toInstant(Calendar calendar) {
|
||||
return Instant.ofEpochMilli(calendar.getTimeInMillis());
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a {@code Calendar} to a {@code ZonedDateTime}.
|
||||
* <p>
|
||||
* Note that {@code GregorianCalendar} supports a Julian-Gregorian cutover
|
||||
* date and {@code ZonedDateTime} does not so some differences will occur.
|
||||
*
|
||||
* @param calendar the calendar, not null
|
||||
* @return the instant, not null
|
||||
*/
|
||||
public static ZonedDateTime toZonedDateTime(Calendar calendar) {
|
||||
Instant instant = Instant.ofEpochMilli(calendar.getTimeInMillis());
|
||||
ZoneId zone = toZoneId(calendar.getTimeZone());
|
||||
return ZonedDateTime.ofInstant(instant, zone);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a {@code ZonedDateTime} to a {@code Calendar}.
|
||||
* <p>
|
||||
* The resulting {@code GregorianCalendar} is pure Gregorian and uses
|
||||
* ISO week definitions, starting on Monday and with 4 days in a minimal week.
|
||||
* <p>
|
||||
* Fractions of the instant smaller than milliseconds will be dropped.
|
||||
*
|
||||
* @param zdt the zoned date-time, not null
|
||||
* @return the calendar, not null
|
||||
* @throws IllegalArgumentException if the conversion fails
|
||||
*/
|
||||
public static GregorianCalendar toGregorianCalendar(ZonedDateTime zdt) {
|
||||
TimeZone zone = toTimeZone(zdt.getZone());
|
||||
GregorianCalendar cal = new GregorianCalendar(zone);
|
||||
cal.setGregorianChange(new Date(Long.MIN_VALUE));
|
||||
cal.setFirstDayOfWeek(Calendar.MONDAY);
|
||||
cal.setMinimalDaysInFirstWeek(4);
|
||||
try {
|
||||
cal.setTimeInMillis(zdt.toInstant().toEpochMilli());
|
||||
} catch (ArithmeticException ex) {
|
||||
throw new IllegalArgumentException(ex);
|
||||
}
|
||||
return cal;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* Converts a {@code TimeZone} to a {@code ZoneId}.
|
||||
*
|
||||
* @param timeZone the time-zone, not null
|
||||
* @return the zone, not null
|
||||
*/
|
||||
public static ZoneId toZoneId(TimeZone timeZone) {
|
||||
return ZoneId.of(timeZone.getID(), ZoneId.SHORT_IDS);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a {@code ZoneId} to a {@code TimeZone}.
|
||||
*
|
||||
* @param zoneId the zone, not null
|
||||
* @return the time-zone, not null
|
||||
*/
|
||||
public static TimeZone toTimeZone(ZoneId zoneId) {
|
||||
String tzid = zoneId.getId();
|
||||
if (tzid.startsWith("+") || tzid.startsWith("-")) {
|
||||
tzid = "GMT" + tzid;
|
||||
} else if (tzid.equals("Z")) {
|
||||
tzid = "UTC";
|
||||
}
|
||||
return TimeZone.getTimeZone(tzid);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* Converts a {@code java.sql.Date} to a {@code LocalDate}.
|
||||
*
|
||||
* @param sqlDate the SQL date, not null
|
||||
* @return the local date, not null
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static LocalDate toLocalDate(java.sql.Date sqlDate) {
|
||||
return LocalDate.of(sqlDate.getYear() + 1900, sqlDate.getMonth() + 1, sqlDate.getDate());
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a {@code LocalDate} to a {@code java.sql.Date}.
|
||||
*
|
||||
* @param date the local date, not null
|
||||
* @return the SQL date, not null
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static java.sql.Date toSqlDate(LocalDate date) {
|
||||
return new java.sql.Date(date.getYear() - 1900, date.getMonthValue() -1, date.getDayOfMonth());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* Converts a {@code java.sql.Time} to a {@code LocalTime}.
|
||||
*
|
||||
* @param sqlTime the SQL time, not null
|
||||
* @return the local time, not null
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static LocalTime toLocalTime(java.sql.Time sqlTime) {
|
||||
return LocalTime.of(sqlTime.getHours(), sqlTime.getMinutes(), sqlTime.getSeconds());
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a {@code LocalTime} to a {@code java.sql.Time}.
|
||||
*
|
||||
* @param time the local time, not null
|
||||
* @return the SQL time, not null
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static java.sql.Time toSqlTime(LocalTime time) {
|
||||
return new java.sql.Time(time.getHour(), time.getMinute(), time.getSecond());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* Converts a {@code LocalDateTime} to a {@code java.sql.Timestamp}.
|
||||
*
|
||||
* @param dateTime the local date-time, not null
|
||||
* @return the SQL timestamp, not null
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static Timestamp toSqlTimestamp(LocalDateTime dateTime) {
|
||||
return new Timestamp(
|
||||
dateTime.getYear() - 1900,
|
||||
dateTime.getMonthValue() - 1,
|
||||
dateTime.getDayOfMonth(),
|
||||
dateTime.getHour(),
|
||||
dateTime.getMinute(),
|
||||
dateTime.getSecond(),
|
||||
dateTime.getNano());
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a {@code java.sql.Timestamp} to a {@code LocalDateTime}.
|
||||
*
|
||||
* @param sqlTimestamp the SQL timestamp, not null
|
||||
* @return the local date-time, not null
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static LocalDateTime toLocalDateTime(Timestamp sqlTimestamp) {
|
||||
return LocalDateTime.of(
|
||||
sqlTimestamp.getYear() + 1900,
|
||||
sqlTimestamp.getMonth() + 1,
|
||||
sqlTimestamp.getDate(),
|
||||
sqlTimestamp.getHours(),
|
||||
sqlTimestamp.getMinutes(),
|
||||
sqlTimestamp.getSeconds(),
|
||||
sqlTimestamp.getNanos());
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an {@code Instant} to a {@code java.sql.Timestamp}.
|
||||
*
|
||||
* @param instant the instant, not null
|
||||
* @return the SQL timestamp, not null
|
||||
*/
|
||||
public static Timestamp toSqlTimestamp(Instant instant) {
|
||||
try {
|
||||
Timestamp ts = new Timestamp(instant.getEpochSecond() * 1000);
|
||||
ts.setNanos(instant.getNano());
|
||||
return ts;
|
||||
} catch (ArithmeticException ex) {
|
||||
throw new IllegalArgumentException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a {@code java.sql.Timestamp} to an {@code Instant}.
|
||||
*
|
||||
* @param sqlTimestamp the SQL timestamp, not null
|
||||
* @return the instant, not null
|
||||
*/
|
||||
public static Instant toInstant(Timestamp sqlTimestamp) {
|
||||
return Instant.ofEpochSecond(sqlTimestamp.getTime() / 1000, sqlTimestamp.getNanos());
|
||||
}
|
||||
|
||||
}
|
|
@ -51,6 +51,7 @@ import java.math.RoundingMode;
|
|||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
@ -295,7 +296,7 @@ public final class Duration
|
|||
* @throws ArithmeticException if a numeric overflow occurs
|
||||
*/
|
||||
public static Duration from(TemporalAmount amount) {
|
||||
Jdk8Methods.requireNonNull(amount, "amount");
|
||||
Objects.requireNonNull(amount, "amount");
|
||||
Duration duration = ZERO;
|
||||
for (TemporalUnit unit : amount.getUnits()) {
|
||||
duration = duration.plus(amount.get(unit), unit);
|
||||
|
@ -338,9 +339,7 @@ public final class Duration
|
|||
Temporal adjustedEnd = endExclusive.with(NANO_OF_SECOND, startNos);
|
||||
secs = startInclusive.until(adjustedEnd, SECONDS);;
|
||||
}
|
||||
} catch (DateTimeException ex2) {
|
||||
// ignore and only use seconds
|
||||
} catch (ArithmeticException ex2) {
|
||||
} catch (DateTimeException | ArithmeticException ex2) {
|
||||
// ignore and only use seconds
|
||||
}
|
||||
}
|
||||
|
@ -393,7 +392,7 @@ public final class Duration
|
|||
* @throws DateTimeParseException if the text cannot be parsed to a duration
|
||||
*/
|
||||
public static Duration parse(CharSequence text) {
|
||||
Jdk8Methods.requireNonNull(text, "text");
|
||||
Objects.requireNonNull(text, "text");
|
||||
Matcher matcher = PATTERN.matcher(text);
|
||||
if (matcher.matches()) {
|
||||
// check for letter T but no time sections
|
||||
|
@ -433,10 +432,8 @@ public final class Duration
|
|||
}
|
||||
long val = Long.parseLong(parsed);
|
||||
return Jdk8Methods.safeMultiply(val, multiplier);
|
||||
} catch (NumberFormatException ex) {
|
||||
throw (DateTimeParseException) new DateTimeParseException("Text cannot be parsed to a Duration: " + errorText, text, 0).initCause(ex);
|
||||
} catch (ArithmeticException ex) {
|
||||
throw (DateTimeParseException) new DateTimeParseException("Text cannot be parsed to a Duration: " + errorText, text, 0).initCause(ex);
|
||||
} catch (NumberFormatException | ArithmeticException ex) {
|
||||
throw new DateTimeParseException("Text cannot be parsed to a Duration: " + errorText, text, 0, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -448,10 +445,8 @@ public final class Duration
|
|||
try {
|
||||
parsed = (parsed + "000000000").substring(0, 9);
|
||||
return Integer.parseInt(parsed) * negate;
|
||||
} catch (NumberFormatException ex) {
|
||||
throw (DateTimeParseException) new DateTimeParseException("Text cannot be parsed to a Duration: fraction", text, 0).initCause(ex);
|
||||
} catch (ArithmeticException ex) {
|
||||
throw (DateTimeParseException) new DateTimeParseException("Text cannot be parsed to a Duration: fraction", text, 0).initCause(ex);
|
||||
} catch (NumberFormatException | ArithmeticException ex) {
|
||||
throw new DateTimeParseException("Text cannot be parsed to a Duration: fraction", text, 0, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -633,7 +628,7 @@ public final class Duration
|
|||
* @throws ArithmeticException if numeric overflow occurs
|
||||
*/
|
||||
public Duration plus(long amountToAdd, TemporalUnit unit) {
|
||||
Jdk8Methods.requireNonNull(unit, "unit");
|
||||
Objects.requireNonNull(unit, "unit");
|
||||
if (unit == DAYS) {
|
||||
return plus(Jdk8Methods.safeMultiply(amountToAdd, SECONDS_PER_DAY), 0);
|
||||
}
|
||||
|
@ -1131,7 +1126,7 @@ public final class Duration
|
|||
*/
|
||||
@Override
|
||||
public int compareTo(Duration otherDuration) {
|
||||
int cmp = Jdk8Methods.compareLongs(seconds, otherDuration.seconds);
|
||||
int cmp = Long.compare(seconds, otherDuration.seconds);
|
||||
if (cmp != 0) {
|
||||
return cmp;
|
||||
}
|
||||
|
|
|
@ -47,10 +47,10 @@ import java.io.IOException;
|
|||
import java.io.InvalidObjectException;
|
||||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.format.DateTimeFormatter;
|
||||
import org.threeten.bp.format.DateTimeParseException;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporalAccessor;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.ChronoUnit;
|
||||
|
@ -155,8 +155,7 @@ import org.threeten.bp.temporal.ValueRange;
|
|||
* This class is immutable and thread-safe.
|
||||
*/
|
||||
public final class Instant
|
||||
extends DefaultInterfaceTemporalAccessor
|
||||
implements Temporal, TemporalAdjuster, Comparable<Instant>, Serializable {
|
||||
implements Temporal, TemporalAdjuster, Comparable<Instant>, Serializable, TemporalAccessor {
|
||||
|
||||
/**
|
||||
* Constant for the 1970-01-01T00:00:00Z epoch instant.
|
||||
|
@ -257,7 +256,7 @@ public final class Instant
|
|||
* @return the current instant, not null
|
||||
*/
|
||||
public static Instant now(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
return clock.instant();
|
||||
}
|
||||
|
||||
|
@ -459,7 +458,7 @@ public final class Instant
|
|||
*/
|
||||
@Override // override for Javadoc
|
||||
public ValueRange range(TemporalField field) {
|
||||
return super.range(field);
|
||||
return Temporal.super.range(field);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1084,7 +1083,7 @@ public final class Instant
|
|||
*/
|
||||
@Override
|
||||
public int compareTo(Instant otherInstant) {
|
||||
int cmp = Jdk8Methods.compareLongs(seconds, otherInstant.seconds);
|
||||
int cmp = Long.compare(seconds, otherInstant.seconds);
|
||||
if (cmp != 0) {
|
||||
return cmp;
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ import java.io.IOException;
|
|||
import java.io.InvalidObjectException;
|
||||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.chrono.ChronoLocalDate;
|
||||
import org.threeten.bp.chrono.Era;
|
||||
|
@ -111,15 +112,6 @@ public final class LocalDate
|
|||
* This could be used by an application as a "far future" date.
|
||||
*/
|
||||
public static final LocalDate MAX = LocalDate.of(Year.MAX_VALUE, 12, 31);
|
||||
/**
|
||||
* Simulate JDK 8 method reference LocalDate::from.
|
||||
*/
|
||||
public static final TemporalQuery<LocalDate> FROM = new TemporalQuery<LocalDate>() {
|
||||
@Override
|
||||
public LocalDate queryFrom(TemporalAccessor temporal) {
|
||||
return LocalDate.from(temporal);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Serialization version.
|
||||
|
@ -192,7 +184,7 @@ public final class LocalDate
|
|||
* @return the current date, not null
|
||||
*/
|
||||
public static LocalDate now(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
final Instant now = clock.instant(); // called once
|
||||
ZoneOffset offset = clock.getZone().getRules().getOffset(now);
|
||||
long epochSec = now.getEpochSecond() + offset.getTotalSeconds(); // overflow caught later
|
||||
|
@ -215,7 +207,7 @@ public final class LocalDate
|
|||
*/
|
||||
public static LocalDate of(int year, Month month, int dayOfMonth) {
|
||||
YEAR.checkValidValue(year);
|
||||
Jdk8Methods.requireNonNull(month, "month");
|
||||
Objects.requireNonNull(month, "month");
|
||||
DAY_OF_MONTH.checkValidValue(dayOfMonth);
|
||||
return create(year, month, dayOfMonth);
|
||||
}
|
||||
|
@ -363,8 +355,8 @@ public final class LocalDate
|
|||
* @throws DateTimeParseException if the text cannot be parsed
|
||||
*/
|
||||
public static LocalDate parse(CharSequence text, DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, LocalDate.FROM);
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, LocalDate::from);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
@ -1615,7 +1607,7 @@ public final class LocalDate
|
|||
* @return the zoned date-time formed from this date and the earliest valid time for the zone, not null
|
||||
*/
|
||||
public ZonedDateTime atStartOfDay(ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
// need to handle case where there is a gap from 11:30 to 00:30
|
||||
// standard ZDT factory would result in 01:00 rather than 00:30
|
||||
LocalDateTime ldt = atTime(LocalTime.MIDNIGHT);
|
||||
|
|
|
@ -47,6 +47,7 @@ import java.io.IOException;
|
|||
import java.io.InvalidObjectException;
|
||||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.chrono.ChronoLocalDateTime;
|
||||
import org.threeten.bp.format.DateTimeFormatter;
|
||||
|
@ -112,20 +113,6 @@ public final class LocalDateTime
|
|||
* This could be used by an application as a "far future" date-time.
|
||||
*/
|
||||
public static final LocalDateTime MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);
|
||||
/**
|
||||
* Simulate JDK 8 method reference LocalDateTime::from.
|
||||
*/
|
||||
public static final TemporalQuery<LocalDateTime> FROM = new TemporalQuery<LocalDateTime>() {
|
||||
@Override
|
||||
public LocalDateTime queryFrom(TemporalAccessor temporal) {
|
||||
return LocalDateTime.from(temporal);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Serialization version.
|
||||
*/
|
||||
private static final long serialVersionUID = 6207766400415563566L;
|
||||
|
||||
/**
|
||||
* The date part.
|
||||
|
@ -179,7 +166,7 @@ public final class LocalDateTime
|
|||
* @return the current date-time, not null
|
||||
*/
|
||||
public static LocalDateTime now(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
final Instant now = clock.instant(); // called once
|
||||
ZoneOffset offset = clock.getZone().getRules().getOffset(now);
|
||||
return ofEpochSecond(now.getEpochSecond(), now.getNano(), offset);
|
||||
|
@ -331,8 +318,8 @@ public final class LocalDateTime
|
|||
* @return the local date-time, not null
|
||||
*/
|
||||
public static LocalDateTime of(LocalDate date, LocalTime time) {
|
||||
Jdk8Methods.requireNonNull(date, "date");
|
||||
Jdk8Methods.requireNonNull(time, "time");
|
||||
Objects.requireNonNull(date, "date");
|
||||
Objects.requireNonNull(time, "time");
|
||||
return new LocalDateTime(date, time);
|
||||
}
|
||||
|
||||
|
@ -351,8 +338,8 @@ public final class LocalDateTime
|
|||
* @throws DateTimeException if the result exceeds the supported range
|
||||
*/
|
||||
public static LocalDateTime ofInstant(Instant instant, ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(instant, "instant");
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(instant, "instant");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
ZoneRules rules = zone.getRules();
|
||||
ZoneOffset offset = rules.getOffset(instant);
|
||||
return ofEpochSecond(instant.getEpochSecond(), instant.getNano(), offset);
|
||||
|
@ -373,7 +360,7 @@ public final class LocalDateTime
|
|||
* @throws DateTimeException if the result exceeds the supported range
|
||||
*/
|
||||
public static LocalDateTime ofEpochSecond(long epochSecond, int nanoOfSecond, ZoneOffset offset) {
|
||||
Jdk8Methods.requireNonNull(offset, "offset");
|
||||
Objects.requireNonNull(offset, "offset");
|
||||
long localSecond = epochSecond + offset.getTotalSeconds(); // overflow caught later
|
||||
long localEpochDay = Jdk8Methods.floorDiv(localSecond, SECONDS_PER_DAY);
|
||||
int secsOfDay = Jdk8Methods.floorMod(localSecond, SECONDS_PER_DAY);
|
||||
|
@ -440,8 +427,8 @@ public final class LocalDateTime
|
|||
* @throws DateTimeParseException if the text cannot be parsed
|
||||
*/
|
||||
public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, LocalDateTime.FROM);
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, LocalDateTime::from);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
|
|
@ -46,11 +46,10 @@ import java.io.IOException;
|
|||
import java.io.InvalidObjectException;
|
||||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.format.DateTimeFormatter;
|
||||
import org.threeten.bp.format.DateTimeParseException;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporalAccessor;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.ChronoUnit;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
|
@ -86,8 +85,7 @@ import org.threeten.bp.temporal.ValueRange;
|
|||
* This class is immutable and thread-safe.
|
||||
*/
|
||||
public final class LocalTime
|
||||
extends DefaultInterfaceTemporalAccessor
|
||||
implements Temporal, TemporalAdjuster, Comparable<LocalTime>, Serializable {
|
||||
implements Temporal, TemporalAdjuster, Comparable<LocalTime>, Serializable, TemporalAccessor {
|
||||
|
||||
/**
|
||||
* The minimum supported {@code LocalTime}, '00:00'.
|
||||
|
@ -244,7 +242,7 @@ public final class LocalTime
|
|||
* @return the current time, not null
|
||||
*/
|
||||
public static LocalTime now(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
// inline OffsetTime factory to avoid creating object and InstantProvider checks
|
||||
final Instant now = clock.instant(); // called once
|
||||
ZoneOffset offset = clock.getZone().getRules().getOffset(now);
|
||||
|
@ -433,7 +431,7 @@ public final class LocalTime
|
|||
* @throws DateTimeParseException if the text cannot be parsed
|
||||
*/
|
||||
public static LocalTime parse(CharSequence text, DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, LocalTime.FROM);
|
||||
}
|
||||
|
||||
|
@ -548,7 +546,7 @@ public final class LocalTime
|
|||
*/
|
||||
@Override // override for Javadoc
|
||||
public ValueRange range(TemporalField field) {
|
||||
return super.range(field);
|
||||
return Temporal.super.range(field);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -580,7 +578,7 @@ public final class LocalTime
|
|||
if (field instanceof ChronoField) {
|
||||
return get0(field);
|
||||
}
|
||||
return super.get(field);
|
||||
return Temporal.super.get(field);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1373,13 +1371,13 @@ public final class LocalTime
|
|||
*/
|
||||
@Override
|
||||
public int compareTo(LocalTime other) {
|
||||
int cmp = Jdk8Methods.compareInts(hour, other.hour);
|
||||
int cmp = Integer.compare(hour, other.hour);
|
||||
if (cmp == 0) {
|
||||
cmp = Jdk8Methods.compareInts(minute, other.minute);
|
||||
cmp = Integer.compare(minute, other.minute);
|
||||
if (cmp == 0) {
|
||||
cmp = Jdk8Methods.compareInts(second, other.second);
|
||||
cmp = Integer.compare(second, other.second);
|
||||
if (cmp == 0) {
|
||||
cmp = Jdk8Methods.compareInts(nano, other.nano);
|
||||
cmp = Integer.compare(nano, other.nano);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1484,7 +1482,7 @@ public final class LocalTime
|
|||
} else if (nanoValue % 1000 == 0) {
|
||||
buf.append(Integer.toString((nanoValue / 1000) + 1000000).substring(1));
|
||||
} else {
|
||||
buf.append(Integer.toString((nanoValue) + 1000000000).substring(1));
|
||||
buf.append(Integer.toString(nanoValue + 1000000000).substring(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1502,7 +1500,7 @@ public final class LocalTime
|
|||
* @throws DateTimeException if an error occurs during printing
|
||||
*/
|
||||
public String format(DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.format(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -40,14 +40,13 @@ import java.io.IOException;
|
|||
import java.io.InvalidObjectException;
|
||||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.chrono.Chronology;
|
||||
import org.threeten.bp.chrono.IsoChronology;
|
||||
import org.threeten.bp.format.DateTimeFormatter;
|
||||
import org.threeten.bp.format.DateTimeFormatterBuilder;
|
||||
import org.threeten.bp.format.DateTimeParseException;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporalAccessor;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
|
@ -88,23 +87,7 @@ import org.threeten.bp.temporal.ValueRange;
|
|||
* This class is immutable and thread-safe.
|
||||
*/
|
||||
public final class MonthDay
|
||||
extends DefaultInterfaceTemporalAccessor
|
||||
implements TemporalAccessor, TemporalAdjuster, Comparable<MonthDay>, Serializable {
|
||||
|
||||
/**
|
||||
* Simulate JDK 8 method reference MonthDay::from.
|
||||
*/
|
||||
public static final TemporalQuery<MonthDay> FROM = new TemporalQuery<MonthDay>() {
|
||||
@Override
|
||||
public MonthDay queryFrom(TemporalAccessor temporal) {
|
||||
return MonthDay.from(temporal);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Serialization version.
|
||||
*/
|
||||
private static final long serialVersionUID = -939150713474957432L;
|
||||
/**
|
||||
* Parser.
|
||||
*/
|
||||
|
@ -189,7 +172,7 @@ public final class MonthDay
|
|||
* @throws DateTimeException if the day-of-month is invalid for the month
|
||||
*/
|
||||
public static MonthDay of(Month month, int dayOfMonth) {
|
||||
Jdk8Methods.requireNonNull(month, "month");
|
||||
Objects.requireNonNull(month, "month");
|
||||
DAY_OF_MONTH.checkValidValue(dayOfMonth);
|
||||
if (dayOfMonth > month.maxLength()) {
|
||||
throw new DateTimeException("Illegal value for DayOfMonth field, value " + dayOfMonth +
|
||||
|
@ -277,8 +260,8 @@ public final class MonthDay
|
|||
* @throws DateTimeParseException if the text cannot be parsed
|
||||
*/
|
||||
public static MonthDay parse(CharSequence text, DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, MonthDay.FROM);
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, MonthDay::from);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
@ -356,7 +339,7 @@ public final class MonthDay
|
|||
} else if (field == DAY_OF_MONTH) {
|
||||
return ValueRange.of(1, getMonth().minLength(), getMonth().maxLength());
|
||||
}
|
||||
return super.range(field);
|
||||
return TemporalAccessor.super.range(field);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -509,7 +492,7 @@ public final class MonthDay
|
|||
* @return a {@code MonthDay} based on this month-day with the requested month, not null
|
||||
*/
|
||||
public MonthDay with(Month month) {
|
||||
Jdk8Methods.requireNonNull(month, "month");
|
||||
Objects.requireNonNull(month, "month");
|
||||
if (month.getValue() == this.month) {
|
||||
return this;
|
||||
}
|
||||
|
@ -562,7 +545,7 @@ public final class MonthDay
|
|||
if (query == TemporalQueries.chronology()) {
|
||||
return (R) IsoChronology.INSTANCE;
|
||||
}
|
||||
return super.query(query);
|
||||
return TemporalAccessor.super.query(query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -716,7 +699,7 @@ public final class MonthDay
|
|||
* @throws DateTimeException if an error occurs during printing
|
||||
*/
|
||||
public String format(DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.format(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -44,12 +44,11 @@ import java.io.InvalidObjectException;
|
|||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Comparator;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.chrono.IsoChronology;
|
||||
import org.threeten.bp.format.DateTimeFormatter;
|
||||
import org.threeten.bp.format.DateTimeParseException;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporal;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.ChronoUnit;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
|
@ -88,7 +87,6 @@ import org.threeten.bp.zone.ZoneRules;
|
|||
* This class is immutable and thread-safe.
|
||||
*/
|
||||
public final class OffsetDateTime
|
||||
extends DefaultInterfaceTemporal
|
||||
implements Temporal, TemporalAdjuster, Comparable<OffsetDateTime>, Serializable {
|
||||
|
||||
/**
|
||||
|
@ -133,16 +131,8 @@ public final class OffsetDateTime
|
|||
public static Comparator<OffsetDateTime> timeLineOrder() {
|
||||
return INSTANT_COMPARATOR;
|
||||
}
|
||||
private static final Comparator<OffsetDateTime> INSTANT_COMPARATOR = new Comparator<OffsetDateTime>() {
|
||||
@Override
|
||||
public int compare(OffsetDateTime datetime1, OffsetDateTime datetime2) {
|
||||
int cmp = Jdk8Methods.compareLongs(datetime1.toEpochSecond(), datetime2.toEpochSecond());
|
||||
if (cmp == 0) {
|
||||
cmp = Jdk8Methods.compareLongs(datetime1.getNano(), datetime2.getNano());
|
||||
}
|
||||
return cmp;
|
||||
}
|
||||
};
|
||||
private static final Comparator<OffsetDateTime> INSTANT_COMPARATOR =
|
||||
Comparator.comparingLong(OffsetDateTime::toEpochSecond).thenComparingInt(OffsetDateTime::getNano);
|
||||
|
||||
/**
|
||||
* Serialization version.
|
||||
|
@ -205,7 +195,7 @@ public final class OffsetDateTime
|
|||
* @return the current date-time, not null
|
||||
*/
|
||||
public static OffsetDateTime now(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
final Instant now = clock.instant(); // called once
|
||||
return ofInstant(now, clock.getZone().getRules().getOffset(now));
|
||||
}
|
||||
|
@ -284,8 +274,8 @@ public final class OffsetDateTime
|
|||
* @throws DateTimeException if the result exceeds the supported range
|
||||
*/
|
||||
public static OffsetDateTime ofInstant(Instant instant, ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(instant, "instant");
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(instant, "instant");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
ZoneRules rules = zone.getRules();
|
||||
ZoneOffset offset = rules.getOffset(instant);
|
||||
LocalDateTime ldt = LocalDateTime.ofEpochSecond(instant.getEpochSecond(), instant.getNano(), offset);
|
||||
|
@ -355,7 +345,7 @@ public final class OffsetDateTime
|
|||
* @throws DateTimeParseException if the text cannot be parsed
|
||||
*/
|
||||
public static OffsetDateTime parse(CharSequence text, DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, OffsetDateTime.FROM);
|
||||
}
|
||||
|
||||
|
@ -367,8 +357,8 @@ public final class OffsetDateTime
|
|||
* @param offset the zone offset, not null
|
||||
*/
|
||||
private OffsetDateTime(LocalDateTime dateTime, ZoneOffset offset) {
|
||||
this.dateTime = Jdk8Methods.requireNonNull(dateTime, "dateTime");
|
||||
this.offset = Jdk8Methods.requireNonNull(offset, "offset");
|
||||
this.dateTime = Objects.requireNonNull(dateTime, "dateTime");
|
||||
this.offset = Objects.requireNonNull(offset, "offset");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -516,7 +506,7 @@ public final class OffsetDateTime
|
|||
}
|
||||
return dateTime.get(field);
|
||||
}
|
||||
return super.get(field);
|
||||
return Temporal.super.get(field);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1403,7 +1393,7 @@ public final class OffsetDateTime
|
|||
} else if (query == TemporalQueries.zoneId()) {
|
||||
return null;
|
||||
}
|
||||
return super.query(query);
|
||||
return Temporal.super.query(query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1661,7 +1651,7 @@ public final class OffsetDateTime
|
|||
if (getOffset().equals(other.getOffset())) {
|
||||
return toLocalDateTime().compareTo(other.toLocalDateTime());
|
||||
}
|
||||
int cmp = Jdk8Methods.compareLongs(toEpochSecond(), other.toEpochSecond());
|
||||
int cmp = Long.compare(toEpochSecond(), other.toEpochSecond());
|
||||
if (cmp == 0) {
|
||||
cmp = toLocalTime().getNano() - other.toLocalTime().getNano();
|
||||
if (cmp == 0) {
|
||||
|
@ -1787,7 +1777,7 @@ public final class OffsetDateTime
|
|||
* @throws DateTimeException if an error occurs during printing
|
||||
*/
|
||||
public String format(DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.format(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -45,11 +45,10 @@ import java.io.IOException;
|
|||
import java.io.InvalidObjectException;
|
||||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.format.DateTimeFormatter;
|
||||
import org.threeten.bp.format.DateTimeParseException;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporalAccessor;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.ChronoUnit;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
|
@ -79,8 +78,7 @@ import org.threeten.bp.zone.ZoneRules;
|
|||
* This class is immutable and thread-safe.
|
||||
*/
|
||||
public final class OffsetTime
|
||||
extends DefaultInterfaceTemporalAccessor
|
||||
implements Temporal, TemporalAdjuster, Comparable<OffsetTime>, Serializable {
|
||||
implements Temporal, TemporalAdjuster, Comparable<OffsetTime>, Serializable, TemporalAccessor {
|
||||
|
||||
/**
|
||||
* The minimum supported {@code OffsetTime}, '00:00:00+18:00'.
|
||||
|
@ -169,7 +167,7 @@ public final class OffsetTime
|
|||
* @return the current time, not null
|
||||
*/
|
||||
public static OffsetTime now(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
final Instant now = clock.instant(); // called once
|
||||
return ofInstant(now, clock.getZone().getRules().getOffset(now));
|
||||
}
|
||||
|
@ -226,8 +224,8 @@ public final class OffsetTime
|
|||
* @return the offset time, not null
|
||||
*/
|
||||
public static OffsetTime ofInstant(Instant instant, ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(instant, "instant");
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(instant, "instant");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
ZoneRules rules = zone.getRules();
|
||||
ZoneOffset offset = rules.getOffset(instant);
|
||||
long secsOfDay = instant.getEpochSecond() % SECONDS_PER_DAY;
|
||||
|
@ -295,7 +293,7 @@ public final class OffsetTime
|
|||
* @throws DateTimeParseException if the text cannot be parsed
|
||||
*/
|
||||
public static OffsetTime parse(CharSequence text, DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, OffsetTime.FROM);
|
||||
}
|
||||
|
||||
|
@ -307,8 +305,8 @@ public final class OffsetTime
|
|||
* @param offset the zone offset, not null
|
||||
*/
|
||||
private OffsetTime(LocalTime time, ZoneOffset offset) {
|
||||
this.time = Jdk8Methods.requireNonNull(time, "time");
|
||||
this.offset = Jdk8Methods.requireNonNull(offset, "offset");
|
||||
this.time = Objects.requireNonNull(time, "time");
|
||||
this.offset = Objects.requireNonNull(offset, "offset");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -437,7 +435,7 @@ public final class OffsetTime
|
|||
*/
|
||||
@Override // override for Javadoc
|
||||
public int get(TemporalField field) {
|
||||
return super.get(field);
|
||||
return Temporal.super.get(field);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -989,7 +987,7 @@ public final class OffsetTime
|
|||
} else if (query == TemporalQueries.chronology() || query == TemporalQueries.localDate() || query == TemporalQueries.zoneId()) {
|
||||
return null;
|
||||
}
|
||||
return super.query(query);
|
||||
return Temporal.super.query(query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1162,7 +1160,7 @@ public final class OffsetTime
|
|||
if (offset.equals(other.offset)) {
|
||||
return time.compareTo(other.time);
|
||||
}
|
||||
int compare = Jdk8Methods.compareLongs(toEpochNano(), other.toEpochNano());
|
||||
int compare = Long.compare(toEpochNano(), other.toEpochNano());
|
||||
if (compare == 0) {
|
||||
compare = time.compareTo(other.time);
|
||||
}
|
||||
|
@ -1284,7 +1282,7 @@ public final class OffsetTime
|
|||
* @throws DateTimeException if an error occurs during printing
|
||||
*/
|
||||
public String format(DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.format(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ import java.io.Serializable;
|
|||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
@ -216,7 +217,7 @@ public final class Period
|
|||
throw new DateTimeException("Period requires ISO chronology: " + amount);
|
||||
}
|
||||
}
|
||||
Jdk8Methods.requireNonNull(amount, "amount");
|
||||
Objects.requireNonNull(amount, "amount");
|
||||
int years = 0;
|
||||
int months = 0;
|
||||
int days = 0;
|
||||
|
@ -300,7 +301,7 @@ public final class Period
|
|||
* @throws DateTimeParseException if the text cannot be parsed to a period
|
||||
*/
|
||||
public static Period parse(CharSequence text) {
|
||||
Jdk8Methods.requireNonNull(text, "text");
|
||||
Objects.requireNonNull(text, "text");
|
||||
Matcher matcher = PATTERN.matcher(text);
|
||||
if (matcher.matches()) {
|
||||
int negate = ("-".equals(matcher.group(1)) ? -1 : 1);
|
||||
|
@ -379,7 +380,7 @@ public final class Period
|
|||
//-----------------------------------------------------------------------
|
||||
@Override
|
||||
public List<TemporalUnit> getUnits() {
|
||||
return Collections.<TemporalUnit>unmodifiableList(Arrays.asList(YEARS, MONTHS, DAYS));
|
||||
return Collections.unmodifiableList(Arrays.asList(YEARS, MONTHS, DAYS));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -796,7 +797,7 @@ public final class Period
|
|||
*/
|
||||
@Override
|
||||
public Temporal addTo(Temporal temporal) {
|
||||
Jdk8Methods.requireNonNull(temporal, "temporal");
|
||||
Objects.requireNonNull(temporal, "temporal");
|
||||
if (years != 0) {
|
||||
if (months != 0) {
|
||||
temporal = temporal.plus(toTotalMonths(), MONTHS);
|
||||
|
@ -846,7 +847,7 @@ public final class Period
|
|||
*/
|
||||
@Override
|
||||
public Temporal subtractFrom(Temporal temporal) {
|
||||
Jdk8Methods.requireNonNull(temporal, "temporal");
|
||||
Objects.requireNonNull(temporal, "temporal");
|
||||
if (years != 0) {
|
||||
if (months != 0) {
|
||||
temporal = temporal.minus(toTotalMonths(), MONTHS);
|
||||
|
|
|
@ -46,6 +46,7 @@ import java.io.IOException;
|
|||
import java.io.InvalidObjectException;
|
||||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.chrono.Chronology;
|
||||
import org.threeten.bp.chrono.IsoChronology;
|
||||
|
@ -53,7 +54,6 @@ import org.threeten.bp.format.DateTimeFormatter;
|
|||
import org.threeten.bp.format.DateTimeFormatterBuilder;
|
||||
import org.threeten.bp.format.DateTimeParseException;
|
||||
import org.threeten.bp.format.SignStyle;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporalAccessor;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.ChronoUnit;
|
||||
|
@ -96,8 +96,7 @@ import org.threeten.bp.temporal.ValueRange;
|
|||
* This class is immutable and thread-safe.
|
||||
*/
|
||||
public final class Year
|
||||
extends DefaultInterfaceTemporalAccessor
|
||||
implements Temporal, TemporalAdjuster, Comparable<Year>, Serializable {
|
||||
implements Temporal, TemporalAdjuster, Comparable<Year>, Serializable, TemporalAccessor {
|
||||
|
||||
/**
|
||||
* The minimum supported year, '-999,999,999'.
|
||||
|
@ -107,15 +106,6 @@ public final class Year
|
|||
* The maximum supported year, '+999,999,999'.
|
||||
*/
|
||||
public static final int MAX_VALUE = 999999999;
|
||||
/**
|
||||
* Simulate JDK 8 method reference Year::from.
|
||||
*/
|
||||
public static final TemporalQuery<Year> FROM = new TemporalQuery<Year>() {
|
||||
@Override
|
||||
public Year queryFrom(TemporalAccessor temporal) {
|
||||
return Year.from(temporal);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Serialization version.
|
||||
|
@ -223,13 +213,13 @@ public final class Year
|
|||
return (Year) temporal;
|
||||
}
|
||||
try {
|
||||
if (IsoChronology.INSTANCE.equals(Chronology.from(temporal)) == false) {
|
||||
if (!IsoChronology.INSTANCE.equals(Chronology.from(temporal))) {
|
||||
temporal = LocalDate.from(temporal);
|
||||
}
|
||||
return of(temporal.get(YEAR));
|
||||
} catch (DateTimeException ex) {
|
||||
throw new DateTimeException("Unable to obtain Year from TemporalAccessor: " +
|
||||
temporal + ", type " + temporal.getClass().getName());
|
||||
throw new DateTimeException("Unable to obtain Year from TemporalAccessor: "
|
||||
+ temporal + ", type " + temporal.getClass().getName());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -259,8 +249,8 @@ public final class Year
|
|||
* @throws DateTimeParseException if the text cannot be parsed
|
||||
*/
|
||||
public static Year parse(CharSequence text, DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, Year.FROM);
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, Year::from);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
@ -379,7 +369,7 @@ public final class Year
|
|||
if (field == YEAR_OF_ERA) {
|
||||
return (year <= 0 ? ValueRange.of(1, MAX_VALUE + 1) : ValueRange.of(1, MAX_VALUE));
|
||||
}
|
||||
return super.range(field);
|
||||
return Temporal.super.range(field);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -702,7 +692,7 @@ public final class Year
|
|||
query == TemporalQueries.zone() || query == TemporalQueries.zoneId() || query == TemporalQueries.offset()) {
|
||||
return null;
|
||||
}
|
||||
return super.query(query);
|
||||
return Temporal.super.query(query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -954,7 +944,7 @@ public final class Year
|
|||
* @throws DateTimeException if an error occurs during printing
|
||||
*/
|
||||
public String format(DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.format(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@ import java.io.IOException;
|
|||
import java.io.InvalidObjectException;
|
||||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.chrono.Chronology;
|
||||
import org.threeten.bp.chrono.IsoChronology;
|
||||
|
@ -56,7 +57,6 @@ import org.threeten.bp.format.DateTimeFormatter;
|
|||
import org.threeten.bp.format.DateTimeFormatterBuilder;
|
||||
import org.threeten.bp.format.DateTimeParseException;
|
||||
import org.threeten.bp.format.SignStyle;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporalAccessor;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.ChronoUnit;
|
||||
|
@ -92,18 +92,7 @@ import org.threeten.bp.temporal.ValueRange;
|
|||
* This class is immutable and thread-safe.
|
||||
*/
|
||||
public final class YearMonth
|
||||
extends DefaultInterfaceTemporalAccessor
|
||||
implements Temporal, TemporalAdjuster, Comparable<YearMonth>, Serializable {
|
||||
|
||||
/**
|
||||
* Simulate JDK 8 method reference YearMonth::from.
|
||||
*/
|
||||
public static final TemporalQuery<YearMonth> FROM = new TemporalQuery<YearMonth>() {
|
||||
@Override
|
||||
public YearMonth queryFrom(TemporalAccessor temporal) {
|
||||
return YearMonth.from(temporal);
|
||||
}
|
||||
};
|
||||
implements Temporal, TemporalAdjuster, Comparable<YearMonth>, Serializable, TemporalAccessor {
|
||||
|
||||
/**
|
||||
* Serialization version.
|
||||
|
@ -185,7 +174,7 @@ public final class YearMonth
|
|||
* @throws DateTimeException if the year value is invalid
|
||||
*/
|
||||
public static YearMonth of(int year, Month month) {
|
||||
Jdk8Methods.requireNonNull(month, "month");
|
||||
Objects.requireNonNull(month, "month");
|
||||
return of(year, month.getValue());
|
||||
}
|
||||
|
||||
|
@ -264,8 +253,8 @@ public final class YearMonth
|
|||
* @throws DateTimeParseException if the text cannot be parsed
|
||||
*/
|
||||
public static YearMonth parse(CharSequence text, DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, YearMonth.FROM);
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, YearMonth::from);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
@ -368,7 +357,7 @@ public final class YearMonth
|
|||
if (field == YEAR_OF_ERA) {
|
||||
return (getYear() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE));
|
||||
}
|
||||
return super.range(field);
|
||||
return Temporal.super.range(field);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -831,7 +820,7 @@ public final class YearMonth
|
|||
query == TemporalQueries.zone() || query == TemporalQueries.zoneId() || query == TemporalQueries.offset()) {
|
||||
return null;
|
||||
}
|
||||
return super.query(query);
|
||||
return Temporal.super.query(query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1076,7 +1065,7 @@ public final class YearMonth
|
|||
* @throws DateTimeException if an error occurs during printing
|
||||
*/
|
||||
public String format(DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.format(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -39,13 +39,12 @@ import java.util.HashMap;
|
|||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import org.threeten.bp.format.DateTimeFormatterBuilder;
|
||||
import org.threeten.bp.format.TextStyle;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporalAccessor;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
import org.threeten.bp.temporal.TemporalField;
|
||||
import org.threeten.bp.temporal.TemporalQueries;
|
||||
|
@ -279,8 +278,8 @@ public abstract class ZoneId implements Serializable {
|
|||
* @throws ZoneRulesException if the zone ID is a region ID that cannot be found
|
||||
*/
|
||||
public static ZoneId of(String zoneId, Map<String, String> aliasMap) {
|
||||
Jdk8Methods.requireNonNull(zoneId, "zoneId");
|
||||
Jdk8Methods.requireNonNull(aliasMap, "aliasMap");
|
||||
Objects.requireNonNull(zoneId, "zoneId");
|
||||
Objects.requireNonNull(aliasMap, "aliasMap");
|
||||
String id = aliasMap.get(zoneId);
|
||||
id = (id != null ? id : zoneId);
|
||||
return of(id);
|
||||
|
@ -327,7 +326,7 @@ public abstract class ZoneId implements Serializable {
|
|||
* @throws ZoneRulesException if the zone ID is a region ID that cannot be found
|
||||
*/
|
||||
public static ZoneId of(String zoneId) {
|
||||
Jdk8Methods.requireNonNull(zoneId, "zoneId");
|
||||
Objects.requireNonNull(zoneId, "zoneId");
|
||||
if (zoneId.equals("Z")) {
|
||||
return ZoneOffset.UTC;
|
||||
}
|
||||
|
@ -372,8 +371,8 @@ public abstract class ZoneId implements Serializable {
|
|||
* "GMT", "UTC", or "UT", or ""
|
||||
*/
|
||||
public static ZoneId ofOffset(String prefix, ZoneOffset offset) {
|
||||
Jdk8Methods.requireNonNull(prefix, "prefix");
|
||||
Jdk8Methods.requireNonNull(offset, "offset");
|
||||
Objects.requireNonNull(prefix, "prefix");
|
||||
Objects.requireNonNull(offset, "offset");
|
||||
if (prefix.length() == 0) {
|
||||
return offset;
|
||||
}
|
||||
|
@ -472,7 +471,7 @@ public abstract class ZoneId implements Serializable {
|
|||
* @return the text value of the zone, not null
|
||||
*/
|
||||
public String getDisplayName(TextStyle style, Locale locale) {
|
||||
return new DateTimeFormatterBuilder().appendZoneText(style).toFormatter(locale).format(new DefaultInterfaceTemporalAccessor() {
|
||||
return new DateTimeFormatterBuilder().appendZoneText(style).toFormatter(locale).format(new TemporalAccessor() {
|
||||
@Override
|
||||
public boolean isSupported(TemporalField field) {
|
||||
return false;
|
||||
|
@ -487,7 +486,7 @@ public abstract class ZoneId implements Serializable {
|
|||
if (query == TemporalQueries.zoneId()) {
|
||||
return (R) ZoneId.this;
|
||||
}
|
||||
return super.query(query);
|
||||
return TemporalAccessor.super.query(query);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -41,8 +41,8 @@ import java.io.ObjectStreamException;
|
|||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
|
@ -90,16 +90,6 @@ public final class ZoneOffset
|
|||
extends ZoneId
|
||||
implements TemporalAccessor, TemporalAdjuster, Comparable<ZoneOffset>, Serializable {
|
||||
|
||||
/**
|
||||
* Simulate JDK 8 method reference ZoneOffset::from.
|
||||
*/
|
||||
public static final TemporalQuery<ZoneOffset> FROM = new TemporalQuery<ZoneOffset>() {
|
||||
@Override
|
||||
public ZoneOffset queryFrom(TemporalAccessor temporal) {
|
||||
return ZoneOffset.from(temporal);
|
||||
}
|
||||
};
|
||||
|
||||
/** Cache of time-zone offset by offset in seconds. */
|
||||
private static final Map<Integer, ZoneOffset> SECONDS_CACHE = new HashMap<>();
|
||||
/** Cache of time-zone offset by ID. */
|
||||
|
@ -180,7 +170,7 @@ public final class ZoneOffset
|
|||
* @throws DateTimeException if the offset ID is invalid
|
||||
*/
|
||||
public static ZoneOffset of(String offsetId) {
|
||||
Jdk8Methods.requireNonNull(offsetId, "offsetId");
|
||||
Objects.requireNonNull(offsetId, "offsetId");
|
||||
// "Z" is always in the cache
|
||||
ZoneOffset offset = ID_CACHE.get(offsetId);
|
||||
if (offset != null) {
|
||||
|
|
|
@ -37,9 +37,9 @@ import java.io.IOException;
|
|||
import java.io.InvalidObjectException;
|
||||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import java.util.regex.Pattern;
|
||||
import org.threeten.bp.zone.ZoneRules;
|
||||
import org.threeten.bp.zone.ZoneRulesException;
|
||||
import org.threeten.bp.zone.ZoneRulesProvider;
|
||||
|
@ -133,8 +133,8 @@ final class ZoneRegion extends ZoneId implements Serializable {
|
|||
* @throws DateTimeException if checking availability and the ID cannot be found
|
||||
*/
|
||||
static ZoneRegion ofId(String zoneId, boolean checkAvailable) {
|
||||
Jdk8Methods.requireNonNull(zoneId, "zoneId");
|
||||
if (zoneId.length() < 2 || PATTERN.matcher(zoneId).matches() == false) {
|
||||
Objects.requireNonNull(zoneId, "zoneId");
|
||||
if (zoneId.length() < 2 || !PATTERN.matcher(zoneId).matches()) {
|
||||
throw new DateTimeException("Invalid ID for region-based ZoneId, invalid format: " + zoneId);
|
||||
}
|
||||
ZoneRules rules = null;
|
||||
|
|
|
@ -42,11 +42,11 @@ import java.io.InvalidObjectException;
|
|||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.chrono.ChronoZonedDateTime;
|
||||
import org.threeten.bp.format.DateTimeFormatter;
|
||||
import org.threeten.bp.format.DateTimeParseException;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.ChronoUnit;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
|
@ -123,21 +123,6 @@ public final class ZonedDateTime
|
|||
extends ChronoZonedDateTime<LocalDate>
|
||||
implements Temporal, Serializable {
|
||||
|
||||
/**
|
||||
* Simulate JDK 8 method reference ZonedDateTime::from.
|
||||
*/
|
||||
public static final TemporalQuery<ZonedDateTime> FROM = new TemporalQuery<ZonedDateTime>() {
|
||||
@Override
|
||||
public ZonedDateTime queryFrom(TemporalAccessor temporal) {
|
||||
return ZonedDateTime.from(temporal);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Serialization version.
|
||||
*/
|
||||
private static final long serialVersionUID = -6260982410461394882L;
|
||||
|
||||
/**
|
||||
* The local date-time.
|
||||
*/
|
||||
|
@ -198,7 +183,7 @@ public final class ZonedDateTime
|
|||
* @return the current date-time, not null
|
||||
*/
|
||||
public static ZonedDateTime now(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
final Instant now = clock.instant(); // called once
|
||||
return ofInstant(now, clock.getZone());
|
||||
}
|
||||
|
@ -333,8 +318,8 @@ public final class ZonedDateTime
|
|||
* @return the zoned date-time, not null
|
||||
*/
|
||||
public static ZonedDateTime ofLocal(LocalDateTime localDateTime, ZoneId zone, ZoneOffset preferredOffset) {
|
||||
Jdk8Methods.requireNonNull(localDateTime, "localDateTime");
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(localDateTime, "localDateTime");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
if (zone instanceof ZoneOffset) {
|
||||
return new ZonedDateTime(localDateTime, (ZoneOffset) zone, zone);
|
||||
}
|
||||
|
@ -351,7 +336,7 @@ public final class ZonedDateTime
|
|||
if (preferredOffset != null && validOffsets.contains(preferredOffset)) {
|
||||
offset = preferredOffset;
|
||||
} else {
|
||||
offset = Jdk8Methods.requireNonNull(validOffsets.get(0), "offset"); // protect against bad ZoneRules
|
||||
offset = Objects.requireNonNull(validOffsets.get(0), "offset"); // protect against bad ZoneRules
|
||||
}
|
||||
}
|
||||
return new ZonedDateTime(localDateTime, offset, zone);
|
||||
|
@ -373,8 +358,8 @@ public final class ZonedDateTime
|
|||
* @throws DateTimeException if the result exceeds the supported range
|
||||
*/
|
||||
public static ZonedDateTime ofInstant(Instant instant, ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(instant, "instant");
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(instant, "instant");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
return create(instant.getEpochSecond(), instant.getNano(), zone);
|
||||
}
|
||||
|
||||
|
@ -399,9 +384,9 @@ public final class ZonedDateTime
|
|||
* @return the zoned date-time, not null
|
||||
*/
|
||||
public static ZonedDateTime ofInstant(LocalDateTime localDateTime, ZoneOffset offset, ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(localDateTime, "localDateTime");
|
||||
Jdk8Methods.requireNonNull(offset, "offset");
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(localDateTime, "localDateTime");
|
||||
Objects.requireNonNull(offset, "offset");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
return create(localDateTime.toEpochSecond(offset), localDateTime.getNano(), zone);
|
||||
}
|
||||
|
||||
|
@ -438,9 +423,9 @@ public final class ZonedDateTime
|
|||
* @return the zoned date-time, not null
|
||||
*/
|
||||
public static ZonedDateTime ofStrict(LocalDateTime localDateTime, ZoneOffset offset, ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(localDateTime, "localDateTime");
|
||||
Jdk8Methods.requireNonNull(offset, "offset");
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(localDateTime, "localDateTime");
|
||||
Objects.requireNonNull(offset, "offset");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
ZoneRules rules = zone.getRules();
|
||||
if (rules.isValidOffset(localDateTime, offset) == false) {
|
||||
ZoneOffsetTransition trans = rules.getTransition(localDateTime);
|
||||
|
@ -479,9 +464,9 @@ public final class ZonedDateTime
|
|||
* @return the zoned date-time, not null
|
||||
*/
|
||||
private static ZonedDateTime ofLenient(LocalDateTime localDateTime, ZoneOffset offset, ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(localDateTime, "localDateTime");
|
||||
Jdk8Methods.requireNonNull(offset, "offset");
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(localDateTime, "localDateTime");
|
||||
Objects.requireNonNull(offset, "offset");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
if (zone instanceof ZoneOffset && offset.equals(zone) == false) {
|
||||
throw new IllegalArgumentException("ZoneId must match ZoneOffset");
|
||||
}
|
||||
|
@ -558,8 +543,8 @@ public final class ZonedDateTime
|
|||
* @throws DateTimeParseException if the text cannot be parsed
|
||||
*/
|
||||
public static ZonedDateTime parse(CharSequence text, DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, ZonedDateTime.FROM);
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.parse(text, ZonedDateTime::from);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
@ -887,7 +872,7 @@ public final class ZonedDateTime
|
|||
*/
|
||||
@Override
|
||||
public ZonedDateTime withZoneSameLocal(ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
return this.zone.equals(zone) ? this : ofLocal(dateTime, zone, offset);
|
||||
}
|
||||
|
||||
|
@ -910,7 +895,7 @@ public final class ZonedDateTime
|
|||
*/
|
||||
@Override
|
||||
public ZonedDateTime withZoneSameInstant(ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
return this.zone.equals(zone) ? this :
|
||||
create(dateTime.toEpochSecond(offset), dateTime.getNano(), zone);
|
||||
}
|
||||
|
|
|
@ -39,13 +39,11 @@ import static org.threeten.bp.temporal.ChronoField.YEAR;
|
|||
import static org.threeten.bp.temporal.ChronoField.YEAR_OF_ERA;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
import java.util.Objects;
|
||||
import org.threeten.bp.DateTimeException;
|
||||
import org.threeten.bp.LocalDate;
|
||||
import org.threeten.bp.LocalTime;
|
||||
import org.threeten.bp.format.DateTimeFormatter;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporal;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.ChronoUnit;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
|
@ -219,7 +217,6 @@ import org.threeten.bp.temporal.TemporalUnit;
|
|||
* Since there are no default methods in JDK 7, an abstract class is used.
|
||||
*/
|
||||
public abstract class ChronoLocalDate
|
||||
extends DefaultInterfaceTemporal
|
||||
implements Temporal, TemporalAdjuster, Comparable<ChronoLocalDate> {
|
||||
|
||||
/**
|
||||
|
@ -240,13 +237,9 @@ public abstract class ChronoLocalDate
|
|||
public static Comparator<ChronoLocalDate> timeLineOrder() {
|
||||
return DATE_COMPARATOR;
|
||||
}
|
||||
|
||||
private static final Comparator<ChronoLocalDate> DATE_COMPARATOR =
|
||||
new Comparator<ChronoLocalDate>() {
|
||||
@Override
|
||||
public int compare(ChronoLocalDate date1, ChronoLocalDate date2) {
|
||||
return Jdk8Methods.compareLongs(date1.toEpochDay(), date2.toEpochDay());
|
||||
}
|
||||
};
|
||||
Comparator.comparingLong(ChronoLocalDate::toEpochDay);
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
|
@ -271,7 +264,7 @@ public abstract class ChronoLocalDate
|
|||
* @see Chronology#date(TemporalAccessor)
|
||||
*/
|
||||
public static ChronoLocalDate from(TemporalAccessor temporal) {
|
||||
Jdk8Methods.requireNonNull(temporal, "temporal");
|
||||
Objects.requireNonNull(temporal, "temporal");
|
||||
if (temporal instanceof ChronoLocalDate) {
|
||||
return (ChronoLocalDate) temporal;
|
||||
}
|
||||
|
@ -368,7 +361,7 @@ public abstract class ChronoLocalDate
|
|||
// override for covariant return type
|
||||
@Override
|
||||
public ChronoLocalDate with(TemporalAdjuster adjuster) {
|
||||
return getChronology().ensureChronoLocalDate(super.with(adjuster));
|
||||
return getChronology().ensureChronoLocalDate(Temporal.super.with(adjuster));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -376,7 +369,7 @@ public abstract class ChronoLocalDate
|
|||
|
||||
@Override
|
||||
public ChronoLocalDate plus(TemporalAmount amount) {
|
||||
return getChronology().ensureChronoLocalDate(super.plus(amount));
|
||||
return getChronology().ensureChronoLocalDate(Temporal.super.plus(amount));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -384,12 +377,12 @@ public abstract class ChronoLocalDate
|
|||
|
||||
@Override
|
||||
public ChronoLocalDate minus(TemporalAmount amount) {
|
||||
return getChronology().ensureChronoLocalDate(super.minus(amount));
|
||||
return getChronology().ensureChronoLocalDate(Temporal.super.minus(amount));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChronoLocalDate minus(long amountToSubtract, TemporalUnit unit) {
|
||||
return getChronology().ensureChronoLocalDate(super.minus(amountToSubtract, unit));
|
||||
return getChronology().ensureChronoLocalDate(Temporal.super.minus(amountToSubtract, unit));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
@ -406,7 +399,7 @@ public abstract class ChronoLocalDate
|
|||
query == TemporalQueries.zoneId() || query == TemporalQueries.offset()) {
|
||||
return null;
|
||||
}
|
||||
return super.query(query);
|
||||
return Temporal.super.query(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -453,7 +446,7 @@ public abstract class ChronoLocalDate
|
|||
* @throws DateTimeException if an error occurs during printing
|
||||
*/
|
||||
public String format(DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.format(this);
|
||||
}
|
||||
|
||||
|
@ -514,7 +507,7 @@ public abstract class ChronoLocalDate
|
|||
*/
|
||||
@Override
|
||||
public int compareTo(ChronoLocalDate other) {
|
||||
int cmp = Jdk8Methods.compareLongs(toEpochDay(), other.toEpochDay());
|
||||
int cmp = Long.compare(toEpochDay(), other.toEpochDay());
|
||||
if (cmp == 0) {
|
||||
cmp = getChronology().compareTo(other.getChronology());
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ import static org.threeten.bp.temporal.ChronoField.NANO_OF_DAY;
|
|||
import static org.threeten.bp.temporal.ChronoUnit.NANOS;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.DateTimeException;
|
||||
import org.threeten.bp.Instant;
|
||||
|
@ -45,8 +46,6 @@ import org.threeten.bp.LocalTime;
|
|||
import org.threeten.bp.ZoneId;
|
||||
import org.threeten.bp.ZoneOffset;
|
||||
import org.threeten.bp.format.DateTimeFormatter;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporal;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
|
@ -91,7 +90,6 @@ import org.threeten.bp.zone.ZoneRules;
|
|||
* @param <D> the date type
|
||||
*/
|
||||
public abstract class ChronoLocalDateTime<D extends ChronoLocalDate>
|
||||
extends DefaultInterfaceTemporal
|
||||
implements Temporal, TemporalAdjuster, Comparable<ChronoLocalDateTime<?>> {
|
||||
|
||||
/**
|
||||
|
@ -113,16 +111,8 @@ public abstract class ChronoLocalDateTime<D extends ChronoLocalDate>
|
|||
return DATE_TIME_COMPARATOR;
|
||||
}
|
||||
private static final Comparator<ChronoLocalDateTime<?>> DATE_TIME_COMPARATOR =
|
||||
new Comparator<ChronoLocalDateTime<?>>() {
|
||||
@Override
|
||||
public int compare(ChronoLocalDateTime<?> datetime1, ChronoLocalDateTime<?> datetime2) {
|
||||
int cmp = Jdk8Methods.compareLongs(datetime1.toLocalDate().toEpochDay(), datetime2.toLocalDate().toEpochDay());
|
||||
if (cmp == 0) {
|
||||
cmp = Jdk8Methods.compareLongs(datetime1.toLocalTime().toNanoOfDay(), datetime2.toLocalTime().toNanoOfDay());
|
||||
}
|
||||
return cmp;
|
||||
}
|
||||
};
|
||||
Comparator.comparingLong((ChronoLocalDateTime<?> datetime) -> datetime.toLocalDate().toEpochDay())
|
||||
.thenComparingLong(datetime -> datetime.toLocalTime().toNanoOfDay());
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
|
@ -147,7 +137,7 @@ public abstract class ChronoLocalDateTime<D extends ChronoLocalDate>
|
|||
* @see Chronology#localDateTime(TemporalAccessor)
|
||||
*/
|
||||
public static ChronoLocalDateTime<?> from(TemporalAccessor temporal) {
|
||||
Jdk8Methods.requireNonNull(temporal, "temporal");
|
||||
Objects.requireNonNull(temporal, "temporal");
|
||||
if (temporal instanceof ChronoLocalDateTime) {
|
||||
return (ChronoLocalDateTime<?>) temporal;
|
||||
}
|
||||
|
@ -195,7 +185,7 @@ public abstract class ChronoLocalDateTime<D extends ChronoLocalDate>
|
|||
// override for covariant return type
|
||||
@Override
|
||||
public ChronoLocalDateTime<D> with(TemporalAdjuster adjuster) {
|
||||
return toLocalDate().getChronology().ensureChronoLocalDateTime(super.with(adjuster));
|
||||
return toLocalDate().getChronology().ensureChronoLocalDateTime(Temporal.super.with(adjuster));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -203,7 +193,7 @@ public abstract class ChronoLocalDateTime<D extends ChronoLocalDate>
|
|||
|
||||
@Override
|
||||
public ChronoLocalDateTime<D> plus(TemporalAmount amount) {
|
||||
return toLocalDate().getChronology().ensureChronoLocalDateTime(super.plus(amount));
|
||||
return toLocalDate().getChronology().ensureChronoLocalDateTime(Temporal.super.plus(amount));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -211,12 +201,12 @@ public abstract class ChronoLocalDateTime<D extends ChronoLocalDate>
|
|||
|
||||
@Override
|
||||
public ChronoLocalDateTime<D> minus(TemporalAmount amount) {
|
||||
return toLocalDate().getChronology().ensureChronoLocalDateTime(super.minus(amount));
|
||||
return toLocalDate().getChronology().ensureChronoLocalDateTime(Temporal.super.minus(amount));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChronoLocalDateTime<D> minus(long amountToSubtract, TemporalUnit unit) {
|
||||
return toLocalDate().getChronology().ensureChronoLocalDateTime(super.minus(amountToSubtract, unit));
|
||||
return toLocalDate().getChronology().ensureChronoLocalDateTime(Temporal.super.minus(amountToSubtract, unit));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
@ -234,7 +224,7 @@ public abstract class ChronoLocalDateTime<D extends ChronoLocalDate>
|
|||
} else if (query == TemporalQueries.zone() || query == TemporalQueries.zoneId() || query == TemporalQueries.offset()) {
|
||||
return null;
|
||||
}
|
||||
return super.query(query);
|
||||
return Temporal.super.query(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -259,7 +249,7 @@ public abstract class ChronoLocalDateTime<D extends ChronoLocalDate>
|
|||
* @throws DateTimeException if an error occurs during printing
|
||||
*/
|
||||
public String format(DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.format(this);
|
||||
}
|
||||
|
||||
|
@ -319,7 +309,7 @@ public abstract class ChronoLocalDateTime<D extends ChronoLocalDate>
|
|||
* @return the number of seconds from the epoch of 1970-01-01T00:00:00Z
|
||||
*/
|
||||
public long toEpochSecond(ZoneOffset offset) {
|
||||
Jdk8Methods.requireNonNull(offset, "offset");
|
||||
Objects.requireNonNull(offset, "offset");
|
||||
long epochDay = toLocalDate().toEpochDay();
|
||||
long secs = epochDay * 86400 + toLocalTime().toSecondOfDay();
|
||||
secs -= offset.getTotalSeconds();
|
||||
|
|
|
@ -37,6 +37,7 @@ import java.io.IOException;
|
|||
import java.io.ObjectInput;
|
||||
import java.io.ObjectOutput;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.LocalTime;
|
||||
import org.threeten.bp.ZoneId;
|
||||
|
@ -150,8 +151,8 @@ final class ChronoLocalDateTimeImpl<D extends ChronoLocalDate>
|
|||
* @param time the time part of the date-time, not null
|
||||
*/
|
||||
private ChronoLocalDateTimeImpl(D date, LocalTime time) {
|
||||
Jdk8Methods.requireNonNull(date, "date");
|
||||
Jdk8Methods.requireNonNull(time, "time");
|
||||
Objects.requireNonNull(date, "date");
|
||||
Objects.requireNonNull(time, "time");
|
||||
this.date = date;
|
||||
this.time = time;
|
||||
}
|
||||
|
|
|
@ -32,9 +32,9 @@
|
|||
package org.threeten.bp.chrono;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.DateTimeException;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoUnit;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
import org.threeten.bp.temporal.TemporalAmount;
|
||||
|
@ -86,8 +86,8 @@ public abstract class ChronoPeriod
|
|||
* @see ChronoLocalDate#until(ChronoLocalDate)
|
||||
*/
|
||||
public static ChronoPeriod between(ChronoLocalDate startDateInclusive, ChronoLocalDate endDateExclusive) {
|
||||
Jdk8Methods.requireNonNull(startDateInclusive, "startDateInclusive");
|
||||
Jdk8Methods.requireNonNull(endDateExclusive, "endDateExclusive");
|
||||
Objects.requireNonNull(startDateInclusive, "startDateInclusive");
|
||||
Objects.requireNonNull(endDateExclusive, "endDateExclusive");
|
||||
return startDateInclusive.until(endDateExclusive);
|
||||
}
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ import java.io.Serializable;
|
|||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.DateTimeException;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
|
@ -152,7 +153,7 @@ final class ChronoPeriodImpl
|
|||
|
||||
@Override
|
||||
public Temporal addTo(Temporal temporal) {
|
||||
Jdk8Methods.requireNonNull(temporal, "temporal");
|
||||
Objects.requireNonNull(temporal, "temporal");
|
||||
Chronology temporalChrono = temporal.query(TemporalQueries.chronology());
|
||||
if (temporalChrono != null && chronology.equals(temporalChrono) == false) {
|
||||
throw new DateTimeException("Invalid chronology, required: " + chronology.getId() + ", but was: " + temporalChrono.getId());
|
||||
|
@ -171,7 +172,7 @@ final class ChronoPeriodImpl
|
|||
|
||||
@Override
|
||||
public Temporal subtractFrom(Temporal temporal) {
|
||||
Jdk8Methods.requireNonNull(temporal, "temporal");
|
||||
Objects.requireNonNull(temporal, "temporal");
|
||||
Chronology temporalChrono = temporal.query(TemporalQueries.chronology());
|
||||
if (temporalChrono != null && chronology.equals(temporalChrono) == false) {
|
||||
throw new DateTimeException("Invalid chronology, required: " + chronology.getId() + ", but was: " + temporalChrono.getId());
|
||||
|
|
|
@ -36,6 +36,8 @@ import static org.threeten.bp.temporal.ChronoField.OFFSET_SECONDS;
|
|||
import static org.threeten.bp.temporal.ChronoUnit.NANOS;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.Objects;
|
||||
import java.util.function.ToLongFunction;
|
||||
|
||||
import org.threeten.bp.DateTimeException;
|
||||
import org.threeten.bp.Instant;
|
||||
|
@ -45,8 +47,6 @@ import org.threeten.bp.ZoneId;
|
|||
import org.threeten.bp.ZoneOffset;
|
||||
import org.threeten.bp.ZonedDateTime;
|
||||
import org.threeten.bp.format.DateTimeFormatter;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporal;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
|
@ -92,7 +92,6 @@ import org.threeten.bp.temporal.ValueRange;
|
|||
* @param <D> the date type
|
||||
*/
|
||||
public abstract class ChronoZonedDateTime<D extends ChronoLocalDate>
|
||||
extends DefaultInterfaceTemporal
|
||||
implements Temporal, Comparable<ChronoZonedDateTime<?>> {
|
||||
|
||||
/**
|
||||
|
@ -113,16 +112,9 @@ public abstract class ChronoZonedDateTime<D extends ChronoLocalDate>
|
|||
public static Comparator<ChronoZonedDateTime<?>> timeLineOrder() {
|
||||
return INSTANT_COMPARATOR;
|
||||
}
|
||||
private static Comparator<ChronoZonedDateTime<?>> INSTANT_COMPARATOR = new Comparator<ChronoZonedDateTime<?>>() {
|
||||
@Override
|
||||
public int compare(ChronoZonedDateTime<?> datetime1, ChronoZonedDateTime<?> datetime2) {
|
||||
int cmp = Jdk8Methods.compareLongs(datetime1.toEpochSecond(), datetime2.toEpochSecond());
|
||||
if (cmp == 0) {
|
||||
cmp = Jdk8Methods.compareLongs(datetime1.toLocalTime().toNanoOfDay(), datetime2.toLocalTime().toNanoOfDay());
|
||||
}
|
||||
return cmp;
|
||||
}
|
||||
};
|
||||
private static final Comparator<ChronoZonedDateTime<?>> INSTANT_COMPARATOR =
|
||||
Comparator.comparingLong((ToLongFunction<ChronoZonedDateTime<?>>) ChronoZonedDateTime::toEpochSecond)
|
||||
.thenComparingLong(datetime -> datetime.toLocalTime().toNanoOfDay());
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
|
@ -147,7 +139,7 @@ public abstract class ChronoZonedDateTime<D extends ChronoLocalDate>
|
|||
* @see Chronology#zonedDateTime(TemporalAccessor)
|
||||
*/
|
||||
public static ChronoZonedDateTime<?> from(TemporalAccessor temporal) {
|
||||
Jdk8Methods.requireNonNull(temporal, "temporal");
|
||||
Objects.requireNonNull(temporal, "temporal");
|
||||
if (temporal instanceof ChronoZonedDateTime) {
|
||||
return (ChronoZonedDateTime<?>) temporal;
|
||||
}
|
||||
|
@ -179,7 +171,7 @@ public abstract class ChronoZonedDateTime<D extends ChronoLocalDate>
|
|||
}
|
||||
return toLocalDateTime().get(field);
|
||||
}
|
||||
return super.get(field);
|
||||
return Temporal.super.get(field);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -341,7 +333,7 @@ public abstract class ChronoZonedDateTime<D extends ChronoLocalDate>
|
|||
// override for covariant return type
|
||||
@Override
|
||||
public ChronoZonedDateTime<D> with(TemporalAdjuster adjuster) {
|
||||
return toLocalDate().getChronology().ensureChronoZonedDateTime(super.with(adjuster));
|
||||
return toLocalDate().getChronology().ensureChronoZonedDateTime(Temporal.super.with(adjuster));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -349,7 +341,7 @@ public abstract class ChronoZonedDateTime<D extends ChronoLocalDate>
|
|||
|
||||
@Override
|
||||
public ChronoZonedDateTime<D> plus(TemporalAmount amount) {
|
||||
return toLocalDate().getChronology().ensureChronoZonedDateTime(super.plus(amount));
|
||||
return toLocalDate().getChronology().ensureChronoZonedDateTime(Temporal.super.plus(amount));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -357,12 +349,12 @@ public abstract class ChronoZonedDateTime<D extends ChronoLocalDate>
|
|||
|
||||
@Override
|
||||
public ChronoZonedDateTime<D> minus(TemporalAmount amount) {
|
||||
return toLocalDate().getChronology().ensureChronoZonedDateTime(super.minus(amount));
|
||||
return toLocalDate().getChronology().ensureChronoZonedDateTime(Temporal.super.minus(amount));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChronoZonedDateTime<D> minus(long amountToSubtract, TemporalUnit unit) {
|
||||
return toLocalDate().getChronology().ensureChronoZonedDateTime(super.minus(amountToSubtract, unit));
|
||||
return toLocalDate().getChronology().ensureChronoZonedDateTime(Temporal.super.minus(amountToSubtract, unit));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
@ -382,7 +374,7 @@ public abstract class ChronoZonedDateTime<D extends ChronoLocalDate>
|
|||
} else if (query == TemporalQueries.localTime()) {
|
||||
return (R) toLocalTime();
|
||||
}
|
||||
return super.query(query);
|
||||
return Temporal.super.query(query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -393,7 +385,7 @@ public abstract class ChronoZonedDateTime<D extends ChronoLocalDate>
|
|||
* @throws DateTimeException if an error occurs during printing
|
||||
*/
|
||||
public String format(DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
return formatter.format(this);
|
||||
}
|
||||
|
||||
|
@ -446,7 +438,7 @@ public abstract class ChronoZonedDateTime<D extends ChronoLocalDate>
|
|||
*/
|
||||
@Override
|
||||
public int compareTo(ChronoZonedDateTime<?> other) {
|
||||
int cmp = Jdk8Methods.compareLongs(toEpochSecond(), other.toEpochSecond());
|
||||
int cmp = Long.compare(toEpochSecond(), other.toEpochSecond());
|
||||
if (cmp == 0) {
|
||||
cmp = toLocalTime().getNano() - other.toLocalTime().getNano();
|
||||
if (cmp == 0) {
|
||||
|
|
|
@ -40,12 +40,12 @@ import java.io.ObjectOutput;
|
|||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Instant;
|
||||
import org.threeten.bp.LocalDateTime;
|
||||
import org.threeten.bp.ZoneId;
|
||||
import org.threeten.bp.ZoneOffset;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.ChronoUnit;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
|
@ -103,10 +103,10 @@ final class ChronoZonedDateTimeImpl<D extends ChronoLocalDate>
|
|||
*/
|
||||
static <R extends ChronoLocalDate> ChronoZonedDateTime<R> ofBest(
|
||||
ChronoLocalDateTimeImpl<R> localDateTime, ZoneId zone, ZoneOffset preferredOffset) {
|
||||
Jdk8Methods.requireNonNull(localDateTime, "localDateTime");
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(localDateTime, "localDateTime");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
if (zone instanceof ZoneOffset) {
|
||||
return new ChronoZonedDateTimeImpl<R>(localDateTime, (ZoneOffset) zone, zone);
|
||||
return new ChronoZonedDateTimeImpl<>(localDateTime, (ZoneOffset) zone, zone);
|
||||
}
|
||||
ZoneRules rules = zone.getRules();
|
||||
LocalDateTime isoLDT = LocalDateTime.from(localDateTime);
|
||||
|
@ -125,8 +125,8 @@ final class ChronoZonedDateTimeImpl<D extends ChronoLocalDate>
|
|||
offset = validOffsets.get(0);
|
||||
}
|
||||
}
|
||||
Jdk8Methods.requireNonNull(offset, "offset"); // protect against bad ZoneRules
|
||||
return new ChronoZonedDateTimeImpl<R>(localDateTime, offset, zone);
|
||||
Objects.requireNonNull(offset, "offset"); // protect against bad ZoneRules
|
||||
return new ChronoZonedDateTimeImpl<>(localDateTime, offset, zone);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -140,11 +140,11 @@ final class ChronoZonedDateTimeImpl<D extends ChronoLocalDate>
|
|||
static <R extends ChronoLocalDate> ChronoZonedDateTimeImpl<R> ofInstant(Chronology chrono, Instant instant, ZoneId zone) {
|
||||
ZoneRules rules = zone.getRules();
|
||||
ZoneOffset offset = rules.getOffset(instant);
|
||||
Jdk8Methods.requireNonNull(offset, "offset"); // protect against bad ZoneRules
|
||||
Objects.requireNonNull(offset, "offset"); // protect against bad ZoneRules
|
||||
LocalDateTime ldt = LocalDateTime.ofEpochSecond(instant.getEpochSecond(), instant.getNano(), offset);
|
||||
@SuppressWarnings("unchecked")
|
||||
ChronoLocalDateTimeImpl<R> cldt = (ChronoLocalDateTimeImpl<R>) chrono.localDateTime(ldt);
|
||||
return new ChronoZonedDateTimeImpl<R>(cldt, offset, zone);
|
||||
return new ChronoZonedDateTimeImpl<>(cldt, offset, zone);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -167,9 +167,9 @@ final class ChronoZonedDateTimeImpl<D extends ChronoLocalDate>
|
|||
* @param zone the zone ID, not null
|
||||
*/
|
||||
private ChronoZonedDateTimeImpl(ChronoLocalDateTimeImpl<D> dateTime, ZoneOffset offset, ZoneId zone) {
|
||||
this.dateTime = Jdk8Methods.requireNonNull(dateTime, "dateTime");
|
||||
this.offset = Jdk8Methods.requireNonNull(offset, "offset");
|
||||
this.zone = Jdk8Methods.requireNonNull(zone, "zone");
|
||||
this.dateTime = Objects.requireNonNull(dateTime, "dateTime");
|
||||
this.offset = Objects.requireNonNull(offset, "offset");
|
||||
this.zone = Objects.requireNonNull(zone, "zone");
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
@ -203,7 +203,7 @@ final class ChronoZonedDateTimeImpl<D extends ChronoLocalDate>
|
|||
if (trans != null) {
|
||||
ZoneOffset offset = trans.getOffsetAfter();
|
||||
if (offset.equals(getOffset()) == false) {
|
||||
return new ChronoZonedDateTimeImpl<D>(dateTime, offset, zone);
|
||||
return new ChronoZonedDateTimeImpl<>(dateTime, offset, zone);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
|
@ -225,7 +225,7 @@ final class ChronoZonedDateTimeImpl<D extends ChronoLocalDate>
|
|||
|
||||
@Override
|
||||
public ChronoZonedDateTime<D> withZoneSameInstant(ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
return this.zone.equals(zone) ? this : create(dateTime.toInstant(offset), zone);
|
||||
}
|
||||
|
||||
|
|
|
@ -41,6 +41,7 @@ import java.util.HashSet;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.ServiceLoader;
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -53,8 +54,6 @@ import org.threeten.bp.ZoneId;
|
|||
import org.threeten.bp.format.DateTimeFormatterBuilder;
|
||||
import org.threeten.bp.format.ResolverStyle;
|
||||
import org.threeten.bp.format.TextStyle;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporalAccessor;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
|
@ -138,16 +137,6 @@ import org.threeten.bp.temporal.ValueRange;
|
|||
*/
|
||||
public abstract class Chronology implements Comparable<Chronology> {
|
||||
|
||||
/**
|
||||
* Simulate JDK 8 method reference Chronology::from.
|
||||
*/
|
||||
public static final TemporalQuery<Chronology> FROM = new TemporalQuery<Chronology>() {
|
||||
@Override
|
||||
public Chronology queryFrom(TemporalAccessor temporal) {
|
||||
return Chronology.from(temporal);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Map of available calendars by ID.
|
||||
*/
|
||||
|
@ -175,7 +164,7 @@ public abstract class Chronology implements Comparable<Chronology> {
|
|||
* @throws DateTimeException if unable to convert to an {@code Chronology}
|
||||
*/
|
||||
public static Chronology from(TemporalAccessor temporal) {
|
||||
Jdk8Methods.requireNonNull(temporal, "temporal");
|
||||
Objects.requireNonNull(temporal, "temporal");
|
||||
Chronology obj = temporal.query(TemporalQueries.chronology());
|
||||
return (obj != null ? obj : IsoChronology.INSTANCE);
|
||||
}
|
||||
|
@ -223,7 +212,7 @@ public abstract class Chronology implements Comparable<Chronology> {
|
|||
*/
|
||||
public static Chronology ofLocale(Locale locale) {
|
||||
init();
|
||||
Jdk8Methods.requireNonNull(locale, "locale");
|
||||
Objects.requireNonNull(locale, "locale");
|
||||
String type = "iso";
|
||||
if (locale.equals(JapaneseChronology.LOCALE)) {
|
||||
type = "japanese";
|
||||
|
@ -281,7 +270,7 @@ public abstract class Chronology implements Comparable<Chronology> {
|
|||
*/
|
||||
public static Set<Chronology> getAvailableChronologies() {
|
||||
init();
|
||||
return new HashSet<Chronology>(CHRONOS_BY_ID.values());
|
||||
return new HashSet<>(CHRONOS_BY_ID.values());
|
||||
}
|
||||
|
||||
private static void init() {
|
||||
|
@ -528,7 +517,7 @@ public abstract class Chronology implements Comparable<Chronology> {
|
|||
* @throws DateTimeException if unable to create the date
|
||||
*/
|
||||
public ChronoLocalDate dateNow(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
return date(LocalDate.now(clock));
|
||||
}
|
||||
|
||||
|
@ -725,24 +714,25 @@ public abstract class Chronology implements Comparable<Chronology> {
|
|||
* @return the text value of the chronology, not null
|
||||
*/
|
||||
public String getDisplayName(TextStyle style, Locale locale) {
|
||||
return new DateTimeFormatterBuilder().appendChronologyText(style).toFormatter(locale).format(new DefaultInterfaceTemporalAccessor() {
|
||||
@Override
|
||||
public boolean isSupported(TemporalField field) {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public long getLong(TemporalField field) {
|
||||
throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
|
||||
}
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public <R> R query(TemporalQuery<R> query) {
|
||||
if (query == TemporalQueries.chronology()) {
|
||||
return (R) Chronology.this;
|
||||
}
|
||||
return super.query(query);
|
||||
}
|
||||
});
|
||||
return new DateTimeFormatterBuilder().appendChronologyText(style).toFormatter(locale).format(
|
||||
new TemporalAccessor() {
|
||||
@Override
|
||||
public boolean isSupported(TemporalField field) {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public long getLong(TemporalField field) {
|
||||
throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
|
||||
}
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public <R> R query(TemporalQuery<R> query) {
|
||||
if (query == TemporalQueries.chronology()) {
|
||||
return (R) Chronology.this;
|
||||
}
|
||||
return TemporalAccessor.super.query(query);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
|
|
@ -31,11 +31,20 @@
|
|||
*/
|
||||
package org.threeten.bp.chrono;
|
||||
|
||||
import static org.threeten.bp.temporal.ChronoField.ERA;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.threeten.bp.format.DateTimeFormatterBuilder;
|
||||
import org.threeten.bp.format.TextStyle;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.ChronoUnit;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
import org.threeten.bp.temporal.TemporalAdjuster;
|
||||
import org.threeten.bp.temporal.TemporalField;
|
||||
import org.threeten.bp.temporal.TemporalQueries;
|
||||
import org.threeten.bp.temporal.TemporalQuery;
|
||||
import org.threeten.bp.temporal.UnsupportedTemporalTypeException;
|
||||
|
||||
/**
|
||||
* An era of the time-line.
|
||||
|
@ -59,6 +68,52 @@ import org.threeten.bp.temporal.TemporalAdjuster;
|
|||
* It is recommended to use an enum whenever possible.
|
||||
*/
|
||||
public interface Era extends TemporalAccessor, TemporalAdjuster {
|
||||
@Override
|
||||
default boolean isSupported(TemporalField field) {
|
||||
if (field instanceof ChronoField) {
|
||||
return field == ERA;
|
||||
}
|
||||
return field != null && field.isSupportedBy(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
default int get(TemporalField field) {
|
||||
if (field == ERA) {
|
||||
return getValue();
|
||||
}
|
||||
return range(field).checkValidIntValue(getLong(field), field);
|
||||
}
|
||||
|
||||
@Override
|
||||
default long getLong(TemporalField field) {
|
||||
if (field == ERA) {
|
||||
return getValue();
|
||||
} else if (field instanceof ChronoField) {
|
||||
throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
|
||||
}
|
||||
return field.getFrom(this);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
default <R> R query(TemporalQuery<R> query) {
|
||||
if (query == TemporalQueries.precision()) {
|
||||
return (R) ChronoUnit.ERAS;
|
||||
}
|
||||
if (query == TemporalQueries.chronology() || query == TemporalQueries.zone()
|
||||
|| query == TemporalQueries.zoneId() || query == TemporalQueries.offset()
|
||||
|| query == TemporalQueries.localDate() || query == TemporalQueries.localTime()) {
|
||||
return null;
|
||||
}
|
||||
return query.queryFrom(this);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
@Override
|
||||
default Temporal adjustInto(Temporal temporal) {
|
||||
return temporal.with(ERA, getValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the numeric value associated with the era as defined by the chronology.
|
||||
|
@ -90,6 +145,8 @@ public interface Era extends TemporalAccessor, TemporalAdjuster {
|
|||
* @param locale the locale to use, not null
|
||||
* @return the text value of the era, not null
|
||||
*/
|
||||
String getDisplayName(TextStyle style, Locale locale);
|
||||
default String getDisplayName(TextStyle style, Locale locale) {
|
||||
return new DateTimeFormatterBuilder().appendText(ERA, style).toFormatter(locale).format(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -56,6 +56,7 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Clock;
|
||||
import org.threeten.bp.DateTimeException;
|
||||
|
@ -322,7 +323,7 @@ public final class HijrahChronology extends Chronology implements Serializable {
|
|||
|
||||
@Override // override with covariant return type
|
||||
public HijrahDate dateNow(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
return (HijrahDate) super.dateNow(clock);
|
||||
}
|
||||
|
||||
|
@ -354,7 +355,7 @@ public final class HijrahChronology extends Chronology implements Serializable {
|
|||
|
||||
@Override
|
||||
public List<Era> eras() {
|
||||
return Arrays.<Era>asList(HijrahEra.values());
|
||||
return Arrays.asList(HijrahEra.values());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
|
|
@ -50,6 +50,7 @@ import java.io.InputStreamReader;
|
|||
import java.io.Serializable;
|
||||
import java.text.ParseException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Objects;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipFile;
|
||||
|
@ -502,7 +503,7 @@ public final class HijrahDate
|
|||
* @throws InvalidCalendarFieldException if the day-of-month is invalid for the month-year
|
||||
*/
|
||||
static HijrahDate of(HijrahEra era, int yearOfEra, int monthOfYear, int dayOfMonth) {
|
||||
Jdk8Methods.requireNonNull(era, "era");
|
||||
Objects.requireNonNull(era, "era");
|
||||
checkValidYearOfEra(yearOfEra);
|
||||
checkValidMonth(monthOfYear);
|
||||
checkValidDayOfMonth(dayOfMonth);
|
||||
|
@ -725,7 +726,7 @@ public final class HijrahDate
|
|||
//-------------------------------------------------------------------------
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public final ChronoLocalDateTime<HijrahDate> atTime(LocalTime localTime) {
|
||||
public ChronoLocalDateTime<HijrahDate> atTime(LocalTime localTime) {
|
||||
return (ChronoLocalDateTime<HijrahDate>) super.atTime(localTime);
|
||||
}
|
||||
|
||||
|
@ -921,6 +922,7 @@ public final class HijrahDate
|
|||
|
||||
try {
|
||||
day = ADJUSTED_CYCLES[cycleNumber];
|
||||
// TODO remove catching AIOOBE (and other usages)
|
||||
} catch (ArrayIndexOutOfBoundsException e) {
|
||||
day = null;
|
||||
}
|
||||
|
@ -1673,7 +1675,7 @@ public final class HijrahDate
|
|||
* @throws IOException for zip/jar file handling exception.
|
||||
*/
|
||||
private static InputStream getConfigFileInputStream() throws IOException {
|
||||
|
||||
// TODO: eliminate this
|
||||
String fileName = System
|
||||
.getProperty("org.threeten.bp.i18n.HijrahDate.deviationConfigFile");
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@ import java.util.Arrays;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Clock;
|
||||
import org.threeten.bp.DateTimeException;
|
||||
|
@ -328,7 +329,7 @@ public final class IsoChronology extends Chronology implements Serializable {
|
|||
*/
|
||||
@Override // override with covariant return type
|
||||
public LocalDate dateNow(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
return date(LocalDate.now(clock));
|
||||
}
|
||||
|
||||
|
@ -440,7 +441,7 @@ public final class IsoChronology extends Chronology implements Serializable {
|
|||
long months = Jdk8Methods.safeSubtract(moy, 1);
|
||||
long days = Jdk8Methods.safeSubtract(dom, 1);
|
||||
return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days);
|
||||
} else if (resolverStyle == ResolverStyle.SMART){
|
||||
} else if (resolverStyle == ResolverStyle.SMART) {
|
||||
DAY_OF_MONTH.checkValidValue(dom);
|
||||
if (moy == 4 || moy == 6 || moy == 9 || moy == 11) {
|
||||
dom = Math.min(dom, 30);
|
||||
|
|
|
@ -56,6 +56,7 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Clock;
|
||||
import org.threeten.bp.DateTimeException;
|
||||
|
@ -304,7 +305,7 @@ public final class JapaneseChronology extends Chronology implements Serializable
|
|||
|
||||
@Override // override with covariant return type
|
||||
public JapaneseDate dateNow(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
return (JapaneseDate) super.dateNow(clock);
|
||||
}
|
||||
|
||||
|
@ -354,7 +355,7 @@ public final class JapaneseChronology extends Chronology implements Serializable
|
|||
|
||||
@Override
|
||||
public List<Era> eras() {
|
||||
return Arrays.<Era>asList(JapaneseEra.values());
|
||||
return Arrays.asList(JapaneseEra.values());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
|
|
@ -41,6 +41,7 @@ import java.io.IOException;
|
|||
import java.io.ObjectInputStream;
|
||||
import java.io.Serializable;
|
||||
import java.util.Calendar;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Clock;
|
||||
import org.threeten.bp.DateTimeException;
|
||||
|
@ -48,7 +49,6 @@ import org.threeten.bp.LocalDate;
|
|||
import org.threeten.bp.LocalTime;
|
||||
import org.threeten.bp.Period;
|
||||
import org.threeten.bp.ZoneId;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
import org.threeten.bp.temporal.TemporalAdjuster;
|
||||
|
@ -181,7 +181,7 @@ public final class JapaneseDate
|
|||
* or if the day-of-month is invalid for the month-year
|
||||
*/
|
||||
public static JapaneseDate of(JapaneseEra era, int yearOfEra, int month, int dayOfMonth) {
|
||||
Jdk8Methods.requireNonNull(era, "era");
|
||||
Objects.requireNonNull(era, "era");
|
||||
if (yearOfEra < 1) {
|
||||
throw new DateTimeException("Invalid YearOfEra: " + yearOfEra);
|
||||
}
|
||||
|
@ -211,7 +211,7 @@ public final class JapaneseDate
|
|||
* or if the day-of-year is invalid for the year
|
||||
*/
|
||||
static JapaneseDate ofYearDay(JapaneseEra era, int yearOfEra, int dayOfYear) {
|
||||
Jdk8Methods.requireNonNull(era, "era");
|
||||
Objects.requireNonNull(era, "era");
|
||||
if (yearOfEra < 1) {
|
||||
throw new DateTimeException("Invalid YearOfEra: " + yearOfEra);
|
||||
}
|
||||
|
|
|
@ -38,11 +38,10 @@ import java.io.InvalidObjectException;
|
|||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.DateTimeException;
|
||||
import org.threeten.bp.LocalDate;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceEra;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.TemporalField;
|
||||
import org.threeten.bp.temporal.ValueRange;
|
||||
|
@ -62,8 +61,7 @@ import org.threeten.bp.temporal.ValueRange;
|
|||
* This class is immutable and thread-safe.
|
||||
*/
|
||||
public final class JapaneseEra
|
||||
extends DefaultInterfaceEra
|
||||
implements Serializable {
|
||||
implements Era, Serializable {
|
||||
|
||||
// The offset value to 0-based index from the era value.
|
||||
// i.e., getValue() + ERA_OFFSET == 0-based index; except that -999 is mapped to zero
|
||||
|
@ -180,8 +178,8 @@ public final class JapaneseEra
|
|||
if (known.length > 5) {
|
||||
throw new DateTimeException("Only one additional Japanese era can be added");
|
||||
}
|
||||
Jdk8Methods.requireNonNull(since, "since");
|
||||
Jdk8Methods.requireNonNull(name, "name");
|
||||
Objects.requireNonNull(since, "since");
|
||||
Objects.requireNonNull(name, "name");
|
||||
if (!since.isAfter(REIWA.since)) {
|
||||
throw new DateTimeException("Invalid since date for additional Japanese era, must be after Reiwa");
|
||||
}
|
||||
|
@ -222,7 +220,7 @@ public final class JapaneseEra
|
|||
* @throws IllegalArgumentException if there is not JapaneseEra with the specified name
|
||||
*/
|
||||
public static JapaneseEra valueOf(String japaneseEra) {
|
||||
Jdk8Methods.requireNonNull(japaneseEra, "japaneseEra");
|
||||
Objects.requireNonNull(japaneseEra, "japaneseEra");
|
||||
JapaneseEra[] known = KNOWN_ERAS;
|
||||
for (JapaneseEra era : known) {
|
||||
if (japaneseEra.equals(era.name)) {
|
||||
|
@ -320,7 +318,7 @@ public final class JapaneseEra
|
|||
if (field == ChronoField.ERA) {
|
||||
return JapaneseChronology.INSTANCE.range(ChronoField.ERA);
|
||||
}
|
||||
return super.range(field);
|
||||
return Era.super.range(field);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
|
|
@ -54,6 +54,7 @@ import java.util.Arrays;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Clock;
|
||||
import org.threeten.bp.DateTimeException;
|
||||
|
@ -223,7 +224,7 @@ public final class MinguoChronology extends Chronology implements Serializable {
|
|||
|
||||
@Override // override with covariant return type
|
||||
public MinguoDate dateNow(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
return (MinguoDate) super.dateNow(clock);
|
||||
}
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ import java.io.DataInput;
|
|||
import java.io.DataOutput;
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Clock;
|
||||
import org.threeten.bp.DateTimeException;
|
||||
|
@ -47,7 +48,6 @@ import org.threeten.bp.LocalDate;
|
|||
import org.threeten.bp.LocalTime;
|
||||
import org.threeten.bp.Period;
|
||||
import org.threeten.bp.ZoneId;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
import org.threeten.bp.temporal.TemporalAdjuster;
|
||||
|
@ -175,7 +175,7 @@ public final class MinguoDate
|
|||
* @param isoDate the standard local date, validated not null
|
||||
*/
|
||||
MinguoDate(LocalDate date) {
|
||||
Jdk8Methods.requireNonNull(date, "date");
|
||||
Objects.requireNonNull(date, "date");
|
||||
this.isoDate = date;
|
||||
}
|
||||
|
||||
|
|
|
@ -55,6 +55,7 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Clock;
|
||||
import org.threeten.bp.DateTimeException;
|
||||
|
@ -259,7 +260,7 @@ public final class ThaiBuddhistChronology extends Chronology implements Serializ
|
|||
|
||||
@Override // override with covariant return type
|
||||
public ThaiBuddhistDate dateNow(Clock clock) {
|
||||
Jdk8Methods.requireNonNull(clock, "clock");
|
||||
Objects.requireNonNull(clock, "clock");
|
||||
return (ThaiBuddhistDate) super.dateNow(clock);
|
||||
}
|
||||
|
||||
|
@ -294,7 +295,7 @@ public final class ThaiBuddhistChronology extends Chronology implements Serializ
|
|||
|
||||
@Override
|
||||
public List<Era> eras() {
|
||||
return Arrays.<Era>asList(ThaiBuddhistEra.values());
|
||||
return Arrays.asList(ThaiBuddhistEra.values());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
|
|
@ -40,6 +40,7 @@ import java.io.DataInput;
|
|||
import java.io.DataOutput;
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Clock;
|
||||
import org.threeten.bp.DateTimeException;
|
||||
|
@ -47,7 +48,6 @@ import org.threeten.bp.LocalDate;
|
|||
import org.threeten.bp.LocalTime;
|
||||
import org.threeten.bp.Period;
|
||||
import org.threeten.bp.ZoneId;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
import org.threeten.bp.temporal.TemporalAdjuster;
|
||||
|
@ -175,7 +175,7 @@ public final class ThaiBuddhistDate
|
|||
* @param isoDate the standard local date, validated not null
|
||||
*/
|
||||
ThaiBuddhistDate(LocalDate date) {
|
||||
Jdk8Methods.requireNonNull(date, "date");
|
||||
Objects.requireNonNull(date, "date");
|
||||
this.isoDate = date;
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ import java.util.HashMap;
|
|||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import org.threeten.bp.DateTimeException;
|
||||
|
@ -68,7 +69,6 @@ import org.threeten.bp.chrono.ChronoLocalDateTime;
|
|||
import org.threeten.bp.chrono.ChronoZonedDateTime;
|
||||
import org.threeten.bp.chrono.Chronology;
|
||||
import org.threeten.bp.chrono.IsoChronology;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporalAccessor;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
|
@ -92,14 +92,13 @@ import org.threeten.bp.temporal.TemporalQuery;
|
|||
* This class is mutable and not thread-safe.
|
||||
* It should only be used from a single thread.
|
||||
*/
|
||||
final class DateTimeBuilder
|
||||
extends DefaultInterfaceTemporalAccessor
|
||||
public final class DateTimeBuilder
|
||||
implements TemporalAccessor, Cloneable {
|
||||
|
||||
/**
|
||||
* The map of other fields.
|
||||
*/
|
||||
final Map<TemporalField, Long> fieldValues = new HashMap<TemporalField, Long>();
|
||||
final Map<TemporalField, Long> fieldValues = new HashMap<>();
|
||||
/**
|
||||
* The chronology.
|
||||
*/
|
||||
|
@ -164,7 +163,7 @@ final class DateTimeBuilder
|
|||
* @throws DateTimeException if the field is already present with a different value
|
||||
*/
|
||||
DateTimeBuilder addFieldValue(TemporalField field, long value) {
|
||||
Jdk8Methods.requireNonNull(field, "field");
|
||||
Objects.requireNonNull(field, "field");
|
||||
Long old = getFieldValue0(field); // check first for better error message
|
||||
if (old != null && old.longValue() != value) {
|
||||
throw new DateTimeException("Conflict found: " + field + " " + old + " differs from " + field + " " + value + ": " + this);
|
||||
|
@ -655,7 +654,7 @@ final class DateTimeBuilder
|
|||
|
||||
@Override
|
||||
public long getLong(TemporalField field) {
|
||||
Jdk8Methods.requireNonNull(field, "field");
|
||||
Objects.requireNonNull(field, "field");
|
||||
Long value = getFieldValue0(field);
|
||||
if (value == null) {
|
||||
if (date != null && date.isSupported(field)) {
|
||||
|
|
|
@ -52,6 +52,7 @@ import java.util.HashMap;
|
|||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import org.threeten.bp.DateTimeException;
|
||||
|
@ -62,7 +63,6 @@ import org.threeten.bp.chrono.Chronology;
|
|||
import org.threeten.bp.chrono.IsoChronology;
|
||||
import org.threeten.bp.format.DateTimeFormatterBuilder.CompositePrinterParser;
|
||||
import org.threeten.bp.format.DateTimeParseContext.Parsed;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.IsoFields;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
|
@ -584,7 +584,7 @@ public final class DateTimeFormatter {
|
|||
static {
|
||||
// manually code maps to ensure correct data always used
|
||||
// (locale data can be changed by application code)
|
||||
Map<Long, String> dow = new HashMap<Long, String>();
|
||||
Map<Long, String> dow = new HashMap<>();
|
||||
dow.put(1L, "Mon");
|
||||
dow.put(2L, "Tue");
|
||||
dow.put(3L, "Wed");
|
||||
|
@ -592,7 +592,7 @@ public final class DateTimeFormatter {
|
|||
dow.put(5L, "Fri");
|
||||
dow.put(6L, "Sat");
|
||||
dow.put(7L, "Sun");
|
||||
Map<Long, String> moy = new HashMap<Long, String>();
|
||||
Map<Long, String> moy = new HashMap<>();
|
||||
moy.put(1L, "Jan");
|
||||
moy.put(2L, "Feb");
|
||||
moy.put(3L, "Mar");
|
||||
|
@ -808,7 +808,7 @@ public final class DateTimeFormatter {
|
|||
* @return the date formatter, not null
|
||||
*/
|
||||
public static DateTimeFormatter ofLocalizedDate(FormatStyle dateStyle) {
|
||||
Jdk8Methods.requireNonNull(dateStyle, "dateStyle");
|
||||
Objects.requireNonNull(dateStyle, "dateStyle");
|
||||
return new DateTimeFormatterBuilder().appendLocalized(dateStyle, null)
|
||||
.toFormatter().withChronology(IsoChronology.INSTANCE);
|
||||
}
|
||||
|
@ -832,7 +832,7 @@ public final class DateTimeFormatter {
|
|||
* @return the time formatter, not null
|
||||
*/
|
||||
public static DateTimeFormatter ofLocalizedTime(FormatStyle timeStyle) {
|
||||
Jdk8Methods.requireNonNull(timeStyle, "timeStyle");
|
||||
Objects.requireNonNull(timeStyle, "timeStyle");
|
||||
return new DateTimeFormatterBuilder().appendLocalized(null, timeStyle)
|
||||
.toFormatter().withChronology(IsoChronology.INSTANCE);
|
||||
}
|
||||
|
@ -856,7 +856,7 @@ public final class DateTimeFormatter {
|
|||
* @return the date-time formatter, not null
|
||||
*/
|
||||
public static DateTimeFormatter ofLocalizedDateTime(FormatStyle dateTimeStyle) {
|
||||
Jdk8Methods.requireNonNull(dateTimeStyle, "dateTimeStyle");
|
||||
Objects.requireNonNull(dateTimeStyle, "dateTimeStyle");
|
||||
return new DateTimeFormatterBuilder().appendLocalized(dateTimeStyle, dateTimeStyle)
|
||||
.toFormatter().withChronology(IsoChronology.INSTANCE);
|
||||
}
|
||||
|
@ -881,8 +881,8 @@ public final class DateTimeFormatter {
|
|||
* @return the date, time or date-time formatter, not null
|
||||
*/
|
||||
public static DateTimeFormatter ofLocalizedDateTime(FormatStyle dateStyle, FormatStyle timeStyle) {
|
||||
Jdk8Methods.requireNonNull(dateStyle, "dateStyle");
|
||||
Jdk8Methods.requireNonNull(timeStyle, "timeStyle");
|
||||
Objects.requireNonNull(dateStyle, "dateStyle");
|
||||
Objects.requireNonNull(timeStyle, "timeStyle");
|
||||
return new DateTimeFormatterBuilder().appendLocalized(dateStyle, timeStyle)
|
||||
.toFormatter().withChronology(IsoChronology.INSTANCE);
|
||||
}
|
||||
|
@ -928,18 +928,15 @@ public final class DateTimeFormatter {
|
|||
* </pre>
|
||||
* @return a query that provides access to the excess days that were parsed
|
||||
*/
|
||||
public static final TemporalQuery<Period> parsedExcessDays() {
|
||||
return PARSED_EXCESS_DAYS;
|
||||
}
|
||||
private static final TemporalQuery<Period> PARSED_EXCESS_DAYS = new TemporalQuery<Period>() {
|
||||
public Period queryFrom(TemporalAccessor temporal) {
|
||||
public static TemporalQuery<Period> parsedExcessDays() {
|
||||
return temporal -> {
|
||||
if (temporal instanceof DateTimeBuilder) {
|
||||
return ((DateTimeBuilder) temporal).excessDays;
|
||||
} else {
|
||||
return Period.ZERO;
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* A query that provides access to whether a leap-second was parsed.
|
||||
|
@ -971,18 +968,15 @@ public final class DateTimeFormatter {
|
|||
* </pre>
|
||||
* @return a query that provides access to whether a leap-second was parsed
|
||||
*/
|
||||
public static final TemporalQuery<Boolean> parsedLeapSecond() {
|
||||
return PARSED_LEAP_SECOND;
|
||||
}
|
||||
private static final TemporalQuery<Boolean> PARSED_LEAP_SECOND = new TemporalQuery<Boolean>() {
|
||||
public Boolean queryFrom(TemporalAccessor temporal) {
|
||||
public static TemporalQuery<Boolean> parsedLeapSecond() {
|
||||
return temporal -> {
|
||||
if (temporal instanceof DateTimeBuilder) {
|
||||
return ((DateTimeBuilder) temporal).leapSecond;
|
||||
} else {
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
|
@ -1029,10 +1023,10 @@ public final class DateTimeFormatter {
|
|||
DateTimeFormatter(CompositePrinterParser printerParser, Locale locale,
|
||||
DecimalStyle decimalStyle, ResolverStyle resolverStyle,
|
||||
Set<TemporalField> resolverFields, Chronology chrono, ZoneId zone) {
|
||||
this.printerParser = Jdk8Methods.requireNonNull(printerParser, "printerParser");
|
||||
this.locale = Jdk8Methods.requireNonNull(locale, "locale");
|
||||
this.decimalStyle = Jdk8Methods.requireNonNull(decimalStyle, "decimalStyle");
|
||||
this.resolverStyle = Jdk8Methods.requireNonNull(resolverStyle, "resolverStyle");
|
||||
this.printerParser = Objects.requireNonNull(printerParser, "printerParser");
|
||||
this.locale = Objects.requireNonNull(locale, "locale");
|
||||
this.decimalStyle = Objects.requireNonNull(decimalStyle, "decimalStyle");
|
||||
this.resolverStyle = Objects.requireNonNull(resolverStyle, "resolverStyle");
|
||||
this.resolverFields = resolverFields;
|
||||
this.chrono = chrono;
|
||||
this.zone = zone;
|
||||
|
@ -1133,7 +1127,7 @@ public final class DateTimeFormatter {
|
|||
* @return a formatter based on this formatter with the requested override chronology, not null
|
||||
*/
|
||||
public DateTimeFormatter withChronology(Chronology chrono) {
|
||||
if (Jdk8Methods.equals(this.chrono, chrono)) {
|
||||
if (Objects.equals(this.chrono, chrono)) {
|
||||
return this;
|
||||
}
|
||||
return new DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone);
|
||||
|
@ -1180,7 +1174,7 @@ public final class DateTimeFormatter {
|
|||
* @return a formatter based on this formatter with the requested override zone, not null
|
||||
*/
|
||||
public DateTimeFormatter withZone(ZoneId zone) {
|
||||
if (Jdk8Methods.equals(this.zone, zone)) {
|
||||
if (Objects.equals(this.zone, zone)) {
|
||||
return this;
|
||||
}
|
||||
return new DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone);
|
||||
|
@ -1221,8 +1215,8 @@ public final class DateTimeFormatter {
|
|||
* @return a formatter based on this formatter with the requested resolver style, not null
|
||||
*/
|
||||
public DateTimeFormatter withResolverStyle(ResolverStyle resolverStyle) {
|
||||
Jdk8Methods.requireNonNull(resolverStyle, "resolverStyle");
|
||||
if (Jdk8Methods.equals(this.resolverStyle, resolverStyle)) {
|
||||
Objects.requireNonNull(resolverStyle, "resolverStyle");
|
||||
if (Objects.equals(this.resolverStyle, resolverStyle)) {
|
||||
return this;
|
||||
}
|
||||
return new DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone);
|
||||
|
@ -1286,8 +1280,8 @@ public final class DateTimeFormatter {
|
|||
if (resolverFields == null) {
|
||||
return new DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, null, chrono, zone);
|
||||
}
|
||||
Set<TemporalField> fields = new HashSet<TemporalField>(Arrays.asList(resolverFields));
|
||||
if (Jdk8Methods.equals(this.resolverFields, fields)) {
|
||||
Set<TemporalField> fields = new HashSet<>(Arrays.asList(resolverFields));
|
||||
if (Objects.equals(this.resolverFields, fields)) {
|
||||
return this;
|
||||
}
|
||||
fields = Collections.unmodifiableSet(fields);
|
||||
|
@ -1337,10 +1331,10 @@ public final class DateTimeFormatter {
|
|||
if (resolverFields == null) {
|
||||
return new DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, null, chrono, zone);
|
||||
}
|
||||
if (Jdk8Methods.equals(this.resolverFields, resolverFields)) {
|
||||
if (Objects.equals(this.resolverFields, resolverFields)) {
|
||||
return this;
|
||||
}
|
||||
resolverFields = Collections.unmodifiableSet(new HashSet<TemporalField>(resolverFields));
|
||||
resolverFields = Collections.unmodifiableSet(new HashSet<>(resolverFields));
|
||||
return new DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone);
|
||||
}
|
||||
|
||||
|
@ -1377,8 +1371,8 @@ public final class DateTimeFormatter {
|
|||
* @throws DateTimeException if an error occurs during formatting
|
||||
*/
|
||||
public void formatTo(TemporalAccessor temporal, Appendable appendable) {
|
||||
Jdk8Methods.requireNonNull(temporal, "temporal");
|
||||
Jdk8Methods.requireNonNull(appendable, "appendable");
|
||||
Objects.requireNonNull(temporal, "temporal");
|
||||
Objects.requireNonNull(appendable, "appendable");
|
||||
try {
|
||||
DateTimePrintContext context = new DateTimePrintContext(temporal, this);
|
||||
if (appendable instanceof StringBuilder) {
|
||||
|
@ -1411,7 +1405,7 @@ public final class DateTimeFormatter {
|
|||
* @throws DateTimeParseException if unable to parse the requested result
|
||||
*/
|
||||
public TemporalAccessor parse(CharSequence text) {
|
||||
Jdk8Methods.requireNonNull(text, "text");
|
||||
Objects.requireNonNull(text, "text");
|
||||
try {
|
||||
return parseToBuilder(text, null).resolve(resolverStyle, resolverFields);
|
||||
} catch (DateTimeParseException ex) {
|
||||
|
@ -1452,13 +1446,11 @@ public final class DateTimeFormatter {
|
|||
* @throws IndexOutOfBoundsException if the position is invalid
|
||||
*/
|
||||
public TemporalAccessor parse(CharSequence text, ParsePosition position) {
|
||||
Jdk8Methods.requireNonNull(text, "text");
|
||||
Jdk8Methods.requireNonNull(position, "position");
|
||||
Objects.requireNonNull(text, "text");
|
||||
Objects.requireNonNull(position, "position");
|
||||
try {
|
||||
return parseToBuilder(text, position).resolve(resolverStyle, resolverFields);
|
||||
} catch (DateTimeParseException ex) {
|
||||
throw ex;
|
||||
} catch (IndexOutOfBoundsException ex) {
|
||||
} catch (DateTimeParseException | IndexOutOfBoundsException ex) {
|
||||
throw ex;
|
||||
} catch (RuntimeException ex) {
|
||||
throw createError(text, ex);
|
||||
|
@ -1485,8 +1477,8 @@ public final class DateTimeFormatter {
|
|||
* @throws DateTimeParseException if unable to parse the requested result
|
||||
*/
|
||||
public <T> T parse(CharSequence text, TemporalQuery<T> type) {
|
||||
Jdk8Methods.requireNonNull(text, "text");
|
||||
Jdk8Methods.requireNonNull(type, "type");
|
||||
Objects.requireNonNull(text, "text");
|
||||
Objects.requireNonNull(type, "type");
|
||||
try {
|
||||
DateTimeBuilder builder = parseToBuilder(text, null).resolve(resolverStyle, resolverFields);
|
||||
return builder.build(type);
|
||||
|
@ -1527,8 +1519,8 @@ public final class DateTimeFormatter {
|
|||
* @throws DateTimeParseException if unable to parse the requested result
|
||||
*/
|
||||
public TemporalAccessor parseBest(CharSequence text, TemporalQuery<?>... types) {
|
||||
Jdk8Methods.requireNonNull(text, "text");
|
||||
Jdk8Methods.requireNonNull(types, "types");
|
||||
Objects.requireNonNull(text, "text");
|
||||
Objects.requireNonNull(types, "types");
|
||||
if (types.length < 2) {
|
||||
throw new IllegalArgumentException("At least two types must be specified");
|
||||
}
|
||||
|
@ -1638,8 +1630,8 @@ public final class DateTimeFormatter {
|
|||
}
|
||||
|
||||
private Parsed parseUnresolved0(CharSequence text, ParsePosition position) {
|
||||
Jdk8Methods.requireNonNull(text, "text");
|
||||
Jdk8Methods.requireNonNull(position, "position");
|
||||
Objects.requireNonNull(text, "text");
|
||||
Objects.requireNonNull(position, "position");
|
||||
DateTimeParseContext context = new DateTimeParseContext(this);
|
||||
int pos = position.getIndex();
|
||||
pos = printerParser.parse(context, text, pos);
|
||||
|
@ -1696,7 +1688,7 @@ public final class DateTimeFormatter {
|
|||
* @return this formatter as a classic format instance, not null
|
||||
*/
|
||||
public Format toFormat(TemporalQuery<?> query) {
|
||||
Jdk8Methods.requireNonNull(query, "query");
|
||||
Objects.requireNonNull(query, "query");
|
||||
return new ClassicFormat(this, query);
|
||||
}
|
||||
|
||||
|
@ -1731,10 +1723,10 @@ public final class DateTimeFormatter {
|
|||
|
||||
@Override
|
||||
public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) {
|
||||
Jdk8Methods.requireNonNull(obj, "obj");
|
||||
Jdk8Methods.requireNonNull(toAppendTo, "toAppendTo");
|
||||
Jdk8Methods.requireNonNull(pos, "pos");
|
||||
if (obj instanceof TemporalAccessor == false) {
|
||||
Objects.requireNonNull(obj, "obj");
|
||||
Objects.requireNonNull(toAppendTo, "toAppendTo");
|
||||
Objects.requireNonNull(pos, "pos");
|
||||
if (!(obj instanceof TemporalAccessor)) {
|
||||
throw new IllegalArgumentException("Format target must implement TemporalAccessor");
|
||||
}
|
||||
pos.setBeginIndex(0);
|
||||
|
@ -1748,7 +1740,7 @@ public final class DateTimeFormatter {
|
|||
}
|
||||
@Override
|
||||
public Object parseObject(String text) throws ParseException {
|
||||
Jdk8Methods.requireNonNull(text, "text");
|
||||
Objects.requireNonNull(text, "text");
|
||||
try {
|
||||
if (query == null) {
|
||||
return formatter.parseToBuilder(text, null)
|
||||
|
@ -1763,7 +1755,7 @@ public final class DateTimeFormatter {
|
|||
}
|
||||
@Override
|
||||
public Object parseObject(String text, ParsePosition pos) {
|
||||
Jdk8Methods.requireNonNull(text, "text");
|
||||
Objects.requireNonNull(text, "text");
|
||||
Parsed unresolved;
|
||||
try {
|
||||
unresolved = formatter.parseUnresolved0(text, pos);
|
||||
|
|
|
@ -58,6 +58,7 @@ import java.util.Locale;
|
|||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.MissingResourceException;
|
||||
import java.util.Objects;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.Set;
|
||||
import java.util.TimeZone;
|
||||
|
@ -166,8 +167,8 @@ public final class DateTimeFormatterBuilder {
|
|||
*/
|
||||
public static String getLocalizedDateTimePattern(
|
||||
FormatStyle dateStyle, FormatStyle timeStyle, Chronology chrono, Locale locale) {
|
||||
Jdk8Methods.requireNonNull(locale, "locale");
|
||||
Jdk8Methods.requireNonNull(chrono, "chrono");
|
||||
Objects.requireNonNull(locale, "locale");
|
||||
Objects.requireNonNull(chrono, "chrono");
|
||||
if (dateStyle == null && timeStyle == null) {
|
||||
throw new IllegalArgumentException("Either dateStyle or timeStyle must be non-null");
|
||||
}
|
||||
|
@ -320,7 +321,7 @@ public final class DateTimeFormatterBuilder {
|
|||
* @return this, for chaining, not null
|
||||
*/
|
||||
public DateTimeFormatterBuilder parseDefaulting(TemporalField field, long value) {
|
||||
Jdk8Methods.requireNonNull(field, "field");
|
||||
Objects.requireNonNull(field, "field");
|
||||
appendInternal(new DefaultingParser(field, value));
|
||||
return this;
|
||||
}
|
||||
|
@ -345,7 +346,7 @@ public final class DateTimeFormatterBuilder {
|
|||
* @return this, for chaining, not null
|
||||
*/
|
||||
public DateTimeFormatterBuilder appendValue(TemporalField field) {
|
||||
Jdk8Methods.requireNonNull(field, "field");
|
||||
Objects.requireNonNull(field, "field");
|
||||
appendValue(new NumberPrinterParser(field, 1, 19, SignStyle.NORMAL));
|
||||
return this;
|
||||
}
|
||||
|
@ -399,7 +400,7 @@ public final class DateTimeFormatterBuilder {
|
|||
* @throws IllegalArgumentException if the width is invalid
|
||||
*/
|
||||
public DateTimeFormatterBuilder appendValue(TemporalField field, int width) {
|
||||
Jdk8Methods.requireNonNull(field, "field");
|
||||
Objects.requireNonNull(field, "field");
|
||||
if (width < 1 || width > 19) {
|
||||
throw new IllegalArgumentException("The width must be from 1 to 19 inclusive but was " + width);
|
||||
}
|
||||
|
@ -442,8 +443,8 @@ public final class DateTimeFormatterBuilder {
|
|||
if (minWidth == maxWidth && signStyle == SignStyle.NOT_NEGATIVE) {
|
||||
return appendValue(field, maxWidth);
|
||||
}
|
||||
Jdk8Methods.requireNonNull(field, "field");
|
||||
Jdk8Methods.requireNonNull(signStyle, "signStyle");
|
||||
Objects.requireNonNull(field, "field");
|
||||
Objects.requireNonNull(signStyle, "signStyle");
|
||||
if (minWidth < 1 || minWidth > 19) {
|
||||
throw new IllegalArgumentException("The minimum width must be from 1 to 19 inclusive but was " + minWidth);
|
||||
}
|
||||
|
@ -500,7 +501,7 @@ public final class DateTimeFormatterBuilder {
|
|||
*/
|
||||
public DateTimeFormatterBuilder appendValueReduced(TemporalField field,
|
||||
int width, int maxWidth, int baseValue) {
|
||||
Jdk8Methods.requireNonNull(field, "field");
|
||||
Objects.requireNonNull(field, "field");
|
||||
ReducedPrinterParser pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null);
|
||||
appendValue(pp);
|
||||
return this;
|
||||
|
@ -560,8 +561,8 @@ public final class DateTimeFormatterBuilder {
|
|||
*/
|
||||
public DateTimeFormatterBuilder appendValueReduced(
|
||||
TemporalField field, int width, int maxWidth, ChronoLocalDate baseDate) {
|
||||
Jdk8Methods.requireNonNull(field, "field");
|
||||
Jdk8Methods.requireNonNull(baseDate, "baseDate");
|
||||
Objects.requireNonNull(field, "field");
|
||||
Objects.requireNonNull(baseDate, "baseDate");
|
||||
ReducedPrinterParser pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate);
|
||||
appendValue(pp);
|
||||
return this;
|
||||
|
@ -678,8 +679,8 @@ public final class DateTimeFormatterBuilder {
|
|||
* @return this, for chaining, not null
|
||||
*/
|
||||
public DateTimeFormatterBuilder appendText(TemporalField field, TextStyle textStyle) {
|
||||
Jdk8Methods.requireNonNull(field, "field");
|
||||
Jdk8Methods.requireNonNull(textStyle, "textStyle");
|
||||
Objects.requireNonNull(field, "field");
|
||||
Objects.requireNonNull(textStyle, "textStyle");
|
||||
appendInternal(new TextPrinterParser(field, textStyle, DateTimeTextProvider.getInstance()));
|
||||
return this;
|
||||
}
|
||||
|
@ -719,9 +720,9 @@ public final class DateTimeFormatterBuilder {
|
|||
* @return this, for chaining, not null
|
||||
*/
|
||||
public DateTimeFormatterBuilder appendText(TemporalField field, Map<Long, String> textLookup) {
|
||||
Jdk8Methods.requireNonNull(field, "field");
|
||||
Jdk8Methods.requireNonNull(textLookup, "textLookup");
|
||||
Map<Long, String> copy = new LinkedHashMap<Long, String>(textLookup);
|
||||
Objects.requireNonNull(field, "field");
|
||||
Objects.requireNonNull(textLookup, "textLookup");
|
||||
Map<Long, String> copy = new LinkedHashMap<>(textLookup);
|
||||
Map<TextStyle, Map<Long, String>> map = Collections.singletonMap(TextStyle.FULL, copy);
|
||||
final LocaleStore store = new LocaleStore(map);
|
||||
DateTimeTextProvider provider = new DateTimeTextProvider() {
|
||||
|
@ -898,7 +899,7 @@ public final class DateTimeFormatterBuilder {
|
|||
* full} nor {@link TextStyle#SHORT short}
|
||||
*/
|
||||
public DateTimeFormatterBuilder appendLocalizedOffset(TextStyle style) {
|
||||
Jdk8Methods.requireNonNull(style, "style");
|
||||
Objects.requireNonNull(style, "style");
|
||||
if (style != TextStyle.FULL && style != TextStyle.SHORT) {
|
||||
throw new IllegalArgumentException("Style must be either full or short");
|
||||
}
|
||||
|
@ -1059,7 +1060,7 @@ public final class DateTimeFormatterBuilder {
|
|||
public DateTimeFormatterBuilder appendZoneText(TextStyle textStyle,
|
||||
Set<ZoneId> preferredZones) {
|
||||
// TODO: preferred zones currently ignored
|
||||
Jdk8Methods.requireNonNull(preferredZones, "preferredZones");
|
||||
Objects.requireNonNull(preferredZones, "preferredZones");
|
||||
appendInternal(new ZoneTextPrinterParser(textStyle));
|
||||
return this;
|
||||
}
|
||||
|
@ -1098,7 +1099,7 @@ public final class DateTimeFormatterBuilder {
|
|||
* @return this, for chaining, not null
|
||||
*/
|
||||
public DateTimeFormatterBuilder appendChronologyText(TextStyle textStyle) {
|
||||
Jdk8Methods.requireNonNull(textStyle, "textStyle");
|
||||
Objects.requireNonNull(textStyle, "textStyle");
|
||||
appendInternal(new ChronoPrinterParser(textStyle));
|
||||
return this;
|
||||
}
|
||||
|
@ -1165,7 +1166,7 @@ public final class DateTimeFormatterBuilder {
|
|||
* @return this, for chaining, not null
|
||||
*/
|
||||
public DateTimeFormatterBuilder appendLiteral(String literal) {
|
||||
Jdk8Methods.requireNonNull(literal, "literal");
|
||||
Objects.requireNonNull(literal, "literal");
|
||||
if (literal.length() > 0) {
|
||||
if (literal.length() == 1) {
|
||||
appendInternal(new CharLiteralPrinterParser(literal.charAt(0)));
|
||||
|
@ -1187,7 +1188,7 @@ public final class DateTimeFormatterBuilder {
|
|||
* @return this, for chaining, not null
|
||||
*/
|
||||
public DateTimeFormatterBuilder append(DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
appendInternal(formatter.toPrinterParser(false));
|
||||
return this;
|
||||
}
|
||||
|
@ -1206,7 +1207,7 @@ public final class DateTimeFormatterBuilder {
|
|||
* @return this, for chaining, not null
|
||||
*/
|
||||
public DateTimeFormatterBuilder appendOptional(DateTimeFormatter formatter) {
|
||||
Jdk8Methods.requireNonNull(formatter, "formatter");
|
||||
Objects.requireNonNull(formatter, "formatter");
|
||||
appendInternal(formatter.toPrinterParser(true));
|
||||
return this;
|
||||
}
|
||||
|
@ -1378,7 +1379,7 @@ public final class DateTimeFormatterBuilder {
|
|||
* @throws IllegalArgumentException if the pattern is invalid
|
||||
*/
|
||||
public DateTimeFormatterBuilder appendPattern(String pattern) {
|
||||
Jdk8Methods.requireNonNull(pattern, "pattern");
|
||||
Objects.requireNonNull(pattern, "pattern");
|
||||
parsePattern(pattern);
|
||||
return this;
|
||||
}
|
||||
|
@ -1832,7 +1833,7 @@ public final class DateTimeFormatterBuilder {
|
|||
* @return the index into the active parsers list
|
||||
*/
|
||||
private int appendInternal(DateTimePrinterParser pp) {
|
||||
Jdk8Methods.requireNonNull(pp, "pp");
|
||||
Objects.requireNonNull(pp, "pp");
|
||||
if (active.padNextWidth > 0) {
|
||||
if (pp != null) {
|
||||
pp = new PadPrinterParserDecorator(pp, active.padNextWidth, active.padNextChar);
|
||||
|
@ -1880,7 +1881,7 @@ public final class DateTimeFormatterBuilder {
|
|||
* @return the created formatter, not null
|
||||
*/
|
||||
public DateTimeFormatter toFormatter(Locale locale) {
|
||||
Jdk8Methods.requireNonNull(locale, "locale");
|
||||
Objects.requireNonNull(locale, "locale");
|
||||
while (active.parent != null) {
|
||||
optionalEnd();
|
||||
}
|
||||
|
@ -2672,7 +2673,7 @@ public final class DateTimeFormatterBuilder {
|
|||
* @param decimalPoint whether to output the localized decimal point symbol
|
||||
*/
|
||||
FractionPrinterParser(TemporalField field, int minWidth, int maxWidth, boolean decimalPoint) {
|
||||
Jdk8Methods.requireNonNull(field, "field");
|
||||
Objects.requireNonNull(field, "field");
|
||||
if (field.range().isFixed() == false) {
|
||||
throw new IllegalArgumentException("Field must have a fixed set of values: " + field);
|
||||
}
|
||||
|
@ -3069,8 +3070,8 @@ public final class DateTimeFormatterBuilder {
|
|||
* @param pattern the pattern
|
||||
*/
|
||||
OffsetIdPrinterParser(String noOffsetText, String pattern) {
|
||||
Jdk8Methods.requireNonNull(noOffsetText, "noOffsetText");
|
||||
Jdk8Methods.requireNonNull(pattern, "pattern");
|
||||
Objects.requireNonNull(noOffsetText, "noOffsetText");
|
||||
Objects.requireNonNull(pattern, "pattern");
|
||||
this.noOffsetText = noOffsetText;
|
||||
this.type = checkPattern(pattern);
|
||||
}
|
||||
|
@ -3353,7 +3354,7 @@ public final class DateTimeFormatterBuilder {
|
|||
private final TextStyle textStyle;
|
||||
|
||||
ZoneTextPrinterParser(TextStyle textStyle) {
|
||||
this.textStyle = Jdk8Methods.requireNonNull(textStyle, "textStyle");
|
||||
this.textStyle = Objects.requireNonNull(textStyle, "textStyle");
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
@ -3384,7 +3385,7 @@ public final class DateTimeFormatterBuilder {
|
|||
public int parse(DateTimeParseContext context, CharSequence text, int position) {
|
||||
// this is a poor implementation that handles some but not all of the spec
|
||||
// JDK8 has a lot of extra information here
|
||||
Map<String, String> ids = new TreeMap<String, String>(LENGTH_COMPARATOR);
|
||||
Map<String, String> ids = new TreeMap<>(LENGTH_COMPARATOR);
|
||||
for (String id : ZoneId.getAvailableZoneIds()) {
|
||||
ids.put(id, id);
|
||||
TimeZone tz = TimeZone.getTimeZone(id);
|
||||
|
|
|
@ -36,14 +36,15 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Period;
|
||||
import org.threeten.bp.ZoneId;
|
||||
import org.threeten.bp.chrono.Chronology;
|
||||
import org.threeten.bp.chrono.IsoChronology;
|
||||
import org.threeten.bp.format.DateTimeFormatterBuilder.ReducedPrinterParser;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporalAccessor;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
import org.threeten.bp.temporal.TemporalField;
|
||||
import org.threeten.bp.temporal.TemporalQueries;
|
||||
import org.threeten.bp.temporal.TemporalQuery;
|
||||
|
@ -64,7 +65,7 @@ import org.threeten.bp.temporal.UnsupportedTemporalTypeException;
|
|||
* Usage of the class is thread-safe within standard parsing as a new instance of this class
|
||||
* is automatically created for each parse and parsing is single-threaded
|
||||
*/
|
||||
final class DateTimeParseContext {
|
||||
public final class DateTimeParseContext {
|
||||
|
||||
/**
|
||||
* The locale, not null.
|
||||
|
@ -110,7 +111,7 @@ final class DateTimeParseContext {
|
|||
}
|
||||
|
||||
// for testing
|
||||
DateTimeParseContext(Locale locale, DecimalStyle symbols, Chronology chronology) {
|
||||
public DateTimeParseContext(Locale locale, DecimalStyle symbols, Chronology chronology) {
|
||||
super();
|
||||
this.locale = locale;
|
||||
this.symbols = symbols;
|
||||
|
@ -341,7 +342,7 @@ final class DateTimeParseContext {
|
|||
* @return the new position
|
||||
*/
|
||||
int setParsedField(TemporalField field, long value, int errorPos, int successPos) {
|
||||
Jdk8Methods.requireNonNull(field, "field");
|
||||
Objects.requireNonNull(field, "field");
|
||||
Long old = currentParsed().fieldValues.put(field, value);
|
||||
return (old != null && old.longValue() != value) ? ~errorPos : successPos;
|
||||
}
|
||||
|
@ -355,7 +356,7 @@ final class DateTimeParseContext {
|
|||
* @param chrono the parsed chronology, not null
|
||||
*/
|
||||
void setParsed(Chronology chrono) {
|
||||
Jdk8Methods.requireNonNull(chrono, "chrono");
|
||||
Objects.requireNonNull(chrono, "chrono");
|
||||
Parsed currentParsed = currentParsed();
|
||||
currentParsed.chrono = chrono;
|
||||
if (currentParsed.callbacks != null) {
|
||||
|
@ -385,7 +386,7 @@ final class DateTimeParseContext {
|
|||
* @param zone the parsed zone, not null
|
||||
*/
|
||||
void setParsed(ZoneId zone) {
|
||||
Jdk8Methods.requireNonNull(zone, "zone");
|
||||
Objects.requireNonNull(zone, "zone");
|
||||
currentParsed().zone = zone;
|
||||
}
|
||||
|
||||
|
@ -422,10 +423,10 @@ final class DateTimeParseContext {
|
|||
/**
|
||||
* Temporary store of parsed data.
|
||||
*/
|
||||
final class Parsed extends DefaultInterfaceTemporalAccessor {
|
||||
final class Parsed implements TemporalAccessor {
|
||||
Chronology chrono = null;
|
||||
ZoneId zone = null;
|
||||
final Map<TemporalField, Long> fieldValues = new HashMap<TemporalField, Long>();
|
||||
final Map<TemporalField, Long> fieldValues = new HashMap<>();
|
||||
boolean leapSecond;
|
||||
Period excessDays = Period.ZERO;
|
||||
List<Object[]> callbacks;
|
||||
|
@ -472,7 +473,7 @@ final class DateTimeParseContext {
|
|||
if (query == TemporalQueries.zoneId() || query == TemporalQueries.zone()) {
|
||||
return (R) zone;
|
||||
}
|
||||
return super.query(query);
|
||||
return TemporalAccessor.super.query(query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -513,7 +514,7 @@ final class DateTimeParseContext {
|
|||
* @param locale the locale, not null
|
||||
*/
|
||||
void setLocale(Locale locale) {
|
||||
Jdk8Methods.requireNonNull(locale, "locale");
|
||||
Objects.requireNonNull(locale, "locale");
|
||||
this.locale = locale;
|
||||
}
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@ import static org.threeten.bp.temporal.ChronoField.EPOCH_DAY;
|
|||
import static org.threeten.bp.temporal.ChronoField.INSTANT_SECONDS;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.DateTimeException;
|
||||
import org.threeten.bp.Instant;
|
||||
|
@ -43,8 +44,6 @@ import org.threeten.bp.ZoneOffset;
|
|||
import org.threeten.bp.chrono.ChronoLocalDate;
|
||||
import org.threeten.bp.chrono.Chronology;
|
||||
import org.threeten.bp.chrono.IsoChronology;
|
||||
import org.threeten.bp.jdk8.DefaultInterfaceTemporalAccessor;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.TemporalAccessor;
|
||||
import org.threeten.bp.temporal.TemporalField;
|
||||
|
@ -62,7 +61,7 @@ import org.threeten.bp.temporal.ValueRange;
|
|||
* Usage of the class is thread-safe within standard printing as the framework creates
|
||||
* a new instance of the class for each print and printing is single-threaded.
|
||||
*/
|
||||
final class DateTimePrintContext {
|
||||
public final class DateTimePrintContext {
|
||||
|
||||
/**
|
||||
* The temporal being output.
|
||||
|
@ -95,7 +94,7 @@ final class DateTimePrintContext {
|
|||
}
|
||||
|
||||
// for testing
|
||||
DateTimePrintContext(TemporalAccessor temporal, Locale locale, DecimalStyle symbols) {
|
||||
public DateTimePrintContext(TemporalAccessor temporal, Locale locale, DecimalStyle symbols) {
|
||||
this.temporal = temporal;
|
||||
this.locale = locale;
|
||||
this.symbols = symbols;
|
||||
|
@ -112,10 +111,10 @@ final class DateTimePrintContext {
|
|||
// ensure minimal change
|
||||
Chronology temporalChrono = temporal.query(TemporalQueries.chronology());
|
||||
ZoneId temporalZone = temporal.query(TemporalQueries.zoneId());
|
||||
if (Jdk8Methods.equals(temporalChrono, overrideChrono)) {
|
||||
if (Objects.equals(temporalChrono, overrideChrono)) {
|
||||
overrideChrono = null;
|
||||
}
|
||||
if (Jdk8Methods.equals(temporalZone, overrideZone)) {
|
||||
if (Objects.equals(temporalZone, overrideZone)) {
|
||||
overrideZone = null;
|
||||
}
|
||||
if (overrideChrono == null && overrideZone == null) {
|
||||
|
@ -158,7 +157,7 @@ final class DateTimePrintContext {
|
|||
}
|
||||
|
||||
// need class here to handle non-standard cases
|
||||
return new DefaultInterfaceTemporalAccessor() {
|
||||
return new TemporalAccessor() {
|
||||
@Override
|
||||
public boolean isSupported(TemporalField field) {
|
||||
if (effectiveDate != null && field.isDateBased()) {
|
||||
|
@ -299,7 +298,7 @@ final class DateTimePrintContext {
|
|||
* @param temporal the date-time object, not null
|
||||
*/
|
||||
void setDateTime(TemporalAccessor temporal) {
|
||||
Jdk8Methods.requireNonNull(temporal, "temporal");
|
||||
Objects.requireNonNull(temporal, "temporal");
|
||||
this.temporal = temporal;
|
||||
}
|
||||
|
||||
|
@ -312,7 +311,7 @@ final class DateTimePrintContext {
|
|||
* @param locale the locale, not null
|
||||
*/
|
||||
void setLocale(Locale locale) {
|
||||
Jdk8Methods.requireNonNull(locale, "locale");
|
||||
Objects.requireNonNull(locale, "locale");
|
||||
this.locale = locale;
|
||||
}
|
||||
|
||||
|
|
|
@ -37,10 +37,9 @@ import java.util.HashMap;
|
|||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
|
||||
/**
|
||||
* Localized symbols used in date and time formatting.
|
||||
* <p>
|
||||
|
@ -113,7 +112,7 @@ public final class DecimalStyle {
|
|||
* @return the info, not null
|
||||
*/
|
||||
public static DecimalStyle of(Locale locale) {
|
||||
Jdk8Methods.requireNonNull(locale, "locale");
|
||||
Objects.requireNonNull(locale, "locale");
|
||||
DecimalStyle info = CACHE.get(locale);
|
||||
if (info == null) {
|
||||
info = create(locale);
|
||||
|
|
|
@ -65,11 +65,8 @@ final class SimpleDateTimeTextProvider extends DateTimeTextProvider {
|
|||
// TODO: Better implementation based on CLDR
|
||||
|
||||
/** Comparator. */
|
||||
private static final Comparator<Entry<String, Long>> COMPARATOR = new Comparator<Entry<String, Long>>() {
|
||||
@Override
|
||||
public int compare(Entry<String, Long> obj1, Entry<String, Long> obj2) {
|
||||
return obj2.getKey().length() - obj1.getKey().length(); // longest to shortest
|
||||
}
|
||||
private static final Comparator<Entry<String, Long>> COMPARATOR = (obj1, obj2) -> {
|
||||
return obj2.getKey().length() - obj1.getKey().length(); // longest to shortest
|
||||
};
|
||||
|
||||
/** Cache. */
|
||||
|
|
|
@ -1,112 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of JSR-310 nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package org.threeten.bp.jdk8;
|
||||
|
||||
import static org.threeten.bp.temporal.ChronoField.ERA;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import org.threeten.bp.chrono.Era;
|
||||
import org.threeten.bp.format.DateTimeFormatterBuilder;
|
||||
import org.threeten.bp.format.TextStyle;
|
||||
import org.threeten.bp.temporal.ChronoField;
|
||||
import org.threeten.bp.temporal.ChronoUnit;
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
import org.threeten.bp.temporal.TemporalField;
|
||||
import org.threeten.bp.temporal.TemporalQueries;
|
||||
import org.threeten.bp.temporal.TemporalQuery;
|
||||
import org.threeten.bp.temporal.UnsupportedTemporalTypeException;
|
||||
|
||||
/**
|
||||
* A temporary class providing implementations that will become default interface
|
||||
* methods once integrated into JDK 8.
|
||||
*
|
||||
* @param the chronology of this era
|
||||
*/
|
||||
public abstract class DefaultInterfaceEra
|
||||
extends DefaultInterfaceTemporalAccessor
|
||||
implements Era {
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
@Override
|
||||
public boolean isSupported(TemporalField field) {
|
||||
if (field instanceof ChronoField) {
|
||||
return field == ERA;
|
||||
}
|
||||
return field != null && field.isSupportedBy(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int get(TemporalField field) {
|
||||
if (field == ERA) {
|
||||
return getValue();
|
||||
}
|
||||
return range(field).checkValidIntValue(getLong(field), field);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLong(TemporalField field) {
|
||||
if (field == ERA) {
|
||||
return getValue();
|
||||
} else if (field instanceof ChronoField) {
|
||||
throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
|
||||
}
|
||||
return field.getFrom(this);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
@Override
|
||||
public Temporal adjustInto(Temporal temporal) {
|
||||
return temporal.with(ERA, getValue());
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public <R> R query(TemporalQuery<R> query) {
|
||||
if (query == TemporalQueries.precision()) {
|
||||
return (R) ChronoUnit.ERAS;
|
||||
}
|
||||
if (query == TemporalQueries.chronology() || query == TemporalQueries.zone() ||
|
||||
query == TemporalQueries.zoneId() || query == TemporalQueries.offset() ||
|
||||
query == TemporalQueries.localDate() || query == TemporalQueries.localTime()) {
|
||||
return null;
|
||||
}
|
||||
return query.queryFrom(this);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
@Override
|
||||
public String getDisplayName(TextStyle style, Locale locale) {
|
||||
return new DateTimeFormatterBuilder().appendText(ERA, style).toFormatter(locale).format(this);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of JSR-310 nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package org.threeten.bp.jdk8;
|
||||
|
||||
import org.threeten.bp.temporal.Temporal;
|
||||
import org.threeten.bp.temporal.TemporalAdjuster;
|
||||
import org.threeten.bp.temporal.TemporalAmount;
|
||||
import org.threeten.bp.temporal.TemporalUnit;
|
||||
|
||||
/**
|
||||
* A temporary class providing implementations that will become default interface
|
||||
* methods once integrated into JDK 8.
|
||||
*/
|
||||
public abstract class DefaultInterfaceTemporal
|
||||
extends DefaultInterfaceTemporalAccessor
|
||||
implements Temporal {
|
||||
|
||||
@Override
|
||||
public Temporal with(TemporalAdjuster adjuster) {
|
||||
return adjuster.adjustInto(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Temporal plus(TemporalAmount amount) {
|
||||
return amount.addTo(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Temporal minus(TemporalAmount amount) {
|
||||
return amount.subtractFrom(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Temporal minus(long amountToSubtract, TemporalUnit unit) {
|
||||
return (amountToSubtract == Long.MIN_VALUE ? plus(Long.MAX_VALUE, unit).plus(1, unit) : plus(-amountToSubtract, unit));
|
||||
}
|
||||
|
||||
}
|
|
@ -49,90 +49,6 @@ public final class Jdk8Methods {
|
|||
private Jdk8Methods() {
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* Ensures that the argument is non-null.
|
||||
*
|
||||
* @param <T> the value type
|
||||
* @param value the value to check
|
||||
* @return the checked non-null value
|
||||
* @throws NullPointerException if the value is null
|
||||
*/
|
||||
public static <T> T requireNonNull(T value) {
|
||||
if (value == null) {
|
||||
throw new NullPointerException("Value must not be null");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures that the argument is non-null.
|
||||
*
|
||||
* @param <T> the value type
|
||||
* @param value the value to check
|
||||
* @param parameterName the name of the parameter
|
||||
* @return the checked non-null value
|
||||
* @throws NullPointerException if the value is null
|
||||
*/
|
||||
public static <T> T requireNonNull(T value, String parameterName) {
|
||||
if (value == null) {
|
||||
throw new NullPointerException(parameterName + " must not be null");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* Compares two objects.
|
||||
*
|
||||
* @param a the first value
|
||||
* @param b the second value
|
||||
* @return the result
|
||||
*/
|
||||
public static boolean equals(Object a, Object b) {
|
||||
if (a == null) {
|
||||
return b == null;
|
||||
}
|
||||
if (b == null) {
|
||||
return false;
|
||||
}
|
||||
return a.equals(b);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares two ints.
|
||||
*
|
||||
* @param a the first value
|
||||
* @param b the second value
|
||||
* @return the result
|
||||
*/
|
||||
public static int compareInts(int a, int b) {
|
||||
if (a < b) {
|
||||
return -1;
|
||||
}
|
||||
if (a > b) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares two longs.
|
||||
*
|
||||
* @param a the first value
|
||||
* @param b the second value
|
||||
* @return the result
|
||||
*/
|
||||
public static int compareLongs(long a, long b) {
|
||||
if (a < b) {
|
||||
return -1;
|
||||
}
|
||||
if (a > b) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* Safely adds two int values.
|
||||
|
|
|
@ -47,7 +47,7 @@ import static org.threeten.bp.temporal.ChronoUnit.YEARS;
|
|||
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import java.util.Objects;
|
||||
import org.threeten.bp.DayOfWeek;
|
||||
import org.threeten.bp.Instant;
|
||||
import org.threeten.bp.Year;
|
||||
|
@ -55,7 +55,6 @@ import org.threeten.bp.ZoneOffset;
|
|||
import org.threeten.bp.chrono.ChronoLocalDate;
|
||||
import org.threeten.bp.chrono.Chronology;
|
||||
import org.threeten.bp.format.ResolverStyle;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
|
||||
/**
|
||||
* A standard set of fields.
|
||||
|
@ -600,7 +599,7 @@ public enum ChronoField implements TemporalField {
|
|||
|
||||
@Override
|
||||
public String getDisplayName(Locale locale) {
|
||||
Jdk8Methods.requireNonNull(locale, "locale");
|
||||
Objects.requireNonNull(locale, "locale");
|
||||
return toString();
|
||||
}
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@ import static org.threeten.bp.temporal.ChronoUnit.YEARS;
|
|||
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Duration;
|
||||
import org.threeten.bp.LocalDate;
|
||||
|
@ -202,7 +203,7 @@ public final class IsoFields {
|
|||
/**
|
||||
* Implementation of the field.
|
||||
*/
|
||||
private static enum Field implements TemporalField {
|
||||
private enum Field implements TemporalField {
|
||||
DAY_OF_QUARTER {
|
||||
@Override
|
||||
public String toString() {
|
||||
|
@ -351,7 +352,7 @@ public final class IsoFields {
|
|||
}
|
||||
@Override
|
||||
public String getDisplayName(Locale locale) {
|
||||
Jdk8Methods.requireNonNull(locale, "locale");
|
||||
Objects.requireNonNull(locale, "locale");
|
||||
return "Week";
|
||||
}
|
||||
|
||||
|
@ -476,7 +477,7 @@ public final class IsoFields {
|
|||
|
||||
@Override
|
||||
public String getDisplayName(Locale locale) {
|
||||
Jdk8Methods.requireNonNull(locale, "locale");
|
||||
Objects.requireNonNull(locale, "locale");
|
||||
return toString();
|
||||
}
|
||||
|
||||
|
@ -561,7 +562,7 @@ public final class IsoFields {
|
|||
/**
|
||||
* Implementation of the period unit.
|
||||
*/
|
||||
private static enum Unit implements TemporalUnit {
|
||||
private enum Unit implements TemporalUnit {
|
||||
WEEK_BASED_YEARS("WeekBasedYears", Duration.ofSeconds(31556952L)),
|
||||
QUARTER_YEARS("QuarterYears", Duration.ofSeconds(31556952L / 4));
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ import static org.threeten.bp.temporal.ChronoUnit.FOREVER;
|
|||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import java.util.Objects;
|
||||
import org.threeten.bp.DateTimeException;
|
||||
import org.threeten.bp.chrono.Chronology;
|
||||
import org.threeten.bp.format.ResolverStyle;
|
||||
|
@ -148,7 +149,7 @@ public final class JulianFields {
|
|||
/**
|
||||
* Hidden implementation.
|
||||
*/
|
||||
private static enum Field implements TemporalField {
|
||||
private enum Field implements TemporalField {
|
||||
/**
|
||||
* Julian Day field.
|
||||
*/
|
||||
|
@ -236,7 +237,7 @@ public final class JulianFields {
|
|||
|
||||
@Override
|
||||
public String getDisplayName(Locale locale) {
|
||||
Jdk8Methods.requireNonNull(locale, "locale");
|
||||
Objects.requireNonNull(locale, "locale");
|
||||
return toString();
|
||||
}
|
||||
|
||||
|
@ -254,6 +255,8 @@ public final class JulianFields {
|
|||
public String toString() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
private JulianFields() {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -150,7 +150,9 @@ public interface Temporal extends TemporalAccessor {
|
|||
* @throws DateTimeException if unable to make the adjustment
|
||||
* @throws ArithmeticException if numeric overflow occurs
|
||||
*/
|
||||
Temporal with(TemporalAdjuster adjuster);
|
||||
default Temporal with(TemporalAdjuster adjuster) {
|
||||
return adjuster.adjustInto(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an object of the same type as this object with the specified field altered.
|
||||
|
@ -213,7 +215,9 @@ public interface Temporal extends TemporalAccessor {
|
|||
* @throws DateTimeException if the addition cannot be made
|
||||
* @throws ArithmeticException if numeric overflow occurs
|
||||
*/
|
||||
Temporal plus(TemporalAmount amount);
|
||||
default Temporal plus(TemporalAmount amount) {
|
||||
return amount.addTo(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an object of the same type as this object with the specified period added.
|
||||
|
@ -280,7 +284,9 @@ public interface Temporal extends TemporalAccessor {
|
|||
* @throws DateTimeException if the subtraction cannot be made
|
||||
* @throws ArithmeticException if numeric overflow occurs
|
||||
*/
|
||||
Temporal minus(TemporalAmount amount);
|
||||
default Temporal minus(TemporalAmount amount) {
|
||||
return amount.subtractFrom(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an object of the same type as this object with the specified period subtracted.
|
||||
|
@ -311,7 +317,11 @@ public interface Temporal extends TemporalAccessor {
|
|||
* @throws DateTimeException if the unit cannot be subtracted
|
||||
* @throws ArithmeticException if numeric overflow occurs
|
||||
*/
|
||||
Temporal minus(long amountToSubtract, TemporalUnit unit);
|
||||
default Temporal minus(long amountToSubtract, TemporalUnit unit) {
|
||||
return amountToSubtract == Long.MIN_VALUE
|
||||
? plus(Long.MAX_VALUE, unit).plus(1, unit)
|
||||
: plus(-amountToSubtract, unit);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
|
|
|
@ -121,7 +121,15 @@ public interface TemporalAccessor {
|
|||
* @return the range of valid values for the field, not null
|
||||
* @throws DateTimeException if the range for the field cannot be obtained
|
||||
*/
|
||||
ValueRange range(TemporalField field);
|
||||
default ValueRange range(TemporalField field) {
|
||||
if (field instanceof ChronoField) {
|
||||
if (isSupported(field)) {
|
||||
return field.range();
|
||||
}
|
||||
throw new UnsupportedTemporalTypeException("Unsupported field: " + field);
|
||||
}
|
||||
return field.rangeRefinedBy(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the specified field as an {@code int}.
|
||||
|
@ -150,7 +158,9 @@ public interface TemporalAccessor {
|
|||
* @throws DateTimeException if the value is outside the range of valid values for the field
|
||||
* @throws ArithmeticException if numeric overflow occurs
|
||||
*/
|
||||
int get(TemporalField field);
|
||||
default int get(TemporalField field) {
|
||||
return range(field).checkValidIntValue(getLong(field), field);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the specified field as a {@code long}.
|
||||
|
@ -213,6 +223,10 @@ public interface TemporalAccessor {
|
|||
* @throws DateTimeException if unable to query
|
||||
* @throws ArithmeticException if numeric overflow occurs
|
||||
*/
|
||||
<R> R query(TemporalQuery<R> query);
|
||||
|
||||
default <R> R query(TemporalQuery<R> query) {
|
||||
if (query == TemporalQueries.zoneId() || query == TemporalQueries.chronology() || query == TemporalQueries.precision()) {
|
||||
return null;
|
||||
}
|
||||
return query.queryFrom(this);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,9 +37,9 @@ import static org.threeten.bp.temporal.ChronoField.DAY_OF_YEAR;
|
|||
import static org.threeten.bp.temporal.ChronoUnit.DAYS;
|
||||
import static org.threeten.bp.temporal.ChronoUnit.MONTHS;
|
||||
import static org.threeten.bp.temporal.ChronoUnit.YEARS;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.DayOfWeek;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
|
||||
/**
|
||||
* Common implementations of {@code TemporalAdjuster}.
|
||||
|
@ -259,7 +259,7 @@ public final class TemporalAdjusters {
|
|||
* @return the first in month adjuster, not null
|
||||
*/
|
||||
public static TemporalAdjuster firstInMonth(DayOfWeek dayOfWeek) {
|
||||
Jdk8Methods.requireNonNull(dayOfWeek, "dayOfWeek");
|
||||
Objects.requireNonNull(dayOfWeek, "dayOfWeek");
|
||||
return new DayOfWeekInMonth(1, dayOfWeek);
|
||||
}
|
||||
|
||||
|
@ -280,7 +280,7 @@ public final class TemporalAdjusters {
|
|||
* @return the first in month adjuster, not null
|
||||
*/
|
||||
public static TemporalAdjuster lastInMonth(DayOfWeek dayOfWeek) {
|
||||
Jdk8Methods.requireNonNull(dayOfWeek, "dayOfWeek");
|
||||
Objects.requireNonNull(dayOfWeek, "dayOfWeek");
|
||||
return new DayOfWeekInMonth(-1, dayOfWeek);
|
||||
}
|
||||
|
||||
|
@ -317,7 +317,7 @@ public final class TemporalAdjusters {
|
|||
* @return the day-of-week in month adjuster, not null
|
||||
*/
|
||||
public static TemporalAdjuster dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek) {
|
||||
Jdk8Methods.requireNonNull(dayOfWeek, "dayOfWeek");
|
||||
Objects.requireNonNull(dayOfWeek, "dayOfWeek");
|
||||
return new DayOfWeekInMonth(ordinal, dayOfWeek);
|
||||
}
|
||||
|
||||
|
@ -447,7 +447,7 @@ public final class TemporalAdjusters {
|
|||
private final int dowValue;
|
||||
|
||||
private RelativeDayOfWeek(int relative, DayOfWeek dayOfWeek) {
|
||||
Jdk8Methods.requireNonNull(dayOfWeek, "dayOfWeek");
|
||||
Objects.requireNonNull(dayOfWeek, "dayOfWeek");
|
||||
this.relative = relative;
|
||||
this.dowValue = dayOfWeek.getValue();
|
||||
}
|
||||
|
|
|
@ -47,9 +47,7 @@ import java.util.GregorianCalendar;
|
|||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
import java.util.Objects;
|
||||
import org.threeten.bp.DateTimeException;
|
||||
import org.threeten.bp.DayOfWeek;
|
||||
import org.threeten.bp.Year;
|
||||
|
@ -197,7 +195,7 @@ public final class WeekFields implements Serializable {
|
|||
* @return the week-definition, not null
|
||||
*/
|
||||
public static WeekFields of(Locale locale) {
|
||||
Jdk8Methods.requireNonNull(locale, "locale");
|
||||
Objects.requireNonNull(locale, "locale");
|
||||
locale = new Locale(locale.getLanguage(), locale.getCountry()); // elminate variants
|
||||
|
||||
// obtain these from GregorianCalendar for now
|
||||
|
@ -248,7 +246,7 @@ public final class WeekFields implements Serializable {
|
|||
* @throws IllegalArgumentException if the minimal days value is invalid
|
||||
*/
|
||||
private WeekFields(DayOfWeek firstDayOfWeek, int minimalDaysInFirstWeek) {
|
||||
Jdk8Methods.requireNonNull(firstDayOfWeek, "firstDayOfWeek");
|
||||
Objects.requireNonNull(firstDayOfWeek, "firstDayOfWeek");
|
||||
if (minimalDaysInFirstWeek < 1 || minimalDaysInFirstWeek > 7) {
|
||||
throw new IllegalArgumentException("Minimal number of days is invalid");
|
||||
}
|
||||
|
@ -996,7 +994,7 @@ public final class WeekFields implements Serializable {
|
|||
|
||||
@Override
|
||||
public String getDisplayName(Locale locale) {
|
||||
Jdk8Methods.requireNonNull(locale, "locale");
|
||||
Objects.requireNonNull(locale, "locale");
|
||||
if (rangeUnit == YEARS) { // week-of-year
|
||||
return "Week";
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ import java.util.Enumeration;
|
|||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.NavigableMap;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.concurrent.ConcurrentNavigableMap;
|
||||
|
@ -134,7 +135,7 @@ public final class TzdbZoneRulesProvider extends ZoneRulesProvider {
|
|||
|
||||
@Override
|
||||
protected ZoneRules provideRules(String zoneId, boolean forCaching) {
|
||||
Jdk8Methods.requireNonNull(zoneId, "zoneId");
|
||||
Objects.requireNonNull(zoneId, "zoneId");
|
||||
ZoneRules rules = versions.lastEntry().getValue().getRules(zoneId);
|
||||
if (rules == null) {
|
||||
throw new ZoneRulesException("Unknown time-zone ID: " + zoneId);
|
||||
|
|
|
@ -38,12 +38,12 @@ import java.io.Serializable;
|
|||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Duration;
|
||||
import org.threeten.bp.Instant;
|
||||
import org.threeten.bp.LocalDateTime;
|
||||
import org.threeten.bp.ZoneOffset;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
|
||||
/**
|
||||
* A transition between two offsets caused by a discontinuity in the local time-line.
|
||||
|
@ -99,9 +99,9 @@ public final class ZoneOffsetTransition
|
|||
* are equal, or {@code transition.getNano()} returns non-zero value
|
||||
*/
|
||||
public static ZoneOffsetTransition of(LocalDateTime transition, ZoneOffset offsetBefore, ZoneOffset offsetAfter) {
|
||||
Jdk8Methods.requireNonNull(transition, "transition");
|
||||
Jdk8Methods.requireNonNull(offsetBefore, "offsetBefore");
|
||||
Jdk8Methods.requireNonNull(offsetAfter, "offsetAfter");
|
||||
Objects.requireNonNull(transition, "transition");
|
||||
Objects.requireNonNull(offsetBefore, "offsetBefore");
|
||||
Objects.requireNonNull(offsetAfter, "offsetAfter");
|
||||
if (offsetBefore.equals(offsetAfter)) {
|
||||
throw new IllegalArgumentException("Offsets must not be equal");
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ import java.io.DataOutput;
|
|||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
|
||||
import java.util.Objects;
|
||||
import org.threeten.bp.DayOfWeek;
|
||||
import org.threeten.bp.LocalDate;
|
||||
import org.threeten.bp.LocalDateTime;
|
||||
|
@ -149,12 +150,12 @@ public final class ZoneOffsetTransitionRule implements Serializable {
|
|||
ZoneOffset standardOffset,
|
||||
ZoneOffset offsetBefore,
|
||||
ZoneOffset offsetAfter) {
|
||||
Jdk8Methods.requireNonNull(month, "month");
|
||||
Jdk8Methods.requireNonNull(time, "time");
|
||||
Jdk8Methods.requireNonNull(timeDefnition, "timeDefnition");
|
||||
Jdk8Methods.requireNonNull(standardOffset, "standardOffset");
|
||||
Jdk8Methods.requireNonNull(offsetBefore, "offsetBefore");
|
||||
Jdk8Methods.requireNonNull(offsetAfter, "offsetAfter");
|
||||
Objects.requireNonNull(month, "month");
|
||||
Objects.requireNonNull(time, "time");
|
||||
Objects.requireNonNull(timeDefnition, "timeDefnition");
|
||||
Objects.requireNonNull(standardOffset, "standardOffset");
|
||||
Objects.requireNonNull(offsetBefore, "offsetBefore");
|
||||
Objects.requireNonNull(offsetAfter, "offsetAfter");
|
||||
if (dayOfMonthIndicator < -28 || dayOfMonthIndicator > 31 || dayOfMonthIndicator == 0) {
|
||||
throw new IllegalArgumentException("Day of month indicator must be between -28 and 31 inclusive excluding zero");
|
||||
}
|
||||
|
|
|
@ -34,13 +34,13 @@ package org.threeten.bp.zone;
|
|||
import java.io.Serializable;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.Duration;
|
||||
import org.threeten.bp.Instant;
|
||||
import org.threeten.bp.LocalDateTime;
|
||||
import org.threeten.bp.ZoneId;
|
||||
import org.threeten.bp.ZoneOffset;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
|
||||
/**
|
||||
* The rules defining how the zone offset varies for a single time-zone.
|
||||
|
@ -82,11 +82,11 @@ public abstract class ZoneRules {
|
|||
List<ZoneOffsetTransition> standardOffsetTransitionList,
|
||||
List<ZoneOffsetTransition> transitionList,
|
||||
List<ZoneOffsetTransitionRule> lastRules) {
|
||||
Jdk8Methods.requireNonNull(baseStandardOffset, "baseStandardOffset");
|
||||
Jdk8Methods.requireNonNull(baseWallOffset, "baseWallOffset");
|
||||
Jdk8Methods.requireNonNull(standardOffsetTransitionList, "standardOffsetTransitionList");
|
||||
Jdk8Methods.requireNonNull(transitionList, "transitionList");
|
||||
Jdk8Methods.requireNonNull(lastRules, "lastRules");
|
||||
Objects.requireNonNull(baseStandardOffset, "baseStandardOffset");
|
||||
Objects.requireNonNull(baseWallOffset, "baseWallOffset");
|
||||
Objects.requireNonNull(standardOffsetTransitionList, "standardOffsetTransitionList");
|
||||
Objects.requireNonNull(transitionList, "transitionList");
|
||||
Objects.requireNonNull(lastRules, "lastRules");
|
||||
return new StandardZoneRules(baseStandardOffset, baseWallOffset,
|
||||
standardOffsetTransitionList, transitionList, lastRules);
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ public abstract class ZoneRules {
|
|||
* @return the zone rules, not null
|
||||
*/
|
||||
public static ZoneRules of(ZoneOffset offset) {
|
||||
Jdk8Methods.requireNonNull(offset, "offset");
|
||||
Objects.requireNonNull(offset, "offset");
|
||||
return new Fixed(offset);
|
||||
}
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ import java.util.Collections;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.threeten.bp.DateTimeException;
|
||||
import org.threeten.bp.DayOfWeek;
|
||||
|
@ -50,7 +51,6 @@ import org.threeten.bp.Month;
|
|||
import org.threeten.bp.Year;
|
||||
import org.threeten.bp.ZoneOffset;
|
||||
import org.threeten.bp.chrono.IsoChronology;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
import org.threeten.bp.zone.ZoneOffsetTransitionRule.TimeDefinition;
|
||||
|
||||
/**
|
||||
|
@ -117,9 +117,9 @@ class ZoneRulesBuilder {
|
|||
ZoneOffset standardOffset,
|
||||
LocalDateTime until,
|
||||
TimeDefinition untilDefinition) {
|
||||
Jdk8Methods.requireNonNull(standardOffset, "standardOffset");
|
||||
Jdk8Methods.requireNonNull(until, "until");
|
||||
Jdk8Methods.requireNonNull(untilDefinition, "untilDefinition");
|
||||
Objects.requireNonNull(standardOffset, "standardOffset");
|
||||
Objects.requireNonNull(until, "until");
|
||||
Objects.requireNonNull(untilDefinition, "untilDefinition");
|
||||
TZWindow window = new TZWindow(standardOffset, until, untilDefinition);
|
||||
if (windowList.size() > 0) {
|
||||
TZWindow previous = windowList.get(windowList.size() - 1);
|
||||
|
@ -192,7 +192,7 @@ class ZoneRulesBuilder {
|
|||
LocalDateTime transitionDateTime,
|
||||
TimeDefinition timeDefinition,
|
||||
int savingAmountSecs) {
|
||||
Jdk8Methods.requireNonNull(transitionDateTime, "transitionDateTime");
|
||||
Objects.requireNonNull(transitionDateTime, "transitionDateTime");
|
||||
return addRuleToWindow(
|
||||
transitionDateTime.getYear(), transitionDateTime.getYear(),
|
||||
transitionDateTime.getMonth(), transitionDateTime.getDayOfMonth(),
|
||||
|
@ -264,9 +264,9 @@ class ZoneRulesBuilder {
|
|||
boolean timeEndOfDay,
|
||||
TimeDefinition timeDefinition,
|
||||
int savingAmountSecs) {
|
||||
Jdk8Methods.requireNonNull(month, "month");
|
||||
Jdk8Methods.requireNonNull(time, "time");
|
||||
Jdk8Methods.requireNonNull(timeDefinition, "timeDefinition");
|
||||
Objects.requireNonNull(month, "month");
|
||||
Objects.requireNonNull(time, "time");
|
||||
Objects.requireNonNull(timeDefinition, "timeDefinition");
|
||||
YEAR.checkValidValue(startYear);
|
||||
YEAR.checkValidValue(endYear);
|
||||
if (dayOfMonthIndicator < -28 || dayOfMonthIndicator > 31 || dayOfMonthIndicator == 0) {
|
||||
|
@ -293,8 +293,8 @@ class ZoneRulesBuilder {
|
|||
int adjustDays,
|
||||
TimeDefinition timeDefinition,
|
||||
int savingAmountSecs) {
|
||||
Jdk8Methods.requireNonNull(month, "month");
|
||||
Jdk8Methods.requireNonNull(timeDefinition, "timeDefinition");
|
||||
Objects.requireNonNull(month, "month");
|
||||
Objects.requireNonNull(timeDefinition, "timeDefinition");
|
||||
YEAR.checkValidValue(startYear);
|
||||
YEAR.checkValidValue(endYear);
|
||||
if (dayOfMonthIndicator < -28 || dayOfMonthIndicator > 31 || dayOfMonthIndicator == 0) {
|
||||
|
@ -337,7 +337,7 @@ class ZoneRulesBuilder {
|
|||
* @throws IllegalStateException if there is only one rule defined as being forever for any given window
|
||||
*/
|
||||
ZoneRules toRules(String zoneId, Map<Object, Object> deduplicateMap) {
|
||||
Jdk8Methods.requireNonNull(zoneId, "zoneId");
|
||||
Objects.requireNonNull(zoneId, "zoneId");
|
||||
this.deduplicateMap = deduplicateMap;
|
||||
if (windowList.isEmpty()) {
|
||||
throw new IllegalStateException("No windows have been added to the builder");
|
||||
|
@ -742,7 +742,7 @@ class ZoneRulesBuilder {
|
|||
}
|
||||
long timeSecs1 = time.toSecondOfDay() + adjustDays * 86400;
|
||||
long timeSecs2 = other.time.toSecondOfDay() + other.adjustDays * 86400;
|
||||
return timeSecs1 < timeSecs2 ? -1 : (timeSecs1 > timeSecs2 ? 1 : 0);
|
||||
return Long.compare(timeSecs1, timeSecs2);
|
||||
}
|
||||
|
||||
private LocalDate toLocalDate() {
|
||||
|
|
|
@ -37,12 +37,12 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.NavigableMap;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import org.threeten.bp.DateTimeException;
|
||||
import org.threeten.bp.ZoneId;
|
||||
import org.threeten.bp.ZonedDateTime;
|
||||
import org.threeten.bp.jdk8.Jdk8Methods;
|
||||
|
||||
/**
|
||||
* Provider of time-zone rules to the system.
|
||||
|
@ -119,7 +119,7 @@ public abstract class ZoneRulesProvider {
|
|||
* @throws ZoneRulesException if rules cannot be obtained for the zone ID
|
||||
*/
|
||||
public static ZoneRules getRules(String zoneId, boolean forCaching) {
|
||||
Jdk8Methods.requireNonNull(zoneId, "zoneId");
|
||||
Objects.requireNonNull(zoneId, "zoneId");
|
||||
return getProvider(zoneId).provideRules(zoneId, forCaching);
|
||||
}
|
||||
|
||||
|
@ -148,7 +148,7 @@ public abstract class ZoneRulesProvider {
|
|||
* @throws ZoneRulesException if history cannot be obtained for the zone ID
|
||||
*/
|
||||
public static NavigableMap<String, ZoneRules> getVersions(String zoneId) {
|
||||
Jdk8Methods.requireNonNull(zoneId, "zoneId");
|
||||
Objects.requireNonNull(zoneId, "zoneId");
|
||||
return getProvider(zoneId).provideVersions(zoneId);
|
||||
}
|
||||
|
||||
|
@ -187,7 +187,7 @@ public abstract class ZoneRulesProvider {
|
|||
* @throws ZoneRulesException if a region is already registered
|
||||
*/
|
||||
public static void registerProvider(ZoneRulesProvider provider) {
|
||||
Jdk8Methods.requireNonNull(provider, "provider");
|
||||
Objects.requireNonNull(provider, "provider");
|
||||
registerProvider0(provider);
|
||||
PROVIDERS.add(provider);
|
||||
}
|
||||
|
@ -200,7 +200,7 @@ public abstract class ZoneRulesProvider {
|
|||
*/
|
||||
private static void registerProvider0(ZoneRulesProvider provider) {
|
||||
for (String zoneId : provider.provideZoneIds()) {
|
||||
Jdk8Methods.requireNonNull(zoneId, "zoneId");
|
||||
Objects.requireNonNull(zoneId, "zoneId");
|
||||
ZoneRulesProvider old = ZONES.putIfAbsent(zoneId, provider);
|
||||
if (old != null) {
|
||||
throw new ZoneRulesException(
|
||||
|
|
Loading…
Reference in New Issue
Block a user