jmx-dev Call for review, Bug ID 6514985
Eamonn McManus
Eamonn.McManus at Sun.COM
Tue May 22 08:55:08 PDT 2007
This fix looks good to me.
Éamonn McManus JMX Spec Lead http://weblogs.java.net/blog/emcmanus/
Jean-Francois Denise - Sun Microsystems wrote:
> Proposal to fix 6514985 : JMX should use java.util.ServiceLoader to
> lookup service providers
>
> Swan access webrev
> ==================
>
> http://amos.france.sun.com/jmgt/user/jfdenise/workspaces/jdk7_jmx_master.ws/webrev/index.html
>
>
> Diff
> ====
>
> diff javax/management/remote/JMXConnectorFactory.java
> /jmgt/master/jmx/jdk7_jmx_master.ws/src/share/classes/javax/management/remote//JMXConnectorFactory.java
>
> 34d33
> < import java.util.ServiceLoader;
> 40a40
>> import com.sun.jmx.remote.util.Service;
> 42d41
> <
> 422,429c421,428
> < static <T> Iterator<T> getProviderIterator(final ServiceLoader<T>
> loader) {
> < PrivilegedAction<Iterator<T>>
> < action = new PrivilegedAction<Iterator<T>>() {
> < public Iterator<T> run() {
> < return loader.iterator();
> < }
> < };
> < return AccessController.doPrivileged(action);
> ---
>> static Iterator getProviderIterator(final Class providerClass,
>> final ClassLoader loader) {
>> PrivilegedAction action = new PrivilegedAction() {
>> public Object run() {
>> return Service.providers(providerClass, loader);
>> }
>> };
>> return (Iterator) AccessController.doPrivileged(action);
> 436,441c435,438
> <
> < ServiceLoader<JMXConnectorProvider> serviceLoader =
> < ServiceLoader.load(JMXConnectorProvider.class,
> < loader);
> < Iterator<JMXConnectorProvider> providers =
> < getProviderIterator(serviceLoader);
> ---
>>
>> Iterator providers =
> getProviderIterator(JMXConnectorProvider.class,
>> loader);
>> JMXConnectorProvider provider = null;
> 444c441,442
> < while(providers.hasNext()) {
> ---
>> while (providers.hasNext()) {
>> provider = (JMXConnectorProvider) providers.next();
> 446c444
> < connection = providers.next().newJMXConnector(url,
> map);
> ---
>> connection = provider.newJMXConnector(url, map);
> diff javax/management/remote/JMXConnectorServerFactory.java
> /jmgt/master/jmx/jdk7_jmx_master.ws/src/share/classes/javax/management/remote//JMXConnectorServerFactory.java
>
> 38d37
> < import java.util.ServiceLoader;
> 214,219c213,215
> < ServiceLoader<JMXConnectorServerProvider> serviceLoader =
> < ServiceLoader.load(JMXConnectorServerProvider.class,
> < loader);
> < Iterator<JMXConnectorServerProvider> providers =
> < JMXConnectorFactory.getProviderIterator(serviceLoader);
> <
> ---
>> Iterator providers = JMXConnectorFactory.getProviderIterator(
>> JMXConnectorServerProvider.class, loader);
>> JMXConnectorServerProvider provider = null;
> 222a219
>> provider = (JMXConnectorServerProvider) providers.next();
> 224c221
> < connection =
> providers.next().newJMXConnectorServer(url, map, mbs);
> ---
>> connection = provider.newJMXConnectorServer(url, map,
> mbs);
>
> Only in
> /jmgt/master/jmx/jdk7_jmx_master.ws/src/share/classes/com/sun/jmx/remote/util/:
>
> Service.java
> Only in deleted_files//src/share: classes
>
>
More information about the jmx-dev
mailing list