src/share/classes/sun/font/FontManagerFactory.java

Print this page




  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 }