8027992: FileInputStream and BufferedInputStream should be closed in sun.applet.*
authorpchelko
Mon, 18 Nov 2013 19:22:29 +0400
changeset 21785 fc0bfa7d9d95
parent 21784 71e061011ef1
child 21786 2f3ad6aa2ac5
8027992: FileInputStream and BufferedInputStream should be closed in sun.applet.* Reviewed-by: anthony, serb
jdk/src/share/classes/sun/applet/AppletPanel.java
jdk/src/share/classes/sun/applet/AppletViewer.java
jdk/src/share/classes/sun/applet/Main.java
--- a/jdk/src/share/classes/sun/applet/AppletPanel.java	Fri Nov 15 17:40:34 2013 +0400
+++ b/jdk/src/share/classes/sun/applet/AppletPanel.java	Mon Nov 18 19:22:29 2013 +0400
@@ -794,18 +794,13 @@
             doInit = true;
         } else {
             // serName is not null;
-            InputStream is = (InputStream)
-                java.security.AccessController.doPrivileged(
-                                                            new java.security.PrivilegedAction() {
-                                                                public Object run() {
-                                                                    return loader.getResourceAsStream(serName);
-                                                                }
-                                                            });
-            ObjectInputStream ois =
-                new AppletObjectInputStream(is, loader);
-            Object serObject = ois.readObject();
-            applet = (Applet) serObject;
-            doInit = false; // skip over the first init
+            try (InputStream is = AccessController.doPrivileged(
+                    (PrivilegedAction<InputStream>)() -> loader.getResourceAsStream(serName));
+                 ObjectInputStream ois = new AppletObjectInputStream(is, loader)) {
+
+                applet = (Applet) ois.readObject();
+                doInit = false; // skip over the first init
+            }
         }
 
         // Determine the JDK level that the applet targets.
@@ -1239,20 +1234,13 @@
             // append .class
             final String resourceName = name + ".class";
 
-            InputStream is = null;
             byte[] classHeader = new byte[8];
 
-            try {
-                is = (InputStream) java.security.AccessController.doPrivileged(
-                    new java.security.PrivilegedAction() {
-                        public Object run() {
-                            return loader.getResourceAsStream(resourceName);
-                        }
-                    });
+            try (InputStream is = AccessController.doPrivileged(
+                    (PrivilegedAction<InputStream>) () -> loader.getResourceAsStream(resourceName))) {
 
                 // Read the first 8 bytes of the class file
                 int byteRead = is.read(classHeader, 0, 8);
-                is.close();
 
                 // return if the header is not read in entirely
                 // for some reasons.
--- a/jdk/src/share/classes/sun/applet/AppletViewer.java	Fri Nov 15 17:40:34 2013 +0400
+++ b/jdk/src/share/classes/sun/applet/AppletViewer.java	Mon Nov 18 19:22:29 2013 +0400
@@ -668,11 +668,11 @@
                 String dname = fd.getDirectory();
                 File file = new File(dname, fname);
 
-                try {
-                    BufferedOutputStream s = new BufferedOutputStream(new FileOutputStream(file));
-                    ObjectOutputStream os = new ObjectOutputStream(s);
-                    showStatus(amh.getMessage("appletsave.err1",
-                                              panel.applet.toString(), file.toString()));
+                try (FileOutputStream fos = new FileOutputStream(file);
+                     BufferedOutputStream bos = new BufferedOutputStream(fos);
+                     ObjectOutputStream os = new ObjectOutputStream(bos)) {
+
+                    showStatus(amh.getMessage("appletsave.err1", panel.applet.toString(), file.toString()));
                     os.writeObject(panel.applet);
                 } catch (IOException ex) {
                     System.err.println(amh.getMessage("appletsave.err2", ex));
--- a/jdk/src/share/classes/sun/applet/Main.java	Fri Nov 15 17:40:34 2013 +0400
+++ b/jdk/src/share/classes/sun/applet/Main.java	Mon Nov 18 19:22:29 2013 +0400
@@ -432,10 +432,8 @@
             }
 
             // SAVE THE FILE
-            try {
-                FileOutputStream out = new FileOutputStream(dotAV);
+            try (FileOutputStream out = new FileOutputStream(dotAV)) {
                 avProps.store(out, lookup("main.prop.store"));
-                out.close();
             } catch (IOException e) {
                 System.err.println(lookup("main.err.prop.cantsave",
                                           dotAV.toString()));
@@ -472,13 +470,10 @@
 
         // read the file
         Properties tmpProps = new Properties();
-        try {
-            FileInputStream in = new FileInputStream(inFile);
+        try (FileInputStream in = new FileInputStream(inFile)) {
             tmpProps.load(new BufferedInputStream(in));
-            in.close();
         } catch (IOException e) {
-            System.err.println(lookup("main.err.prop.cantread",
-                                      inFile.toString()));
+            System.err.println(lookup("main.err.prop.cantread", inFile.toString()));
         }
 
         // pick off the properties we care about