514 "." + providerClassName);
515 Class<?> providerClass;
516 try {
517 providerClass = Class.forName(className, true, loader);
518 } catch (ClassNotFoundException e) {
519 //Add trace.
520 continue;
521 }
522
523 if (!targetInterface.isAssignableFrom(providerClass)) {
524 final String msg =
525 "Provider class does not implement " +
526 targetInterface.getName() + ": " +
527 providerClass.getName();
528 throw new JMXProviderException(msg);
529 }
530
531 // We have just proved that this cast is correct
532 Class<? extends T> providerClassT = Util.cast(providerClass);
533 try {
534 return providerClassT.newInstance();
535 } catch (Exception e) {
536 final String msg =
537 "Exception when instantiating provider [" + className +
538 "]";
539 throw new JMXProviderException(msg, e);
540 }
541 }
542
543 return null;
544 }
545
546 static ClassLoader resolveClassLoader(Map<String, ?> environment) {
547 ClassLoader loader = null;
548
549 if (environment != null) {
550 try {
551 loader = (ClassLoader)
552 environment.get(PROTOCOL_PROVIDER_CLASS_LOADER);
553 } catch (ClassCastException e) {
554 final String msg =
|
514 "." + providerClassName);
515 Class<?> providerClass;
516 try {
517 providerClass = Class.forName(className, true, loader);
518 } catch (ClassNotFoundException e) {
519 //Add trace.
520 continue;
521 }
522
523 if (!targetInterface.isAssignableFrom(providerClass)) {
524 final String msg =
525 "Provider class does not implement " +
526 targetInterface.getName() + ": " +
527 providerClass.getName();
528 throw new JMXProviderException(msg);
529 }
530
531 // We have just proved that this cast is correct
532 Class<? extends T> providerClassT = Util.cast(providerClass);
533 try {
534 @SuppressWarnings("deprecation")
535 T result = providerClassT.newInstance();
536 return result;
537 } catch (Exception e) {
538 final String msg =
539 "Exception when instantiating provider [" + className +
540 "]";
541 throw new JMXProviderException(msg, e);
542 }
543 }
544
545 return null;
546 }
547
548 static ClassLoader resolveClassLoader(Map<String, ?> environment) {
549 ClassLoader loader = null;
550
551 if (environment != null) {
552 try {
553 loader = (ClassLoader)
554 environment.get(PROTOCOL_PROVIDER_CLASS_LOADER);
555 } catch (ClassCastException e) {
556 final String msg =
|