# HG changeset patch # User martin # Date 1528475770 25200 # Fri Jun 08 09:36:10 2018 -0700 # Node ID bef0ed237504d392201fd170e1775d8a297afebc # Parent ee1a0ddb2590189ba149fbbc1aa96c61eccd6934 8204444: java.time cleanup Reviewed-by: scolebourne, rriggs diff --git a/src/java.base/share/classes/java/time/Clock.java b/src/java.base/share/classes/java/time/Clock.java --- a/src/java.base/share/classes/java/time/Clock.java +++ b/src/java.base/share/classes/java/time/Clock.java @@ -586,7 +586,7 @@ public abstract class Clock { * This is typically used for testing. */ static final class FixedClock extends Clock implements Serializable { - private static final long serialVersionUID = 7430389292664866958L; + private static final long serialVersionUID = 7430389292664866958L; private final Instant instant; private final ZoneId zone; @@ -636,7 +636,7 @@ public abstract class Clock { * Implementation of a clock that adds an offset to an underlying clock. */ static final class OffsetClock extends Clock implements Serializable { - private static final long serialVersionUID = 2007484719125426256L; + private static final long serialVersionUID = 2007484719125426256L; private final Clock baseClock; private final Duration offset; diff --git a/src/java.base/share/classes/java/time/Duration.java b/src/java.base/share/classes/java/time/Duration.java --- a/src/java.base/share/classes/java/time/Duration.java +++ b/src/java.base/share/classes/java/time/Duration.java @@ -231,7 +231,7 @@ public final class Duration * This method allows an arbitrary number of nanoseconds to be passed in. * The factory will alter the values of the second and nanosecond in order * to ensure that the stored nanosecond is in the range 0 to 999,999,999. - * For example, the following will result in the exactly the same duration: + * For example, the following will result in exactly the same duration: *
* Duration.ofSeconds(3, 1); * Duration.ofSeconds(4, -999_999_999); @@ -1357,12 +1357,14 @@ public final class Duration * Truncating the duration returns a copy of the original with conceptual fields * smaller than the specified unit set to zero. * For example, truncating with the {@link ChronoUnit#MINUTES MINUTES} unit will - * round down to the nearest minute, setting the seconds and nanoseconds to zero. + * round down towards zero to the nearest minute, setting the seconds and + * nanoseconds to zero. ** The unit must have a {@linkplain TemporalUnit#getDuration() duration} * that divides into the length of a standard day without remainder. - * This includes all supplied time units on {@link ChronoUnit} and - * {@link ChronoUnit#DAYS DAYS}. Other ChronoUnits throw an exception. + * This includes all + * {@linkplain ChronoUnit#isTimeBased() time-based units on {@code ChronoUnit}} + * and {@link ChronoUnit#DAYS DAYS}. Other ChronoUnits throw an exception. *
* This instance is immutable and unaffected by this method call. * @@ -1388,7 +1390,7 @@ public final class Duration throw new UnsupportedTemporalTypeException("Unit must divide into a standard day without remainder"); } long nod = (seconds % LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + nanos; - long result = (nod / dur) * dur ; + long result = (nod / dur) * dur; return plusNanos(result - nod); } diff --git a/src/java.base/share/classes/java/time/Instant.java b/src/java.base/share/classes/java/time/Instant.java --- a/src/java.base/share/classes/java/time/Instant.java +++ b/src/java.base/share/classes/java/time/Instant.java @@ -311,7 +311,7 @@ public final class Instant * This method allows an arbitrary number of nanoseconds to be passed in. * The factory will alter the values of the second and nanosecond in order * to ensure that the stored nanosecond is in the range 0 to 999,999,999. - * For example, the following will result in the exactly the same instant: + * For example, the following will result in exactly the same instant: *
* Instant.ofEpochSecond(3, 1); * Instant.ofEpochSecond(4, -999_999_999); @@ -757,7 +757,7 @@ public final class Instant throw new UnsupportedTemporalTypeException("Unit must divide into a standard day without remainder"); } long nod = (seconds % LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + nanos; - long result = Math.floorDiv(nod, dur) * dur ; + long result = Math.floorDiv(nod, dur) * dur; return plusNanos(result - nod); } diff --git a/src/java.base/share/classes/java/time/LocalTime.java b/src/java.base/share/classes/java/time/LocalTime.java --- a/src/java.base/share/classes/java/time/LocalTime.java +++ b/src/java.base/share/classes/java/time/LocalTime.java @@ -356,14 +356,14 @@ public final class LocalTime * @return the local time, not null * @since 9 */ - public static LocalTime ofInstant(Instant instant, ZoneId zone) { - Objects.requireNonNull(instant, "instant"); - Objects.requireNonNull(zone, "zone"); - ZoneOffset offset = zone.getRules().getOffset(instant); - long localSecond = instant.getEpochSecond() + offset.getTotalSeconds(); - int secsOfDay = Math.floorMod(localSecond, SECONDS_PER_DAY); - return ofNanoOfDay(secsOfDay * NANOS_PER_SECOND + instant.getNano()); - } + public static LocalTime ofInstant(Instant instant, ZoneId zone) { + Objects.requireNonNull(instant, "instant"); + Objects.requireNonNull(zone, "zone"); + ZoneOffset offset = zone.getRules().getOffset(instant); + long localSecond = instant.getEpochSecond() + offset.getTotalSeconds(); + int secsOfDay = Math.floorMod(localSecond, SECONDS_PER_DAY); + return ofNanoOfDay(secsOfDay * NANOS_PER_SECOND + instant.getNano()); + } //----------------------------------------------------------------------- /** diff --git a/src/java.base/share/classes/java/time/chrono/ChronoLocalDateImpl.java b/src/java.base/share/classes/java/time/chrono/ChronoLocalDateImpl.java --- a/src/java.base/share/classes/java/time/chrono/ChronoLocalDateImpl.java +++ b/src/java.base/share/classes/java/time/chrono/ChronoLocalDateImpl.java @@ -110,7 +110,7 @@ import java.util.Objects; * int year = date.get(ChronoField.YEAR); * System.out.printf(" Today is %s %s %d-%s-%d%n", date.getChronology().getID(), * dow, day, month, year); - + * * // Print today's date and the last day of the year * ChronoLocalDate now1 = Chronology.of("Hijrah").dateNow(); * ChronoLocalDate first = now1.with(ChronoField.DAY_OF_MONTH, 1) diff --git a/src/java.base/share/classes/java/time/chrono/ChronoLocalDateTime.java b/src/java.base/share/classes/java/time/chrono/ChronoLocalDateTime.java --- a/src/java.base/share/classes/java/time/chrono/ChronoLocalDateTime.java +++ b/src/java.base/share/classes/java/time/chrono/ChronoLocalDateTime.java @@ -201,7 +201,7 @@ public interface ChronoLocalDateTimefieldValues, ResolverStyle resolverStyle) { - fieldValues.remove(ERA); - fieldValues.remove(YEAR_OF_ERA); - if (resolverStyle == ResolverStyle.LENIENT) { - int y = prolepticYearLenient(era, yoe); - long months = Math.subtractExact(fieldValues.remove(MONTH_OF_YEAR), 1); - long days = Math.subtractExact(fieldValues.remove(DAY_OF_MONTH), 1); - return date(y, 1, 1).plus(months, MONTHS).plus(days, DAYS); - } - int moy = range(MONTH_OF_YEAR).checkValidIntValue(fieldValues.remove(MONTH_OF_YEAR), MONTH_OF_YEAR); - int dom = range(DAY_OF_MONTH).checkValidIntValue(fieldValues.remove(DAY_OF_MONTH), DAY_OF_MONTH); - if (resolverStyle == ResolverStyle.SMART) { // previous valid - if (yoe < 1) { - throw new DateTimeException("Invalid YearOfEra: " + yoe); - } - int y = prolepticYearLenient(era, yoe); - JapaneseDate result; - try { - result = date(y, moy, dom); - } catch (DateTimeException ex) { - result = date(y, moy, 1).with(TemporalAdjusters.lastDayOfMonth()); - } - // handle the era being changed - // only allow if the new date is in the same Jan-Dec as the era change - // determine by ensuring either original yoe or result yoe is 1 - if (result.getEra() != era && result.get(YEAR_OF_ERA) > 1 && yoe > 1) { - throw new DateTimeException("Invalid YearOfEra for Era: " + era + " " + yoe); - } - return result; - } - return date(era, yoe, moy, dom); - } + private ChronoLocalDate resolveYMD(JapaneseEra era, int yoe, Map fieldValues, ResolverStyle resolverStyle) { + fieldValues.remove(ERA); + fieldValues.remove(YEAR_OF_ERA); + if (resolverStyle == ResolverStyle.LENIENT) { + int y = prolepticYearLenient(era, yoe); + long months = Math.subtractExact(fieldValues.remove(MONTH_OF_YEAR), 1); + long days = Math.subtractExact(fieldValues.remove(DAY_OF_MONTH), 1); + return date(y, 1, 1).plus(months, MONTHS).plus(days, DAYS); + } + int moy = range(MONTH_OF_YEAR).checkValidIntValue(fieldValues.remove(MONTH_OF_YEAR), MONTH_OF_YEAR); + int dom = range(DAY_OF_MONTH).checkValidIntValue(fieldValues.remove(DAY_OF_MONTH), DAY_OF_MONTH); + if (resolverStyle == ResolverStyle.SMART) { // previous valid + if (yoe < 1) { + throw new DateTimeException("Invalid YearOfEra: " + yoe); + } + int y = prolepticYearLenient(era, yoe); + JapaneseDate result; + try { + result = date(y, moy, dom); + } catch (DateTimeException ex) { + result = date(y, moy, 1).with(TemporalAdjusters.lastDayOfMonth()); + } + // handle the era being changed + // only allow if the new date is in the same Jan-Dec as the era change + // determine by ensuring either original yoe or result yoe is 1 + if (result.getEra() != era && result.get(YEAR_OF_ERA) > 1 && yoe > 1) { + throw new DateTimeException("Invalid YearOfEra for Era: " + era + " " + yoe); + } + return result; + } + return date(era, yoe, moy, dom); + } private ChronoLocalDate resolveYD(JapaneseEra era, int yoe, Map fieldValues, ResolverStyle resolverStyle) { fieldValues.remove(ERA); diff --git a/src/java.base/share/classes/java/time/format/DateTimeFormatterBuilder.java b/src/java.base/share/classes/java/time/format/DateTimeFormatterBuilder.java --- a/src/java.base/share/classes/java/time/format/DateTimeFormatterBuilder.java +++ b/src/java.base/share/classes/java/time/format/DateTimeFormatterBuilder.java @@ -3049,7 +3049,7 @@ public final class DateTimeFormatterBuil * Prints and parses a numeric date-time field with optional padding. */ static final class FractionPrinterParser extends NumberPrinterParser { - private final boolean decimalPoint; + private final boolean decimalPoint; /** * Constructor. diff --git a/src/java.base/share/classes/java/time/format/DecimalStyle.java b/src/java.base/share/classes/java/time/format/DecimalStyle.java --- a/src/java.base/share/classes/java/time/format/DecimalStyle.java +++ b/src/java.base/share/classes/java/time/format/DecimalStyle.java @@ -216,7 +216,6 @@ public final class DecimalStyle { * * @param zeroDigit the character for zero * @return a copy with a new character that represents zero, not null - */ public DecimalStyle withZeroDigit(char zeroDigit) { if (zeroDigit == this.zeroDigit) { diff --git a/src/java.base/share/classes/java/time/zone/ZoneRulesProvider.java b/src/java.base/share/classes/java/time/zone/ZoneRulesProvider.java --- a/src/java.base/share/classes/java/time/zone/ZoneRulesProvider.java +++ b/src/java.base/share/classes/java/time/zone/ZoneRulesProvider.java @@ -119,7 +119,7 @@ import java.util.Collections; * Providers must ensure that once a rule has been seen by the application, the * rule must continue to be available. * -* Providers are encouraged to implement a meaningful {@code toString} method. + * Providers are encouraged to implement a meaningful {@code toString} method. *
* Many systems would like to update time-zone rules dynamically without stopping the JVM. * When examined in detail, this is a complex problem.