From 54b92eb3240d3d6e4686faf48504e1ecfb385869 Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Thu, 15 Sep 2011 15:07:39 +0200
Subject: Graph Fonts: Decorate w/ PrivilegedAction if required

---
 .../classes/jogamp/graph/font/JavaFontLoader.java  | 20 +++++++++++++++--
 .../font/typecast/TypecastFontConstructor.java     | 26 +++++++++++++---------
 2 files changed, 33 insertions(+), 13 deletions(-)

(limited to 'src/jogl/classes/jogamp/graph/font')

diff --git a/src/jogl/classes/jogamp/graph/font/JavaFontLoader.java b/src/jogl/classes/jogamp/graph/font/JavaFontLoader.java
index bead9a5d2..6b8260668 100644
--- a/src/jogl/classes/jogamp/graph/font/JavaFontLoader.java
+++ b/src/jogl/classes/jogamp/graph/font/JavaFontLoader.java
@@ -29,6 +29,8 @@ package jogamp.graph.font;
 
 import java.io.File;
 import java.io.IOException;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 
 import javax.media.opengl.GLException;
 
@@ -60,7 +62,16 @@ public class JavaFontLoader implements FontSet {
     final String javaFontPath;
     
     private JavaFontLoader() {
-        javaFontPath = System.getProperty("java.home") + "/lib/fonts/";
+        final String javaHome = AccessController.doPrivileged(new PrivilegedAction<String>() {
+            public String run() {
+                return System.getProperty("java.home");
+            }
+        });
+        if(null != javaHome) {
+            javaFontPath = javaHome + "/lib/fonts/";
+        } else {
+            javaFontPath = null;
+        }
     }
 
     // FIXME: Add cache size to limit memory usage 
@@ -87,7 +98,9 @@ public class JavaFontLoader implements FontSet {
             } else {
                 font = abspath(availableFontFileNames[4], family, style);
             }
-            fontMap.put( ( family << 8 ) | style, font );
+            if(null != font) {
+                fontMap.put( ( family << 8 ) | style, font );
+            }
             return font;
         }
         
@@ -123,6 +136,9 @@ public class JavaFontLoader implements FontSet {
     }
     
     Font abspath(String fname, int family, int style) {
+        if(null == javaFontPath) {
+            throw new GLException("java font path undefined");
+        }
         final String err = "Problem loading font "+fname+", file "+javaFontPath+fname ;
                 
         try {
diff --git a/src/jogl/classes/jogamp/graph/font/typecast/TypecastFontConstructor.java b/src/jogl/classes/jogamp/graph/font/typecast/TypecastFontConstructor.java
index 126328ad7..408db555d 100644
--- a/src/jogl/classes/jogamp/graph/font/typecast/TypecastFontConstructor.java
+++ b/src/jogl/classes/jogamp/graph/font/typecast/TypecastFontConstructor.java
@@ -45,20 +45,24 @@ import com.jogamp.graph.font.Font;
 
 public class TypecastFontConstructor implements FontConstructor  {
 
-    public Font create(File ffile) throws IOException {
-        OTFontCollection fontset;        
-        try {
-            fontset = OTFontCollection.create(ffile);
-            return new TypecastFont(fontset);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return null;
+    public Font create(final File ffile) throws IOException {
+        return AccessController.doPrivileged(new PrivilegedAction<Font>() {
+            public Font run() {
+                OTFontCollection fontset;        
+                try {
+                    fontset = OTFontCollection.create(ffile);
+                    return new TypecastFont(fontset);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+                return null;
+            }
+        });        
     }
     
     public Font create(final URL furl) throws IOException {
-        return (Font) AccessController.doPrivileged(new PrivilegedAction() {
-            public Object run() {
+        return AccessController.doPrivileged(new PrivilegedAction<Font>() {
+            public Font run() {
                 File tf = null;
                 int len=0;
                 Font f = null;
-- 
cgit v1.2.3