diff options
-rw-r--r-- | src/java/com/jogamp/common/jvm/JNILibLoaderBase.java | 16 | ||||
-rw-r--r-- | src/java/com/jogamp/common/util/JarUtil.java | 45 | ||||
-rw-r--r-- | src/java/com/jogamp/common/util/cache/TempFileCache.java | 61 |
3 files changed, 62 insertions, 60 deletions
diff --git a/src/java/com/jogamp/common/jvm/JNILibLoaderBase.java b/src/java/com/jogamp/common/jvm/JNILibLoaderBase.java index bb0860a..348fb54 100644 --- a/src/java/com/jogamp/common/jvm/JNILibLoaderBase.java +++ b/src/java/com/jogamp/common/jvm/JNILibLoaderBase.java @@ -87,7 +87,7 @@ public class JNILibLoaderBase { loadLibraryInternal(libname); addLoaded(libname); if(DEBUG) { - System.err.println("JNILibLoaderBase loaded "+libname); + System.err.println("JNILibLoaderBase: loaded "+libname); } } catch (UnsatisfiedLinkError e) { res = false; @@ -124,7 +124,7 @@ public class JNILibLoaderBase { public static void addLoaded(String libName) { loaded.add(libName); if(DEBUG) { - System.err.println("JNILibLoaderBase Loaded Native Library: "+libName); + System.err.println("JNILibLoaderBase: Loaded Native Library: "+libName); } } @@ -147,15 +147,15 @@ public class JNILibLoaderBase { try { URL jarUrlRoot = JarUtil.getJarURLDirname( JarUtil.getJarURL( classFromJavaJar.getName(), cl ) ); if(DEBUG) { - System.err.println("addNativeJarLibs: "+nativeJarBaseName+": url-root "+jarUrlRoot); + System.err.println("JNILibLoaderBase: addNativeJarLibs: "+nativeJarBaseName+": url-root "+jarUrlRoot); } URL nativeJarURL = JarUtil.getJarURL(jarUrlRoot, nativeJarName); if(DEBUG) { - System.err.println("addNativeJarLibs: "+nativeJarBaseName+": nativeJarURL "+nativeJarURL); + System.err.println("JNILibLoaderBase: addNativeJarLibs: "+nativeJarBaseName+": nativeJarURL "+nativeJarURL); } JarFile nativeJar = JarUtil.getJarFile(nativeJarURL, cl); if(DEBUG) { - System.err.println("addNativeJarLibs: "+nativeJarBaseName+": nativeJar "+nativeJar.getName()); + System.err.println("JNILibLoaderBase: addNativeJarLibs: "+nativeJarBaseName+": nativeJar "+nativeJar.getName()); } return TempJarCache.addNativeLibs(classFromJavaJar, nativeJar); } catch (IOException ioe) { @@ -258,17 +258,17 @@ public class JNILibLoaderBase { final String fullLibraryName = TempJarCache.findLibrary(libraryName); if(null != fullLibraryName) { if(DEBUG) { - System.err.println("JNILibLoaderBase.loadLibraryInternal("+libraryName+") -> System.load("+fullLibraryName+") (TempJarCache)"); + System.err.println("JNILibLoaderBase: loadLibraryInternal("+libraryName+") -> System.load("+fullLibraryName+") (TempJarCache)"); } System.load(fullLibraryName); return; // done } else if(DEBUG) { - System.err.println("JNILibLoaderBase.loadLibraryInternal("+libraryName+") -> TempJarCache not mapped"); + System.err.println("JNILibLoaderBase: loadLibraryInternal("+libraryName+") -> TempJarCache not mapped"); } } // System.err.println("sun.boot.library.path=" + Debug.getProperty("sun.boot.library.path", false)); if(DEBUG) { - System.err.println("JNILibLoaderBase.loadLibraryInternal("+libraryName+") -> System.loadLibrary("+libraryName+")"); + System.err.println("JNILibLoaderBase: loadLibraryInternal("+libraryName+") -> System.loadLibrary("+libraryName+")"); } System.loadLibrary(libraryName); } diff --git a/src/java/com/jogamp/common/util/JarUtil.java b/src/java/com/jogamp/common/util/JarUtil.java index 4f46ca8..c95ad29 100644 --- a/src/java/com/jogamp/common/util/JarUtil.java +++ b/src/java/com/jogamp/common/util/JarUtil.java @@ -37,7 +37,6 @@ import java.io.OutputStream; import java.net.JarURLConnection; import java.net.URL; import java.net.URLConnection; -import java.security.AccessController; import java.security.cert.Certificate; import java.util.Enumeration; import java.util.HashMap; @@ -50,7 +49,7 @@ import com.jogamp.common.os.NativeLibrary; import jogamp.common.Debug; public class JarUtil { - private static final boolean VERBOSE = Debug.isPropertyDefined("jogamp.debug.JARUtil", true, AccessController.getContext()); + private static final boolean DEBUG = Debug.debug("JarUtil"); /** * @param clazzBinName com.jogamp.common.util.cache.TempJarCache @@ -162,8 +161,8 @@ public class JarUtil { * Return a map from native-lib-base-name to entry-name. */ public static Map<String, String> getNativeLibNames(JarFile jarFile) { - if (VERBOSE) { - System.err.println("getNativeLibNames: "+jarFile); + if (DEBUG) { + System.err.println("JarUtil: getNativeLibNames: "+jarFile); } Map<String,String> nameMap = new HashMap<String, String>(); @@ -222,8 +221,8 @@ public class JarUtil { boolean extractClassFiles, boolean extractOtherFiles) throws IOException { - if (VERBOSE) { - System.err.println("extract: "+jarFile.getName()+" -> "+dest+ + if (DEBUG) { + System.err.println("JarUtil: extract: "+jarFile.getName()+" -> "+dest+ ", extractNativeLibraries "+extractNativeLibraries+ ", extractClassFiles"+extractClassFiles+ ", extractOtherFiles "+extractOtherFiles); @@ -239,23 +238,23 @@ public class JarUtil { final String libBaseName = NativeLibrary.isValidNativeLibraryName(entryName, false); final boolean isNativeLib = null != libBaseName; if(isNativeLib && !extractNativeLibraries) { - if (VERBOSE) { - System.err.println("JarEntry : " + entryName + " native-lib skipped"); + if (DEBUG) { + System.err.println("JarUtil: JarEntry : " + entryName + " native-lib skipped"); } continue; } final boolean isClassFile = entryName.endsWith(".class"); if(isClassFile && !extractClassFiles) { - if (VERBOSE) { - System.err.println("JarEntry : " + entryName + " class-file skipped"); + if (DEBUG) { + System.err.println("JarUtil: JarEntry : " + entryName + " class-file skipped"); } continue; } if(!isNativeLib && !isClassFile && !extractOtherFiles) { - if (VERBOSE) { - System.err.println("JarEntry : " + entryName + " other-file skipped"); + if (DEBUG) { + System.err.println("JarUtil: JarEntry : " + entryName + " other-file skipped"); } continue; } @@ -268,8 +267,8 @@ public class JarUtil { final File destFile = new File(dest, entryName); if(isDir) { destFile.mkdir(); - if (VERBOSE) { - System.err.println("MKDIR: " + entryName + " -> " + destFile ); + if (DEBUG) { + System.err.println("JarUtil: MKDIR: " + entryName + " -> " + destFile ); } } else { final InputStream in = new BufferedInputStream(jarFile.getInputStream(entry)); @@ -289,8 +288,8 @@ public class JarUtil { addedAsNativeLib = true; } } - if (VERBOSE) { - System.err.println("EXTRACT["+num+"]: [" + libBaseName + " -> ] " + entryName + " -> " + destFile + ": "+numBytes+" bytes, addedAsNativeLib: "+addedAsNativeLib); + if (DEBUG) { + System.err.println("JarUtil: EXTRACT["+num+"]: [" + libBaseName + " -> ] " + entryName + " -> " + destFile + ": "+numBytes+" bytes, addedAsNativeLib: "+addedAsNativeLib); } } } @@ -308,8 +307,8 @@ public class JarUtil { public static final void validateCertificates(Certificate[] rootCerts, JarFile jarFile) throws IOException, SecurityException { - if (VERBOSE) { - System.err.println("validateCertificates: "+jarFile.getName()); + if (DEBUG) { + System.err.println("JarUtil: validateCertificates: "+jarFile.getName()); } if (rootCerts == null || rootCerts.length == 0) { @@ -319,7 +318,11 @@ public class JarUtil { byte[] buf = new byte[1024]; Enumeration<JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { - validateCertificate(rootCerts, jarFile, entries.nextElement(), buf); + final JarEntry entry = entries.nextElement(); + if( ! entry.isDirectory() && ! entry.getName().startsWith("META-INF/") ) { + // only validate non META-INF and non directories + validateCertificate(rootCerts, jarFile, entry, buf); + } } } @@ -330,8 +333,8 @@ public class JarUtil { private static final void validateCertificate(Certificate[] rootCerts, JarFile jar, JarEntry entry, byte[] buf) throws IOException, SecurityException { - if (VERBOSE) { - System.err.println("Validate JarEntry : " + entry.getName()); + if (DEBUG) { + System.err.println("JarUtil: validate JarEntry : " + entry.getName()); } // API states that we must read all of the data from the entry's diff --git a/src/java/com/jogamp/common/util/cache/TempFileCache.java b/src/java/com/jogamp/common/util/cache/TempFileCache.java index ef5a2a2..a4cb2f4 100644 --- a/src/java/com/jogamp/common/util/cache/TempFileCache.java +++ b/src/java/com/jogamp/common/util/cache/TempFileCache.java @@ -33,12 +33,11 @@ import java.io.FilenameFilter; import java.io.IOException; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; -import java.security.AccessController; import jogamp.common.Debug; public class TempFileCache { - private static final boolean VERBOSE = Debug.isPropertyDefined("jogamp.debug.TempFileCache", true, AccessController.getContext()); + private static final boolean DEBUG = Debug.debug("TempFileCache"); // Lifecycle: For all JVMs, ClassLoader and times. private static final String tmpDirPrefix = "jogamp.tmp.cache"; @@ -136,9 +135,9 @@ public class TempFileCache { * 6. Start the Reaper thread to cleanup old installations. */ private static void initTmpRoot() throws IOException { - if (VERBOSE) { - System.err.println("TempFileCache Static Initialization ----------------------------------------------"); - System.err.println("Thread: "+Thread.currentThread().getName()+", CL 0x"+Integer.toHexString(TempFileCache.class.getClassLoader().hashCode())); + if (DEBUG) { + System.err.println("TempFileCache: Static Initialization ----------------------------------------------"); + System.err.println("TempFileCache: Thread: "+Thread.currentThread().getName()+", CL 0x"+Integer.toHexString(TempFileCache.class.getClassLoader().hashCode())); } synchronized (System.out) { @@ -158,8 +157,8 @@ public class TempFileCache { // Create ${tmpbase}/jlnNNNN.tmp then lock the file File tmpFile = File.createTempFile("jln", ".tmp", tmpBaseDir); - if (VERBOSE) { - System.err.println("tmpFile = " + tmpFile.getAbsolutePath()); + if (DEBUG) { + System.err.println("TempFileCache: tmpFile = " + tmpFile.getAbsolutePath()); } final FileOutputStream tmpOut = new FileOutputStream(tmpFile); final FileChannel tmpChannel = tmpOut.getChannel(); @@ -172,8 +171,8 @@ public class TempFileCache { // create ${tmpbase}/jlnNNNN.lck then lock the file String lckFileName = tmpRootName + ".lck"; File lckFile = new File(lckFileName); - if (VERBOSE) { - System.err.println("lckFile = " + lckFile.getAbsolutePath()); + if (DEBUG) { + System.err.println("TempFileCache: lckFile = " + lckFile.getAbsolutePath()); } lckFile.createNewFile(); final FileOutputStream lckOut = new FileOutputStream(lckFile); @@ -182,8 +181,8 @@ public class TempFileCache { // Create tmprootdir tmpRootDir = new File(tmpRootName); - if (VERBOSE) { - System.err.println("tmpRootDir = " + tmpRootDir.getAbsolutePath()); + if (DEBUG) { + System.err.println("TempFileCache: tmpRootDir = " + tmpRootDir.getAbsolutePath()); } if (!tmpRootDir.mkdir()) { throw new IOException("Cannot create " + tmpRootDir); @@ -213,8 +212,8 @@ public class TempFileCache { // Set the system property... tmpRootPropValue = tmpRootName.substring(tmpRootName.lastIndexOf(File.separator) + 1); System.setProperty(tmpRootPropName, tmpRootPropValue); - if (VERBOSE) { - System.err.println("Setting " + tmpRootPropName + "=" + tmpRootPropValue); + if (DEBUG) { + System.err.println("TempFileCache: Setting " + tmpRootPropName + "=" + tmpRootPropValue); } // Start a new Reaper thread to do stuff... @@ -234,20 +233,20 @@ public class TempFileCache { } // Set tmpRootDir = ${tmpbase}/${jnlp.applet.launcher.tmproot} - if (VERBOSE) { - System.err.println("Using existing value of: " + + if (DEBUG) { + System.err.println("TempFileCache: Using existing value of: " + tmpRootPropName + "=" + tmpRootPropValue); } tmpRootDir = new File(tmpBaseDir, tmpRootPropValue); - if (VERBOSE) { - System.err.println("tmpRootDir = " + tmpRootDir.getAbsolutePath()); + if (DEBUG) { + System.err.println("TempFileCache: tmpRootDir = " + tmpRootDir.getAbsolutePath()); } if (!tmpRootDir.isDirectory()) { throw new IOException("Cannot access " + tmpRootDir); } } } - if (VERBOSE) { + if (DEBUG) { System.err.println("------------------------------------------------------------------ (static ok: "+(!staticInitError)+")"); } } @@ -257,8 +256,8 @@ public class TempFileCache { * Only one of these threads will run per JVM invocation. */ private static void deleteOldTempDirs() { - if (VERBOSE) { - System.err.println("*** Reaper: deleteOldTempDirs in " + + if (DEBUG) { + System.err.println("TempFileCache: *** Reaper: deleteOldTempDirs in " + tmpBaseDir.getAbsolutePath()); } @@ -298,7 +297,7 @@ public class TempFileCache { tmpLock = tmpChannel.tryLock(); } catch (Exception ex) { // Ignore exceptions - if (VERBOSE) { + if (DEBUG) { ex.printStackTrace(); } } @@ -313,7 +312,7 @@ public class TempFileCache { lckChannel = lckOut.getChannel(); lckLock = lckChannel.tryLock(); } catch (Exception ex) { - if (VERBOSE) { + if (DEBUG) { ex.printStackTrace(); } } @@ -351,15 +350,15 @@ public class TempFileCache { tmpOut.close(); tmpLock.release(); } catch (IOException ex) { - if (VERBOSE) { + if (DEBUG) { ex.printStackTrace(); } } } } } else { - if (VERBOSE) { - System.err.println(" Skipping: " + tmpDir.getAbsolutePath()); + if (DEBUG) { + System.err.println("TempFileCache: Skipping: " + tmpDir.getAbsolutePath()); } } } @@ -371,8 +370,8 @@ public class TempFileCache { * recursively remove all entries, then remove the directory itself. */ private static void removeAll(File path) { - if (VERBOSE) { - System.err.println("removeAll(" + path + ")"); + if (DEBUG) { + System.err.println("TempFileCache: removeAll(" + path + ")"); } if (path.isDirectory()) { @@ -389,9 +388,9 @@ public class TempFileCache { } public TempFileCache () { - if (VERBOSE) { - System.err.println("new TempFileCache() --------------------- (static ok: "+(!staticInitError)+")"); - System.err.println("Thread: "+Thread.currentThread().getName()+", CL 0x"+Integer.toHexString(TempFileCache.class.getClassLoader().hashCode())+", this 0x"+Integer.toHexString(hashCode())); + if (DEBUG) { + System.err.println("TempFileCache: new TempFileCache() --------------------- (static ok: "+(!staticInitError)+")"); + System.err.println("TempFileCache: Thread: "+Thread.currentThread().getName()+", CL 0x"+Integer.toHexString(TempFileCache.class.getClassLoader().hashCode())+", this 0x"+Integer.toHexString(hashCode())); } if(!staticInitError) { try { @@ -401,7 +400,7 @@ public class TempFileCache { initError = true; } } - if (VERBOSE) { + if (DEBUG) { System.err.println("tempDir: "+individualTmpDir+" (ok: "+(!initError)+")"); System.err.println("----------------------------------------------------------"); } |