src/java.base/share/classes/sun/util/locale/provider/SPILocaleProviderAdapter.java
author naoto
Wed, 01 Aug 2018 09:33:56 -0700
changeset 51276 04183bf08bff
parent 48251 57148c79bd75
permissions -rw-r--r--
8208080: Locale extensions via Service provider is not working for region extensions Reviewed-by: rriggs, nishjain
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     1
/*
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
     2
 * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     4
 *
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    10
 *
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    15
 * accompanied this code).
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    16
 *
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    20
 *
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    23
 * questions.
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    24
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    25
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    26
package sun.util.locale.provider;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    27
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    28
import java.security.AccessController;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    29
import java.security.PrivilegedActionException;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    30
import java.security.PrivilegedExceptionAction;
14502
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    31
import java.text.BreakIterator;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    32
import java.text.Collator;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    33
import java.text.DateFormat;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    34
import java.text.DateFormatSymbols;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    35
import java.text.DecimalFormatSymbols;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    36
import java.text.NumberFormat;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    37
import java.text.spi.BreakIteratorProvider;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    38
import java.text.spi.CollatorProvider;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    39
import java.text.spi.DateFormatProvider;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    40
import java.text.spi.DateFormatSymbolsProvider;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    41
import java.text.spi.DecimalFormatSymbolsProvider;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    42
import java.text.spi.NumberFormatProvider;
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
    43
import java.util.Arrays;
14502
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    44
import java.util.Locale;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    45
import java.util.Map;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    46
import java.util.ServiceLoader;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    47
import java.util.concurrent.ConcurrentHashMap;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    48
import java.util.concurrent.ConcurrentMap;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    49
import java.util.spi.CalendarDataProvider;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    50
import java.util.spi.CalendarNameProvider;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    51
import java.util.spi.CurrencyNameProvider;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    52
import java.util.spi.LocaleNameProvider;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    53
import java.util.spi.LocaleServiceProvider;
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
    54
import java.util.spi.TimeZoneNameProvider;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    55
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    56
/**
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    57
 * LocaleProviderAdapter implementation for the installed SPI implementations.
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    58
 *
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    59
 * @author Naoto Sato
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    60
 * @author Masayoshi Okutsu
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    61
 */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    62
public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    63
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    64
    /**
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    65
     * Returns the type of this LocaleProviderAdapter
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    66
     */
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    67
    @Override
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    68
    public LocaleProviderAdapter.Type getAdapterType() {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    69
        return LocaleProviderAdapter.Type.SPI;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    70
    }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    71
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    72
    @Override
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    73
    protected <P extends LocaleServiceProvider> P findInstalledProvider(final Class<P> c) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    74
        try {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    75
            return AccessController.doPrivileged(new PrivilegedExceptionAction<P>() {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    76
                @Override
37782
ad8fe7507ecc 6850612: Deprecate Class.newInstance since it violates the checked exception language contract
darcy
parents: 33310
diff changeset
    77
                @SuppressWarnings(value={"unchecked", "deprecation"})
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
    78
                public P run() {
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    79
                    P delegate = null;
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    80
28093
270b6925cbc8 8062588: Support java.util.spi.*, java.text.spi.*, java.awt.im.spi loaded from classpath
naoto
parents: 25859
diff changeset
    81
                    for (LocaleServiceProvider provider :
270b6925cbc8 8062588: Support java.util.spi.*, java.text.spi.*, java.awt.im.spi loaded from classpath
naoto
parents: 25859
diff changeset
    82
                             ServiceLoader.load(c, ClassLoader.getSystemClassLoader())) {
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    83
                        if (delegate == null) {
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    84
                            try {
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    85
                                delegate =
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    86
                                    (P) Class.forName(SPILocaleProviderAdapter.class.getCanonicalName() +
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    87
                                              "$" +
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    88
                                              c.getSimpleName() +
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    89
                                              "Delegate")
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    90
                                              .newInstance();
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    91
                            }  catch (ClassNotFoundException |
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    92
                                      InstantiationException |
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    93
                                      IllegalAccessException e) {
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    94
                                LocaleServiceProviderPool.config(SPILocaleProviderAdapter.class, e.toString());
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    95
                                return null;
14511
d386ddd45711 7199750: Loading sequence of service provider is changed
naoto
parents: 14502
diff changeset
    96
                            }
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    97
                        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    98
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
    99
                        ((Delegate)delegate).addImpl(provider);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   100
                    }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   101
                    return delegate;
13583
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   102
                }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   103
            });
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   104
        }  catch (PrivilegedActionException e) {
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   105
            LocaleServiceProviderPool.config(SPILocaleProviderAdapter.class, e.toString());
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   106
        }
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   107
        return null;
dc0017b1a452 6336885: RFE: Locale Data Deployment Enhancements
naoto
parents:
diff changeset
   108
    }
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   109
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   110
    /*
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   111
     * Delegate interface. All the implementations have to have the class name
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   112
     * following "<provider class name>Delegate" convention.
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   113
     */
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   114
    private interface Delegate<P extends LocaleServiceProvider> {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   115
        default public void addImpl(P impl) {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   116
            for (Locale l : impl.getAvailableLocales()) {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   117
                getDelegateMap().putIfAbsent(l, impl);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   118
            }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   119
        }
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   120
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   121
        /*
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   122
         * Obtain the real SPI implementation, using locale fallback
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   123
         */
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   124
        default public P getImpl(Locale locale) {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   125
            for (Locale l : LocaleServiceProviderPool.getLookupLocales(locale.stripExtensions())) {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   126
                P ret = getDelegateMap().get(l);
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   127
                if (ret != null) {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   128
                    return ret;
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   129
                }
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   130
            }
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   131
            return null;
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   132
        }
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   133
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   134
        public Map<Locale, P> getDelegateMap();
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   135
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   136
        default public Locale[] getAvailableLocalesDelegate() {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   137
            return getDelegateMap().keySet().stream().toArray(Locale[]::new);
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   138
        }
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   139
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   140
        default public boolean isSupportedLocaleDelegate(Locale locale) {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   141
            Map<Locale, P> map = getDelegateMap();
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   142
            Locale override = CalendarDataUtility.findRegionOverride(locale);
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   143
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   144
            // First, call the method with extensions (if any)
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   145
            P impl = map.get(override);
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   146
            if (impl != null) {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   147
                return impl.isSupportedLocale(override);
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   148
            } else {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   149
                // The default behavior
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   150
                Locale overrideNoExt = override.stripExtensions();
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   151
                impl = map.get(overrideNoExt);
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   152
                if (impl != null) {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   153
                    return Arrays.stream(impl.getAvailableLocales())
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   154
                                .anyMatch(overrideNoExt::equals);
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   155
                }
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   156
            }
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   157
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   158
            return false;
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   159
        }
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   160
    }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   161
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   162
    /*
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   163
     * Delegates for the actual SPI implementations.
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   164
     */
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   165
    static class BreakIteratorProviderDelegate extends BreakIteratorProvider
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   166
                                        implements Delegate<BreakIteratorProvider> {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   167
        private final Map<Locale, BreakIteratorProvider> map = new ConcurrentHashMap<>();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   168
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   169
        @Override
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   170
        public Map<Locale, BreakIteratorProvider> getDelegateMap() {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   171
            return map;
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   172
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   173
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   174
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   175
        public Locale[] getAvailableLocales() {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   176
            return getAvailableLocalesDelegate();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   177
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   178
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   179
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   180
        public boolean isSupportedLocale(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   181
            return isSupportedLocaleDelegate(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   182
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   183
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   184
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   185
        public BreakIterator getWordInstance(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   186
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   187
            BreakIteratorProvider bip = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   188
            return bip.getWordInstance(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   189
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   190
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   191
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   192
        public BreakIterator getLineInstance(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   193
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   194
            BreakIteratorProvider bip = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   195
            return bip.getLineInstance(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   196
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   197
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   198
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   199
        public BreakIterator getCharacterInstance(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   200
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   201
            BreakIteratorProvider bip = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   202
            return bip.getCharacterInstance(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   203
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   204
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   205
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   206
        public BreakIterator getSentenceInstance(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   207
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   208
            BreakIteratorProvider bip = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   209
            return bip.getSentenceInstance(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   210
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   211
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   212
    }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   213
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   214
    static class CollatorProviderDelegate extends CollatorProvider implements Delegate<CollatorProvider> {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   215
        private final Map<Locale, CollatorProvider> map = new ConcurrentHashMap<>();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   216
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   217
        @Override
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   218
        public Map<Locale, CollatorProvider> getDelegateMap() {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   219
            return map;
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   220
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   221
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   222
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   223
        public Locale[] getAvailableLocales() {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   224
            return getAvailableLocalesDelegate();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   225
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   226
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   227
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   228
        public boolean isSupportedLocale(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   229
            return isSupportedLocaleDelegate(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   230
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   231
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   232
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   233
        public Collator getInstance(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   234
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   235
            CollatorProvider cp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   236
            return cp.getInstance(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   237
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   238
    }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   239
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   240
    static class DateFormatProviderDelegate extends DateFormatProvider
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   241
                                     implements Delegate<DateFormatProvider> {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   242
        private final Map<Locale, DateFormatProvider> map = new ConcurrentHashMap<>();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   243
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   244
        @Override
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   245
        public Map<Locale, DateFormatProvider> getDelegateMap() {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   246
            return map;
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   247
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   248
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   249
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   250
        public Locale[] getAvailableLocales() {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   251
            return getAvailableLocalesDelegate();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   252
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   253
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   254
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   255
        public boolean isSupportedLocale(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   256
            return isSupportedLocaleDelegate(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   257
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   258
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   259
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   260
        public DateFormat getTimeInstance(int style, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   261
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   262
            DateFormatProvider dfp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   263
            return dfp.getTimeInstance(style, locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   264
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   265
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   266
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   267
        public DateFormat getDateInstance(int style, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   268
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   269
            DateFormatProvider dfp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   270
            return dfp.getDateInstance(style, locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   271
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   272
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   273
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   274
        public DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   275
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   276
            DateFormatProvider dfp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   277
            return dfp.getDateTimeInstance(dateStyle, timeStyle, locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   278
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   279
    }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   280
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   281
    static class DateFormatSymbolsProviderDelegate extends DateFormatSymbolsProvider
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   282
                                            implements Delegate<DateFormatSymbolsProvider> {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   283
        private final Map<Locale, DateFormatSymbolsProvider> map = new ConcurrentHashMap<>();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   284
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   285
        @Override
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   286
        public Map<Locale, DateFormatSymbolsProvider> getDelegateMap() {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   287
            return map;
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   288
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   289
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   290
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   291
        public Locale[] getAvailableLocales() {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   292
            return getAvailableLocalesDelegate();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   293
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   294
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   295
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   296
        public boolean isSupportedLocale(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   297
            return isSupportedLocaleDelegate(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   298
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   299
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   300
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   301
        public DateFormatSymbols getInstance(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   302
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   303
            DateFormatSymbolsProvider dfsp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   304
            return dfsp.getInstance(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   305
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   306
    }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   307
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   308
    static class DecimalFormatSymbolsProviderDelegate extends DecimalFormatSymbolsProvider
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   309
                                               implements Delegate<DecimalFormatSymbolsProvider> {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   310
        private final Map<Locale, DecimalFormatSymbolsProvider> map = new ConcurrentHashMap<>();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   311
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   312
        @Override
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   313
        public Map<Locale, DecimalFormatSymbolsProvider> getDelegateMap() {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   314
            return map;
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   315
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   316
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   317
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   318
        public Locale[] getAvailableLocales() {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   319
            return getAvailableLocalesDelegate();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   320
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   321
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   322
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   323
        public boolean isSupportedLocale(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   324
            return isSupportedLocaleDelegate(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   325
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   326
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   327
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   328
        public DecimalFormatSymbols getInstance(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   329
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   330
            DecimalFormatSymbolsProvider dfsp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   331
            return dfsp.getInstance(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   332
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   333
    }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   334
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   335
    static class NumberFormatProviderDelegate extends NumberFormatProvider
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   336
                                       implements Delegate<NumberFormatProvider> {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   337
        private final Map<Locale, NumberFormatProvider> map = new ConcurrentHashMap<>();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   338
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   339
        @Override
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   340
        public Map<Locale, NumberFormatProvider> getDelegateMap() {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   341
            return map;
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   342
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   343
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   344
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   345
        public Locale[] getAvailableLocales() {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   346
            return getAvailableLocalesDelegate();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   347
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   348
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   349
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   350
        public boolean isSupportedLocale(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   351
            return isSupportedLocaleDelegate(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   352
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   353
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   354
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   355
        public NumberFormat getCurrencyInstance(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   356
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   357
            NumberFormatProvider nfp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   358
            return nfp.getCurrencyInstance(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   359
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   360
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   361
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   362
        public NumberFormat getIntegerInstance(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   363
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   364
            NumberFormatProvider nfp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   365
            return nfp.getIntegerInstance(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   366
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   367
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   368
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   369
        public NumberFormat getNumberInstance(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   370
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   371
            NumberFormatProvider nfp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   372
            return nfp.getNumberInstance(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   373
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   374
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   375
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   376
        public NumberFormat getPercentInstance(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   377
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   378
            NumberFormatProvider nfp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   379
            return nfp.getPercentInstance(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   380
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   381
    }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   382
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   383
    static class CalendarDataProviderDelegate extends CalendarDataProvider
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   384
                                       implements Delegate<CalendarDataProvider> {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   385
        private final Map<Locale, CalendarDataProvider> map = new ConcurrentHashMap<>();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   386
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   387
        @Override
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   388
        public Map<Locale, CalendarDataProvider> getDelegateMap() {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   389
            return map;
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   390
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   391
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   392
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   393
        public Locale[] getAvailableLocales() {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   394
            return getAvailableLocalesDelegate();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   395
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   396
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   397
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   398
        public boolean isSupportedLocale(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   399
            return isSupportedLocaleDelegate(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   400
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   401
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   402
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   403
        public int getFirstDayOfWeek(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   404
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   405
            CalendarDataProvider cdp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   406
            return cdp.getFirstDayOfWeek(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   407
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   408
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   409
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   410
        public int getMinimalDaysInFirstWeek(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   411
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   412
            CalendarDataProvider cdp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   413
            return cdp.getMinimalDaysInFirstWeek(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   414
        }
14502
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   415
    }
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   416
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   417
    static class CalendarNameProviderDelegate extends CalendarNameProvider
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   418
                                       implements Delegate<CalendarNameProvider> {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   419
        private final Map<Locale, CalendarNameProvider> map = new ConcurrentHashMap<>();
14502
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   420
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   421
        @Override
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   422
        public Map<Locale, CalendarNameProvider> getDelegateMap() {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   423
            return map;
14502
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   424
        }
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   425
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   426
        @Override
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   427
        public Locale[] getAvailableLocales() {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   428
            return getAvailableLocalesDelegate();
14502
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   429
        }
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   430
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   431
        @Override
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   432
        public boolean isSupportedLocale(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   433
            return isSupportedLocaleDelegate(locale);
14502
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   434
        }
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   435
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   436
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   437
        public String getDisplayName(String calendarType,
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   438
                                              int field, int value,
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   439
                                              int style, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   440
            locale = CalendarDataUtility.findRegionOverride(locale);
14502
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   441
            CalendarNameProvider cdp = getImpl(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   442
            return cdp.getDisplayName(calendarType, field, value, style, locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   443
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   444
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   445
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   446
        public Map<String, Integer> getDisplayNames(String calendarType,
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   447
                                                             int field, int style,
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   448
                                                             Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   449
            locale = CalendarDataUtility.findRegionOverride(locale);
14502
d63fed06fed4 8000986: Split java.util.spi.CalendarDataProvider into week parameters and field names portions
okutsu
parents: 14331
diff changeset
   450
            CalendarNameProvider cdp = getImpl(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   451
            return cdp.getDisplayNames(calendarType, field, style, locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   452
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   453
    }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   454
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   455
    static class CurrencyNameProviderDelegate extends CurrencyNameProvider
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   456
                                       implements Delegate<CurrencyNameProvider> {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   457
        private final Map<Locale, CurrencyNameProvider> map = new ConcurrentHashMap<>();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   458
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   459
        @Override
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   460
        public Map<Locale, CurrencyNameProvider> getDelegateMap() {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   461
            return map;
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   462
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   463
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   464
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   465
        public Locale[] getAvailableLocales() {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   466
            return getAvailableLocalesDelegate();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   467
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   468
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   469
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   470
        public boolean isSupportedLocale(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   471
            return isSupportedLocaleDelegate(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   472
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   473
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   474
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   475
        public String getSymbol(String currencyCode, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   476
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   477
            CurrencyNameProvider cnp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   478
            return cnp.getSymbol(currencyCode, locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   479
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   480
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   481
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   482
        public String getDisplayName(String currencyCode, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   483
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   484
            CurrencyNameProvider cnp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   485
            return cnp.getDisplayName(currencyCode, locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   486
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   487
    }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   488
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   489
    static class LocaleNameProviderDelegate extends LocaleNameProvider
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   490
                                     implements Delegate<LocaleNameProvider> {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   491
        private final Map<Locale, LocaleNameProvider> map = new ConcurrentHashMap<>();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   492
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   493
        @Override
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   494
        public Map<Locale, LocaleNameProvider> getDelegateMap() {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   495
            return map;
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   496
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   497
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   498
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   499
        public Locale[] getAvailableLocales() {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   500
            return getAvailableLocalesDelegate();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   501
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   502
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   503
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   504
        public boolean isSupportedLocale(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   505
            return isSupportedLocaleDelegate(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   506
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   507
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   508
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   509
        public String getDisplayLanguage(String languageCode, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   510
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   511
            LocaleNameProvider lnp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   512
            return lnp.getDisplayLanguage(languageCode, locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   513
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   514
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   515
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   516
        public String getDisplayScript(String scriptCode, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   517
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   518
            LocaleNameProvider lnp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   519
            return lnp.getDisplayScript(scriptCode, locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   520
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   521
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   522
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   523
        public String getDisplayCountry(String countryCode, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   524
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   525
            LocaleNameProvider lnp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   526
            return lnp.getDisplayCountry(countryCode, locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   527
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   528
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   529
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   530
        public String getDisplayVariant(String variant, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   531
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   532
            LocaleNameProvider lnp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   533
            return lnp.getDisplayVariant(variant, locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   534
        }
48251
57148c79bd75 8176841: Additional Unicode Language-Tag Extensions
naoto
parents: 47216
diff changeset
   535
57148c79bd75 8176841: Additional Unicode Language-Tag Extensions
naoto
parents: 47216
diff changeset
   536
        @Override
57148c79bd75 8176841: Additional Unicode Language-Tag Extensions
naoto
parents: 47216
diff changeset
   537
        public String getDisplayUnicodeExtensionKey(String key, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   538
            locale = CalendarDataUtility.findRegionOverride(locale);
48251
57148c79bd75 8176841: Additional Unicode Language-Tag Extensions
naoto
parents: 47216
diff changeset
   539
            LocaleNameProvider lnp = getImpl(locale);
57148c79bd75 8176841: Additional Unicode Language-Tag Extensions
naoto
parents: 47216
diff changeset
   540
            return lnp.getDisplayUnicodeExtensionKey(key, locale);
57148c79bd75 8176841: Additional Unicode Language-Tag Extensions
naoto
parents: 47216
diff changeset
   541
        }
57148c79bd75 8176841: Additional Unicode Language-Tag Extensions
naoto
parents: 47216
diff changeset
   542
57148c79bd75 8176841: Additional Unicode Language-Tag Extensions
naoto
parents: 47216
diff changeset
   543
        @Override
57148c79bd75 8176841: Additional Unicode Language-Tag Extensions
naoto
parents: 47216
diff changeset
   544
        public String getDisplayUnicodeExtensionType(String extType, String key, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   545
            locale = CalendarDataUtility.findRegionOverride(locale);
48251
57148c79bd75 8176841: Additional Unicode Language-Tag Extensions
naoto
parents: 47216
diff changeset
   546
            LocaleNameProvider lnp = getImpl(locale);
57148c79bd75 8176841: Additional Unicode Language-Tag Extensions
naoto
parents: 47216
diff changeset
   547
            return lnp.getDisplayUnicodeExtensionType(extType, key, locale);
57148c79bd75 8176841: Additional Unicode Language-Tag Extensions
naoto
parents: 47216
diff changeset
   548
        }
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   549
    }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   550
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   551
    static class TimeZoneNameProviderDelegate extends TimeZoneNameProvider
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   552
                                     implements Delegate<TimeZoneNameProvider> {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   553
        private final Map<Locale, TimeZoneNameProvider> map = new ConcurrentHashMap<>();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   554
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   555
        @Override
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   556
        public Map<Locale, TimeZoneNameProvider> getDelegateMap() {
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   557
            return map;
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   558
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   559
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   560
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   561
        public Locale[] getAvailableLocales() {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   562
            return getAvailableLocalesDelegate();
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   563
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   564
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   565
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   566
        public boolean isSupportedLocale(Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   567
            return isSupportedLocaleDelegate(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   568
        }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   569
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   570
        @Override
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   571
        public String getDisplayName(String ID, boolean daylight, int style, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   572
            locale = CalendarDataUtility.findRegionOverride(locale);
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   573
            TimeZoneNameProvider tznp = getImpl(locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   574
            return tznp.getDisplayName(ID, daylight, style, locale);
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   575
        }
14765
0987999ed367 8000983: Support narrow display names for calendar fields
okutsu
parents: 14511
diff changeset
   576
0987999ed367 8000983: Support narrow display names for calendar fields
okutsu
parents: 14511
diff changeset
   577
        @Override
0987999ed367 8000983: Support narrow display names for calendar fields
okutsu
parents: 14511
diff changeset
   578
        public String getGenericDisplayName(String ID, int style, Locale locale) {
51276
04183bf08bff 8208080: Locale extensions via Service provider is not working for region extensions
naoto
parents: 48251
diff changeset
   579
            locale = CalendarDataUtility.findRegionOverride(locale);
14765
0987999ed367 8000983: Support narrow display names for calendar fields
okutsu
parents: 14511
diff changeset
   580
            TimeZoneNameProvider tznp = getImpl(locale);
0987999ed367 8000983: Support narrow display names for calendar fields
okutsu
parents: 14511
diff changeset
   581
            return tznp.getGenericDisplayName(ID, style, locale);
0987999ed367 8000983: Support narrow display names for calendar fields
okutsu
parents: 14511
diff changeset
   582
        }
14331
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   583
    }
d3411e624053 8000997: Multiple locale sensitive services cannot be loaded
naoto
parents: 13583
diff changeset
   584
}