ZipFile.getInputStream returns null if entry not found.
authorAnthony Green <green@redhat.com>
Thu, 17 Jun 2004 13:53:11 +0000 (13:53 +0000)
committerAnthony Green <green@gcc.gnu.org>
Thu, 17 Jun 2004 13:53:11 +0000 (13:53 +0000)
From-SVN: r83293

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

index 1ff76e27d72488b96633fbd390d4c5d57e37da59..8c9abb7e12722d109d22dbe7a06ef3a18433ed91 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 50f489fdb5be545df8d484ff5cda3a50bb823544..25b5785432a29f538a5533860d98e46a7a6d64c5 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();