From 36871906c4a224c0971ec7d69bba2b61696f0342 Mon Sep 17 00:00:00 2001 From: Goetz Lindenmaier Date: Sat, 22 Feb 2025 15:10:55 +0000 Subject: [PATCH 1/6] 8274893: Update java.desktop classes to use try-with-resources Backport-of: 70c6df6be431fe11c5441986ed04040f9ec3b750 --- .../imageio/plugins/png/PNGImageReader.java | 13 +--- .../com/sun/java/swing/plaf/gtk/Metacity.java | 27 ++++++++ .../media/sound/AudioFileSoundbankReader.java | 4 +- .../com/sun/media/sound/DLSSoundbank.java | 24 ++++--- .../sun/media/sound/JARSoundbankReader.java | 12 +--- .../com/sun/media/sound/ModelByteBuffer.java | 12 ++-- .../media/sound/ModelByteBufferWavetable.java | 10 +-- .../com/sun/media/sound/SF2Soundbank.java | 24 ++++--- .../com/sun/media/sound/SoftSynthesizer.java | 7 +- .../media/sound/StandardMidiFileReader.java | 65 ++++++++----------- .../media/sound/StandardMidiFileWriter.java | 14 ++++ jdk/src/share/classes/java/awt/Font.java | 5 +- jdk/src/share/classes/java/awt/Toolkit.java | 20 +++--- jdk/src/share/classes/java/beans/Beans.java | 6 +- .../share/classes/javax/imageio/ImageIO.java | 19 ++---- .../classes/javax/swing/JEditorPane.java | 16 ++--- .../share/classes/javax/swing/UIManager.java | 7 +- .../javax/swing/text/html/HTMLEditorKit.java | 13 +++- .../javax/swing/text/html/StyleSheet.java | 11 ++-- .../share/classes/sun/awt/DebugSettings.java | 6 +- .../classes/sun/awt/FontConfiguration.java | 5 +- .../share/classes/sun/print/PSPrinterJob.java | 9 +-- .../sun/awt/motif/MFontConfiguration.java | 6 +- .../classes/sun/font/FcFontConfiguration.java | 11 ++-- 24 files changed, 163 insertions(+), 183 deletions(-) diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java b/jdk/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java index 2d500cea759..e78361b386b 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java @@ -620,18 +620,9 @@ private void parse_tRNS_chunk(int chunkLength) throws IOException { private static byte[] inflate(byte[] b) throws IOException { InputStream bais = new ByteArrayInputStream(b); - InputStream iis = new InflaterInputStream(bais); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - - int c; - try { - while ((c = iis.read()) != -1) { - baos.write(c); - } - } finally { - iis.close(); + try (InputStream iis = new InflaterInputStream(bais)) { + return iis.readAllBytes(); } - return baos.toByteArray(); } private void parse_zTXt_chunk(int chunkLength) throws IOException { diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java index 72167580a92..8b302c8bdbb 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java @@ -531,15 +531,42 @@ public Object run() { URL url = new URL(new File(userHome).toURI().toURL(), ".gconf/apps/metacity/general/%25gconf.xml"); // Pending: verify character encoding spec for gconf +<<<<<<< HEAD:jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java Reader reader = new InputStreamReader(url.openStream(), "ISO-8859-1"); char[] buf = new char[1024]; StringBuffer strBuf = new StringBuffer(); int n; while ((n = reader.read(buf)) >= 0) { strBuf.append(buf, 0, n); +||||||| parent of fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java + Reader reader = new InputStreamReader(url.openStream(), + ISO_8859_1); + char[] buf = new char[1024]; + StringBuilder sb = new StringBuilder(); + int n; + while ((n = reader.read(buf)) >= 0) { + sb.append(buf, 0, n); +======= + StringBuilder sb = new StringBuilder(); + try (InputStream in = url.openStream(); + Reader reader = new InputStreamReader(in, ISO_8859_1)) + { + char[] buf = new char[1024]; + int n; + while ((n = reader.read(buf)) >= 0) { + sb.append(buf, 0, n); + } +>>>>>>> fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java } +<<<<<<< HEAD:jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java reader.close(); String str = strBuf.toString(); +||||||| parent of fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java + reader.close(); + String str = sb.toString(); +======= + String str = sb.toString(); +>>>>>>> fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java if (str != null) { String strLowerCase = str.toLowerCase(); int i = strLowerCase.indexOf(" Integer.MAX_VALUE) { - length = MidiFileFormat.UNKNOWN_LENGTH; - } - MidiFileFormat fileFormat = null; - try { - fileFormat = getMidiFileFormatFromStream(bis, (int) length, null); - } finally { - bis.close(); + try (FileInputStream fis = new FileInputStream(file); // throws IOException + BufferedInputStream bis = new BufferedInputStream(fis, bisBufferSize)) + { + // $$fb 2002-04-17: part of fix for 4635286: MidiSystem.getMidiFileFormat() returns format having invalid length + long length = file.length(); + if (length > Integer.MAX_VALUE) { + length = MidiFileFormat.UNKNOWN_LENGTH; + } + MidiFileFormat fileFormat = getMidiFileFormatFromStream(bis, (int) length, null); + return fileFormat; } - return fileFormat; } @@ -204,28 +197,22 @@ public Sequence getSequence(InputStream stream) throws InvalidMidiDataException, public Sequence getSequence(URL url) throws InvalidMidiDataException, IOException { - InputStream is = url.openStream(); // throws IOException - is = new BufferedInputStream(is, bisBufferSize); - Sequence seq = null; - try { - seq = getSequence(is); - } finally { - is.close(); + try (InputStream is = url.openStream(); // throws IOException + BufferedInputStream bis = new BufferedInputStream(is, bisBufferSize)) + { + Sequence seq = getSequence(bis); + return seq; } - return seq; } public Sequence getSequence(File file) throws InvalidMidiDataException, IOException { - InputStream is = new FileInputStream(file); // throws IOException - is = new BufferedInputStream(is, bisBufferSize); - Sequence seq = null; - try { - seq = getSequence(is); - } finally { - is.close(); + try (InputStream is = new FileInputStream(file); // throws IOException + BufferedInputStream bis = new BufferedInputStream(is, bisBufferSize)) + { + Sequence seq = getSequence(bis); + return seq; } - return seq; } } diff --git a/jdk/src/share/classes/com/sun/media/sound/StandardMidiFileWriter.java b/jdk/src/share/classes/com/sun/media/sound/StandardMidiFileWriter.java index 97e0dc2928a..af4f64e15de 100644 --- a/jdk/src/share/classes/com/sun/media/sound/StandardMidiFileWriter.java +++ b/jdk/src/share/classes/com/sun/media/sound/StandardMidiFileWriter.java @@ -149,10 +149,24 @@ public int write(Sequence in, int type, OutputStream out) throws IOException { } public int write(Sequence in, int type, File out) throws IOException { +<<<<<<< HEAD:jdk/src/share/classes/com/sun/media/sound/StandardMidiFileWriter.java FileOutputStream fos = new FileOutputStream(out); // throws IOException int bytesWritten = write( in, type, fos ); fos.close(); return bytesWritten; +||||||| parent of fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/com/sun/media/sound/StandardMidiFileWriter.java + Objects.requireNonNull(in); + FileOutputStream fos = new FileOutputStream(out); // throws IOException + int bytesWritten = write( in, type, fos ); + fos.close(); + return bytesWritten; +======= + Objects.requireNonNull(in); + try (FileOutputStream fos = new FileOutputStream(out)) { // throws IOException + int bytesWritten = write(in, type, fos); + return bytesWritten; + } +>>>>>>> fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/com/sun/media/sound/StandardMidiFileWriter.java } //================================================================================= diff --git a/jdk/src/share/classes/java/awt/Font.java b/jdk/src/share/classes/java/awt/Font.java index b62c83839f6..ecc31169ad0 100644 --- a/jdk/src/share/classes/java/awt/Font.java +++ b/jdk/src/share/classes/java/awt/Font.java @@ -930,7 +930,7 @@ public OutputStream run() throws IOException { if (tracker != null) { tracker.set(tFile, outStream); } - try { + try (outStream) { /* don't close the input stream */ byte[] buf = new byte[8192]; for (;;) { int bytesRead = fontStream.read(buf); @@ -951,9 +951,6 @@ public OutputStream run() throws IOException { } outStream.write(buf, 0, bytesRead); } - /* don't close the input stream */ - } finally { - outStream.close(); } /* After all references to a Font2D are dropped, the file * will be removed. To support long-lived AppContexts, diff --git a/jdk/src/share/classes/java/awt/Toolkit.java b/jdk/src/share/classes/java/awt/Toolkit.java index 91c28f4e28f..c37749737c0 100644 --- a/jdk/src/share/classes/java/awt/Toolkit.java +++ b/jdk/src/share/classes/java/awt/Toolkit.java @@ -713,12 +713,10 @@ public String run() { File propsFile = new File( System.getProperty("user.home") + sep + ".accessibility.properties"); - FileInputStream in = - new FileInputStream(propsFile); - - // Inputstream has been buffered in Properties class - properties.load(in); - in.close(); + try (FileInputStream in = new FileInputStream(propsFile)) { + // Inputstream has been buffered in Properties class + properties.load(in); + } } catch (Exception e) { // Per-user accessibility properties file does not exist } @@ -731,12 +729,10 @@ public String run() { File propsFile = new File( System.getProperty("java.home") + sep + "lib" + sep + "accessibility.properties"); - FileInputStream in = - new FileInputStream(propsFile); - - // Inputstream has been buffered in Properties class - properties.load(in); - in.close(); + try (FileInputStream in = new FileInputStream(propsFile)) { + // Inputstream has been buffered in Properties class + properties.load(in); + } } catch (Exception e) { // System-wide accessibility properties file does // not exist; diff --git a/jdk/src/share/classes/java/beans/Beans.java b/jdk/src/share/classes/java/beans/Beans.java index c781a98597e..bcd19adcb12 100644 --- a/jdk/src/share/classes/java/beans/Beans.java +++ b/jdk/src/share/classes/java/beans/Beans.java @@ -181,7 +181,7 @@ public static Object instantiate(ClassLoader cls, String beanName, BeanContext b else ins = cls.getResourceAsStream(serName); if (ins != null) { - try { + try (ins) { if (cls == null) { oins = new ObjectInputStream(ins); } else { @@ -191,13 +191,9 @@ public static Object instantiate(ClassLoader cls, String beanName, BeanContext b serialized = true; oins.close(); } catch (IOException ex) { - ins.close(); // Drop through and try opening the class. But remember // the exception in case we can't find the class either. serex = ex; - } catch (ClassNotFoundException ex) { - ins.close(); - throw ex; } } diff --git a/jdk/src/share/classes/javax/imageio/ImageIO.java b/jdk/src/share/classes/javax/imageio/ImageIO.java index 13d623f2b7a..18737e8baa4 100644 --- a/jdk/src/share/classes/javax/imageio/ImageIO.java +++ b/jdk/src/share/classes/javax/imageio/ImageIO.java @@ -39,8 +39,6 @@ import java.util.Collections; import java.util.HashSet; import java.util.Iterator; -import java.util.NoSuchElementException; -import java.util.Set; import javax.imageio.spi.IIORegistry; import javax.imageio.spi.ImageReaderSpi; import javax.imageio.spi.ImageReaderWriterSpi; @@ -1394,7 +1392,7 @@ public static BufferedImage read(URL input) throws IOException { throw new IllegalArgumentException("input == null!"); } - InputStream istream = null; + InputStream istream; try { istream = input.openStream(); } catch (IOException e) { @@ -1410,13 +1408,11 @@ public static BufferedImage read(URL input) throws IOException { throw new IIOException("Can't create an ImageInputStream!"); } BufferedImage bi; - try { + try (istream) { bi = read(stream); if (bi == null) { stream.close(); } - } finally { - istream.close(); } return bi; } @@ -1458,11 +1454,10 @@ public static BufferedImage read(ImageInputStream stream) ImageReadParam param = reader.getDefaultReadParam(); reader.setInput(stream, true, true); BufferedImage bi; - try { + try (stream) { bi = reader.read(0, param); } finally { reader.dispose(); - stream.close(); } return bi; } @@ -1544,10 +1539,8 @@ public static boolean write(RenderedImage im, if (stream == null) { throw new IIOException("Can't create an ImageOutputStream!"); } - try { + try (stream) { return doWrite(im, writer, stream); - } finally { - stream.close(); } } @@ -1584,10 +1577,8 @@ public static boolean write(RenderedImage im, if (stream == null) { throw new IIOException("Can't create an ImageOutputStream!"); } - try { + try (stream) { return doWrite(im, getWriter(im, formatName), stream); - } finally { - stream.close(); } } diff --git a/jdk/src/share/classes/javax/swing/JEditorPane.java b/jdk/src/share/classes/javax/swing/JEditorPane.java index 97075236668..27b15f56819 100644 --- a/jdk/src/share/classes/javax/swing/JEditorPane.java +++ b/jdk/src/share/classes/javax/swing/JEditorPane.java @@ -794,16 +794,12 @@ private Object getPostData() { private void handlePostData(HttpURLConnection conn, Object postData) throws IOException { conn.setDoOutput(true); - DataOutputStream os = null; - try { - conn.setRequestProperty("Content-Type", - "application/x-www-form-urlencoded"); - os = new DataOutputStream(conn.getOutputStream()); - os.writeBytes((String) postData); - } finally { - if (os != null) { - os.close(); - } + conn.setRequestProperty("Content-Type", + "application/x-www-form-urlencoded"); + try (OutputStream os = conn.getOutputStream(); + DataOutputStream dos = new DataOutputStream(os)) + { + dos.writeBytes((String)postData); } } diff --git a/jdk/src/share/classes/javax/swing/UIManager.java b/jdk/src/share/classes/javax/swing/UIManager.java index aca0f18458c..4d32ae08f85 100644 --- a/jdk/src/share/classes/javax/swing/UIManager.java +++ b/jdk/src/share/classes/javax/swing/UIManager.java @@ -57,7 +57,6 @@ import sun.awt.OSInfo; import sun.security.action.GetPropertyAction; import sun.swing.SwingUtilities2; -import java.lang.reflect.Method; import java.util.HashMap; import sun.awt.AppContext; import sun.awt.AWTAccessor; @@ -1239,9 +1238,9 @@ public Object run() { if (file.exists()) { // InputStream has been buffered in Properties // class - FileInputStream ins = new FileInputStream(file); - props.load(ins); - ins.close(); + try (FileInputStream ins = new FileInputStream(file)) { + props.load(ins); + } } } catch (Exception e) { diff --git a/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java index c49a1edad6e..727bb5bd44b 100644 --- a/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java +++ b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java @@ -391,12 +391,23 @@ public StyleSheet getStyleSheet() { if (defaultStyles == null) { defaultStyles = new StyleSheet(); appContext.put(DEFAULT_STYLES_KEY, defaultStyles); +<<<<<<< HEAD:jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java try { InputStream is = HTMLEditorKit.getResourceAsStream(DEFAULT_CSS); Reader r = new BufferedReader( new InputStreamReader(is, "ISO-8859-1")); +||||||| parent of fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/javax/swing/text/html/HTMLEditorKit.java + try { + InputStream is = HTMLEditorKit.getResourceAsStream(DEFAULT_CSS); + Reader r = new BufferedReader( + new InputStreamReader(is, ISO_8859_1)); +======= + try (InputStream is = HTMLEditorKit.getResourceAsStream(DEFAULT_CSS); + InputStreamReader isr = new InputStreamReader(is, ISO_8859_1); + Reader r = new BufferedReader(isr)) + { +>>>>>>> fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/javax/swing/text/html/HTMLEditorKit.java defaultStyles.loadRules(r, null); - r.close(); } catch (Throwable e) { // on error we simply have no styles... the html // will look mighty wrong but still function. diff --git a/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java b/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java index 59a697587e6..fcb71d4362c 100644 --- a/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java +++ b/jdk/src/share/classes/javax/swing/text/html/StyleSheet.java @@ -460,15 +460,12 @@ public StyleSheet[] getStyleSheets() { * @since 1.3 */ public void importStyleSheet(URL url) { - try { - InputStream is; - - is = url.openStream(); - Reader r = new BufferedReader(new InputStreamReader(is)); + try (InputStream is = url.openStream(); + InputStreamReader isr = new InputStreamReader(is); + Reader r = new BufferedReader(isr)) + { CssParser parser = new CssParser(); parser.parse(url, r, false, true); - r.close(); - is.close(); } catch (Throwable e) { // on error we simply have no styles... the html // will look mighty wrong but still function. diff --git a/jdk/src/share/classes/sun/awt/DebugSettings.java b/jdk/src/share/classes/sun/awt/DebugSettings.java index aaab07eeb9b..89ffeade5e9 100644 --- a/jdk/src/share/classes/sun/awt/DebugSettings.java +++ b/jdk/src/share/classes/sun/awt/DebugSettings.java @@ -178,9 +178,9 @@ private void loadFileProperties() { File propFile = new File(propPath); try { println("Reading debug settings from '" + propFile.getCanonicalPath() + "'..."); - FileInputStream fin = new FileInputStream(propFile); - props.load(fin); - fin.close(); + try (FileInputStream fin = new FileInputStream(propFile)) { + props.load(fin); + } } catch ( FileNotFoundException fne ) { println("Did not find settings file."); } catch ( IOException ioe ) { diff --git a/jdk/src/share/classes/sun/awt/FontConfiguration.java b/jdk/src/share/classes/sun/awt/FontConfiguration.java index 93e38e06e2e..66dc8f67f0c 100644 --- a/jdk/src/share/classes/sun/awt/FontConfiguration.java +++ b/jdk/src/share/classes/sun/awt/FontConfiguration.java @@ -48,7 +48,6 @@ import java.util.Vector; import sun.font.CompositeFontDescriptor; import sun.font.SunFontManager; -import sun.font.FontManagerFactory; import sun.font.FontUtilities; import sun.util.logging.PlatformLogger; @@ -199,14 +198,12 @@ private void readFontConfigFile(File f) { getInstalledFallbackFonts(javaLib); if (f != null) { - try { - FileInputStream in = new FileInputStream(f.getPath()); + try (FileInputStream in = new FileInputStream(f.getPath())) { if (isProperties) { loadProperties(in); } else { loadBinary(in); } - in.close(); if (FontUtilities.debugFonts()) { logger.config("Read logical font configuration from " + f); } diff --git a/jdk/src/share/classes/sun/print/PSPrinterJob.java b/jdk/src/share/classes/sun/print/PSPrinterJob.java index c286400ce5b..ec8343946fd 100644 --- a/jdk/src/share/classes/sun/print/PSPrinterJob.java +++ b/jdk/src/share/classes/sun/print/PSPrinterJob.java @@ -397,11 +397,12 @@ private static Properties initProps() { } // Load property file - InputStream in = - new BufferedInputStream(new FileInputStream(f.getPath())); Properties props = new Properties(); - props.load(in); - in.close(); + try (FileInputStream is = new FileInputStream(f.getPath()); + BufferedInputStream bis = new BufferedInputStream(is)) + { + props.load(bis); + } return props; } catch (Exception e){ return (Properties)null; diff --git a/jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java b/jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java index 6c28d201779..f4f9e913281 100644 --- a/jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java +++ b/jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java @@ -27,8 +27,6 @@ import sun.awt.FontConfiguration; import sun.awt.X11FontManager; -import sun.font.FontUtilities; -import sun.font.SunFontManager; import sun.util.logging.PlatformLogger; import java.io.File; @@ -177,7 +175,9 @@ protected void setOsNameAndVersion(){ * For Ubuntu the ID is "Ubuntu". */ Properties props = new Properties(); - props.load(new FileInputStream(f)); + try (FileInputStream fis = new FileInputStream(f)) { + props.load(fis); + } osName = props.getProperty("DISTRIB_ID"); osVersion = props.getProperty("DISTRIB_RELEASE"); } diff --git a/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java b/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java index ecb813de507..44983445bb4 100644 --- a/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java +++ b/jdk/src/solaris/classes/sun/font/FcFontConfiguration.java @@ -317,7 +317,9 @@ protected void setOsNameAndVersion() { * For Ubuntu the ID is "Ubuntu". */ Properties props = new Properties(); - props.load(new FileInputStream(f)); + try (FileInputStream fis = new FileInputStream(f)) { + props.load(fis); + } osName = props.getProperty("DISTRIB_ID"); osVersion = props.getProperty("DISTRIB_RELEASE"); } else if ((f = new File("/etc/redhat-release")).canRead()) { @@ -400,10 +402,9 @@ private void writeFcInfo() { File dir = fcInfoFile.getParentFile(); dir.mkdirs(); File tempFile = Files.createTempFile(dir.toPath(), "fcinfo", null).toFile(); - FileOutputStream fos = new FileOutputStream(tempFile); - props.store(fos, - "JDK Font Configuration Generated File: *Do Not Edit*"); - fos.close(); + try (FileOutputStream fos = new FileOutputStream(tempFile)) { + props.store(fos, "JDK Font Configuration Generated File: *Do Not Edit*"); + } boolean renamed = tempFile.renameTo(fcInfoFile); if (!renamed && FontUtilities.debugFonts()) { System.out.println("rename failed"); From dcddd9f750865d5abe7e5ed54164727c1f29d336 Mon Sep 17 00:00:00 2001 From: Timofei Pushkin Date: Fri, 29 Aug 2025 16:13:06 +0200 Subject: [PATCH 2/6] Resolve conflicts --- .../com/sun/java/swing/plaf/gtk/Metacity.java | 29 ++----------------- .../media/sound/StandardMidiFileWriter.java | 14 --------- .../javax/swing/text/html/HTMLEditorKit.java | 14 +-------- 3 files changed, 3 insertions(+), 54 deletions(-) diff --git a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java index 8b302c8bdbb..b874164ff1a 100644 --- a/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java +++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java @@ -531,42 +531,17 @@ public Object run() { URL url = new URL(new File(userHome).toURI().toURL(), ".gconf/apps/metacity/general/%25gconf.xml"); // Pending: verify character encoding spec for gconf -<<<<<<< HEAD:jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java - Reader reader = new InputStreamReader(url.openStream(), "ISO-8859-1"); - char[] buf = new char[1024]; StringBuffer strBuf = new StringBuffer(); - int n; - while ((n = reader.read(buf)) >= 0) { - strBuf.append(buf, 0, n); -||||||| parent of fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java - Reader reader = new InputStreamReader(url.openStream(), - ISO_8859_1); - char[] buf = new char[1024]; - StringBuilder sb = new StringBuilder(); - int n; - while ((n = reader.read(buf)) >= 0) { - sb.append(buf, 0, n); -======= - StringBuilder sb = new StringBuilder(); try (InputStream in = url.openStream(); - Reader reader = new InputStreamReader(in, ISO_8859_1)) + Reader reader = new InputStreamReader(in, "ISO-8859-1")) { char[] buf = new char[1024]; int n; while ((n = reader.read(buf)) >= 0) { - sb.append(buf, 0, n); + strBuf.append(buf, 0, n); } ->>>>>>> fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java } -<<<<<<< HEAD:jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java - reader.close(); String str = strBuf.toString(); -||||||| parent of fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java - reader.close(); - String str = sb.toString(); -======= - String str = sb.toString(); ->>>>>>> fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java if (str != null) { String strLowerCase = str.toLowerCase(); int i = strLowerCase.indexOf(">>>>>> fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/com/sun/media/sound/StandardMidiFileWriter.java } //================================================================================= diff --git a/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java index 727bb5bd44b..07e43d7e560 100644 --- a/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java +++ b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java @@ -391,22 +391,10 @@ public StyleSheet getStyleSheet() { if (defaultStyles == null) { defaultStyles = new StyleSheet(); appContext.put(DEFAULT_STYLES_KEY, defaultStyles); -<<<<<<< HEAD:jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java - try { - InputStream is = HTMLEditorKit.getResourceAsStream(DEFAULT_CSS); - Reader r = new BufferedReader( - new InputStreamReader(is, "ISO-8859-1")); -||||||| parent of fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/javax/swing/text/html/HTMLEditorKit.java - try { - InputStream is = HTMLEditorKit.getResourceAsStream(DEFAULT_CSS); - Reader r = new BufferedReader( - new InputStreamReader(is, ISO_8859_1)); -======= try (InputStream is = HTMLEditorKit.getResourceAsStream(DEFAULT_CSS); - InputStreamReader isr = new InputStreamReader(is, ISO_8859_1); + InputStreamReader isr = new InputStreamReader(is, "ISO-8859-1"); Reader r = new BufferedReader(isr)) { ->>>>>>> fecde385a66 (8274893: Update java.desktop classes to use try-with-resources):src/java.desktop/share/classes/javax/swing/text/html/HTMLEditorKit.java defaultStyles.loadRules(r, null); } catch (Throwable e) { // on error we simply have no styles... the html From 1384ca0ec41f4c462a9d9b6e907c50c17c12f4b7 Mon Sep 17 00:00:00 2001 From: Timofei Pushkin Date: Fri, 29 Aug 2025 16:26:21 +0200 Subject: [PATCH 3/6] Bring back required imports --- jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java b/jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java index f4f9e913281..036e78cbfd8 100644 --- a/jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java +++ b/jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java @@ -27,6 +27,8 @@ import sun.awt.FontConfiguration; import sun.awt.X11FontManager; +import sun.font.FontUtilities; +import sun.font.SunFontManager; import sun.util.logging.PlatformLogger; import java.io.File; From 832c3c3bb4c132b025e7d3043b40be0d2d025a95 Mon Sep 17 00:00:00 2001 From: Timofei Pushkin Date: Fri, 29 Aug 2025 17:09:06 +0200 Subject: [PATCH 4/6] Fall back to try-finally where pre-existing variables are used --- .../com/sun/media/sound/JARSoundbankReader.java | 4 +++- .../com/sun/media/sound/SoftSynthesizer.java | 11 +++++++++-- jdk/src/share/classes/java/awt/Font.java | 5 ++++- jdk/src/share/classes/java/beans/Beans.java | 4 +++- jdk/src/share/classes/javax/imageio/ImageIO.java | 15 +++++++++++---- 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/jdk/src/share/classes/com/sun/media/sound/JARSoundbankReader.java b/jdk/src/share/classes/com/sun/media/sound/JARSoundbankReader.java index 298ab3593bb..cdb020784fd 100644 --- a/jdk/src/share/classes/com/sun/media/sound/JARSoundbankReader.java +++ b/jdk/src/share/classes/com/sun/media/sound/JARSoundbankReader.java @@ -88,7 +88,7 @@ public Soundbank getSoundbank(URL url) "META-INF/services/javax.sound.midi.Soundbank"); if (stream == null) return null; - try (stream) { + try { BufferedReader r = new BufferedReader(new InputStreamReader(stream)); String line = r.readLine(); while (line != null) { @@ -106,6 +106,8 @@ public Soundbank getSoundbank(URL url) } line = r.readLine(); } + } finally { + stream.close(); } if (soundbanks.size() == 0) return null; diff --git a/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java b/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java index 029c395b644..8b91da05d07 100644 --- a/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java +++ b/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java @@ -741,8 +741,10 @@ public InputStream run() { InputStream is = AccessController.doPrivileged(action); if(is == null) continue; Soundbank sbk; - try (is) { + try { sbk = MidiSystem.getSoundbank(new BufferedInputStream(is)); + } finally { + is.close(); } if (sbk != null) { defaultSoundBank = sbk; @@ -783,9 +785,14 @@ public InputStream run() { return null; }); if (out != null) { - try (out) { + try { ((SF2Soundbank) defaultSoundBank).save(out); } catch (final IOException ignored) { + } finally { + try { + out.close(); + } catch (final IOException ignored) { + } } } } diff --git a/jdk/src/share/classes/java/awt/Font.java b/jdk/src/share/classes/java/awt/Font.java index ecc31169ad0..b62c83839f6 100644 --- a/jdk/src/share/classes/java/awt/Font.java +++ b/jdk/src/share/classes/java/awt/Font.java @@ -930,7 +930,7 @@ public OutputStream run() throws IOException { if (tracker != null) { tracker.set(tFile, outStream); } - try (outStream) { /* don't close the input stream */ + try { byte[] buf = new byte[8192]; for (;;) { int bytesRead = fontStream.read(buf); @@ -951,6 +951,9 @@ public OutputStream run() throws IOException { } outStream.write(buf, 0, bytesRead); } + /* don't close the input stream */ + } finally { + outStream.close(); } /* After all references to a Font2D are dropped, the file * will be removed. To support long-lived AppContexts, diff --git a/jdk/src/share/classes/java/beans/Beans.java b/jdk/src/share/classes/java/beans/Beans.java index bcd19adcb12..f121ae52cbc 100644 --- a/jdk/src/share/classes/java/beans/Beans.java +++ b/jdk/src/share/classes/java/beans/Beans.java @@ -181,7 +181,7 @@ public static Object instantiate(ClassLoader cls, String beanName, BeanContext b else ins = cls.getResourceAsStream(serName); if (ins != null) { - try (ins) { + try { if (cls == null) { oins = new ObjectInputStream(ins); } else { @@ -194,6 +194,8 @@ public static Object instantiate(ClassLoader cls, String beanName, BeanContext b // Drop through and try opening the class. But remember // the exception in case we can't find the class either. serex = ex; + } finally { + ins.close(); } } diff --git a/jdk/src/share/classes/javax/imageio/ImageIO.java b/jdk/src/share/classes/javax/imageio/ImageIO.java index 18737e8baa4..9552e0e34c2 100644 --- a/jdk/src/share/classes/javax/imageio/ImageIO.java +++ b/jdk/src/share/classes/javax/imageio/ImageIO.java @@ -1408,11 +1408,13 @@ public static BufferedImage read(URL input) throws IOException { throw new IIOException("Can't create an ImageInputStream!"); } BufferedImage bi; - try (istream) { + try { bi = read(stream); if (bi == null) { stream.close(); } + } finally { + istream.close(); } return bi; } @@ -1454,10 +1456,11 @@ public static BufferedImage read(ImageInputStream stream) ImageReadParam param = reader.getDefaultReadParam(); reader.setInput(stream, true, true); BufferedImage bi; - try (stream) { + try { bi = reader.read(0, param); } finally { reader.dispose(); + stream.close(); } return bi; } @@ -1539,8 +1542,10 @@ public static boolean write(RenderedImage im, if (stream == null) { throw new IIOException("Can't create an ImageOutputStream!"); } - try (stream) { + try { return doWrite(im, writer, stream); + } finally { + stream.close(); } } @@ -1577,8 +1582,10 @@ public static boolean write(RenderedImage im, if (stream == null) { throw new IIOException("Can't create an ImageOutputStream!"); } - try (stream) { + try { return doWrite(im, getWriter(im, formatName), stream); + } finally { + stream.close(); } } From 605f1e884aa3ef91a8645d8df44b917c1ade0345 Mon Sep 17 00:00:00 2001 From: Timofei Pushkin Date: Mon, 1 Sep 2025 08:47:33 +0200 Subject: [PATCH 5/6] Use IOUtils.readAllBytes(...) --- .../classes/com/sun/imageio/plugins/png/PNGImageReader.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java b/jdk/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java index e78361b386b..defecf46418 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java @@ -59,6 +59,7 @@ import com.sun.imageio.plugins.common.SubImageInputStream; import java.io.ByteArrayOutputStream; import sun.awt.image.ByteInterleavedRaster; +import sun.misc.IOUtils; class PNGImageDataEnumeration implements Enumeration { @@ -621,7 +622,7 @@ private void parse_tRNS_chunk(int chunkLength) throws IOException { private static byte[] inflate(byte[] b) throws IOException { InputStream bais = new ByteArrayInputStream(b); try (InputStream iis = new InflaterInputStream(bais)) { - return iis.readAllBytes(); + return IOUtils.readAllBytes(iis); } } From 3fd18e4f2d4c949cf6803a8dafe004bcb5b02a04 Mon Sep 17 00:00:00 2001 From: Timofei Pushkin Date: Mon, 1 Sep 2025 14:48:26 +0200 Subject: [PATCH 6/6] Bring back old formatting in JARSoundbankReader --- .../classes/com/sun/media/sound/JARSoundbankReader.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/jdk/src/share/classes/com/sun/media/sound/JARSoundbankReader.java b/jdk/src/share/classes/com/sun/media/sound/JARSoundbankReader.java index cdb020784fd..4cc1c4de4a8 100644 --- a/jdk/src/share/classes/com/sun/media/sound/JARSoundbankReader.java +++ b/jdk/src/share/classes/com/sun/media/sound/JARSoundbankReader.java @@ -88,7 +88,8 @@ public Soundbank getSoundbank(URL url) "META-INF/services/javax.sound.midi.Soundbank"); if (stream == null) return null; - try { + try + { BufferedReader r = new BufferedReader(new InputStreamReader(stream)); String line = r.readLine(); while (line != null) { @@ -106,7 +107,9 @@ public Soundbank getSoundbank(URL url) } line = r.readLine(); } - } finally { + } + finally + { stream.close(); } if (soundbanks.size() == 0)