8024807: Add getChronlogy() to CLDT/CZDT
Alternative to method is clunky and hard to find Reviewed-by: sherman
This commit is contained in:
parent
d18aae693d
commit
2040c66b16
@ -174,6 +174,18 @@ public interface ChronoLocalDateTime<D extends ChronoLocalDate>
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* Gets the chronology of this date-time.
|
||||
* <p>
|
||||
* The {@code Chronology} represents the calendar system in use.
|
||||
* The era and other fields in {@link ChronoField} are defined by the chronology.
|
||||
*
|
||||
* @return the chronology, not null
|
||||
*/
|
||||
default Chronology getChronology() {
|
||||
return toLocalDate().getChronology();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the local date part of this date-time.
|
||||
* <p>
|
||||
@ -251,7 +263,7 @@ public interface ChronoLocalDateTime<D extends ChronoLocalDate>
|
||||
*/
|
||||
@Override
|
||||
default ChronoLocalDateTime<D> with(TemporalAdjuster adjuster) {
|
||||
return ChronoLocalDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.with(adjuster));
|
||||
return ChronoLocalDateTimeImpl.ensureValid(getChronology(), Temporal.super.with(adjuster));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -269,7 +281,7 @@ public interface ChronoLocalDateTime<D extends ChronoLocalDate>
|
||||
*/
|
||||
@Override
|
||||
default ChronoLocalDateTime<D> plus(TemporalAmount amount) {
|
||||
return ChronoLocalDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.plus(amount));
|
||||
return ChronoLocalDateTimeImpl.ensureValid(getChronology(), Temporal.super.plus(amount));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -287,7 +299,7 @@ public interface ChronoLocalDateTime<D extends ChronoLocalDate>
|
||||
*/
|
||||
@Override
|
||||
default ChronoLocalDateTime<D> minus(TemporalAmount amount) {
|
||||
return ChronoLocalDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.minus(amount));
|
||||
return ChronoLocalDateTimeImpl.ensureValid(getChronology(), Temporal.super.minus(amount));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -297,7 +309,7 @@ public interface ChronoLocalDateTime<D extends ChronoLocalDate>
|
||||
*/
|
||||
@Override
|
||||
default ChronoLocalDateTime<D> minus(long amountToSubtract, TemporalUnit unit) {
|
||||
return ChronoLocalDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.minus(amountToSubtract, unit));
|
||||
return ChronoLocalDateTimeImpl.ensureValid(getChronology(), Temporal.super.minus(amountToSubtract, unit));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
@ -327,7 +339,7 @@ public interface ChronoLocalDateTime<D extends ChronoLocalDate>
|
||||
} else if (query == TemporalQuery.localTime()) {
|
||||
return (R) toLocalTime();
|
||||
} else if (query == TemporalQuery.chronology()) {
|
||||
return (R) toLocalDate().getChronology();
|
||||
return (R) getChronology();
|
||||
} else if (query == TemporalQuery.precision()) {
|
||||
return (R) NANOS;
|
||||
}
|
||||
@ -489,7 +501,7 @@ public interface ChronoLocalDateTime<D extends ChronoLocalDate>
|
||||
if (cmp == 0) {
|
||||
cmp = toLocalTime().compareTo(other.toLocalTime());
|
||||
if (cmp == 0) {
|
||||
cmp = toLocalDate().getChronology().compareTo(other.toLocalDate().getChronology());
|
||||
cmp = getChronology().compareTo(other.getChronology());
|
||||
}
|
||||
}
|
||||
return cmp;
|
||||
|
@ -186,9 +186,9 @@ final class ChronoLocalDateTimeImpl<D extends ChronoLocalDate>
|
||||
static <R extends ChronoLocalDate> ChronoLocalDateTimeImpl<R> ensureValid(Chronology chrono, Temporal temporal) {
|
||||
@SuppressWarnings("unchecked")
|
||||
ChronoLocalDateTimeImpl<R> other = (ChronoLocalDateTimeImpl<R>) temporal;
|
||||
if (chrono.equals(other.toLocalDate().getChronology()) == false) {
|
||||
if (chrono.equals(other.getChronology()) == false) {
|
||||
throw new ClassCastException("Chronology mismatch, required: " + chrono.getId()
|
||||
+ ", actual: " + other.toLocalDate().getChronology().getId());
|
||||
+ ", actual: " + other.getChronology().getId());
|
||||
}
|
||||
return other;
|
||||
}
|
||||
@ -371,7 +371,7 @@ final class ChronoLocalDateTimeImpl<D extends ChronoLocalDate>
|
||||
public long until(Temporal endExclusive, TemporalUnit unit) {
|
||||
Objects.requireNonNull(endExclusive, "endExclusive");
|
||||
@SuppressWarnings("unchecked")
|
||||
ChronoLocalDateTime<D> end = (ChronoLocalDateTime<D>) toLocalDate().getChronology().localDateTime(endExclusive);
|
||||
ChronoLocalDateTime<D> end = (ChronoLocalDateTime<D>) getChronology().localDateTime(endExclusive);
|
||||
if (unit instanceof ChronoUnit) {
|
||||
if (unit.isTimeBased()) {
|
||||
long amount = end.getLong(EPOCH_DAY) - date.getLong(EPOCH_DAY);
|
||||
|
@ -246,6 +246,18 @@ public interface ChronoZonedDateTime<D extends ChronoLocalDate>
|
||||
*/
|
||||
ChronoLocalDateTime<D> toLocalDateTime();
|
||||
|
||||
/**
|
||||
* Gets the chronology of this date-time.
|
||||
* <p>
|
||||
* The {@code Chronology} represents the calendar system in use.
|
||||
* The era and other fields in {@link ChronoField} are defined by the chronology.
|
||||
*
|
||||
* @return the chronology, not null
|
||||
*/
|
||||
default Chronology getChronology() {
|
||||
return toLocalDate().getChronology();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the zone offset, such as '+01:00'.
|
||||
* <p>
|
||||
@ -398,7 +410,7 @@ public interface ChronoZonedDateTime<D extends ChronoLocalDate>
|
||||
*/
|
||||
@Override
|
||||
default ChronoZonedDateTime<D> with(TemporalAdjuster adjuster) {
|
||||
return ChronoZonedDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.with(adjuster));
|
||||
return ChronoZonedDateTimeImpl.ensureValid(getChronology(), Temporal.super.with(adjuster));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -416,7 +428,7 @@ public interface ChronoZonedDateTime<D extends ChronoLocalDate>
|
||||
*/
|
||||
@Override
|
||||
default ChronoZonedDateTime<D> plus(TemporalAmount amount) {
|
||||
return ChronoZonedDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.plus(amount));
|
||||
return ChronoZonedDateTimeImpl.ensureValid(getChronology(), Temporal.super.plus(amount));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -434,7 +446,7 @@ public interface ChronoZonedDateTime<D extends ChronoLocalDate>
|
||||
*/
|
||||
@Override
|
||||
default ChronoZonedDateTime<D> minus(TemporalAmount amount) {
|
||||
return ChronoZonedDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.minus(amount));
|
||||
return ChronoZonedDateTimeImpl.ensureValid(getChronology(), Temporal.super.minus(amount));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -444,7 +456,7 @@ public interface ChronoZonedDateTime<D extends ChronoLocalDate>
|
||||
*/
|
||||
@Override
|
||||
default ChronoZonedDateTime<D> minus(long amountToSubtract, TemporalUnit unit) {
|
||||
return ChronoZonedDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.minus(amountToSubtract, unit));
|
||||
return ChronoZonedDateTimeImpl.ensureValid(getChronology(), Temporal.super.minus(amountToSubtract, unit));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
@ -476,7 +488,7 @@ public interface ChronoZonedDateTime<D extends ChronoLocalDate>
|
||||
} else if (query == TemporalQuery.localTime()) {
|
||||
return (R) toLocalTime();
|
||||
} else if (query == TemporalQuery.chronology()) {
|
||||
return (R) toLocalDate().getChronology();
|
||||
return (R) getChronology();
|
||||
} else if (query == TemporalQuery.precision()) {
|
||||
return (R) NANOS;
|
||||
}
|
||||
@ -563,7 +575,7 @@ public interface ChronoZonedDateTime<D extends ChronoLocalDate>
|
||||
if (cmp == 0) {
|
||||
cmp = getZone().getId().compareTo(other.getZone().getId());
|
||||
if (cmp == 0) {
|
||||
cmp = toLocalDate().getChronology().compareTo(other.toLocalDate().getChronology());
|
||||
cmp = getChronology().compareTo(other.getChronology());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -185,7 +185,7 @@ final class ChronoZonedDateTimeImpl<D extends ChronoLocalDate>
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private ChronoZonedDateTimeImpl<D> create(Instant instant, ZoneId zone) {
|
||||
return (ChronoZonedDateTimeImpl<D>)ofInstant(toLocalDate().getChronology(), instant, zone);
|
||||
return (ChronoZonedDateTimeImpl<D>)ofInstant(getChronology(), instant, zone);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -200,9 +200,9 @@ final class ChronoZonedDateTimeImpl<D extends ChronoLocalDate>
|
||||
static <R extends ChronoLocalDate> ChronoZonedDateTimeImpl<R> ensureValid(Chronology chrono, Temporal temporal) {
|
||||
@SuppressWarnings("unchecked")
|
||||
ChronoZonedDateTimeImpl<R> other = (ChronoZonedDateTimeImpl<R>) temporal;
|
||||
if (chrono.equals(other.toLocalDate().getChronology()) == false) {
|
||||
if (chrono.equals(other.getChronology()) == false) {
|
||||
throw new ClassCastException("Chronology mismatch, required: " + chrono.getId()
|
||||
+ ", actual: " + other.toLocalDate().getChronology().getId());
|
||||
+ ", actual: " + other.getChronology().getId());
|
||||
}
|
||||
return other;
|
||||
}
|
||||
@ -293,7 +293,7 @@ final class ChronoZonedDateTimeImpl<D extends ChronoLocalDate>
|
||||
}
|
||||
return ofBest(dateTime.with(field, newValue), zone, offset);
|
||||
}
|
||||
return ChronoZonedDateTimeImpl.ensureValid(toLocalDate().getChronology(), field.adjustInto(this, newValue));
|
||||
return ChronoZonedDateTimeImpl.ensureValid(getChronology(), field.adjustInto(this, newValue));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
@ -302,7 +302,7 @@ final class ChronoZonedDateTimeImpl<D extends ChronoLocalDate>
|
||||
if (unit instanceof ChronoUnit) {
|
||||
return with(dateTime.plus(amountToAdd, unit));
|
||||
}
|
||||
return ChronoZonedDateTimeImpl.ensureValid(toLocalDate().getChronology(), unit.addTo(this, amountToAdd)); /// TODO: Generics replacement Risk!
|
||||
return ChronoZonedDateTimeImpl.ensureValid(getChronology(), unit.addTo(this, amountToAdd)); /// TODO: Generics replacement Risk!
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
@ -310,7 +310,7 @@ final class ChronoZonedDateTimeImpl<D extends ChronoLocalDate>
|
||||
public long until(Temporal endExclusive, TemporalUnit unit) {
|
||||
Objects.requireNonNull(endExclusive, "endExclusive");
|
||||
@SuppressWarnings("unchecked")
|
||||
ChronoZonedDateTime<D> end = (ChronoZonedDateTime<D>) toLocalDate().getChronology().zonedDateTime(endExclusive);
|
||||
ChronoZonedDateTime<D> end = (ChronoZonedDateTime<D>) getChronology().zonedDateTime(endExclusive);
|
||||
if (unit instanceof ChronoUnit) {
|
||||
end = end.withZoneSameInstant(offset);
|
||||
return dateTime.until(end.toLocalDateTime(), unit);
|
||||
|
@ -343,6 +343,13 @@ public class TCKChronoLocalDateTime {
|
||||
ChronoLocalDateTime.from(null);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
@Test(dataProvider="calendars")
|
||||
public void test_getChronology(Chronology chrono) {
|
||||
ChronoLocalDateTime test = chrono.localDateTime(LocalDateTime.of(2010, 6, 30, 11, 30));
|
||||
assertEquals(test.getChronology(), chrono);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* FixedAdjusted returns a fixed Temporal in all adjustments.
|
||||
|
@ -344,6 +344,13 @@ public class TCKChronoZonedDateTime {
|
||||
ChronoZonedDateTime.from(null);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
@Test(dataProvider="calendars")
|
||||
public void test_getChronology(Chronology chrono) {
|
||||
ChronoZonedDateTime test = chrono.zonedDateTime(ZonedDateTime.of(2010, 6, 30, 11, 30, 0, 0, ZoneOffset.UTC));
|
||||
assertEquals(test.getChronology(), chrono);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
/**
|
||||
* FixedAdjusted returns a fixed Temporal in all adjustments.
|
||||
|
Loading…
x
Reference in New Issue
Block a user