--- old/src/java.base/share/classes/java/text/DateFormatSymbols.java 2017-11-10 15:30:12.736224858 -0800 +++ new/src/java.base/share/classes/java/text/DateFormatSymbols.java 2017-11-10 15:30:12.406218690 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -49,6 +49,7 @@ import java.util.ResourceBundle; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import sun.util.locale.provider.CalendarDataUtility; import sun.util.locale.provider.LocaleProviderAdapter; import sun.util.locale.provider.LocaleServiceProviderPool; import sun.util.locale.provider.ResourceBundleBasedAdapter; @@ -82,6 +83,10 @@ * * * + *
If the locale contains "rg" (region override) + * Unicode extension, + * the symbols are overriden for the designated region. + * *
* DateFormatSymbols
objects are cloneable. When you obtain
* a DateFormatSymbols
object, feel free to modify the
@@ -716,15 +721,18 @@
}
dfs = new DateFormatSymbols(false);
+ // check for region override
+ Locale override = CalendarDataUtility.findRegionOverride(locale).orElse(locale);
+
// Initialize the fields from the ResourceBundle for locale.
LocaleProviderAdapter adapter
- = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
+ = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, override);
// Avoid any potential recursions
if (!(adapter instanceof ResourceBundleBasedAdapter)) {
adapter = LocaleProviderAdapter.getResourceBundleBased();
}
ResourceBundle resource
- = ((ResourceBundleBasedAdapter)adapter).getLocaleData().getDateFormatData(locale);
+ = ((ResourceBundleBasedAdapter)adapter).getLocaleData().getDateFormatData(override);
dfs.locale = locale;
// JRE and CLDR use different keys