51 52 private static final String DEFAULT_CLASS; 53 static { 54 if (FontUtilities.isWindows) 55 DEFAULT_CLASS = "sun.awt.Win32FontManager"; 56 else 57 DEFAULT_CLASS = "sun.awt.X11FontManager"; 58 } 59 60 /** 61 * Get a valid FontManager implementation for the current platform. 62 * 63 * @return a valid FontManager instance for the current platform 64 */ 65 public static synchronized FontManager getInstance() { 66 67 if (instance != null) { 68 return instance; 69 } 70 71 String fmClassName = AccessController.doPrivileged( 72 new GetPropertyAction("sun.font.fontmanager", 73 DEFAULT_CLASS)); 74 75 try { 76 @SuppressWarnings("unchecked") 77 ClassLoader cl = (ClassLoader) 78 AccessController.doPrivileged(new PrivilegedAction() { 79 public Object run() { 80 return ClassLoader.getSystemClassLoader(); 81 } 82 }); 83 84 @SuppressWarnings("unchecked") 85 Class fmClass = Class.forName(fmClassName, true, cl); 86 instance = (FontManager) fmClass.newInstance(); 87 88 } catch (ClassNotFoundException ex) { 89 InternalError err = new InternalError(); 90 err.initCause(ex); 91 throw err; 92 93 } catch (InstantiationException ex) { 94 InternalError err = new InternalError(); 95 err.initCause(ex); 96 throw err; 97 98 } catch (IllegalAccessException ex) { 99 InternalError err = new InternalError(); 100 err.initCause(ex); 101 throw err; 102 } 103 104 return instance; 105 } 106 } | 51 52 private static final String DEFAULT_CLASS; 53 static { 54 if (FontUtilities.isWindows) 55 DEFAULT_CLASS = "sun.awt.Win32FontManager"; 56 else 57 DEFAULT_CLASS = "sun.awt.X11FontManager"; 58 } 59 60 /** 61 * Get a valid FontManager implementation for the current platform. 62 * 63 * @return a valid FontManager instance for the current platform 64 */ 65 public static synchronized FontManager getInstance() { 66 67 if (instance != null) { 68 return instance; 69 } 70 71 AccessController.doPrivileged(new PrivilegedAction() { 72 73 public Object run() { 74 try { 75 String fmClassName = 76 System.getProperty("sun.font.fontmanager", 77 DEFAULT_CLASS); 78 ClassLoader cl = ClassLoader.getSystemClassLoader(); 79 Class fmClass = Class.forName(fmClassName, true, cl); 80 instance = (FontManager) fmClass.newInstance(); 81 } catch (ClassNotFoundException ex) { 82 InternalError err = new InternalError(); 83 err.initCause(ex); 84 throw err; 85 86 } catch (InstantiationException ex) { 87 InternalError err = new InternalError(); 88 err.initCause(ex); 89 throw err; 90 91 } catch (IllegalAccessException ex) { 92 InternalError err = new InternalError(); 93 err.initCause(ex); 94 throw err; 95 } 96 return null; 97 } 98 }); 99 100 return instance; 101 } 102 } |