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 : ServiceLoader.loadInstalled(c)) {
81 if (delegate == null) {
82 try {
83 delegate =
84 (P) Class.forName(SPILocaleProviderAdapter.class.getCanonicalName() +
85 "$" +
86 c.getSimpleName() +
87 "Delegate")
88 .newInstance();
89 } catch (ClassNotFoundException |
90 InstantiationException |
91 IllegalAccessException e) {
92 LocaleServiceProviderPool.config(SPILocaleProviderAdapter.class, e.toString());
93 return null;
94 }
95 }
96
97 ((Delegate)delegate).addImpl(provider);
98 }
99 return delegate;
100 }
|
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 : ServiceLoader.load(c)) {
81 if (delegate == null) {
82 try {
83 delegate =
84 (P) Class.forName(SPILocaleProviderAdapter.class.getCanonicalName() +
85 "$" +
86 c.getSimpleName() +
87 "Delegate")
88 .newInstance();
89 } catch (ClassNotFoundException |
90 InstantiationException |
91 IllegalAccessException e) {
92 LocaleServiceProviderPool.config(SPILocaleProviderAdapter.class, e.toString());
93 return null;
94 }
95 }
96
97 ((Delegate)delegate).addImpl(provider);
98 }
99 return delegate;
100 }
|