com.jogamp.common.util.cache
Class TempJarCache

java.lang.Object
  extended by com.jogamp.common.util.cache.TempJarCache

public class TempJarCache
extends Object


Nested Class Summary
static class TempJarCache.LoadState
           
 
Constructor Summary
TempJarCache()
           
 
Method Summary
static void addAll(Class<?> certClass, URI jarURI)
          Adds all types, native libraries, class files and other files (resources) if not yet added.
static void addClasses(Class<?> certClass, URI jarURI)
          Adds native classes, if not yet added.
static void addNativeLibs(Class<?> certClass, URI jarURI)
          Adds native libraries, if not yet added.
static void addResources(Class<?> certClass, URI jarURI)
          Adds native resources, if not yet added.
static void bootstrapNativeLib(Class<?> certClass, String libBaseName, URI jarURI)
          Bootstrapping version extracting the JAR files root entry containing libBaseName, assuming it's a native library.
static boolean checkClasses(URI jarURI, TempJarCache.LoadState exp)
           
static boolean checkNativeLibs(URI jarURI, TempJarCache.LoadState exp)
           
static boolean checkResources(URI jarURI, TempJarCache.LoadState exp)
           
static String findLibrary(String libName)
           
static String findResource(String name)
          TODO class access pending needs Classloader.defineClass(..) access, ie.
static URI getResource(String name)
           
static TempFileCache getTempFileCache()
           
static boolean initSingleton()
          Documented way to kick off static initialization.
static boolean isInitialized()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TempJarCache

public TempJarCache()
Method Detail

initSingleton

public static boolean initSingleton()
Documented way to kick off static initialization.

Returns:
true is static initialization was successful

isInitialized

public static boolean isInitialized()
Returns:
true if this class has been properly initialized, ie. is in use, otherwise false.

getTempFileCache

public static TempFileCache getTempFileCache()

checkNativeLibs

public static boolean checkNativeLibs(URI jarURI,
                                      TempJarCache.LoadState exp)
                               throws IOException
Throws:
IOException

checkClasses

public static boolean checkClasses(URI jarURI,
                                   TempJarCache.LoadState exp)
                            throws IOException
Throws:
IOException

checkResources

public static boolean checkResources(URI jarURI,
                                     TempJarCache.LoadState exp)
                              throws IOException
Throws:
IOException

addNativeLibs

public static final void addNativeLibs(Class<?> certClass,
                                       URI jarURI)
                                throws IOException,
                                       SecurityException,
                                       IllegalArgumentException,
                                       URISyntaxException
Adds native libraries, if not yet added.

Parameters:
certClass - if class is certified, the JarFile entries needs to have the same certificate
jarURI -
Throws:
IOException - if the jarURI could not be loaded or a previous load attempt failed
SecurityException
URISyntaxException
IllegalArgumentException

addClasses

public static final void addClasses(Class<?> certClass,
                                    URI jarURI)
                             throws IOException,
                                    SecurityException,
                                    IllegalArgumentException,
                                    URISyntaxException
Adds native classes, if not yet added. TODO class access pending needs Classloader.defineClass(..) access, ie. own derivation - will do when needed ..

Parameters:
certClass - if class is certified, the JarFile entries needs to have the same certificate
jarURI -
Throws:
IOException - if the jarURI could not be loaded or a previous load attempt failed
SecurityException
URISyntaxException
IllegalArgumentException

addResources

public static final void addResources(Class<?> certClass,
                                      URI jarURI)
                               throws IOException,
                                      SecurityException,
                                      IllegalArgumentException,
                                      URISyntaxException
Adds native resources, if not yet added.

Parameters:
certClass - if class is certified, the JarFile entries needs to have the same certificate
jarURI -
Throws:
IOException - if the jarURI could not be loaded or a previous load attempt failed
SecurityException
URISyntaxException
IllegalArgumentException

addAll

public static final void addAll(Class<?> certClass,
                                URI jarURI)
                         throws IOException,
                                SecurityException,
                                IllegalArgumentException,
                                URISyntaxException
Adds all types, native libraries, class files and other files (resources) if not yet added. TODO class access pending needs Classloader.defineClass(..) access, ie. own derivation - will do when needed ..

Parameters:
certClass - if class is certified, the JarFile entries needs to have the same certificate
jarURI -
Throws:
IOException - if the jarURI could not be loaded or a previous load attempt failed
SecurityException
URISyntaxException
IllegalArgumentException

findLibrary

public static final String findLibrary(String libName)

findResource

public static final String findResource(String name)
TODO class access pending needs Classloader.defineClass(..) access, ie. own derivation - will do when needed .. public static Class findClass(String name, ClassLoader cl) throws IOException, ClassFormatError { checkInitialized(); final File f = new File(nativeTmpFileCache.getTempDir(), IOUtil.getClassFileName(name)); if(f.exists()) { Class.forName(fname, initialize, loader) URL url = new URL(f.getAbsolutePath()); byte[] b = IOUtil.copyStream2ByteArray(new BufferedInputStream( url.openStream() )); MyClassLoader mcl = new MyClassLoader(cl); return mcl.defineClass(name, b, 0, b.length); } return null; }


getResource

public static final URI getResource(String name)
                             throws URISyntaxException
Throws:
URISyntaxException

bootstrapNativeLib

public static final void bootstrapNativeLib(Class<?> certClass,
                                            String libBaseName,
                                            URI jarURI)
                                     throws IOException,
                                            SecurityException,
                                            IllegalArgumentException,
                                            URISyntaxException
Bootstrapping version extracting the JAR files root entry containing libBaseName, assuming it's a native library. This is used to get the 'gluegen-rt' native library, hence bootstrapping.

Parameters:
certClass - if class is certified, the JarFile entries needs to have the same certificate
Throws:
IOException
SecurityException
URISyntaxException
IllegalArgumentException