< prev index next >

src/java.base/share/classes/sun/util/locale/provider/SPILocaleProviderAdapter.java

Print this page




  56  * LocaleProviderAdapter implementation for the installed SPI implementations.
  57  *
  58  * @author Naoto Sato
  59  * @author Masayoshi Okutsu
  60  */
  61 public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
  62 
  63     /**
  64      * Returns the type of this LocaleProviderAdapter
  65      */
  66     @Override
  67     public LocaleProviderAdapter.Type getAdapterType() {
  68         return LocaleProviderAdapter.Type.SPI;
  69     }
  70 
  71     @Override
  72     protected <P extends LocaleServiceProvider> P findInstalledProvider(final Class<P> c) {
  73         try {
  74             return AccessController.doPrivileged(new PrivilegedExceptionAction<P>() {
  75                 @Override
  76                 @SuppressWarnings("unchecked")
  77                 public P run() {
  78                     P delegate = null;
  79 
  80                     for (LocaleServiceProvider provider :
  81                              ServiceLoader.load(c, ClassLoader.getSystemClassLoader())) {
  82                         if (delegate == null) {
  83                             try {
  84                                 delegate =
  85                                     (P) Class.forName(SPILocaleProviderAdapter.class.getCanonicalName() +
  86                                               "$" +
  87                                               c.getSimpleName() +
  88                                               "Delegate")
  89                                               .newInstance();
  90                             }  catch (ClassNotFoundException |
  91                                       InstantiationException |
  92                                       IllegalAccessException e) {
  93                                 LocaleServiceProviderPool.config(SPILocaleProviderAdapter.class, e.toString());
  94                                 return null;
  95                             }
  96                         }




  56  * LocaleProviderAdapter implementation for the installed SPI implementations.
  57  *
  58  * @author Naoto Sato
  59  * @author Masayoshi Okutsu
  60  */
  61 public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
  62 
  63     /**
  64      * Returns the type of this LocaleProviderAdapter
  65      */
  66     @Override
  67     public LocaleProviderAdapter.Type getAdapterType() {
  68         return LocaleProviderAdapter.Type.SPI;
  69     }
  70 
  71     @Override
  72     protected <P extends LocaleServiceProvider> P findInstalledProvider(final Class<P> c) {
  73         try {
  74             return AccessController.doPrivileged(new PrivilegedExceptionAction<P>() {
  75                 @Override
  76                 @SuppressWarnings(value={"unchecked", "deprecation"})
  77                 public P run() {
  78                     P delegate = null;
  79 
  80                     for (LocaleServiceProvider provider :
  81                              ServiceLoader.load(c, ClassLoader.getSystemClassLoader())) {
  82                         if (delegate == null) {
  83                             try {
  84                                 delegate =
  85                                     (P) Class.forName(SPILocaleProviderAdapter.class.getCanonicalName() +
  86                                               "$" +
  87                                               c.getSimpleName() +
  88                                               "Delegate")
  89                                               .newInstance();
  90                             }  catch (ClassNotFoundException |
  91                                       InstantiationException |
  92                                       IllegalAccessException e) {
  93                                 LocaleServiceProviderPool.config(SPILocaleProviderAdapter.class, e.toString());
  94                                 return null;
  95                             }
  96                         }


< prev index next >