Commit f2e541ce by Anthony Green Committed by Anthony Green

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
parent 1175b9b4
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.
2000-08-19 Tom Tromey <tromey@cygnus.com> 2000-08-19 Tom Tromey <tromey@cygnus.com>
* java/util/zip/ZipInputStream.java (createZipEntry): * java/util/zip/ZipInputStream.java (createZipEntry):
......
/* Copyright (C) 1999 Free Software Foundation /* Copyright (C) 1999, 2000 Free Software Foundation
This file is part of libgcj. This file is part of libgcj.
...@@ -31,7 +31,7 @@ help () ...@@ -31,7 +31,7 @@ help ()
printf (" --ms=NUMBER set initial heap size\n"); printf (" --ms=NUMBER set initial heap size\n");
printf (" --mx=NUMBER set maximum heap size\n"); printf (" --mx=NUMBER set maximum heap size\n");
printf (" --version print version number, then exit\n"); printf (" --version print version number, then exit\n");
printf ("\nSee http://sourceware.cygnus.com/java/ for information on reporting bugs\n"); printf ("\nSee http://sources.redhat.com/java/ for information on reporting bugs\n");
exit (0); exit (0);
} }
...@@ -39,7 +39,7 @@ static void ...@@ -39,7 +39,7 @@ static void
version () version ()
{ {
printf ("gij (GNU libgcj) version %s\n\n", VERSION); printf ("gij (GNU libgcj) version %s\n\n", VERSION);
printf ("Copyright (C) 1999 Free Software Foundation.\n"); printf ("Copyright (C) 1999, 2000 Free Software Foundation.\n");
printf ("This is free software; see the source for copying conditions. There is NO\n"); printf ("This is free software; see the source for copying conditions. There is NO\n");
printf ("warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"); printf ("warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n");
exit (0); exit (0);
......
/* Copyright (C) 1999 Free Software Foundation /* Copyright (C) 1999, 2000 Free Software Foundation
This file is part of libgcj. This file is part of libgcj.
...@@ -148,11 +148,13 @@ public abstract class JarURLConnection extends URLConnection ...@@ -148,11 +148,13 @@ public abstract class JarURLConnection extends URLConnection
return null; return null;
} }
public JarEntry getJarEntry (String name) public JarEntry getJarEntry () throws java.io.IOException
throws java.io.IOException
{ {
JarFile jarfile = null; JarFile jarfile = null;
if (element == null)
return null;
if (! doInput) if (! doInput)
throw new ProtocolException("Can't open JarEntry if doInput is false"); throw new ProtocolException("Can't open JarEntry if doInput is false");
...@@ -286,7 +288,7 @@ public abstract class JarURLConnection extends URLConnection ...@@ -286,7 +288,7 @@ public abstract class JarURLConnection extends URLConnection
if (element == null) if (element == null)
len = jarFileURLConnection.getContentLength (); len = jarFileURLConnection.getContentLength ();
else else
len = getJarEntry (element).getSize (); len = getJarEntry ().getSize ();
String line = "Content-length: " + len; String line = "Content-length: " + len;
hdrVec.addElement(line); hdrVec.addElement(line);
......
/* Copyright (C) 1999 Free Software Foundation /* Copyright (C) 1999, 2000 Free Software Foundation
This file is part of libgcj. This file is part of libgcj.
...@@ -20,8 +20,8 @@ public class URLClassLoader extends ClassLoader ...@@ -20,8 +20,8 @@ public class URLClassLoader extends ClassLoader
// `path' contains simply the URL's we're using for the searching. // `path' contains simply the URL's we're using for the searching.
private Vector path; private Vector path;
// If path[n] is a zip/jar, then this holds a JarURLConnection for that thing, // If path[n] is a zip/jar, then this holds a JarURLConnection for
// otherwise, path[n] is null. // that thing, otherwise, path[n] is null.
private Vector info; private Vector info;
private URLStreamHandler getHandler0 (String protocol) private URLStreamHandler getHandler0 (String protocol)
...@@ -115,10 +115,10 @@ public class URLClassLoader extends ClassLoader ...@@ -115,10 +115,10 @@ public class URLClassLoader extends ClassLoader
try { try {
JarURLConnection conn = (JarURLConnection) info.elementAt (i); JarURLConnection conn = (JarURLConnection) info.elementAt (i);
if (conn != null) if (conn != null)
{ {
if (conn.getJarEntry (name) != null) if (conn.getJarFile().getJarEntry (name) != null)
return new URL(u, name, getHandler0 (u.getProtocol())); return new URL(u, name, getHandler0 (u.getProtocol()));
} }
else else
...@@ -187,15 +187,15 @@ public class URLClassLoader extends ClassLoader ...@@ -187,15 +187,15 @@ public class URLClassLoader extends ClassLoader
try try
{ {
InputStream is = getResourceAsStream (name.replace ('.', '/') + ".class"); URL u = getResource (name.replace ('.', '/') + ".class");
if (is == null) if (u == null)
throw new ClassNotFoundException (name); throw new ClassNotFoundException (name);
// Here we have to rely on available() to provide the length of URLConnection connection = u.openConnection ();
// the class; which might not be exactly right in some cases... InputStream is = connection.getInputStream ();
int len = is.available (); int len = connection.getContentLength ();
byte[] data = new byte[len]; byte[] data = new byte[len];
int left = len; int left = len;
...@@ -216,6 +216,5 @@ public class URLClassLoader extends ClassLoader ...@@ -216,6 +216,5 @@ public class URLClassLoader extends ClassLoader
throw new ClassNotFoundException(name); throw new ClassNotFoundException(name);
} }
} }
} }
...@@ -232,7 +232,7 @@ public class JarFile extends ZipFile { ...@@ -232,7 +232,7 @@ public class JarFile extends ZipFile {
public ZipEntry getEntry(String name) { public ZipEntry getEntry(String name) {
ZipEntry entry = super.getEntry(name); ZipEntry entry = super.getEntry(name);
if (entry != null) { if (entry != null) {
JarEntry jarEntry = new JarEntry(getEntry(name)); JarEntry jarEntry = new JarEntry(super.getEntry(name));
if (manifest != null) { if (manifest != null) {
jarEntry.attr = manifest.getAttributes(name); jarEntry.attr = manifest.getAttributes(name);
// XXX jarEntry.certs // XXX jarEntry.certs
......
...@@ -121,7 +121,7 @@ public class ZipFile implements ZipConstants ...@@ -121,7 +121,7 @@ public class ZipFile implements ZipConstants
public InputStream getInputStream(ZipEntry ze) throws IOException 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 /* Read the size of the extra field, and skip to the start of the
data. */ data. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment