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 }
|