URLClassLoader.java: Find the JarEntry via the JarFile.
Sun Aug 20 09:51:48 2000 Anthony Green <green@redhat.com> * java/net/URLClassLoader.java: Find the JarEntry via the JarFile. * java/net/JarURLConnection.java: getEntry doesn't take any arguments. Return null if element is null. * java/util/zip/ZipFile.java (getInputStream): Read the compressed size from the archive, not the inflated size. * java/util/jar/JarFile.java (getEntry): Don't recurse. Call java.util.zip.ZipFile.getEntry. * gij.cc (help): Change sourceware reference to sources.redhat.com. From-SVN: r35821
This commit is contained in:
parent
1175b9b4c5
commit
f2e541ce26
6 changed files with 40 additions and 23 deletions
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 1999 Free Software Foundation
|
||||
/* Copyright (C) 1999, 2000 Free Software Foundation
|
||||
|
||||
This file is part of libgcj.
|
||||
|
||||
|
@ -148,11 +148,13 @@ public abstract class JarURLConnection extends URLConnection
|
|||
return null;
|
||||
}
|
||||
|
||||
public JarEntry getJarEntry (String name)
|
||||
throws java.io.IOException
|
||||
public JarEntry getJarEntry () throws java.io.IOException
|
||||
{
|
||||
JarFile jarfile = null;
|
||||
|
||||
if (element == null)
|
||||
return null;
|
||||
|
||||
if (! doInput)
|
||||
throw new ProtocolException("Can't open JarEntry if doInput is false");
|
||||
|
||||
|
@ -286,7 +288,7 @@ public abstract class JarURLConnection extends URLConnection
|
|||
if (element == null)
|
||||
len = jarFileURLConnection.getContentLength ();
|
||||
else
|
||||
len = getJarEntry (element).getSize ();
|
||||
len = getJarEntry ().getSize ();
|
||||
|
||||
String line = "Content-length: " + len;
|
||||
hdrVec.addElement(line);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 1999 Free Software Foundation
|
||||
/* Copyright (C) 1999, 2000 Free Software Foundation
|
||||
|
||||
This file is part of libgcj.
|
||||
|
||||
|
@ -20,8 +20,8 @@ public class URLClassLoader extends ClassLoader
|
|||
// `path' contains simply the URL's we're using for the searching.
|
||||
private Vector path;
|
||||
|
||||
// If path[n] is a zip/jar, then this holds a JarURLConnection for that thing,
|
||||
// otherwise, path[n] is null.
|
||||
// If path[n] is a zip/jar, then this holds a JarURLConnection for
|
||||
// that thing, otherwise, path[n] is null.
|
||||
private Vector info;
|
||||
|
||||
private URLStreamHandler getHandler0 (String protocol)
|
||||
|
@ -115,10 +115,10 @@ public class URLClassLoader extends ClassLoader
|
|||
|
||||
try {
|
||||
JarURLConnection conn = (JarURLConnection) info.elementAt (i);
|
||||
|
||||
|
||||
if (conn != null)
|
||||
{
|
||||
if (conn.getJarEntry (name) != null)
|
||||
if (conn.getJarFile().getJarEntry (name) != null)
|
||||
return new URL(u, name, getHandler0 (u.getProtocol()));
|
||||
}
|
||||
else
|
||||
|
@ -187,15 +187,15 @@ public class URLClassLoader extends ClassLoader
|
|||
|
||||
try
|
||||
{
|
||||
InputStream is = getResourceAsStream (name.replace ('.', '/') + ".class");
|
||||
|
||||
if (is == null)
|
||||
URL u = getResource (name.replace ('.', '/') + ".class");
|
||||
|
||||
if (u == null)
|
||||
throw new ClassNotFoundException (name);
|
||||
|
||||
// Here we have to rely on available() to provide the length of
|
||||
// the class; which might not be exactly right in some cases...
|
||||
|
||||
int len = is.available ();
|
||||
|
||||
URLConnection connection = u.openConnection ();
|
||||
InputStream is = connection.getInputStream ();
|
||||
|
||||
int len = connection.getContentLength ();
|
||||
byte[] data = new byte[len];
|
||||
|
||||
int left = len;
|
||||
|
@ -216,6 +216,5 @@ public class URLClassLoader extends ClassLoader
|
|||
throw new ClassNotFoundException(name);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -232,7 +232,7 @@ public class JarFile extends ZipFile {
|
|||
public ZipEntry getEntry(String name) {
|
||||
ZipEntry entry = super.getEntry(name);
|
||||
if (entry != null) {
|
||||
JarEntry jarEntry = new JarEntry(getEntry(name));
|
||||
JarEntry jarEntry = new JarEntry(super.getEntry(name));
|
||||
if (manifest != null) {
|
||||
jarEntry.attr = manifest.getAttributes(name);
|
||||
// XXX jarEntry.certs
|
||||
|
|
|
@ -121,7 +121,7 @@ public class ZipFile implements ZipConstants
|
|||
|
||||
public InputStream getInputStream(ZipEntry ze) throws IOException
|
||||
{
|
||||
byte[] buffer = new byte[(int) ze.getSize()];
|
||||
byte[] buffer = new byte[(int) ze.getCompressedSize()];
|
||||
|
||||
/* Read the size of the extra field, and skip to the start of the
|
||||
data. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue