OSDN Git Service

ZipFile.getInputStream returns null if entry not found.
authorgreen <green@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Jun 2004 13:53:11 +0000 (13:53 +0000)
committergreen <green@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Jun 2004 13:53:11 +0000 (13:53 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83293 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/util/zip/ZipFile.java

index 1ff76e2..8c9abb7 100644 (file)
@@ -1,5 +1,8 @@
 2004-06-17  Anthony Green  <green@redhat.com>
 
+       * java/util/zip/ZipFile.java (getInputStream): Return null if
+       entry not found.
+
        * gnu/gcj/runtime/VMClassLoader.java (init): Add extension
        directory contents to the class path.
 
index 50f489f..25b5785 100644 (file)
@@ -408,8 +408,18 @@ public class ZipFile implements ZipConstants
    * uncompressed data.  Normally zip entry should be an entry
    * returned by getEntry() or entries().
    *
+   * This implementation returns null if the requested entry does not
+   * exist.  This decision is not obviously correct, however, it does
+   * appear to mirror Sun's implementation, and it is consistant with
+   * their javadoc.  On the other hand, the old JCL book, 2nd Edition,
+   * claims that this should return a "non-null ZIP entry".  We have
+   * chosen for now ignore the old book, as modern versions of Ant (an
+   * important application) depend on this behaviour.  See discussion
+   * in this thread:
+   * http://gcc.gnu.org/ml/java-patches/2004-q2/msg00602.html
+   *
    * @param entry the entry to create an InputStream for.
-   * @return the input stream.
+   * @return the input stream, or null if the requested entry does not exist.
    *
    * @exception IOException if a i/o error occured.
    * @exception ZipException if the Zip archive is malformed.  
@@ -420,7 +430,7 @@ public class ZipFile implements ZipConstants
     String name = entry.getName();
     ZipEntry zipEntry = (ZipEntry) entries.get(name);
     if (zipEntry == null)
-      throw new NoSuchElementException(name);
+      return null;
 
     long start = checkLocalHeader(zipEntry);
     int method = zipEntry.getMethod();