jdk/src/share/classes/javax/swing/UIDefaults.java

Print this page
rev 5676 : 7186948: Improve Swing data validation
Reviewed-by: art, ahgross


 660      * <code>null</code>
 661      * class loader is provided, <code>classForName()</code> otherwise.
 662      * <p>
 663      * If a mapping for <code>uiClassID</code> exists or if the specified
 664      * class can't be found, return <code>null</code>.
 665      * <p>
 666      * This method is used by <code>getUI</code>, it's usually
 667      * not necessary to call it directly.
 668      *
 669      * @param uiClassID  a string containing the class ID
 670      * @param uiClassLoader the object which will load the class
 671      * @return the value of <code>Class.forName(get(uidClassID))</code>
 672      * @see #getUI
 673      */
 674     public Class<? extends ComponentUI>
 675         getUIClass(String uiClassID, ClassLoader uiClassLoader)
 676     {
 677         try {
 678             String className = (String)get(uiClassID);
 679             if (className != null) {


 680                 Class cls = (Class)get(className);
 681                 if (cls == null) {
 682                     if (uiClassLoader == null) {
 683                         cls = SwingUtilities.loadSystemClass(className);
 684                     }
 685                     else {
 686                         cls = uiClassLoader.loadClass(className);
 687                     }
 688                     if (cls != null) {
 689                         // Save lookup for future use, as forName is slow.
 690                         put(className, cls);
 691                     }
 692                 }
 693                 return cls;
 694             }
 695         }
 696         catch (ClassNotFoundException e) {
 697             return null;
 698         }
 699         catch (ClassCastException e) {




 660      * <code>null</code>
 661      * class loader is provided, <code>classForName()</code> otherwise.
 662      * <p>
 663      * If a mapping for <code>uiClassID</code> exists or if the specified
 664      * class can't be found, return <code>null</code>.
 665      * <p>
 666      * This method is used by <code>getUI</code>, it's usually
 667      * not necessary to call it directly.
 668      *
 669      * @param uiClassID  a string containing the class ID
 670      * @param uiClassLoader the object which will load the class
 671      * @return the value of <code>Class.forName(get(uidClassID))</code>
 672      * @see #getUI
 673      */
 674     public Class<? extends ComponentUI>
 675         getUIClass(String uiClassID, ClassLoader uiClassLoader)
 676     {
 677         try {
 678             String className = (String)get(uiClassID);
 679             if (className != null) {
 680                 ReflectUtil.checkPackageAccess(className);
 681 
 682                 Class cls = (Class)get(className);
 683                 if (cls == null) {
 684                     if (uiClassLoader == null) {
 685                         cls = SwingUtilities.loadSystemClass(className);
 686                     }
 687                     else {
 688                         cls = uiClassLoader.loadClass(className);
 689                     }
 690                     if (cls != null) {
 691                         // Save lookup for future use, as forName is slow.
 692                         put(className, cls);
 693                     }
 694                 }
 695                 return cls;
 696             }
 697         }
 698         catch (ClassNotFoundException e) {
 699             return null;
 700         }
 701         catch (ClassCastException e) {