Imported GNU Classpath 0.19 + gcj-import-20051115.
* sources.am: Regenerated. * Makefile.in: Likewise. * scripts/makemake.tcl: Use glob -nocomplain. From-SVN: r107049
This commit is contained in:
parent
02e549bfaa
commit
8f523f3a10
1241 changed files with 97711 additions and 25284 deletions
|
@ -40,6 +40,7 @@ exception statement from your version. */
|
|||
package java.lang;
|
||||
|
||||
import gnu.classpath.SystemProperties;
|
||||
import gnu.classpath.Configuration;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -63,6 +64,48 @@ import java.util.zip.ZipFile;
|
|||
*/
|
||||
final class VMClassLoader
|
||||
{
|
||||
|
||||
|
||||
/** packages loaded by the bootstrap class loader */
|
||||
static final HashMap definedPackages = new HashMap();
|
||||
|
||||
/**
|
||||
* Converts the array string of native package names to
|
||||
* Packages. The packages are then put into the
|
||||
* definedPackages hashMap
|
||||
*/
|
||||
static
|
||||
{
|
||||
String[] packages = getBootPackages();
|
||||
|
||||
if( packages != null)
|
||||
{
|
||||
String specName =
|
||||
SystemProperties.getProperty("java.specification.name");
|
||||
String vendor =
|
||||
SystemProperties.getProperty("java.specification.vendor");
|
||||
String version =
|
||||
SystemProperties.getProperty("java.specification.version");
|
||||
|
||||
Package p;
|
||||
|
||||
for(int i = 0; i < packages.length; i++)
|
||||
{
|
||||
p = new Package(packages[i],
|
||||
specName,
|
||||
vendor,
|
||||
version,
|
||||
"GNU Classpath",
|
||||
"GNU",
|
||||
Configuration.CLASSPATH_VERSION,
|
||||
null);
|
||||
|
||||
definedPackages.put(packages[i], p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper to define a class using a string of bytes. This assumes that
|
||||
* the security checks have already been performed, if necessary.
|
||||
|
@ -119,6 +162,9 @@ final class VMClassLoader
|
|||
return null;
|
||||
}
|
||||
|
||||
/** jars from property java.boot.class.path */
|
||||
static final HashMap bootjars = new HashMap();
|
||||
|
||||
/**
|
||||
* Helper to get a list of resources from the bootstrap class loader.
|
||||
*
|
||||
|
@ -139,8 +185,9 @@ final class VMClassLoader
|
|||
{
|
||||
try
|
||||
{
|
||||
v.add(new URL("file://"
|
||||
+ new File(file, name).getAbsolutePath()));
|
||||
File f = new File(file, name);
|
||||
if (!f.exists()) continue;
|
||||
v.add(new URL("file://" + f.getAbsolutePath()));
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
|
@ -150,30 +197,28 @@ final class VMClassLoader
|
|||
else if (file.isFile())
|
||||
{
|
||||
ZipFile zip;
|
||||
try
|
||||
{
|
||||
zip = new ZipFile(file);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
String zname = name.startsWith("/") ? name.substring(1) : name;
|
||||
try
|
||||
{
|
||||
if (zip.getEntry(zname) == null)
|
||||
synchronized(bootjars)
|
||||
{
|
||||
zip = (ZipFile) bootjars.get(file.getName());
|
||||
}
|
||||
if(zip == null)
|
||||
{
|
||||
try
|
||||
{
|
||||
zip = new ZipFile(file);
|
||||
synchronized(bootjars)
|
||||
{
|
||||
bootjars.put(file.getName(), zip);
|
||||
}
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
zip.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
String zname = name.startsWith("/") ? name.substring(1) : name;
|
||||
if (zip.getEntry(zname) == null)
|
||||
continue;
|
||||
try
|
||||
{
|
||||
v.add(new URL("jar:file://"
|
||||
|
@ -188,29 +233,41 @@ final class VMClassLoader
|
|||
return v.elements();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper to get a package from the bootstrap class loader. The default
|
||||
* implementation of returning null may be adequate, or you may decide
|
||||
* that this needs some native help.
|
||||
* Returns a String[] of native package names. The default
|
||||
* implementation returns an empty array, or you may decide
|
||||
* this needs native help.
|
||||
*/
|
||||
private static String[] getBootPackages()
|
||||
{
|
||||
return new String[0];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper to get a package from the bootstrap class loader.
|
||||
*
|
||||
* @param name the name to find
|
||||
* @return the named package, if it exists
|
||||
*/
|
||||
static Package getPackage(String name)
|
||||
{
|
||||
return null;
|
||||
return (Package)definedPackages.get(name);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Helper to get all packages from the bootstrap class loader. The default
|
||||
* implementation of returning an empty array may be adequate, or you may
|
||||
* decide that this needs some native help.
|
||||
* Helper to get all packages from the bootstrap class loader.
|
||||
*
|
||||
* @return all named packages, if any exist
|
||||
*/
|
||||
static Package[] getPackages()
|
||||
{
|
||||
return new Package[0];
|
||||
Package[] packages = new Package[definedPackages.size()];
|
||||
definedPackages.values().toArray(packages);
|
||||
return packages;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue