8027992: FileInputStream and BufferedInputStream should be closed in sun.applet.*
Reviewed-by: anthony, serb
--- 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