Blame bootstrap-ecj-trywithresources.patch

e797f0b
diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -743,7 +743,9 @@
e797f0b
 
e797f0b
         private void dumpBand() throws IOException {
e797f0b
             assert(optDumpBands);
e797f0b
-            try (PrintStream ps = new PrintStream(getDumpStream(this, ".txt"))) {
e797f0b
+            PrintStream ps = null;
e797f0b
+            try {
e797f0b
+                ps = new PrintStream(getDumpStream(this, ".txt"));
e797f0b
                 String irr = (bandCoding == regularCoding) ? "" : " irregular";
e797f0b
                 ps.print("# length="+length+
e797f0b
                          " size="+outputSize()+
e797f0b
@@ -758,9 +760,19 @@
e797f0b
                 }
e797f0b
                 printArrayTo(ps, values, 0, length);
e797f0b
             }
e797f0b
-            try (OutputStream ds = getDumpStream(this, ".bnd")) {
e797f0b
+            finally {
e797f0b
+                if (ps != null)
e797f0b
+                    ps.close();
e797f0b
+            }
e797f0b
+            OutputStream ds = null;
e797f0b
+            try {
e797f0b
+                ds = getDumpStream(this, ".bnd");
e797f0b
                 bandCoding.writeArrayTo(ds, values, 0, length);
e797f0b
             }
e797f0b
+            finally {
e797f0b
+                if (ds != null)
e797f0b
+                    ds.close();
e797f0b
+            }
e797f0b
         }
e797f0b
 
e797f0b
         /** Disburse one value. */
e797f0b
@@ -829,12 +841,18 @@
e797f0b
 
e797f0b
         private void dumpBand() throws IOException {
e797f0b
             assert(optDumpBands);
e797f0b
-            try (OutputStream ds = getDumpStream(this, ".bnd")) {
e797f0b
+            OutputStream ds = null;
e797f0b
+            try {
e797f0b
+                ds = getDumpStream(this, ".bnd");
e797f0b
                 if (bytesForDump != null)
e797f0b
                     bytesForDump.writeTo(ds);
e797f0b
                 else
e797f0b
                     bytes.writeTo(ds);
e797f0b
             }
e797f0b
+            finally {
e797f0b
+                if (ds != null)
e797f0b
+                    ds.close();
e797f0b
+            }
e797f0b
         }
e797f0b
 
e797f0b
         public void readDataFrom(InputStream in) throws IOException {
e797f0b
diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/Driver.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -151,8 +151,13 @@
e797f0b
                 if ("--config-file=".equals(state)) {
e797f0b
                     String propFile = av.remove(0);
e797f0b
                     Properties fileProps = new Properties();
e797f0b
-                    try (InputStream propIn = new FileInputStream(propFile)) {
e797f0b
+                    InputStream propIn = null;
e797f0b
+                    try {
e797f0b
+                        propIn = new FileInputStream(propFile);
e797f0b
                         fileProps.load(propIn);
e797f0b
+                    } finally {
e797f0b
+                        if (propIn != null)
e797f0b
+                            propIn.close();
e797f0b
                     }
e797f0b
                     if (engProps.get(verboseProp) != null)
e797f0b
                         fileProps.list(System.out);
e797f0b
@@ -348,9 +353,14 @@
e797f0b
                 else
e797f0b
                     fileOut = new FileOutputStream(outfile);
e797f0b
                 fileOut = new BufferedOutputStream(fileOut);
e797f0b
-                try (JarOutputStream out = new JarOutputStream(fileOut)) {
e797f0b
+                JarOutputStream out = null;
e797f0b
+                try {
e797f0b
+                    out = new JarOutputStream(fileOut);
e797f0b
                     junpack.unpack(in, out);
e797f0b
                     // p200 closes in but not out
e797f0b
+                } finally {
e797f0b
+                    if (out != null)
e797f0b
+                        out.close();
e797f0b
                 }
e797f0b
                 // At this point, we have a good jarfile (or newfile, if -r)
e797f0b
             }
e797f0b
@@ -411,7 +421,9 @@
e797f0b
         long filelen = new File(jarfile).length();
e797f0b
         if (filelen <= 0)  return "";
e797f0b
         long skiplen = Math.max(0, filelen - tail.length);
e797f0b
-        try (InputStream in = new FileInputStream(new File(jarfile))) {
e797f0b
+        InputStream in = null;
e797f0b
+        try {
e797f0b
+            in = new FileInputStream(new File(jarfile));
e797f0b
             in.skip(skiplen);
e797f0b
             in.read(tail);
e797f0b
             for (int i = tail.length-4; i >= 0; i--) {
e797f0b
@@ -425,6 +437,9 @@
e797f0b
                 }
e797f0b
             }
e797f0b
             return "";
e797f0b
+        } finally {
e797f0b
+            if (in != null)
e797f0b
+                in.close();
e797f0b
         }
e797f0b
     }
e797f0b
 
e797f0b
diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -241,9 +241,15 @@
e797f0b
     void run(File inFile, JarOutputStream jstream) throws IOException {
e797f0b
         // %%% maybe memory-map the file, and pass it straight into unpacker
e797f0b
         ByteBuffer mappedFile = null;
e797f0b
-        try (FileInputStream fis = new FileInputStream(inFile)) {
e797f0b
+        FileInputStream fis = null;
e797f0b
+        try {
e797f0b
+            fis = new FileInputStream(inFile);
e797f0b
             run(fis, jstream, mappedFile);
e797f0b
         }
e797f0b
+        finally {
e797f0b
+            if (fis != null)
e797f0b
+                fis.close();
e797f0b
+        }
e797f0b
         // Note:  caller is responsible to finish with jstream.
e797f0b
     }
e797f0b
 
e797f0b
diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -540,9 +540,15 @@
e797f0b
             Index index = initCPIndex(tag, cpMap);
e797f0b
 
e797f0b
             if (optDumpBands) {
e797f0b
-                try (PrintStream ps = new PrintStream(getDumpStream(index, ".idx"))) {
e797f0b
+                PrintStream ps = null;
e797f0b
+                try {
e797f0b
+                    ps = new PrintStream(getDumpStream(index, ".idx"));
e797f0b
                     printArrayTo(ps, index.cpMap, 0, index.cpMap.length);
e797f0b
                 }
e797f0b
+                finally {
e797f0b
+                    if (ps != null)
e797f0b
+                        ps.close();
e797f0b
+                }
e797f0b
             }
e797f0b
         }
e797f0b
 
e797f0b
@@ -828,9 +834,10 @@
e797f0b
         attr_definition_headers.readFrom(in);
e797f0b
         attr_definition_name.readFrom(in);
e797f0b
         attr_definition_layout.readFrom(in);
e797f0b
-        try (PrintStream dump = !optDumpBands ? null
e797f0b
-                 : new PrintStream(getDumpStream(attr_definition_headers, ".def")))
e797f0b
-        {
e797f0b
+        PrintStream dump = null;
e797f0b
+        try {
e797f0b
+            dump = !optDumpBands ? null
e797f0b
+                : new PrintStream(getDumpStream(attr_definition_headers, ".def"));
e797f0b
             for (int i = 0; i < numAttrDefs; i++) {
e797f0b
                 int       header = attr_definition_headers.getByte();
e797f0b
                 Utf8Entry name   = (Utf8Entry) attr_definition_name.getRef();
e797f0b
@@ -849,6 +856,10 @@
e797f0b
                 if (dump != null)  dump.println(index+" "+def);
e797f0b
             }
e797f0b
         }
e797f0b
+        finally {
e797f0b
+            if (dump != null)
e797f0b
+                dump.close();
e797f0b
+        }
e797f0b
         attr_definition_headers.doneDisbursing();
e797f0b
         attr_definition_name.doneDisbursing();
e797f0b
         attr_definition_layout.doneDisbursing();
e797f0b
diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -458,9 +458,15 @@
e797f0b
                 Utils.log.info("Writing "+cpMap.length+" "+ConstantPool.tagName(tag)+" entries...");
e797f0b
 
e797f0b
             if (optDumpBands) {
e797f0b
-                try (PrintStream ps = new PrintStream(getDumpStream(index, ".idx"))) {
e797f0b
+                PrintStream ps = null;
e797f0b
+                try {
e797f0b
+                    ps = new PrintStream(getDumpStream(index, ".idx"));
e797f0b
                     printArrayTo(ps, cpMap, 0, cpMap.length);
e797f0b
                 }
e797f0b
+                finally {
e797f0b
+                    if (ps != null)
e797f0b
+                        ps.close();
e797f0b
+                }
e797f0b
             }
e797f0b
 
e797f0b
             switch (tag) {
e797f0b
@@ -923,9 +929,10 @@
e797f0b
             }
e797f0b
         });
e797f0b
         attrDefsWritten = new Attribute.Layout[numAttrDefs];
e797f0b
-        try (PrintStream dump = !optDumpBands ? null
e797f0b
-                 : new PrintStream(getDumpStream(attr_definition_headers, ".def")))
e797f0b
-        {
e797f0b
+        PrintStream dump = null;
e797f0b
+        try {
e797f0b
+            dump = !optDumpBands ? null
e797f0b
+                : new PrintStream(getDumpStream(attr_definition_headers, ".def"));
e797f0b
             int[] indexForDebug = Arrays.copyOf(attrIndexLimit, ATTR_CONTEXT_LIMIT);
e797f0b
             for (int i = 0; i < defs.length; i++) {
e797f0b
                 int header = ((Integer)defs[i][0]).intValue();
e797f0b
@@ -951,6 +958,10 @@
e797f0b
                 }
e797f0b
             }
e797f0b
         }
e797f0b
+        finally {
e797f0b
+            if (dump != null)
e797f0b
+                dump.close();
e797f0b
+        }
e797f0b
     }
e797f0b
 
e797f0b
     void writeAttrCounts() throws IOException {
e797f0b
diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/PropMap.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -123,8 +123,9 @@
e797f0b
         // Do this after the previous props are put in place,
e797f0b
         // to allow override if necessary.
e797f0b
         String propFile = "intrinsic.properties";
e797f0b
-
e797f0b
-        try (InputStream propStr = PackerImpl.class.getResourceAsStream(propFile)) {
e797f0b
+        InputStream propStr = null;
e797f0b
+        try {
e797f0b
+            propStr = PackerImpl.class.getResourceAsStream(propFile);
e797f0b
             if (propStr == null) {
e797f0b
                 throw new RuntimeException(propFile + " cannot be loaded");
e797f0b
             }
e797f0b
@@ -132,6 +133,14 @@
e797f0b
         } catch (IOException ee) {
e797f0b
             throw new RuntimeException(ee);
e797f0b
         }
e797f0b
+        finally {
e797f0b
+            try {
e797f0b
+                if (propStr != null)
e797f0b
+                    propStr.close();
e797f0b
+            } catch (IOException ee) {
e797f0b
+                throw new RuntimeException(ee);
e797f0b
+            }
e797f0b
+        }
e797f0b
 
e797f0b
         for (Map.Entry<Object, Object> e : props.entrySet()) {
e797f0b
             String key = (String) e.getKey();
e797f0b
diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -161,9 +161,15 @@
e797f0b
         }
e797f0b
         // Use the stream-based implementation.
e797f0b
         // %%% Reconsider if native unpacker learns to memory-map the file.
e797f0b
-        try (FileInputStream instr = new FileInputStream(in)) {
e797f0b
+        FileInputStream instr = null;
e797f0b
+        try {
e797f0b
+            instr = new FileInputStream(in);
e797f0b
             unpack(instr, out);
e797f0b
         }
e797f0b
+        finally {
e797f0b
+            if (instr != null)
e797f0b
+                instr.close();
e797f0b
+        }
e797f0b
         if (props.getBoolean(Utils.UNPACK_REMOVE_PACKFILE)) {
e797f0b
             in.delete();
e797f0b
         }
e797f0b
diff -r 1631a3dee8fc src/share/classes/com/sun/java/util/jar/pack/Utils.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -268,18 +268,30 @@
e797f0b
         // 4947205 : Peformance is slow when using pack-effort=0
e797f0b
         out = new BufferedOutputStream(out);
e797f0b
         out = new NonCloser(out); // protect from JarOutputStream.close()
e797f0b
-        try (JarOutputStream jout = new JarOutputStream(out)) {
e797f0b
+        JarOutputStream jout = null;
e797f0b
+        try {
e797f0b
+            jout = new JarOutputStream(out);
e797f0b
             copyJarFile(in, jout);
e797f0b
         }
e797f0b
+        finally {
e797f0b
+            if (jout != null)
e797f0b
+                jout.close();
e797f0b
+        }
e797f0b
     }
e797f0b
     static void copyJarFile(JarFile in, OutputStream out) throws IOException {
e797f0b
 
e797f0b
         // 4947205 : Peformance is slow when using pack-effort=0
e797f0b
         out = new BufferedOutputStream(out);
e797f0b
         out = new NonCloser(out); // protect from JarOutputStream.close()
e797f0b
-        try (JarOutputStream jout = new JarOutputStream(out)) {
e797f0b
+        JarOutputStream jout = null;
e797f0b
+        try {
e797f0b
+            jout = new JarOutputStream(out);
e797f0b
             copyJarFile(in, jout);
e797f0b
         }
e797f0b
+        finally {
e797f0b
+            if (jout != null)
e797f0b
+                jout.close();
e797f0b
+        }
e797f0b
     }
e797f0b
         // Wrapper to prevent closing of client-supplied stream.
e797f0b
     static private
e797f0b
diff -r 1631a3dee8fc src/share/classes/java/lang/Package.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/java/lang/Package.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -576,12 +576,23 @@
e797f0b
      * Returns the Manifest for the specified JAR file name.
e797f0b
      */
e797f0b
     private static Manifest loadManifest(String fn) {
e797f0b
-        try (FileInputStream fis = new FileInputStream(fn);
e797f0b
-             JarInputStream jis = new JarInputStream(fis, false))
e797f0b
-        {
e797f0b
+        FileInputStream fis = null;
e797f0b
+        JarInputStream jis = null;
e797f0b
+        try {
e797f0b
+            fis = new FileInputStream(fn);
e797f0b
+            jis = new JarInputStream(fis, false);
e797f0b
             return jis.getManifest();
e797f0b
         } catch (IOException e) {
e797f0b
             return null;
e797f0b
+        } finally {
e797f0b
+            try {
e797f0b
+                if (jis != null)
e797f0b
+                    jis.close();
e797f0b
+                if (fis != null)
e797f0b
+                    fis.close();
e797f0b
+            } catch (IOException e) {
e797f0b
+                return null;
e797f0b
+            }
e797f0b
         }
e797f0b
     }
e797f0b
 
e797f0b
diff -r 1631a3dee8fc src/share/classes/java/nio/channels/SocketChannel.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -188,7 +188,7 @@
e797f0b
             } catch (Throwable suppressed) {
e797f0b
                 x.addSuppressed(suppressed);
e797f0b
             }
e797f0b
-            throw x;
e797f0b
+            throw (IOException) x;
e797f0b
         }
e797f0b
         assert sc.isConnected();
e797f0b
         return sc;
e797f0b
diff -r 1631a3dee8fc src/share/classes/java/nio/file/CopyMoveHelper.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -122,9 +122,15 @@
e797f0b
         if (attrs.isDirectory()) {
e797f0b
             Files.createDirectory(target);
e797f0b
         } else {
e797f0b
-            try (InputStream in = Files.newInputStream(source)) {
e797f0b
+            InputStream in = null;
e797f0b
+            try {
e797f0b
+                in = Files.newInputStream(source);
e797f0b
                 Files.copy(in, target);
e797f0b
             }
e797f0b
+            finally {
e797f0b
+                if (in != null)
e797f0b
+                    in.close();
e797f0b
+            }
e797f0b
         }
e797f0b
 
e797f0b
         // copy basic attributes to target
e797f0b
@@ -142,7 +148,7 @@
e797f0b
                 } catch (Throwable suppressed) {
e797f0b
                     x.addSuppressed(suppressed);
e797f0b
                 }
e797f0b
-                throw x;
e797f0b
+                throw (IOException) x;
e797f0b
             }
e797f0b
         }
e797f0b
     }
e797f0b
diff -r 1631a3dee8fc src/share/classes/java/nio/file/Files.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -2833,8 +2833,11 @@
e797f0b
         }
e797f0b
 
e797f0b
         // do the copy
e797f0b
-        try (OutputStream out = ostream) {
e797f0b
-            return copy(in, out);
e797f0b
+        try {
e797f0b
+            return copy(in, ostream);
e797f0b
+        }
e797f0b
+        finally {
e797f0b
+            ostream.close();
e797f0b
         }
e797f0b
     }
e797f0b
 
e797f0b
@@ -2875,9 +2878,15 @@
e797f0b
         // ensure not null before opening file
e797f0b
         Objects.requireNonNull(out);
e797f0b
 
e797f0b
-        try (InputStream in = newInputStream(source)) {
e797f0b
+        InputStream in = null;
e797f0b
+        try {
e797f0b
+            in = newInputStream(source);
e797f0b
             return copy(in, out);
e797f0b
         }
e797f0b
+        finally {
e797f0b
+            if (in != null)
e797f0b
+                in.close();
e797f0b
+        }
e797f0b
     }
e797f0b
 
e797f0b
     /**
e797f0b
@@ -2943,8 +2952,14 @@
e797f0b
         if (size > (long)Integer.MAX_VALUE)
e797f0b
             throw new OutOfMemoryError("Required array size too large");
e797f0b
 
e797f0b
-        try (InputStream in = newInputStream(path)) {
e797f0b
-             return read(in, (int)size);
e797f0b
+        InputStream in = null;
e797f0b
+        try {
e797f0b
+            in = newInputStream(path);
e797f0b
+            return read(in, (int)size);
e797f0b
+        }
e797f0b
+        finally {
e797f0b
+            if (in != null)
e797f0b
+                in.close();
e797f0b
         }
e797f0b
     }
e797f0b
 
e797f0b
@@ -2990,7 +3005,9 @@
e797f0b
     public static List<String> readAllLines(Path path, Charset cs)
e797f0b
         throws IOException
e797f0b
     {
e797f0b
-        try (BufferedReader reader = newBufferedReader(path, cs)) {
e797f0b
+        BufferedReader reader = null;
e797f0b
+        try {
e797f0b
+            reader = newBufferedReader(path, cs);
e797f0b
             List<String> result = new ArrayList<>();
e797f0b
             for (;;) {
e797f0b
                 String line = reader.readLine();
e797f0b
@@ -3000,6 +3017,10 @@
e797f0b
             }
e797f0b
             return result;
e797f0b
         }
e797f0b
+        finally {
e797f0b
+            if (reader != null)
e797f0b
+                reader.close();
e797f0b
+        }
e797f0b
     }
e797f0b
 
e797f0b
     /**
e797f0b
@@ -3049,7 +3070,9 @@
e797f0b
         // ensure bytes is not null before opening file
e797f0b
         Objects.requireNonNull(bytes);
e797f0b
 
e797f0b
-        try (OutputStream out = Files.newOutputStream(path, options)) {
e797f0b
+        OutputStream out = null;
e797f0b
+        try {
e797f0b
+            out = Files.newOutputStream(path, options);
e797f0b
             int len = bytes.length;
e797f0b
             int rem = len;
e797f0b
             while (rem > 0) {
e797f0b
@@ -3058,6 +3081,10 @@
e797f0b
                 rem -= n;
e797f0b
             }
e797f0b
         }
e797f0b
+        finally {
e797f0b
+            if (out != null)
e797f0b
+                out.close();
e797f0b
+        }
e797f0b
         return path;
e797f0b
     }
e797f0b
 
e797f0b
@@ -3109,12 +3136,18 @@
e797f0b
         Objects.requireNonNull(lines);
e797f0b
         CharsetEncoder encoder = cs.newEncoder();
e797f0b
         OutputStream out = newOutputStream(path, options);
e797f0b
-        try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, encoder))) {
e797f0b
+        BufferedWriter writer = null;
e797f0b
+        try {
e797f0b
+            writer = new BufferedWriter(new OutputStreamWriter(out, encoder));
e797f0b
             for (CharSequence line: lines) {
e797f0b
                 writer.append(line);
e797f0b
                 writer.newLine();
e797f0b
             }
e797f0b
         }
e797f0b
+        finally {
e797f0b
+            if (writer != null)
e797f0b
+                writer.close();
e797f0b
+        }
e797f0b
         return path;
e797f0b
     }
e797f0b
 }
e797f0b
diff -r 1631a3dee8fc src/share/classes/java/util/Currency.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/java/util/Currency.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/java/util/Currency.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -233,9 +233,14 @@
e797f0b
                                              "currency.properties");
e797f0b
                     if (propFile.exists()) {
e797f0b
                         Properties props = new Properties();
e797f0b
-                        try (FileReader fr = new FileReader(propFile)) {
e797f0b
+                        FileReader fr = null;
e797f0b
+                        try {
e797f0b
+                            fr = new FileReader(propFile);
e797f0b
                             props.load(fr);
e797f0b
                         }
e797f0b
+                        finally {
e797f0b
+                            fr.close();
e797f0b
+                        }
e797f0b
                         Set<String> keys = props.stringPropertyNames();
e797f0b
                         Pattern propertiesPattern =
e797f0b
                             Pattern.compile("([A-Z]{3})\\s*,\\s*(\\d{3})\\s*,\\s*([0-3])");
e797f0b
diff -r 1631a3dee8fc src/share/classes/java/util/jar/JarFile.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -376,9 +376,15 @@
e797f0b
      */
e797f0b
     private byte[] getBytes(ZipEntry ze) throws IOException {
e797f0b
         byte[] b = new byte[(int)ze.getSize()];
e797f0b
-        try (DataInputStream is = new DataInputStream(super.getInputStream(ze))) {
e797f0b
+        DataInputStream is = null;
e797f0b
+        try {
e797f0b
+            is = new DataInputStream(super.getInputStream(ze));
e797f0b
             is.readFully(b, 0, b.length);
e797f0b
         }
e797f0b
+        finally {
e797f0b
+            if (is != null)
e797f0b
+                is.close();
e797f0b
+        }
e797f0b
         return b;
e797f0b
     }
e797f0b
 
e797f0b
@@ -480,11 +486,15 @@
e797f0b
             JarEntry manEntry = getManEntry();
e797f0b
             if (manEntry != null) {
e797f0b
                 byte[] b = new byte[(int)manEntry.getSize()];
e797f0b
-                try (DataInputStream dis = new DataInputStream(
e797f0b
-                         super.getInputStream(manEntry))) {
e797f0b
+                DataInputStream dis = null;
e797f0b
+                try {
e797f0b
+                    dis = new DataInputStream(super.getInputStream(manEntry));
e797f0b
                     dis.readFully(b, 0, b.length);
e797f0b
                 }
e797f0b
-
e797f0b
+                finally {
e797f0b
+                    if (dis != null)
e797f0b
+                        dis.close();
e797f0b
+                }
e797f0b
                 int last = b.length - src.length;
e797f0b
                 int i = 0;
e797f0b
                 next:
e797f0b
diff -r 1631a3dee8fc src/share/classes/javax/sql/rowset/serial/SerialClob.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -144,8 +144,9 @@
e797f0b
         buf = new char[(int)len];
e797f0b
         int read = 0;
e797f0b
         int offset = 0;
e797f0b
-
e797f0b
-        try (Reader charStream = clob.getCharacterStream()) {
e797f0b
+        Reader charStream = null;
e797f0b
+        try {
e797f0b
+            charStream = clob.getCharacterStream();
e797f0b
             if (charStream == null) {
e797f0b
                 throw new SQLException("Invalid Clob object. The call to getCharacterStream " +
e797f0b
                     "returned null which cannot be serialized.");
e797f0b
@@ -153,23 +154,41 @@
e797f0b
 
e797f0b
             // Note: get an ASCII stream in order to null-check it,
e797f0b
             // even though we don't do anything with it.
e797f0b
-            try (InputStream asciiStream = clob.getAsciiStream()) {
e797f0b
+            InputStream asciiStream = null;
e797f0b
+            try {
e797f0b
+                asciiStream = clob.getAsciiStream();
e797f0b
                 if (asciiStream == null) {
e797f0b
                     throw new SQLException("Invalid Clob object. The call to getAsciiStream " +
e797f0b
                         "returned null which cannot be serialized.");
e797f0b
                 }
e797f0b
             }
e797f0b
-
e797f0b
-            try (Reader reader = new BufferedReader(charStream)) {
e797f0b
+            finally {
e797f0b
+                if (asciiStream != null)
e797f0b
+                    asciiStream.close();
e797f0b
+            }
e797f0b
+            Reader reader = null;
e797f0b
+            try {
e797f0b
+                reader = new BufferedReader(charStream);
e797f0b
                 do {
e797f0b
                     read = reader.read(buf, offset, (int)(len - offset));
e797f0b
                     offset += read;
e797f0b
                 } while (read > 0);
e797f0b
             }
e797f0b
+            finally {
e797f0b
+                if (reader != null)
e797f0b
+                    reader.close();
e797f0b
+            }
e797f0b
         } catch (java.io.IOException ex) {
e797f0b
             throw new SerialException("SerialClob: " + ex.getMessage());
e797f0b
         }
e797f0b
-
e797f0b
+        finally {
e797f0b
+            try {
e797f0b
+                if (charStream != null)
e797f0b
+                    charStream.close();
e797f0b
+            } catch (java.io.IOException ex) {
e797f0b
+                throw new SerialException("SerialClob: " + ex.getMessage());
e797f0b
+            }
e797f0b
+        }
e797f0b
         origLen = len;
e797f0b
     }
e797f0b
 
e797f0b
diff -r 1631a3dee8fc src/share/classes/javax/sql/rowset/spi/SyncFactory.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -367,9 +367,15 @@
e797f0b
                     // Load user's implementation of SyncProvider
e797f0b
                     // here. -Drowset.properties=/abc/def/pqr.txt
e797f0b
                     ROWSET_PROPERTIES = strRowsetProperties;
e797f0b
-                    try (FileInputStream fis = new FileInputStream(ROWSET_PROPERTIES)) {
e797f0b
+                    FileInputStream fis = null;
e797f0b
+                    try {
e797f0b
+                        fis = new FileInputStream(ROWSET_PROPERTIES);
e797f0b
                         properties.load(fis);
e797f0b
                     }
e797f0b
+                    finally {
e797f0b
+                        if (fis != null)
e797f0b
+                            fis.close();
e797f0b
+                    }
e797f0b
                     parseProperties(properties);
e797f0b
                 }
e797f0b
 
e797f0b
@@ -381,15 +387,19 @@
e797f0b
                         "rowset.properties";
e797f0b
 
e797f0b
                 ClassLoader cl = Thread.currentThread().getContextClassLoader();
e797f0b
-
e797f0b
-                try (InputStream stream =
e797f0b
-                         (cl == null) ? ClassLoader.getSystemResourceAsStream(ROWSET_PROPERTIES)
e797f0b
-                                      : cl.getResourceAsStream(ROWSET_PROPERTIES)) {
e797f0b
+                InputStream stream = null;
e797f0b
+                try {
e797f0b
+                    stream =
e797f0b
+                        (cl == null) ? ClassLoader.getSystemResourceAsStream(ROWSET_PROPERTIES)
e797f0b
+                        : cl.getResourceAsStream(ROWSET_PROPERTIES);
e797f0b
                     if (stream == null) {
e797f0b
                         throw new SyncFactoryException(
e797f0b
                             "Resource " + ROWSET_PROPERTIES + " not found");
e797f0b
                     }
e797f0b
                     properties.load(stream);
e797f0b
+                } finally {
e797f0b
+                    if (stream != null)
e797f0b
+                        stream.close();
e797f0b
                 }
e797f0b
 
e797f0b
                 parseProperties(properties);
e797f0b
diff -r 1631a3dee8fc src/share/classes/sun/net/www/protocol/jar/URLJarFile.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -194,7 +194,8 @@
e797f0b
      * Given a URL, retrieves a JAR file, caches it to disk, and creates a
e797f0b
      * cached JAR file object.
e797f0b
      */
e797f0b
-     private static JarFile retrieve(final URL url, final URLJarFileCloseController closeController) throws IOException {
e797f0b
+     private static JarFile retrieve(final URL url, final URLJarFileCloseController closeController)
e797f0b
+         throws IOException {
e797f0b
         /*
e797f0b
          * See if interface is set, then call retrieve function of the class
e797f0b
          * that implements URLJarFileCallBack interface (sun.plugin - to
e797f0b
@@ -211,7 +212,8 @@
e797f0b
             JarFile result = null;
e797f0b
 
e797f0b
             /* get the stream before asserting privileges */
e797f0b
-            try (final InputStream in = url.openConnection().getInputStream()) {
e797f0b
+            try {
e797f0b
+                final InputStream in = url.openConnection().getInputStream();
e797f0b
                 result = AccessController.doPrivileged(
e797f0b
                     new PrivilegedExceptionAction<JarFile>() {
e797f0b
                         public JarFile run() throws IOException {
e797f0b
@@ -227,7 +229,10 @@
e797f0b
                                 } catch (IOException ioe) {
e797f0b
                                     thr.addSuppressed(ioe);
e797f0b
                                 }
e797f0b
-                                throw thr;
e797f0b
+                                throw (IOException) thr;
e797f0b
+                            } finally {
e797f0b
+                                if (in != null)
e797f0b
+                                    in.close();
e797f0b
                             }
e797f0b
                         }
e797f0b
                     });
e797f0b
diff -r 1631a3dee8fc src/share/classes/sun/nio/fs/PollingWatchService.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -255,7 +255,9 @@
e797f0b
             this.entries = new HashMap<Path,CacheEntry>();
e797f0b
 
e797f0b
             // get the initial entries in the directory
e797f0b
-            try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
e797f0b
+            DirectoryStream<Path> stream = null;
e797f0b
+            try {
e797f0b
+                stream = Files.newDirectoryStream(dir);
e797f0b
                 for (Path entry: stream) {
e797f0b
                     // don't follow links
e797f0b
                     long lastModified =
e797f0b
@@ -264,6 +266,10 @@
e797f0b
                 }
e797f0b
             } catch (DirectoryIteratorException e) {
e797f0b
                 throw e.getCause();
e797f0b
+            } finally {
e797f0b
+                if (stream != null) {
e797f0b
+                    stream.close();
e797f0b
+                }
e797f0b
             }
e797f0b
         }
e797f0b
 
e797f0b
diff -r 1631a3dee8fc src/share/classes/sun/security/provider/SeedGenerator.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -179,7 +179,9 @@
e797f0b
                         // The temporary dir
e797f0b
                         File f = new File(p.getProperty("java.io.tmpdir"));
e797f0b
                         int count = 0;
e797f0b
-                        try (DirectoryStream<Path> stream = Files.newDirectoryStream(f.toPath())) {
e797f0b
+                        DirectoryStream<Path> stream = null;
e797f0b
+                        try {
e797f0b
+                            stream = Files.newDirectoryStream(f.toPath());
e797f0b
                             // We use a Random object to choose what file names
e797f0b
                             // should be used. Otherwise on a machine with too
e797f0b
                             // many files, the same first 1024 files always get
e797f0b
@@ -194,6 +196,10 @@
e797f0b
                                     break;
e797f0b
                                 }
e797f0b
                             }
e797f0b
+                        } finally {
e797f0b
+                            if (stream != null) {
e797f0b
+                                stream.close();
e797f0b
+                            }
e797f0b
                         }
e797f0b
                     } catch (Exception ex) {
e797f0b
                         md.update((byte)ex.hashCode());
e797f0b
diff -r 1631a3dee8fc src/share/classes/sun/util/calendar/LocalGregorianCalendar.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -127,9 +127,15 @@
e797f0b
             calendarProps = (Properties) AccessController.doPrivileged(new PrivilegedExceptionAction() {
e797f0b
                 public Object run() throws IOException {
e797f0b
                     Properties props = new Properties();
e797f0b
-                    try (FileInputStream fis = new FileInputStream(fname)) {
e797f0b
+                    FileInputStream fis = null;
e797f0b
+                    try {
e797f0b
+                        fis = new FileInputStream(fname);
e797f0b
                         props.load(fis);
e797f0b
                     }
e797f0b
+                    finally {
e797f0b
+                        if (fis != null)
e797f0b
+                            fis.close();
e797f0b
+                    }
e797f0b
                     return props;
e797f0b
                 }
e797f0b
             });
e797f0b
diff -r 1631a3dee8fc src/share/demo/jfc/Font2DTest/RangeMenu.java
e797f0b
--- openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -191,7 +191,7 @@
e797f0b
     }
e797f0b
 
e797f0b
     private static int[][] getUnicodeRanges() {
e797f0b
-        List<Integer> ranges = new ArrayList<>();
e797f0b
+        List<Integer> ranges = new ArrayList<Integer>();
e797f0b
         ranges.add(0);
e797f0b
         Character.UnicodeBlock currentBlock = Character.UnicodeBlock.of(0);
e797f0b
         for (int cp = 0x000001; cp < 0x110000; cp++ ) {
e797f0b
diff -r 1631a3dee8fc src/solaris/classes/java/util/prefs/FileSystemPreferences.java
e797f0b
--- openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -569,11 +569,11 @@
e797f0b
                 public Void run() throws BackingStoreException {
e797f0b
                     Map<String, String> m = new TreeMap<>();
e797f0b
                     long newLastSyncTime = 0;
e797f0b
+                    FileInputStream fis = null;
e797f0b
                     try {
e797f0b
                         newLastSyncTime = prefsFile.lastModified();
e797f0b
-                        try (FileInputStream fis = new FileInputStream(prefsFile)) {
e797f0b
-                            XmlSupport.importMap(fis, m);
e797f0b
-                        }
e797f0b
+                        fis = new FileInputStream(prefsFile);
e797f0b
+                        XmlSupport.importMap(fis, m);
e797f0b
                     } catch(Exception e) {
e797f0b
                         if (e instanceof InvalidPreferencesFormatException) {
e797f0b
                             getLogger().warning("Invalid preferences format in "
e797f0b
@@ -588,6 +588,13 @@
e797f0b
                         } else {
e797f0b
                             throw new BackingStoreException(e);
e797f0b
                         }
e797f0b
+                    } finally {
e797f0b
+                        try {
e797f0b
+                            if (fis != null)
e797f0b
+                                fis.close();
e797f0b
+                        } catch (IOException e) {
e797f0b
+                            throw new BackingStoreException(e);
e797f0b
+                        }
e797f0b
                     }
e797f0b
                     // Attempt succeeded; update state
e797f0b
                     prefsCache = m;
e797f0b
@@ -614,13 +621,14 @@
e797f0b
             AccessController.doPrivileged(
e797f0b
                 new PrivilegedExceptionAction<Void>() {
e797f0b
                 public Void run() throws BackingStoreException {
e797f0b
+                    FileOutputStream fos = null;
e797f0b
                     try {
e797f0b
                         if (!dir.exists() && !dir.mkdirs())
e797f0b
                             throw new BackingStoreException(dir +
e797f0b
                                                              " create failed.");
e797f0b
-                        try (FileOutputStream fos = new FileOutputStream(tmpFile)) {
e797f0b
-                            XmlSupport.exportMap(fos, prefsCache);
e797f0b
-                        }
e797f0b
+
e797f0b
+                        fos = new FileOutputStream(tmpFile);
e797f0b
+                        XmlSupport.exportMap(fos, prefsCache);
e797f0b
                         if (!tmpFile.renameTo(prefsFile))
e797f0b
                             throw new BackingStoreException("Can't rename " +
e797f0b
                             tmpFile + " to " + prefsFile);
e797f0b
@@ -629,6 +637,14 @@
e797f0b
                             throw (BackingStoreException)e;
e797f0b
                         throw new BackingStoreException(e);
e797f0b
                     }
e797f0b
+                    finally {
e797f0b
+                        try {
e797f0b
+                            if (fos != null)
e797f0b
+                                fos.close();
e797f0b
+                        } catch (IOException e) {
e797f0b
+                            throw new BackingStoreException(e);
e797f0b
+                        }
e797f0b
+                    }
e797f0b
                     return null;
e797f0b
                 }
e797f0b
             });
e797f0b
diff -r 1631a3dee8fc src/solaris/classes/sun/nio/fs/UnixFileStore.java
e797f0b
--- openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	Wed Apr 20 04:38:36 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	Fri Apr 29 01:50:44 2011 +0100
e797f0b
@@ -255,9 +255,16 @@
e797f0b
         String fstypes = System.getProperty("java.home") + "/lib/fstypes.properties";
e797f0b
         Path file = Paths.get(fstypes);
e797f0b
         try {
e797f0b
-            try (ReadableByteChannel rbc = Files.newByteChannel(file)) {
e797f0b
+            ReadableByteChannel rbc = null;
e797f0b
+            try {
e797f0b
+                rbc = Files.newByteChannel(file);
e797f0b
                 result.load(Channels.newReader(rbc, "UTF-8"));
e797f0b
             }
e797f0b
+            finally {
e797f0b
+                if (rbc != null) {
e797f0b
+                    rbc.close();
e797f0b
+                }
e797f0b
+            }
e797f0b
         } catch (IOException x) {
e797f0b
         }
e797f0b
         return result;
e797f0b
diff -r d28f54a421b1 src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java
e797f0b
--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	Mon Jun 13 15:58:42 2011 +0100
e797f0b
+++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java	Tue Jun 21 14:46:11 2011 +0100
e797f0b
@@ -92,9 +92,13 @@
e797f0b
         tabName = filename;
e797f0b
         try {
e797f0b
             lastModified = new File(tabName).lastModified();
e797f0b
-            try (KeyTabInputStream kis =
e797f0b
-                    new KeyTabInputStream(new FileInputStream(filename))) {
e797f0b
+            KeyTabInputStream kis = null;
e797f0b
+            try {
e797f0b
+                kis = new KeyTabInputStream(new FileInputStream(filename));
e797f0b
                 load(kis);
e797f0b
+            } finally {
e797f0b
+                if (kis != null)
e797f0b
+                    kis.close();
e797f0b
             }
e797f0b
         } catch (FileNotFoundException e) {
e797f0b
             entries.clear();
e797f0b
@@ -439,9 +443,13 @@
e797f0b
     public synchronized static KeyTab create(String name)
e797f0b
         throws IOException, RealmException {
e797f0b
 
e797f0b
-        try (KeyTabOutputStream kos =
e797f0b
-                new KeyTabOutputStream(new FileOutputStream(name))) {
e797f0b
+        KeyTabOutputStream kos = null;
e797f0b
+        try {
e797f0b
+            kos = new KeyTabOutputStream(new FileOutputStream(name));
e797f0b
             kos.writeVersion(KRB5_KT_VNO);
e797f0b
+        } finally {
e797f0b
+            if (kos != null)
e797f0b
+                kos.close();
e797f0b
         }
e797f0b
         return new KeyTab(name);
e797f0b
     }
e797f0b
@@ -450,12 +458,16 @@
e797f0b
      * Saves the file at the directory.
e797f0b
      */
e797f0b
     public synchronized void save() throws IOException {
e797f0b
-        try (KeyTabOutputStream kos =
e797f0b
-                new KeyTabOutputStream(new FileOutputStream(tabName))) {
e797f0b
+        KeyTabOutputStream kos = null;
e797f0b
+        try {
e797f0b
+            kos = new KeyTabOutputStream(new FileOutputStream(tabName));
e797f0b
             kos.writeVersion(kt_vno);
e797f0b
             for (int i = 0; i < entries.size(); i++) {
e797f0b
                 kos.writeEntry(entries.elementAt(i));
e797f0b
             }
e797f0b
+        } finally {
e797f0b
+            if (kos != null)
e797f0b
+                kos.close();
e797f0b
         }
e797f0b
     }
e797f0b
 
e797f0b
@@ -519,9 +531,13 @@
e797f0b
      * @exception IOException.
e797f0b
      */
e797f0b
     public synchronized void createVersion(File file) throws IOException {
e797f0b
-        try (KeyTabOutputStream kos =
e797f0b
-                new KeyTabOutputStream(new FileOutputStream(file))) {
e797f0b
+        KeyTabOutputStream kos = null;
e797f0b
+        try {
e797f0b
+            kos = new KeyTabOutputStream(new FileOutputStream(file));
e797f0b
             kos.write16(KRB5_KT_VNO);
e797f0b
+        } finally {
e797f0b
+            if (kos != null)
e797f0b
+                kos.close();
e797f0b
         }
e797f0b
     }
e797f0b
 }