Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/classes/sun/util/locale/provider/LocaleProviderAdapter.java
          +++ new/src/share/classes/sun/util/locale/provider/LocaleProviderAdapter.java
↓ open down ↓ 106 lines elided ↑ open up ↑
 107  107      private static LocaleProviderAdapter cldrLocaleProviderAdapter = null;
 108  108  
 109  109      /**
 110  110       * HOST Locale Data Adapter instance, if any.
 111  111       */
 112  112      private static LocaleProviderAdapter hostLocaleProviderAdapter = null;
 113  113  
 114  114      static {
 115  115          String order = AccessController.doPrivileged(
 116  116                             new sun.security.action.GetPropertyAction("java.locale.providers"));
 117      -                    // Override adapterPreference with the properties one
 118      -                    if (order != null && order.length() != 0) {
 119      -                        String[] types = order.split(",");
 120      -                        List<Type> typeList = new ArrayList<>();
 121      -                        for (String type : types) {
 122      -                            try {
 123      -                            Type aType = Type.valueOf(type.trim().toUpperCase(Locale.ROOT));
      117 +        // Override adapterPreference with the properties one
      118 +        if (order != null && order.length() != 0) {
      119 +            String[] types = order.split(",");
      120 +            List<Type> typeList = new ArrayList<>();
      121 +            for (String type : types) {
      122 +                try {
      123 +                    Type aType = Type.valueOf(type.trim().toUpperCase(Locale.ROOT));
 124  124  
 125      -                                // load adapter if necessary
 126      -                                switch (aType) {
 127      -                                case CLDR:
      125 +                    // load adapter if necessary
      126 +                    switch (aType) {
      127 +                    case CLDR:
 128  128                          cldrLocaleProviderAdapter = new CLDRLocaleProviderAdapter();
 129      -                                    break;
 130      -                                case HOST:
      129 +                        break;
      130 +                    case HOST:
 131  131                          hostLocaleProviderAdapter = new HostLocaleProviderAdapter();
 132      -                                    break;
 133      -                                }
 134      -                                typeList.add(aType);
 135      -                } catch (// could be caused by the user specifying wrong
 136      -                                     // provider name or format in the system property
 137      -                                     IllegalArgumentException |
 138      -                                     UnsupportedOperationException e) {
 139      -                                LocaleServiceProviderPool.config(LocaleProviderAdapter.class, e.toString());
 140      -                            }
 141      -                        }
 142      -
 143      -                        if (!typeList.contains(Type.JRE)) {
 144      -                            // Append JRE as the last resort.
 145      -                            typeList.add(Type.JRE);
 146      -                        }
 147      -                        adapterPreference = typeList.toArray(new Type[0]);
      132 +                        break;
 148  133                      }
      134 +                    typeList.add(aType);
      135 +                } catch (IllegalArgumentException |
      136 +                         UnsupportedOperationException e) {
      137 +                    // could be caused by the user specifying wrong
      138 +                    // provider name or format in the system property
      139 +                    LocaleServiceProviderPool.config(LocaleProviderAdapter.class, e.toString());
      140 +                }
      141 +            }
      142 +            adapterPreference = typeList.toArray(new Type[0]);
      143 +        }
 149  144      }
 150  145  
 151  146  
 152  147      /**
 153  148       * Returns the singleton instance for each adapter type
 154  149       */
 155  150      public static LocaleProviderAdapter forType(Type type) {
 156  151          switch (type) {
 157  152          case JRE:
 158  153              return jreLocaleProviderAdapter;
↓ open down ↓ 11 lines elided ↑ open up ↑
 170  165      public static LocaleProviderAdapter forJRE() {
 171  166          return jreLocaleProviderAdapter;
 172  167      }
 173  168  
 174  169      public static LocaleProviderAdapter getResourceBundleBased() {
 175  170          for (Type type : getAdapterPreference()) {
 176  171              if (type == Type.JRE || type == Type.CLDR) {
 177  172                  return forType(type);
 178  173              }
 179  174          }
 180      -        // Shouldn't happen.
 181      -        throw new InternalError();
      175 +
      176 +        // for the last resort JRE adapter
      177 +        return forType(Type.JRE);
 182  178      }
 183  179      /**
 184  180       * Returns the preference order of LocaleProviderAdapter.Type
 185  181       */
 186  182      public static Type[] getAdapterPreference() {
 187  183          return adapterPreference;
 188  184      }
 189  185  
 190  186      /**
 191  187       * Returns a LocaleProviderAdapter for the given locale service provider that
 192  188       * best matches the given locale. This method returns the LocaleProviderAdapter
 193      -     * for JRE if none is found for the given locale.
      189 +     * for JRE if none is found for the ROOT locale.
 194  190       *
 195  191       * @param providerClass the class for the locale service provider
 196  192       * @param locale the desired locale.
 197  193       * @return a LocaleProviderAdapter
 198  194       */
 199  195      public static LocaleProviderAdapter getAdapter(Class<? extends LocaleServiceProvider> providerClass,
 200  196                                                 Locale locale) {
 201  197          // Fast look-up for the given locale
 202  198          LocaleProviderAdapter adapter = findAdapter(providerClass, locale);
 203  199          if (adapter != null) {
↓ open down ↓ 175 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX