Deprecate week_year in favour of weekyear date format backport(63307) (#63308)

week_year is misleading as the formatter only has a weekyear. A field
corresponding to 'Y'. 'weekyear' should be used instead

relates #60707
backports https://github.com/elastic/elasticsearch/pull/63307
This commit is contained in:
Przemyslaw Gomulka 2020-10-07 09:16:27 +02:00 committed by GitHub
parent c30c5555c5
commit eadd69e1e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 31 additions and 7 deletions

View File

@ -157,6 +157,11 @@ public class Joda {
formatter = ISODateTimeFormat.weekDateTime(); formatter = ISODateTimeFormat.weekDateTime();
} else if (FormatNames.WEEK_DATE_TIME_NO_MILLIS.matches(input)) { } else if (FormatNames.WEEK_DATE_TIME_NO_MILLIS.matches(input)) {
formatter = ISODateTimeFormat.weekDateTimeNoMillis(); formatter = ISODateTimeFormat.weekDateTimeNoMillis();
} else if (FormatNames.WEEKYEAR.equals(input)) {
getDeprecationLogger()
.deprecate("week_year_format_name", "Format name \"week_year\" is deprecated and will be removed in a future version. " +
"Use \"weekyear\" format instead");
formatter = ISODateTimeFormat.weekyear();
} else if (FormatNames.WEEK_YEAR.matches(input)) { } else if (FormatNames.WEEK_YEAR.matches(input)) {
formatter = ISODateTimeFormat.weekyear(); formatter = ISODateTimeFormat.weekyear();
} else if (FormatNames.WEEK_YEAR_WEEK.matches(input)) { } else if (FormatNames.WEEK_YEAR_WEEK.matches(input)) {

View File

@ -1175,6 +1175,9 @@ public class DateFormatters {
new DateTimeFormatterBuilder().appendValue(WEEK_FIELDS_ROOT.weekBasedYear()).toFormatter(Locale.ROOT) new DateTimeFormatterBuilder().appendValue(WEEK_FIELDS_ROOT.weekBasedYear()).toFormatter(Locale.ROOT)
.withResolverStyle(ResolverStyle.STRICT)); .withResolverStyle(ResolverStyle.STRICT));
private static final DateFormatter WEEKYEAR = new JavaDateFormatter("weekyear",
new DateTimeFormatterBuilder().appendValue(WEEK_FIELDS_ROOT.weekBasedYear()).toFormatter(Locale.ROOT)
.withResolverStyle(ResolverStyle.STRICT));
/* /*
* Returns a formatter for a four digit year. (uuuu) * Returns a formatter for a four digit year. (uuuu)
*/ */
@ -1728,7 +1731,12 @@ public class DateFormatters {
} else if (FormatNames.WEEK_DATE_TIME_NO_MILLIS.matches(input)) { } else if (FormatNames.WEEK_DATE_TIME_NO_MILLIS.matches(input)) {
return WEEK_DATE_TIME_NO_MILLIS; return WEEK_DATE_TIME_NO_MILLIS;
} else if (FormatNames.WEEK_YEAR.matches(input)) { } else if (FormatNames.WEEK_YEAR.matches(input)) {
deprecationLogger.getOrCompute()
.deprecate("week_year_format_name", "Format name \"week_year\" is deprecated and will be removed in a future version. " +
"Use \"weekyear\" format instead");
return WEEK_YEAR; return WEEK_YEAR;
} else if (FormatNames.WEEKYEAR.matches(input)) {
return WEEKYEAR;
} else if (FormatNames.WEEK_YEAR_WEEK.matches(input)) { } else if (FormatNames.WEEK_YEAR_WEEK.matches(input)) {
return WEEKYEAR_WEEK; return WEEKYEAR_WEEK;
} else if (FormatNames.WEEKYEAR_WEEK_DAY.matches(input)) { } else if (FormatNames.WEEKYEAR_WEEK_DAY.matches(input)) {

View File

@ -63,7 +63,8 @@ public enum FormatNames {
WEEK_DATE("weekDate", "week_date"), WEEK_DATE("weekDate", "week_date"),
WEEK_DATE_TIME("weekDateTime", "week_date_time"), WEEK_DATE_TIME("weekDateTime", "week_date_time"),
WEEK_DATE_TIME_NO_MILLIS("weekDateTimeNoMillis", "week_date_time_no_millis"), WEEK_DATE_TIME_NO_MILLIS("weekDateTimeNoMillis", "week_date_time_no_millis"),
WEEK_YEAR("weekyear", "week_year"), WEEK_YEAR(null, "week_year"),
WEEKYEAR(null, "weekyear"),
WEEK_YEAR_WEEK("weekyearWeek", "weekyear_week"), WEEK_YEAR_WEEK("weekyearWeek", "weekyear_week"),
WEEKYEAR_WEEK_DAY("weekyearWeekDay", "weekyear_week_day"), WEEKYEAR_WEEK_DAY("weekyearWeekDay", "weekyear_week_day"),
YEAR(null, "year"), YEAR(null, "year"),

View File

@ -532,9 +532,9 @@ public class JavaJodaTimeDuellingTests extends ESTestCase {
assertSameDate("2012-1-31", "yearMonthDay"); assertSameDate("2012-1-31", "yearMonthDay");
assertSameDate("2012-12-1", "yearMonthDay"); assertSameDate("2012-12-1", "yearMonthDay");
assertSameDate("2018", "week_year"); assertSameDate("2018", "weekyear");
assertSameDate("1", "week_year"); assertSameDate("1", "weekyear");
assertSameDate("2017", "week_year"); assertSameDate("2017", "weekyear");
assertSameDate("2018-W29", "weekyear_week"); assertSameDate("2018-W29", "weekyear_week");
assertSameDate("2018-W1", "weekyear_week"); assertSameDate("2018-W1", "weekyear_week");

View File

@ -383,6 +383,12 @@ public class DateFormattersTests extends ESTestCase {
} }
} }
public void testWeek_yearDeprecation() {
DateFormatter.forPattern("week_year");
assertWarnings("Format name \"week_year\" is deprecated and will be removed in a future version. " +
"Use \"weekyear\" format instead");
}
public void testCamelCaseDeprecation() { public void testCamelCaseDeprecation() {
String[] deprecatedNames = new String[]{ String[] deprecatedNames = new String[]{
"basicDate", "basicDateTime", "basicDateTimeNoMillis", "basicOrdinalDate", "basicOrdinalDateTime", "basicDate", "basicDateTime", "basicDateTimeNoMillis", "basicOrdinalDate", "basicOrdinalDateTime",
@ -391,7 +397,8 @@ public class DateFormattersTests extends ESTestCase {
"dateHourMinuteSecond", "dateHourMinuteSecondFraction", "dateHourMinuteSecondMillis", "dateOptionalTime", "dateHourMinuteSecond", "dateHourMinuteSecondFraction", "dateHourMinuteSecondMillis", "dateOptionalTime",
"dateTime", "dateTimeNoMillis", "hourMinute", "hourMinuteSecond", "hourMinuteSecondFraction", "hourMinuteSecondMillis", "dateTime", "dateTimeNoMillis", "hourMinute", "hourMinuteSecond", "hourMinuteSecondFraction", "hourMinuteSecondMillis",
"ordinalDate", "ordinalDateTime", "ordinalDateTimeNoMillis", "timeNoMillis", "ordinalDate", "ordinalDateTime", "ordinalDateTimeNoMillis", "timeNoMillis",
"tTime", "tTimeNoMillis", "weekDate", "weekDateTime", "weekDateTimeNoMillis", "weekyear", "weekyearWeek", "weekyearWeekDay", "tTime", "tTimeNoMillis", "weekDate", "weekDateTime", "weekDateTimeNoMillis",
"weekyearWeek", "weekyearWeekDay",
"yearMonth", "yearMonthDay", "strictBasicWeekDate", "strictBasicWeekDateTime", "yearMonth", "yearMonthDay", "strictBasicWeekDate", "strictBasicWeekDateTime",
"strictBasicWeekDateTimeNoMillis", "strictDate", "strictDateHour", "strictDateHourMinute", "strictDateHourMinuteSecond", "strictBasicWeekDateTimeNoMillis", "strictDate", "strictDateHour", "strictDateHourMinute", "strictDateHourMinuteSecond",
"strictDateHourMinuteSecondFraction", "strictDateHourMinuteSecondMillis", "strictDateOptionalTime", "strictDateHourMinuteSecondFraction", "strictDateHourMinuteSecondMillis", "strictDateOptionalTime",
@ -408,7 +415,7 @@ public class DateFormattersTests extends ESTestCase {
DateFormatter dateFormatter = DateFormatter.forPattern(name); DateFormatter dateFormatter = DateFormatter.forPattern(name);
assertThat(dateFormatter.pattern(), equalTo(name)); assertThat(dateFormatter.pattern(), equalTo(name));
assertWarnings("Camel case format name " + name + " is deprecated and will be removed in a future version. " + assertWarnings("Camel case format name " + name + " is deprecated and will be removed in a future version. " +
"Use snake case name " + snakeCaseName + " instead."); "Use snake case name " + snakeCaseName + " instead.");
dateFormatter = DateFormatter.forPattern(snakeCaseName); dateFormatter = DateFormatter.forPattern(snakeCaseName);
assertThat(dateFormatter.pattern(), equalTo(snakeCaseName)); assertThat(dateFormatter.pattern(), equalTo(snakeCaseName));

View File

@ -130,6 +130,7 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.EnumSet;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
@ -924,7 +925,9 @@ public abstract class ESTestCase extends LuceneTestCase {
* Generate a random valid date formatter pattern. * Generate a random valid date formatter pattern.
*/ */
public static String randomDateFormatterPattern() { public static String randomDateFormatterPattern() {
return randomFrom(FormatNames.values()).getSnakeCaseName(); //WEEKYEAR should be used instead of WEEK_YEAR
EnumSet<FormatNames> formatNames = EnumSet.complementOf(EnumSet.of(FormatNames.WEEK_YEAR));
return randomFrom(formatNames).getSnakeCaseName();
} }
/** /**