# HG changeset patch
# User rriggs
# Date 1379195440 -3600
# Node ID 9a239bba214fafbb1623e8e0260ca8f17fae3bd4
# Parent 0a672997e442e288e9070478e443b8b1ab555c9b
8024807: Add getChronlogy() to CLDT/CZDT
Summary: Alternative to method is clunky and hard to find
Reviewed-by: sherman
Contributed-by: scolebourne@joda.org
diff -r 0a672997e442 -r 9a239bba214f jdk/src/share/classes/java/time/chrono/ChronoLocalDateTime.java
--- a/jdk/src/share/classes/java/time/chrono/ChronoLocalDateTime.java Fri Oct 04 12:01:29 2013 -0400
+++ b/jdk/src/share/classes/java/time/chrono/ChronoLocalDateTime.java Sat Sep 14 22:50:40 2013 +0100
@@ -175,6 +175,18 @@
//-----------------------------------------------------------------------
/**
+ * Gets the chronology of this date-time.
+ *
+ * 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.
*
* This returns a local date with the same year, month and day
@@ -251,7 +263,7 @@
*/
@Override
default ChronoLocalDateTime with(TemporalAdjuster adjuster) {
- return ChronoLocalDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.with(adjuster));
+ return ChronoLocalDateTimeImpl.ensureValid(getChronology(), Temporal.super.with(adjuster));
}
/**
@@ -269,7 +281,7 @@
*/
@Override
default ChronoLocalDateTime plus(TemporalAmount amount) {
- return ChronoLocalDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.plus(amount));
+ return ChronoLocalDateTimeImpl.ensureValid(getChronology(), Temporal.super.plus(amount));
}
/**
@@ -287,7 +299,7 @@
*/
@Override
default ChronoLocalDateTime minus(TemporalAmount amount) {
- return ChronoLocalDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.minus(amount));
+ return ChronoLocalDateTimeImpl.ensureValid(getChronology(), Temporal.super.minus(amount));
}
/**
@@ -297,7 +309,7 @@
*/
@Override
default ChronoLocalDateTime 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 @@
} 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 @@
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;
diff -r 0a672997e442 -r 9a239bba214f jdk/src/share/classes/java/time/chrono/ChronoLocalDateTimeImpl.java
--- a/jdk/src/share/classes/java/time/chrono/ChronoLocalDateTimeImpl.java Fri Oct 04 12:01:29 2013 -0400
+++ b/jdk/src/share/classes/java/time/chrono/ChronoLocalDateTimeImpl.java Sat Sep 14 22:50:40 2013 +0100
@@ -186,9 +186,9 @@
static ChronoLocalDateTimeImpl ensureValid(Chronology chrono, Temporal temporal) {
@SuppressWarnings("unchecked")
ChronoLocalDateTimeImpl other = (ChronoLocalDateTimeImpl) 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 @@
public long until(Temporal endExclusive, TemporalUnit unit) {
Objects.requireNonNull(endExclusive, "endExclusive");
@SuppressWarnings("unchecked")
- ChronoLocalDateTime end = (ChronoLocalDateTime) toLocalDate().getChronology().localDateTime(endExclusive);
+ ChronoLocalDateTime end = (ChronoLocalDateTime) getChronology().localDateTime(endExclusive);
if (unit instanceof ChronoUnit) {
if (unit.isTimeBased()) {
long amount = end.getLong(EPOCH_DAY) - date.getLong(EPOCH_DAY);
diff -r 0a672997e442 -r 9a239bba214f jdk/src/share/classes/java/time/chrono/ChronoZonedDateTime.java
--- a/jdk/src/share/classes/java/time/chrono/ChronoZonedDateTime.java Fri Oct 04 12:01:29 2013 -0400
+++ b/jdk/src/share/classes/java/time/chrono/ChronoZonedDateTime.java Sat Sep 14 22:50:40 2013 +0100
@@ -247,6 +247,18 @@
ChronoLocalDateTime toLocalDateTime();
/**
+ * Gets the chronology of this date-time.
+ *
+ * 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'.
*
* This is the offset of the local date-time from UTC/Greenwich.
@@ -398,7 +410,7 @@
*/
@Override
default ChronoZonedDateTime with(TemporalAdjuster adjuster) {
- return ChronoZonedDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.with(adjuster));
+ return ChronoZonedDateTimeImpl.ensureValid(getChronology(), Temporal.super.with(adjuster));
}
/**
@@ -416,7 +428,7 @@
*/
@Override
default ChronoZonedDateTime plus(TemporalAmount amount) {
- return ChronoZonedDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.plus(amount));
+ return ChronoZonedDateTimeImpl.ensureValid(getChronology(), Temporal.super.plus(amount));
}
/**
@@ -434,7 +446,7 @@
*/
@Override
default ChronoZonedDateTime minus(TemporalAmount amount) {
- return ChronoZonedDateTimeImpl.ensureValid(toLocalDate().getChronology(), Temporal.super.minus(amount));
+ return ChronoZonedDateTimeImpl.ensureValid(getChronology(), Temporal.super.minus(amount));
}
/**
@@ -444,7 +456,7 @@
*/
@Override
default ChronoZonedDateTime 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 @@
} 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 @@
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());
}
}
}
diff -r 0a672997e442 -r 9a239bba214f jdk/src/share/classes/java/time/chrono/ChronoZonedDateTimeImpl.java
--- a/jdk/src/share/classes/java/time/chrono/ChronoZonedDateTimeImpl.java Fri Oct 04 12:01:29 2013 -0400
+++ b/jdk/src/share/classes/java/time/chrono/ChronoZonedDateTimeImpl.java Sat Sep 14 22:50:40 2013 +0100
@@ -185,7 +185,7 @@
*/
@SuppressWarnings("unchecked")
private ChronoZonedDateTimeImpl create(Instant instant, ZoneId zone) {
- return (ChronoZonedDateTimeImpl)ofInstant(toLocalDate().getChronology(), instant, zone);
+ return (ChronoZonedDateTimeImpl)ofInstant(getChronology(), instant, zone);
}
/**
@@ -200,9 +200,9 @@
static ChronoZonedDateTimeImpl ensureValid(Chronology chrono, Temporal temporal) {
@SuppressWarnings("unchecked")
ChronoZonedDateTimeImpl other = (ChronoZonedDateTimeImpl) 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 @@
}
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 @@
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 @@
public long until(Temporal endExclusive, TemporalUnit unit) {
Objects.requireNonNull(endExclusive, "endExclusive");
@SuppressWarnings("unchecked")
- ChronoZonedDateTime end = (ChronoZonedDateTime) toLocalDate().getChronology().zonedDateTime(endExclusive);
+ ChronoZonedDateTime end = (ChronoZonedDateTime) getChronology().zonedDateTime(endExclusive);
if (unit instanceof ChronoUnit) {
end = end.withZoneSameInstant(offset);
return dateTime.until(end.toLocalDateTime(), unit);
diff -r 0a672997e442 -r 9a239bba214f jdk/test/java/time/tck/java/time/chrono/TCKChronoLocalDateTime.java
--- a/jdk/test/java/time/tck/java/time/chrono/TCKChronoLocalDateTime.java Fri Oct 04 12:01:29 2013 -0400
+++ b/jdk/test/java/time/tck/java/time/chrono/TCKChronoLocalDateTime.java Sat Sep 14 22:50:40 2013 +0100
@@ -344,6 +344,13 @@
}
//-----------------------------------------------------------------------
+ @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.
* Construct an adjuster with the Temporal that should be returned from adjust.
diff -r 0a672997e442 -r 9a239bba214f jdk/test/java/time/tck/java/time/chrono/TCKChronoZonedDateTime.java
--- a/jdk/test/java/time/tck/java/time/chrono/TCKChronoZonedDateTime.java Fri Oct 04 12:01:29 2013 -0400
+++ b/jdk/test/java/time/tck/java/time/chrono/TCKChronoZonedDateTime.java Sat Sep 14 22:50:40 2013 +0100
@@ -345,6 +345,13 @@
}
//-----------------------------------------------------------------------
+ @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.
* Construct an adjuster with the Temporal that should be returned from adjust.