|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.jogamp.common.util.JarUtil
public class JarUtil
Nested Class Summary | |
---|---|
static interface |
JarUtil.Resolver
Interface allowing users to provide an URL resolver that will convert custom classloader URLs like Eclipse/OSGi bundleresource: URLs to normal jar: URLs. |
Constructor Summary | |
---|---|
JarUtil()
|
Method Summary | |
---|---|
static int |
extract(File dest,
Map<String,String> nativeLibMap,
JarFile jarFile,
boolean extractNativeLibraries,
boolean extractClassFiles,
boolean extractOtherFiles)
Extract the files of the given jar file. |
static String |
getJarBasename(String clazzBinName,
ClassLoader cl)
The Class's com.jogamp.common.GlueGenVersion
URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
Jar basename gluegen-rt.jar will be returned. |
static String |
getJarBasename(URI classJarURI)
The Class's Jar URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
Jar basename gluegen-rt.jar will be returned. |
static String |
getJarEntry(URI classJarURI)
The Class's Jar URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
Jar file's entry /com/jogamp/common/GlueGenVersion.class will be returned. |
static URI |
getJarEntryURI(URI jarFileURI,
String jarEntry)
|
static JarFile |
getJarFile(String clazzBinName,
ClassLoader cl)
|
static JarFile |
getJarFile(URI jarFileURI)
|
static URI |
getJarFileURI(String clazzBinName,
ClassLoader cl)
The Class's "com.jogamp.common.GlueGenVersion"
URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class"
Jar file URI jar:sub_protocol:/some/path/gluegen-rt.jar!/ will be returned. |
static URI |
getJarFileURI(URI jarSubUri)
|
static URI |
getJarFileURI(URI baseUri,
String jarFileName)
|
static URI |
getJarSubURI(String clazzBinName,
ClassLoader cl)
The Class's com.jogamp.common.GlueGenVersion
URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
Jar file's sub URI sub_protocol:/some/path/gluegen-rt.jar will be returned. |
static URI |
getJarSubURI(URI classJarURI)
The Class's Jar URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
Jar file's sub URI sub_protocol:/some/path/gluegen-rt.jar will be returned. |
static URI |
getJarURI(String clazzBinName,
ClassLoader cl)
The Class's "com.jogamp.common.GlueGenVersion"
URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class"
will be returned. |
static Map<String,String> |
getNativeLibNames(JarFile jarFile)
Return a map from native-lib-base-name to entry-name. |
static boolean |
hasJarURI(String clazzBinName,
ClassLoader cl)
Returns true if the Class's "com.jogamp.common.GlueGenVersion"
is loaded from a JarFile and hence has a Jar URI like
URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class" . |
static void |
setResolver(JarUtil.Resolver r)
Setting a custom JarUtil.Resolver instance. |
static void |
validateCertificates(Certificate[] rootCerts,
JarFile jarFile)
Validate the certificates for each native Lib in the jar file. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public JarUtil()
Method Detail |
---|
public static void setResolver(JarUtil.Resolver r) throws IllegalArgumentException, IllegalStateException, SecurityException
JarUtil.Resolver
instance.
r
- JarUtil.Resolver
to use after querying class file URLs from the classloader.
IllegalArgumentException
- if the passed resolver is null
IllegalStateException
- if the resolver has already been set.
SecurityException
- if the security manager doesn't have the setFactory
permissionpublic static boolean hasJarURI(String clazzBinName, ClassLoader cl)
true
if the Class's "com.jogamp.common.GlueGenVersion"
is loaded from a JarFile and hence has a Jar URI like
URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class"
.
sub_protocol may be "file", "http", etc..
clazzBinName
- "com.jogamp.common.GlueGenVersion"cl
-
#getJarURI(String, ClassLoader)}
public static URI getJarURI(String clazzBinName, ClassLoader cl) throws IllegalArgumentException, IOException, URISyntaxException
"com.jogamp.common.GlueGenVersion"
URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class"
will be returned.
sub_protocol may be "file", "http", etc..
clazzBinName
- "com.jogamp.common.GlueGenVersion"cl
- ClassLoader to locate the JarFile
IllegalArgumentException
- if the URI doesn't match the expected formatting or null arguments
IOException
- if the class's Jar file could not been found by the ClassLoader
URISyntaxException
- if the URI could not be translated into a RFC 2396 URIIOUtil#getClassURL(String, ClassLoader)}
public static String getJarBasename(URI classJarURI) throws IllegalArgumentException
jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
Jar basename gluegen-rt.jar
will be returned.
sub_protocol may be "file", "http", etc..
classJarURI
- as retrieved w/ getJarURI("com.jogamp.common.GlueGenVersion", cl).toURI()
,
i.e. jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
gluegen-rt.jar
IllegalArgumentException
- if the URI doesn't match the expected formatting or is nullIOUtil#getClassURL(String, ClassLoader)}
public static String getJarBasename(String clazzBinName, ClassLoader cl) throws IllegalArgumentException, IOException, URISyntaxException
com.jogamp.common.GlueGenVersion
URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
Jar basename gluegen-rt.jar
will be returned.
sub_protocol may be "file", "http", etc..
clazzBinName
- com.jogamp.common.GlueGenVersion
cl
-
gluegen-rt.jar
IllegalArgumentException
- if the URI doesn't match the expected formatting
IOException
- if the class's Jar file could not been found by the ClassLoader.
URISyntaxException
- if the URI could not be translated into a RFC 2396 URIIOUtil#getClassURL(String, ClassLoader)}
public static URI getJarSubURI(URI classJarURI) throws IllegalArgumentException, URISyntaxException
jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
Jar file's sub URI sub_protocol:/some/path/gluegen-rt.jar
will be returned.
sub_protocol may be "file", "http", etc..
classJarURI
- as retrieved w/ getJarURI("com.jogamp.common.GlueGenVersion", cl).toURI()
,
i.e. jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
sub_protocol:/some/path/gluegen-rt.jar
IllegalArgumentException
- if the URI doesn't match the expected formatting or is null
URISyntaxException
- if the URI could not be translated into a RFC 2396 URIIOUtil#getClassURL(String, ClassLoader)}
public static String getJarEntry(URI classJarURI)
jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
Jar file's entry /com/jogamp/common/GlueGenVersion.class
will be returned.
classJarURI
- as retrieved w/ getJarURI("com.jogamp.common.GlueGenVersion", cl).toURI()
,
i.e. jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
/com/jogamp/common/GlueGenVersion.class
IOUtil#getClassURL(String, ClassLoader)}
public static URI getJarSubURI(String clazzBinName, ClassLoader cl) throws IllegalArgumentException, IOException, URISyntaxException
com.jogamp.common.GlueGenVersion
URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class
Jar file's sub URI sub_protocol:/some/path/gluegen-rt.jar
will be returned.
sub_protocol may be "file", "http", etc..
clazzBinName
- com.jogamp.common.GlueGenVersion
cl
-
sub_protocol:/some/path/gluegen-rt.jar
IllegalArgumentException
- if the URI doesn't match the expected formatting
IOException
- if the class's Jar file could not been found by the ClassLoader
URISyntaxException
- if the URI could not be translated into a RFC 2396 URIIOUtil#getClassURL(String, ClassLoader)}
public static URI getJarFileURI(String clazzBinName, ClassLoader cl) throws IllegalArgumentException, IOException, URISyntaxException
"com.jogamp.common.GlueGenVersion"
URI jar:sub_protocol:/some/path/gluegen-rt.jar!/com/jogamp/common/GlueGenVersion.class"
Jar file URI jar:sub_protocol:/some/path/gluegen-rt.jar!/
will be returned.
sub_protocol may be "file", "http", etc..
clazzBinName
- "com.jogamp.common.GlueGenVersion"cl
-
IllegalArgumentException
- if the URI doesn't match the expected formatting or null arguments
IOException
- if the class's Jar file could not been found by the ClassLoader
URISyntaxException
- if the URI could not be translated into a RFC 2396 URIIOUtil#getClassURL(String, ClassLoader)}
public static URI getJarFileURI(URI baseUri, String jarFileName) throws IllegalArgumentException, URISyntaxException
baseUri
- file:/some/path/jarFileName
- gluegen-rt.jar
URISyntaxException
IllegalArgumentException
- null argumentspublic static URI getJarFileURI(URI jarSubUri) throws IllegalArgumentException, URISyntaxException
jarSubUri
- file:/some/path/gluegen-rt.jar
IllegalArgumentException
- null arguments
URISyntaxException
public static URI getJarEntryURI(URI jarFileURI, String jarEntry) throws IllegalArgumentException, URISyntaxException
jarFileURI
- jar:file:/some/path/gluegen-rt.jar!/jarEntry
- com/jogamp/common/GlueGenVersion.class
IllegalArgumentException
- null arguments
URISyntaxException
public static JarFile getJarFile(String clazzBinName, ClassLoader cl) throws IOException, IllegalArgumentException, URISyntaxException
clazzBinName
- com.jogamp.common.util.cache.TempJarCachecl
- domain
IOException
- if the class's Jar file could not been found by the ClassLoader
IllegalArgumentException
- null arguments
URISyntaxException
- if the URI could not be translated into a RFC 2396 URI#getJarFileURI(String, ClassLoader)}
public static JarFile getJarFile(URI jarFileURI) throws IOException, IllegalArgumentException, URISyntaxException
jarFileURI
- jar:file:/some/path/gluegen-rt.jar!/
IllegalArgumentException
- null arguments
IOException
- if the Jar file could not been found
URISyntaxException
public static Map<String,String> getNativeLibNames(JarFile jarFile)
public static final int extract(File dest, Map<String,String> nativeLibMap, JarFile jarFile, boolean extractNativeLibraries, boolean extractClassFiles, boolean extractOtherFiles) throws IOException
If extractNativeLibraries
is true,
native libraries are added to the given nativeLibMap
with the base name to temp file location.
A file is identified as a native library,
if it's name complies with the running platform's native library naming scheme.
Root entries are favored over non root entries in case of naming collisions.
Example on a Unix like machine:
mylib.jar!/sub1/libsour.so -> sour (mapped, unique name) mylib.jar!/sub1/libsweet.so (dropped, root entry favored) mylib.jar!/libsweet.so -> sweet (mapped, root entry favored) mylib.jar!/sweet.dll -> (dropped, not a unix library name)
In order to be compatible with Java Web Start, we need
to extract all root entries from the jar file.
In this case, set all flags to true extractNativeLibraries
.
extractClassFiles
, extractOtherFiles
.
dest
- nativeLibMap
- jarFile
- deepDirectoryTraversal
- extractNativeLibraries
- extractClassFiles
- extractOtherFiles
-
IOException
public static final void validateCertificates(Certificate[] rootCerts, JarFile jarFile) throws IOException, SecurityException
Certificate[] rootCerts = Something.class.getProtectionDomain(). getCodeSource().getCertificates();
IOException
SecurityException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |