From abaa3dd03fa728c67759a448ef7142a0dbd9c89d Mon Sep 17 00:00:00 2001 From: Nikolay Chashnikov Date: Thu, 9 Feb 2023 10:10:12 +0100 Subject: [PATCH] cleanup: migrate code to use 'try' with resources It became possible after these modules were migrated to Java 7 (IDEA-297573). GitOrigin-RevId: 4899ecf2fcd6715e7e746f0ec5803b5e35756bb1 --- .../rt/execution/CommandLineWrapper.java | 8 +--- .../rt/execution/application/AppMainV2.java | 12 +---- .../junit/ComparisonFailureData.java | 6 +-- .../ForkedByModuleSplitter.java | 22 +++------ .../testFrameworks/ForkedDebuggerHelper.java | 6 +-- .../jps/incremental/BinaryContent.java | 6 +-- .../jetbrains/jps/javac/JpsFileObject.java | 12 +---- .../jetbrains/jps/javac/ZipFileObject.java | 12 +---- .../model/ExternalSystemException.java | 6 +-- .../rt/execution/ForkedDebuggerHelper.java | 18 ++------ .../intellij/openapi/util/io/FileUtilRt.java | 46 ++++--------------- .../src/com/intellij/util/ReadEnv.java | 8 +--- .../java/run/CucumberJvmSMFormatterUtil.java | 9 +--- .../DefaultSerializationService.java | 12 +---- ...onProcessingModelSerializationService.java | 12 +---- ...iptClasspathModelSerializationService.java | 12 +---- .../ExternalProjectSerializationService.java | 12 +---- .../ExternalTestsSerializationService.java | 12 +---- .../GradleExtensionsSerializationService.java | 12 +---- ...ojectDependenciesSerializationService.java | 12 +---- ...RepositoriesModelSerializationService.java | 12 +---- .../IdeaProjectSerializationService.java | 12 +---- .../intellij/util/lang/java6/FileLoader.java | 18 +------- .../intellij/util/lang/java6/JarLoader.java | 5 +- .../util/lang/java6/SecureJarLoader.java | 6 +-- .../intellij/junit4/JUnit4TestRunnerUtil.java | 8 +--- .../com/intellij/rt/junit/JUnitStarter.java | 12 +---- .../common/MavenModuleMap.java | 6 +-- .../rt/testng/RemoteTestNGStarter.java | 6 +-- .../rt/testng/TestNGXmlSuiteHelper.java | 6 +-- 30 files changed, 63 insertions(+), 283 deletions(-) diff --git a/java/java-runtime/src/com/intellij/rt/execution/CommandLineWrapper.java b/java/java-runtime/src/com/intellij/rt/execution/CommandLineWrapper.java index a689042316a1..c710430426d9 100644 --- a/java/java-runtime/src/com/intellij/rt/execution/CommandLineWrapper.java +++ b/java/java-runtime/src/com/intellij/rt/execution/CommandLineWrapper.java @@ -69,8 +69,7 @@ public final class CommandLineWrapper { List properties = Collections.emptyList(); String[] mainArgs; - JarInputStream inputStream = new JarInputStream(new FileInputStream(jarFile)); - try { + try (JarInputStream inputStream = new JarInputStream(new FileInputStream(jarFile))) { Manifest manifest = inputStream.getManifest(); String vmOptions = manifest != null ? manifest.getMainAttributes().getValue("VM-Options") : null; @@ -88,7 +87,6 @@ public final class CommandLineWrapper { } } finally { - inputStream.close(); jarFile.deleteOnExit(); } @@ -194,15 +192,13 @@ public final class CommandLineWrapper { /** @noinspection ResultOfMethodCallIgnored */ private static List readLinesAndDeleteFile(File file) throws IOException { - BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8)); - try { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))) { List lines = new ArrayList<>(); String line; while ((line = reader.readLine()) != null) lines.add(line); return lines; } finally { - reader.close(); file.delete(); } } diff --git a/java/java-runtime/src/com/intellij/rt/execution/application/AppMainV2.java b/java/java-runtime/src/com/intellij/rt/execution/application/AppMainV2.java index 1d3b2e24b950..badd43d0ebf0 100644 --- a/java/java-runtime/src/com/intellij/rt/execution/application/AppMainV2.java +++ b/java/java-runtime/src/com/intellij/rt/execution/application/AppMainV2.java @@ -47,10 +47,8 @@ public final class AppMainV2 { @Override public void run() { try { - Socket client = new Socket("127.0.0.1", portNumber); - try { - BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), "US-ASCII")); - try { + try (Socket client = new Socket("127.0.0.1", portNumber)) { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream(), "US-ASCII"))) { while (true) { String msg = reader.readLine(); if (msg == null || "TERM".equals(msg)) { @@ -66,12 +64,6 @@ public final class AppMainV2 { } } } - finally { - reader.close(); - } - } - finally { - client.close(); } } catch (Exception ignored) { } diff --git a/java/java-runtime/src/com/intellij/rt/execution/junit/ComparisonFailureData.java b/java/java-runtime/src/com/intellij/rt/execution/junit/ComparisonFailureData.java index 0f6cfaeba568..81f7a90facbc 100644 --- a/java/java-runtime/src/com/intellij/rt/execution/junit/ComparisonFailureData.java +++ b/java/java-runtime/src/com/intellij/rt/execution/junit/ComparisonFailureData.java @@ -149,13 +149,9 @@ public class ComparisonFailureData { try { //noinspection SSBasedInspection File tempFile = File.createTempFile(expectedOrActualPrefix, ""); - OutputStream stream = new FileOutputStream(tempFile); - try { + try (OutputStream stream = new FileOutputStream(tempFile)) { stream.write(text.getBytes(StandardCharsets.UTF_8), 0, text.length()); } - finally { - stream.close(); - } attrs.put(expectedOrActualPrefix + "File", tempFile.getAbsolutePath()); attrs.put(expectedOrActualPrefix + "IsTempFile", "true"); return; diff --git a/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedByModuleSplitter.java b/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedByModuleSplitter.java index 0eedf71c3dfe..53f1805b890c 100644 --- a/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedByModuleSplitter.java +++ b/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedByModuleSplitter.java @@ -88,13 +88,9 @@ public abstract class ForkedByModuleSplitter { if ("ARGS_FILE".equals(myDynamicClasspath)) { File argFile = File.createTempFile("arg_file", null); argFile.deleteOnExit(); - FileOutputStream writer = new FileOutputStream(argFile); - try { + try (FileOutputStream writer = new FileOutputStream(argFile)) { writer.write(classpath.getBytes(Charset.defaultCharset())); } - finally { - writer.close(); - } builder.add("@" + argFile.getAbsolutePath()); } else { @@ -131,17 +127,13 @@ public abstract class ForkedByModuleSplitter { @Override public void run() { try { - final BufferedReader inputReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); - try { + try (BufferedReader inputReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) { while (true) { String line = inputReader.readLine(); if (line == null) break; outputStream.println(line); } } - finally { - inputReader.close(); - } } catch (UnsupportedEncodingException ignored) { } catch (IOException e) { @@ -154,8 +146,7 @@ public abstract class ForkedByModuleSplitter { //read file with classes grouped by module protected int splitPerModule(String repeatCount) throws IOException { int result = 0; - final BufferedReader perDirReader = new BufferedReader(new FileReader(myWorkingDirsPath)); - try { + try (BufferedReader perDirReader = new BufferedReader(new FileReader(myWorkingDirsPath))) { final String packageName = perDirReader.readLine(); String workingDir; while ((workingDir = perDirReader.readLine()) != null) { @@ -186,7 +177,9 @@ public abstract class ForkedByModuleSplitter { } String filters = perDirReader.readLine(); - final int childResult = startPerModuleFork(moduleName, classNames, packageName, workingDir, classpath, moduleOptions, repeatCount, result, filters != null ? filters : ""); + final int childResult = + startPerModuleFork(moduleName, classNames, packageName, workingDir, classpath, moduleOptions, repeatCount, result, + filters != null ? filters : ""); result = Math.min(childResult, result); } catch (Exception e) { @@ -194,9 +187,6 @@ public abstract class ForkedByModuleSplitter { } } } - finally { - perDirReader.close(); - } return result; } diff --git a/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedDebuggerHelper.java b/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedDebuggerHelper.java index b67967bcb412..145f095dd43a 100644 --- a/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedDebuggerHelper.java +++ b/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedDebuggerHelper.java @@ -16,8 +16,7 @@ public class ForkedDebuggerHelper { // copied from NetUtils protected static int findAvailableSocketPort() throws IOException { - final ServerSocket serverSocket = new ServerSocket(0); - try { + try (ServerSocket serverSocket = new ServerSocket(0)) { int port = serverSocket.getLocalPort(); // workaround for linux : calling close() immediately after opening socket // may result that socket is not closed @@ -33,9 +32,6 @@ public class ForkedDebuggerHelper { } return port; } - finally { - serverSocket.close(); - } } public void setupDebugger(List parameters) throws IOException { diff --git a/jps/jps-builders-6/src/org/jetbrains/jps/incremental/BinaryContent.java b/jps/jps-builders-6/src/org/jetbrains/jps/incremental/BinaryContent.java index e8ca86760d2b..028faf4c59c5 100644 --- a/jps/jps-builders-6/src/org/jetbrains/jps/incremental/BinaryContent.java +++ b/jps/jps-builders-6/src/org/jetbrains/jps/incremental/BinaryContent.java @@ -73,13 +73,9 @@ public final class BinaryContent { } private static void _writeToFile(final File file, BinaryContent content) throws IOException { - final OutputStream stream = new FileOutputStream(file); - try { + try (OutputStream stream = new FileOutputStream(file)) { stream.write(content.getBuffer(), content.getOffset(), content.getLength()); } - finally { - stream.close(); - } } } diff --git a/jps/jps-builders-6/src/org/jetbrains/jps/javac/JpsFileObject.java b/jps/jps-builders-6/src/org/jetbrains/jps/javac/JpsFileObject.java index 88a14ab2a778..5645eadc4707 100644 --- a/jps/jps-builders-6/src/org/jetbrains/jps/javac/JpsFileObject.java +++ b/jps/jps-builders-6/src/org/jetbrains/jps/javac/JpsFileObject.java @@ -61,10 +61,8 @@ public abstract class JpsFileObject extends SimpleJavaFileObject { @NotNull protected static CharSequence loadCharContent(@NotNull File file, @Nullable String encoding) throws IOException { // FileUtil.loadText clones char array if length mismatch - FileInputStream stream = new FileInputStream(file); - try { - final Reader reader = encoding == null ? new InputStreamReader(stream) : new InputStreamReader(stream, encoding); - try { + try (FileInputStream stream = new FileInputStream(file)) { + try (Reader reader = encoding == null ? new InputStreamReader(stream) : new InputStreamReader(stream, encoding)) { // channel allows to avoid extra call to get file size because fd is reused, see Files.readAllBytes char[] chars = new char[(int)stream.getChannel().size()]; int count = 0; @@ -77,12 +75,6 @@ public abstract class JpsFileObject extends SimpleJavaFileObject { } return CharBuffer.wrap(chars, 0, count); } - finally { - reader.close(); - } - } - finally { - stream.close(); } } diff --git a/jps/jps-builders-6/src/org/jetbrains/jps/javac/ZipFileObject.java b/jps/jps-builders-6/src/org/jetbrains/jps/javac/ZipFileObject.java index 47668916640d..b9ff35daccc3 100644 --- a/jps/jps-builders-6/src/org/jetbrains/jps/javac/ZipFileObject.java +++ b/jps/jps-builders-6/src/org/jetbrains/jps/javac/ZipFileObject.java @@ -102,18 +102,10 @@ public final class ZipFileObject extends JpsFileObject { public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException { // todo: consider adding content caching if needed // todo: currently ignoreEncodingErrors is not honored. Do we actually need to support it? - final InputStream in = openInputStream(); - try { - final InputStreamReader reader = myEncoding != null ? new InputStreamReader(in, myEncoding) : new InputStreamReader(in); - try { + try (InputStream in = openInputStream()) { + try (InputStreamReader reader = myEncoding != null ? new InputStreamReader(in, myEncoding) : new InputStreamReader(in)) { return CharBuffer.wrap(FileUtilRt.loadText(reader, (int)myEntry.getSize())); } - finally { - reader.close(); - } - } - finally { - in.close(); } } } diff --git a/platform/external-system-rt/src/com/intellij/openapi/externalSystem/model/ExternalSystemException.java b/platform/external-system-rt/src/com/intellij/openapi/externalSystem/model/ExternalSystemException.java index 48e61ea47e14..12588af390c6 100644 --- a/platform/external-system-rt/src/com/intellij/openapi/externalSystem/model/ExternalSystemException.java +++ b/platform/external-system-rt/src/com/intellij/openapi/externalSystem/model/ExternalSystemException.java @@ -52,13 +52,9 @@ public class ExternalSystemException extends RuntimeException { } StringWriter stringWriter = new StringWriter(); - PrintWriter printWriter = new PrintWriter(stringWriter); - try { + try (PrintWriter printWriter = new PrintWriter(stringWriter)) { cause.printStackTrace(printWriter); } - finally { - printWriter.close(); - } myOriginalReason = stringWriter.toString(); } diff --git a/platform/external-system-rt/src/com/intellij/openapi/externalSystem/rt/execution/ForkedDebuggerHelper.java b/platform/external-system-rt/src/com/intellij/openapi/externalSystem/rt/execution/ForkedDebuggerHelper.java index e9ffc134676b..3c1c3de7fca7 100644 --- a/platform/external-system-rt/src/com/intellij/openapi/externalSystem/rt/execution/ForkedDebuggerHelper.java +++ b/platform/external-system-rt/src/com/intellij/openapi/externalSystem/rt/execution/ForkedDebuggerHelper.java @@ -58,29 +58,20 @@ public final class ForkedDebuggerHelper { private static void send(String debuggerId, String processName, String processParameters, int dispatchPort) throws IOException { String dispatchAddr = getAddrFromProperty(); - Socket socket = new Socket(dispatchAddr, dispatchPort); - try { - DataOutputStream stream = new DataOutputStream(socket.getOutputStream()); - try { + try (Socket socket = new Socket(dispatchAddr, dispatchPort)) { + try (DataOutputStream stream = new DataOutputStream(socket.getOutputStream())) { stream.writeUTF(debuggerId); stream.writeUTF(processName); stream.writeUTF(processParameters); // wait for the signal handling int read = socket.getInputStream().read(); } - finally { - stream.close(); - } - } - finally { - socket.close(); } } // copied from NetUtils private static int findAvailableSocketPort() throws IOException { - final ServerSocket serverSocket = new ServerSocket(0); - try { + try (ServerSocket serverSocket = new ServerSocket(0)) { int port = serverSocket.getLocalPort(); // workaround for linux : calling close() immediately after opening socket // may result that socket is not closed @@ -101,9 +92,6 @@ public final class ForkedDebuggerHelper { return port; } - finally { - serverSocket.close(); - } } public static String getAddrFromProperty() { diff --git a/platform/util-rt/src/com/intellij/openapi/util/io/FileUtilRt.java b/platform/util-rt/src/com/intellij/openapi/util/io/FileUtilRt.java index df8551f773e6..92f53150c2ee 100644 --- a/platform/util-rt/src/com/intellij/openapi/util/io/FileUtilRt.java +++ b/platform/util-rt/src/com/intellij/openapi/util/io/FileUtilRt.java @@ -627,24 +627,18 @@ public class FileUtilRt { @NotNull public static char[] loadFileText(@NotNull File file, @Nullable String encoding) throws IOException { InputStream stream = new FileInputStream(file); - Reader reader = encoding == null ? new InputStreamReader(stream, Charset.defaultCharset()) : new InputStreamReader(stream, encoding); - try { + try (Reader reader = encoding == null + ? new InputStreamReader(stream, Charset.defaultCharset()) + : new InputStreamReader(stream, encoding)) { return loadText(reader, (int)file.length()); } - finally { - reader.close(); - } } @NotNull public static char[] loadFileText(@NotNull File file, @NotNull Charset encoding) throws IOException { - Reader reader = new InputStreamReader(new FileInputStream(file), encoding); - try { + try (Reader reader = new InputStreamReader(new FileInputStream(file), encoding)) { return loadText(reader, (int)file.length()); } - finally { - reader.close(); - } } @NotNull @@ -682,14 +676,10 @@ public class FileUtilRt { @NotNull public static List loadLines(@NotNull String path, @Nullable String encoding) throws IOException { InputStream stream = new FileInputStream(path); - BufferedReader reader = - new BufferedReader(encoding == null ? new InputStreamReader(stream, Charset.defaultCharset()) : new InputStreamReader(stream, encoding)); - try { + try (BufferedReader reader = new BufferedReader( + encoding == null ? new InputStreamReader(stream, Charset.defaultCharset()) : new InputStreamReader(stream, encoding))) { return loadLines(reader); } - finally { - reader.close(); - } } @NotNull @@ -925,18 +915,10 @@ public class FileUtilRt { return; } - FileOutputStream fos = new FileOutputStream(toFile); - try { - FileInputStream fis = new FileInputStream(fromFile); - try { + try (FileOutputStream fos = new FileOutputStream(toFile)) { + try (FileInputStream fis = new FileInputStream(fromFile)) { copy(fis, fos); } - finally { - fis.close(); - } - } - finally { - fos.close(); } long timeStamp = fromFile.lastModified(); @@ -950,18 +932,10 @@ public class FileUtilRt { public static void copy(@NotNull InputStream inputStream, @NotNull OutputStream outputStream) throws IOException { if (USE_FILE_CHANNELS && inputStream instanceof FileInputStream && outputStream instanceof FileOutputStream) { - FileChannel fromChannel = ((FileInputStream)inputStream).getChannel(); - try { - FileChannel toChannel = ((FileOutputStream)outputStream).getChannel(); - try { + try (FileChannel fromChannel = ((FileInputStream)inputStream).getChannel()) { + try (FileChannel toChannel = ((FileOutputStream)outputStream).getChannel()) { fromChannel.transferTo(0, Long.MAX_VALUE, toChannel); } - finally { - toChannel.close(); - } - } - finally { - fromChannel.close(); } } else { diff --git a/platform/util-rt/src/com/intellij/util/ReadEnv.java b/platform/util-rt/src/com/intellij/util/ReadEnv.java index fbd3fa06173d..f4315d46046e 100644 --- a/platform/util-rt/src/com/intellij/util/ReadEnv.java +++ b/platform/util-rt/src/com/intellij/util/ReadEnv.java @@ -9,9 +9,8 @@ import java.util.Map; public final class ReadEnv { public static void main(String[] args) throws Exception { - @SuppressWarnings("UseOfSystemOutOrSystemErr") Writer out = new BufferedWriter(new OutputStreamWriter(System.out, - StandardCharsets.UTF_8)); - try { + try (Writer out = new BufferedWriter(new OutputStreamWriter(System.out, + StandardCharsets.UTF_8))) { for (Map.Entry each : System.getenv().entrySet()) { // On Windows, the environment may include variables that start with '=' (https://stackoverflow.com/questions/30102750). // Such variables break the output parser and are unimportant, hence are filtered out. @@ -23,8 +22,5 @@ public final class ReadEnv { out.write('\0'); } } - finally { - out.close(); - } } } diff --git a/plugins/cucumber-jvm-formatter/src/org/jetbrains/plugins/cucumber/java/run/CucumberJvmSMFormatterUtil.java b/plugins/cucumber-jvm-formatter/src/org/jetbrains/plugins/cucumber/java/run/CucumberJvmSMFormatterUtil.java index 4fdbdccd15f8..2a5881d1bae2 100644 --- a/plugins/cucumber-jvm-formatter/src/org/jetbrains/plugins/cucumber/java/run/CucumberJvmSMFormatterUtil.java +++ b/plugins/cucumber-jvm-formatter/src/org/jetbrains/plugins/cucumber/java/run/CucumberJvmSMFormatterUtil.java @@ -105,9 +105,7 @@ public final class CucumberJvmSMFormatterUtil { private static String readLineWithNumber(String filePath, int lineNumber) throws IOException { int currentLineNumber = 0; - FileReader fileStream = null; - try { - fileStream = new FileReader(filePath); + try (FileReader fileStream = new FileReader(filePath)) { BufferedReader bufferedReader = new BufferedReader(fileStream); String line; while ((line = bufferedReader.readLine()) != null) { @@ -117,11 +115,6 @@ public final class CucumberJvmSMFormatterUtil { } } } - finally { - if (fileStream != null) { - fileStream.close(); - } - } return null; } } diff --git a/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/tooling/serialization/DefaultSerializationService.java b/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/tooling/serialization/DefaultSerializationService.java index e5274e29a29b..fd685fb71e57 100644 --- a/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/tooling/serialization/DefaultSerializationService.java +++ b/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/tooling/serialization/DefaultSerializationService.java @@ -13,8 +13,7 @@ public final class DefaultSerializationService implements SerializationService { @Override public byte[] write(Object object, Class modelClazz) throws IOException { ByteArrayOutputStream os = new ByteArrayOutputStream(); - ObjectOutput outputStream = new ObjectOutputStream(os); - try { + try (ObjectOutput outputStream = new ObjectOutputStream(os)) { outputStream.writeObject(object); } catch (NotSerializableException e) { @@ -22,24 +21,17 @@ public final class DefaultSerializationService implements SerializationService { "Implement Serializable or provide related org.jetbrains.plugins.gradle.tooling.serialization.SerializationService for the tooling model: '%s'", object.getClass().getName()), e); } - finally { - outputStream.close(); - } return os.toByteArray(); } @Override public Object read(byte[] object, final Class modelClazz) throws IOException { - ObjectInput inputStream = new ClassLoaderObjectInputStream(modelClazz.getClassLoader(), new ByteArrayInputStream(object)); - try { + try (ObjectInput inputStream = new ClassLoaderObjectInputStream(modelClazz.getClassLoader(), new ByteArrayInputStream(object))) { return inputStream.readObject(); } catch (ClassNotFoundException e) { throw new IOException(e); } - finally { - inputStream.close(); - } } @Override diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/AnnotationProcessingModelSerializationService.java b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/AnnotationProcessingModelSerializationService.java index 6290ca5c136e..c3f66aa3adb9 100644 --- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/AnnotationProcessingModelSerializationService.java +++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/AnnotationProcessingModelSerializationService.java @@ -30,25 +30,17 @@ public final class AnnotationProcessingModelSerializationService implements Seri public byte[] write(AnnotationProcessingModel annotationProcessingModel, Class modelClazz) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); - IonWriter writer = createIonWriter().build(out); - try { + try (IonWriter writer = createIonWriter().build(out)) { write(writer, myWriteContext, annotationProcessingModel); } - finally { - writer.close(); - } return out.toByteArray(); } @Override public AnnotationProcessingModel read(byte[] object, Class modelClazz) throws IOException { - IonReader reader = IonReaderBuilder.standard().build(object); - try { + try (IonReader reader = IonReaderBuilder.standard().build(object)) { return read(reader, myReadContext); } - finally { - reader.close(); - } } private static void write(final IonWriter writer, final WriteContext context, final AnnotationProcessingModel model) throws IOException { diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/BuildScriptClasspathModelSerializationService.java b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/BuildScriptClasspathModelSerializationService.java index d95baff93a38..8f8f5c5cc0ce 100644 --- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/BuildScriptClasspathModelSerializationService.java +++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/BuildScriptClasspathModelSerializationService.java @@ -33,25 +33,17 @@ public final class BuildScriptClasspathModelSerializationService implements Seri @Override public byte[] write(BuildScriptClasspathModel classpathModel, Class modelClazz) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); - IonWriter writer = ToolingStreamApiUtils.createIonWriter().build(out); - try { + try (IonWriter writer = ToolingStreamApiUtils.createIonWriter().build(out)) { write(writer, myWriteContext, classpathModel); } - finally { - writer.close(); - } return out.toByteArray(); } @Override public BuildScriptClasspathModel read(byte[] object, Class modelClazz) throws IOException { - IonReader reader = IonReaderBuilder.standard().build(object); - try { + try (IonReader reader = IonReaderBuilder.standard().build(object)) { return read(reader, myReadContext); } - finally { - reader.close(); - } } @Override diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/ExternalProjectSerializationService.java b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/ExternalProjectSerializationService.java index 689050fb5c23..1aa700c08e82 100644 --- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/ExternalProjectSerializationService.java +++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/ExternalProjectSerializationService.java @@ -36,25 +36,17 @@ public final class ExternalProjectSerializationService implements SerializationS @Override public byte[] write(ExternalProject project, Class modelClazz) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); - IonWriter writer = ToolingStreamApiUtils.createIonWriter().build(out); - try { + try (IonWriter writer = ToolingStreamApiUtils.createIonWriter().build(out)) { writeProject(writer, myWriteContext, project); } - finally { - writer.close(); - } return out.toByteArray(); } @Override public ExternalProject read(byte[] object, Class modelClazz) throws IOException { - IonReader reader = IonReaderBuilder.standard().build(object); - try { + try (IonReader reader = IonReaderBuilder.standard().build(object)) { return readProject(reader, myReadContext); } - finally { - reader.close(); - } } @Override diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/ExternalTestsSerializationService.java b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/ExternalTestsSerializationService.java index 0273f90f73bb..92966ef0f324 100644 --- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/ExternalTestsSerializationService.java +++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/ExternalTestsSerializationService.java @@ -32,25 +32,17 @@ public final class ExternalTestsSerializationService implements SerializationSer @Override public byte[] write(ExternalTestsModel testsModel, Class modelClazz) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); - IonWriter writer = ToolingStreamApiUtils.createIonWriter().build(out); - try { + try (IonWriter writer = ToolingStreamApiUtils.createIonWriter().build(out)) { write(writer, myWriteContext, testsModel); } - finally { - writer.close(); - } return out.toByteArray(); } @Override public ExternalTestsModel read(byte[] object, Class modelClazz) throws IOException { - IonReader reader = IonReaderBuilder.standard().build(object); - try { + try (IonReader reader = IonReaderBuilder.standard().build(object)) { return read(reader, myReadContext); } - finally { - reader.close(); - } } @Override diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/GradleExtensionsSerializationService.java b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/GradleExtensionsSerializationService.java index 2447ccad6824..99398a2c0120 100644 --- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/GradleExtensionsSerializationService.java +++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/GradleExtensionsSerializationService.java @@ -28,25 +28,17 @@ public final class GradleExtensionsSerializationService implements Serialization @Override public byte[] write(GradleExtensions gradleExtensions, Class modelClazz) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); - IonWriter writer = ToolingStreamApiUtils.createIonWriter().build(out); - try { + try (IonWriter writer = ToolingStreamApiUtils.createIonWriter().build(out)) { write(writer, myWriteContext, gradleExtensions); } - finally { - writer.close(); - } return out.toByteArray(); } @Override public GradleExtensions read(byte[] object, Class modelClazz) throws IOException { - IonReader reader = IonReaderBuilder.standard().build(object); - try { + try (IonReader reader = IonReaderBuilder.standard().build(object)) { return read(reader, myReadContext); } - finally { - reader.close(); - } } @Override diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/ProjectDependenciesSerializationService.java b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/ProjectDependenciesSerializationService.java index 1c96747e2a4f..c5919f922829 100644 --- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/ProjectDependenciesSerializationService.java +++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/ProjectDependenciesSerializationService.java @@ -31,25 +31,17 @@ public final class ProjectDependenciesSerializationService implements Serializat @Override public byte[] write(ProjectDependencies dependencies, Class modelClazz) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); - IonWriter writer = createIonWriter().build(out); - try { + try (IonWriter writer = createIonWriter().build(out)) { write(writer, myWriteContext, dependencies); } - finally { - writer.close(); - } return out.toByteArray(); } @Override public ProjectDependencies read(byte[] object, Class modelClazz) throws IOException { - IonReader reader = IonReaderBuilder.standard().build(object); - try { + try (IonReader reader = IonReaderBuilder.standard().build(object)) { return read(reader, myReadContext); } - finally { - reader.close(); - } } @Override diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/RepositoriesModelSerializationService.java b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/RepositoriesModelSerializationService.java index b1fec478bc30..41051392c038 100644 --- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/RepositoriesModelSerializationService.java +++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/RepositoriesModelSerializationService.java @@ -32,25 +32,17 @@ public class RepositoriesModelSerializationService implements SerializationServi @Override public byte[] write(RepositoriesModel repositoriesModel, Class modelClazz) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); - IonWriter writer = createIonWriter().build(out); - try { + try (IonWriter writer = createIonWriter().build(out)) { write(writer, myWriteContext, repositoriesModel); } - finally { - writer.close(); - } return out.toByteArray(); } @Override public RepositoriesModel read(byte[] object, Class modelClazz) throws IOException { - IonReader reader = IonReaderBuilder.standard().build(object); - try { + try (IonReader reader = IonReaderBuilder.standard().build(object)) { return read(reader, myReadContext); } - finally { - reader.close(); - } } @Override diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/internal/IdeaProjectSerializationService.java b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/internal/IdeaProjectSerializationService.java index a4e1fc46d613..389683552b8c 100644 --- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/internal/IdeaProjectSerializationService.java +++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/internal/IdeaProjectSerializationService.java @@ -48,8 +48,7 @@ public final class IdeaProjectSerializationService implements SerializationServi @Override public byte[] write(IdeaProject ideaProject, Class modelClazz) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); - IonWriter writer = createIonWriter().build(out); - try { + try (IonWriter writer = createIonWriter().build(out)) { GradleVersion gradleVersion = getBuildGradleVersion(ideaProject); myWriteContext.setGradleVersion(gradleVersion); writer.stepIn(IonType.STRUCT); @@ -57,16 +56,12 @@ public final class IdeaProjectSerializationService implements SerializationServi writer.stepOut(); writeProject(writer, myWriteContext, ideaProject); } - finally { - writer.close(); - } return out.toByteArray(); } @Override public IdeaProject read(byte[] object, Class modelClazz) throws IOException { - IonReader reader = IonReaderBuilder.standard().build(object); - try { + try (IonReader reader = IonReaderBuilder.standard().build(object)) { if (reader.next() == null) return null; reader.stepIn(); String gradleVersion = assertNotNull(readString(reader, "gradleVersion")); @@ -74,9 +69,6 @@ public final class IdeaProjectSerializationService implements SerializationServi myReadContext.setGradleVersion(GradleVersion.version(gradleVersion)); return readProject(reader, myReadContext); } - finally { - reader.close(); - } } @Override diff --git a/plugins/groovy/rt/classLoader/src/com/intellij/util/lang/java6/FileLoader.java b/plugins/groovy/rt/classLoader/src/com/intellij/util/lang/java6/FileLoader.java index 4625598d2c38..21bc2ca8152a 100644 --- a/plugins/groovy/rt/classLoader/src/com/intellij/util/lang/java6/FileLoader.java +++ b/plugins/groovy/rt/classLoader/src/com/intellij/util/lang/java6/FileLoader.java @@ -200,11 +200,8 @@ final class FileLoader extends Loader { File index = getIndexFileFile(); - DataInputStream reader = null; boolean isOk = false; - - try { - reader = new DataInputStream(new BufferedInputStream(new FileInputStream(index))); + try (DataInputStream reader = new DataInputStream(new BufferedInputStream(new FileInputStream(index)))) { if (DataInputOutputUtilRt.readINT(reader) == ourVersion) { ClasspathCache.LoaderData loaderData = new ClasspathCache.LoaderData(reader); isOk = true; @@ -217,13 +214,6 @@ final class FileLoader extends Loader { catch (IOException ignore) { } finally { - if (reader != null) { - try { - reader.close(); - } - catch (IOException ignore) { - } - } if (!isOk) { index.delete(); } @@ -322,13 +312,9 @@ final class FileLoader extends Loader { @NotNull @Override public byte[] getBytes() throws IOException { - InputStream stream = getInputStream(); - try { + try (InputStream stream = getInputStream()) { return FileUtilRt.loadBytes(stream, (int)myFile.length()); } - finally { - stream.close(); - } } } diff --git a/plugins/groovy/rt/classLoader/src/com/intellij/util/lang/java6/JarLoader.java b/plugins/groovy/rt/classLoader/src/com/intellij/util/lang/java6/JarLoader.java index 45f1a81f6a12..d61850e19c25 100644 --- a/plugins/groovy/rt/classLoader/src/com/intellij/util/lang/java6/JarLoader.java +++ b/plugins/groovy/rt/classLoader/src/com/intellij/util/lang/java6/JarLoader.java @@ -242,13 +242,10 @@ class JarLoader extends Loader { @Override public byte[] getBytes() throws IOException { ZipFile file = getZipFile(); - InputStream stream = null; - try { - stream = file.getInputStream(myEntry); + try (InputStream stream = file.getInputStream(myEntry)) { return FileUtilRt.loadBytes(stream, (int)myEntry.getSize()); } finally { - if (stream != null) stream.close(); releaseZipFile(file); } } diff --git a/plugins/groovy/rt/classLoader/src/com/intellij/util/lang/java6/SecureJarLoader.java b/plugins/groovy/rt/classLoader/src/com/intellij/util/lang/java6/SecureJarLoader.java index c56980597ee2..651455a88719 100644 --- a/plugins/groovy/rt/classLoader/src/com/intellij/util/lang/java6/SecureJarLoader.java +++ b/plugins/groovy/rt/classLoader/src/com/intellij/util/lang/java6/SecureJarLoader.java @@ -46,8 +46,7 @@ final class SecureJarLoader extends JarLoader { public byte[] getBytes() throws IOException { JarFile file = (JarFile)getZipFile(); try { - InputStream stream = file.getInputStream(myEntry); - try { + try (InputStream stream = file.getInputStream(myEntry)) { byte[] result = FileUtilRt.loadBytes(stream, (int)myEntry.getSize()); synchronized (myProtectionDomainMonitor) { if (myProtectionDomain == null) { @@ -58,9 +57,6 @@ final class SecureJarLoader extends JarLoader { } return result; } - finally { - stream.close(); - } } finally { releaseZipFile(file); diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java index f4916534b5ca..6552af58b823 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java @@ -34,9 +34,8 @@ public final class JUnit4TestRunnerUtil { // all tests in the package specified try { final Map> classMethods = new HashMap<>(); - BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(suiteClassName.substring(1)), - StandardCharsets.UTF_8)); - try { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(suiteClassName.substring(1)), + StandardCharsets.UTF_8))) { final String packageName = reader.readLine(); if (packageName == null) return null; @@ -113,9 +112,6 @@ public final class JUnit4TestRunnerUtil { } }); } - finally { - reader.close(); - } } catch (IOException e) { e.printStackTrace(); diff --git a/plugins/junit_rt/src/com/intellij/rt/junit/JUnitStarter.java b/plugins/junit_rt/src/com/intellij/rt/junit/JUnitStarter.java index ce72638c6580..9e4344bc1b32 100644 --- a/plugins/junit_rt/src/com/intellij/rt/junit/JUnitStarter.java +++ b/plugins/junit_rt/src/com/intellij/rt/junit/JUnitStarter.java @@ -120,13 +120,9 @@ public final class JUnitStarter { } try { final Socket socket = new Socket(InetAddress.getByName(host), port); //start collecting tests - final DataInputStream os = new DataInputStream(socket.getInputStream()); - try { + try (DataInputStream os = new DataInputStream(socket.getInputStream())) { os.readBoolean();//wait for ready flag } - finally { - os.close(); - } } catch (IOException e) { e.printStackTrace(); @@ -247,9 +243,8 @@ public final class JUnitStarter { public static void printClassesList(List classNames, String packageName, String category, String filters, File tempFile) throws IOException { - final PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(tempFile), StandardCharsets.UTF_8)); - try { + try (PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(tempFile), StandardCharsets.UTF_8))) { writer.println(packageName); //package name writer.println(category); //category writer.println(filters); //patterns @@ -257,8 +252,5 @@ public final class JUnitStarter { writer.println(name); } } - finally { - writer.close(); - } } } diff --git a/plugins/maven/artifact-resolver/common/src/org/jetbrains/idea/maven/artifactResolver/common/MavenModuleMap.java b/plugins/maven/artifact-resolver/common/src/org/jetbrains/idea/maven/artifactResolver/common/MavenModuleMap.java index b58bc8bf93c9..2ac4714c4906 100644 --- a/plugins/maven/artifact-resolver/common/src/org/jetbrains/idea/maven/artifactResolver/common/MavenModuleMap.java +++ b/plugins/maven/artifact-resolver/common/src/org/jetbrains/idea/maven/artifactResolver/common/MavenModuleMap.java @@ -21,13 +21,9 @@ public final class MavenModuleMap { String path = System.getProperty(PATHS_FILE_PROPERTY); if (path != null) { try { - BufferedInputStream in = new BufferedInputStream(new FileInputStream(path)); - try { + try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(path))) { myMap.load(in); } - finally { - in.close(); - } } catch (IOException e) { // XXX log diff --git a/plugins/testng_rt/src/com/intellij/rt/testng/RemoteTestNGStarter.java b/plugins/testng_rt/src/com/intellij/rt/testng/RemoteTestNGStarter.java index ee3a24dd5aa0..e17b4546cd2f 100644 --- a/plugins/testng_rt/src/com/intellij/rt/testng/RemoteTestNGStarter.java +++ b/plugins/testng_rt/src/com/intellij/rt/testng/RemoteTestNGStarter.java @@ -43,13 +43,9 @@ public final class RemoteTestNGStarter { final int port = Integer.parseInt(arg.substring(SOCKET.length())); try { final Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), port); //start collecting tests - final DataInputStream os = new DataInputStream(socket.getInputStream()); - try { + try (DataInputStream os = new DataInputStream(socket.getInputStream())) { os.readBoolean();//wait for ready flag } - finally { - os.close(); - } } catch (IOException e) { e.printStackTrace(); diff --git a/plugins/testng_rt/src/com/intellij/rt/testng/TestNGXmlSuiteHelper.java b/plugins/testng_rt/src/com/intellij/rt/testng/TestNGXmlSuiteHelper.java index 7513e08482a1..19322dd17e4e 100644 --- a/plugins/testng_rt/src/com/intellij/rt/testng/TestNGXmlSuiteHelper.java +++ b/plugins/testng_rt/src/com/intellij/rt/testng/TestNGXmlSuiteHelper.java @@ -81,14 +81,10 @@ public final class TestNGXmlSuiteHelper { public static void writeToFile(Logger logger, File xmlFile, String content) { try { - OutputStream stream = new FileOutputStream(xmlFile, false); - try { + try (OutputStream stream = new FileOutputStream(xmlFile, false)) { byte[] text = content.getBytes(StandardCharsets.UTF_8); stream.write(text, 0, text.length); } - finally { - stream.close(); - } } catch (IOException e) { logger.log(e);