jdk/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java
changeset 3446 4a07252d2e92
parent 1510 e747d3193ef2
child 5506 202f599c92aa
equal deleted inserted replaced
3445:39d00a6cac5e 3446:4a07252d2e92
   688     }
   688     }
   689 
   689 
   690     private static <T> T convertFromString(String s, OpenType<T> openType) {
   690     private static <T> T convertFromString(String s, OpenType<T> openType) {
   691         Class<T> c;
   691         Class<T> c;
   692         try {
   692         try {
   693             c = cast(Class.forName(openType.getClassName()));
   693             c = cast(Class.forName(openType.safeGetClassName()));
   694         } catch (ClassNotFoundException e) {
   694         } catch (ClassNotFoundException e) {
   695             throw new NoClassDefFoundError(e.toString());  // can't happen
   695             throw new NoClassDefFoundError(e.toString());  // can't happen
   696         }
   696         }
   697 
   697 
   698         // Look for: public static T valueOf(String)
   698         // Look for: public static T valueOf(String)
   709             try {
   709             try {
   710                 return c.cast(valueOf.invoke(null, s));
   710                 return c.cast(valueOf.invoke(null, s));
   711             } catch (Exception e) {
   711             } catch (Exception e) {
   712                 final String msg =
   712                 final String msg =
   713                     "Could not convert \"" + s + "\" using method: " + valueOf;
   713                     "Could not convert \"" + s + "\" using method: " + valueOf;
   714                 throw new IllegalArgumentException(msg);
   714                 throw new IllegalArgumentException(msg, e);
   715             }
   715             }
   716         }
   716         }
   717 
   717 
   718         // Look for: public T(String)
   718         // Look for: public T(String)
   719         Constructor<T> con;
   719         Constructor<T> con;
   726             try {
   726             try {
   727                 return con.newInstance(s);
   727                 return con.newInstance(s);
   728             } catch (Exception e) {
   728             } catch (Exception e) {
   729                 final String msg =
   729                 final String msg =
   730                     "Could not convert \"" + s + "\" using constructor: " + con;
   730                     "Could not convert \"" + s + "\" using constructor: " + con;
   731                 throw new IllegalArgumentException(msg);
   731                 throw new IllegalArgumentException(msg, e);
   732             }
   732             }
   733         }
   733         }
   734 
   734 
   735         throw new IllegalArgumentException("Don't know how to convert " +
   735         throw new IllegalArgumentException("Don't know how to convert " +
   736                                            "string to " +
   736                                            "string to " +
   755         Class<?> targetArrayClass;
   755         Class<?> targetArrayClass;
   756         try {
   756         try {
   757             stringArrayClass =
   757             stringArrayClass =
   758                 Class.forName(squareBrackets + "Ljava.lang.String;");
   758                 Class.forName(squareBrackets + "Ljava.lang.String;");
   759             targetArrayClass =
   759             targetArrayClass =
   760                 Class.forName(squareBrackets + "L" + baseType.getClassName() +
   760                 Class.forName(squareBrackets + "L" + baseType.safeGetClassName() +
   761                               ";");
   761                               ";");
   762         } catch (ClassNotFoundException e) {
   762         } catch (ClassNotFoundException e) {
   763             throw new NoClassDefFoundError(e.toString());  // can't happen
   763             throw new NoClassDefFoundError(e.toString());  // can't happen
   764         }
   764         }
   765         if (!stringArrayClass.isInstance(x)) {
   765         if (!stringArrayClass.isInstance(x)) {