From c1163974763652fed86c1559b169a83923f91d1d Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 21 Dec 2015 13:55:42 +0000
Subject: [PATCH] Converted try/finally Closeable.close() (or Utils.closeSilently()) into try-with-resources

---
 opendj-sdk/opendj-ldap-sdk-examples/src/main/java/org/forgerock/opendj/examples/Controls.java            |   16 -
 opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/DocGenerationHelper.java                    |    7 
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIF.java                                 |    7 
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/AbstractLDIFReader.java                   |   12 -
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/KeyManagers.java                          |   15 -
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/TemplateFile.java                         |   25 --
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/TrustManagers.java                        |   15 -
 opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/EntryGeneratorTestCase.java               |   48 +----
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/TemplateTag.java                          |   39 +---
 opendj-sdk/opendj-copyright-maven-plugin/src/main/java/org/forgerock/maven/CopyrightAbstractMojo.java    |   10 -
 opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java                                  |   15 -
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordWriter.java               |    7 
 opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/FileBasedArgument.java                      |   28 +--
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFEntryWriter.java                      |    6 
 opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/TestCaseUtils.java                        |   19 -
 opendj-sdk/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/DataSource.java             |   10 -
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordReader.java               |    7 
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFEntryReader.java                      |    7 
 opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/ConnectionChangeRecordWriterTestCase.java |  118 ++------------
 opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java                         |   19 -
 opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ConnectionFactoryProvider.java              |    6 
 opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/PromptingTrustManager.java                  |   11 
 opendj-sdk/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/Utils.java               |    6 
 23 files changed, 108 insertions(+), 345 deletions(-)

diff --git a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java
index 0e4fdf8..9ba847a 100644
--- a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java
+++ b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java
@@ -54,7 +54,6 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageBuilder;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.util.Utils;
 
 /**
  * This class defines a utility that can be used to deal with command-line
@@ -425,13 +424,13 @@
         }
 
         // We have a location for the properties file.
-        final Properties argumentProperties = new Properties();
-        final String scriptName = getScriptName();
         try {
+            final Properties argumentProperties = new Properties();
+            final String scriptName = getScriptName();
             final Properties p = new Properties();
-            final FileInputStream fis = new FileInputStream(propertiesFilePath);
-            p.load(fis);
-            fis.close();
+            try (final FileInputStream fis = new FileInputStream(propertiesFilePath)) {
+                p.load(fis);
+            }
 
             for (final Enumeration<?> e = p.propertyNames(); e.hasMoreElements();) {
                 final String currentPropertyName = (String) e.nextElement();
@@ -449,12 +448,12 @@
                 argumentProperties.setProperty(propertyName.toLowerCase(), p
                         .getProperty(currentPropertyName));
             }
+            return argumentProperties;
         } catch (final Exception e) {
             final LocalizableMessage message =
                     ERR_ARGPARSER_CANNOT_READ_PROPERTIES_FILE.get(propertiesFilePath, getExceptionMessage(e));
             throw new ArgumentException(message, e);
         }
-        return argumentProperties;
     }
 
     /**
@@ -1384,9 +1383,7 @@
 
         Properties argumentProperties = null;
 
-        FileInputStream fis = null;
-        try {
-            fis = new FileInputStream(propertiesFile);
+        try (final FileInputStream fis = new FileInputStream(propertiesFile)) {
             final Properties p = new Properties();
             p.load(fis);
             argumentProperties = p;
@@ -1396,8 +1393,6 @@
                         ERR_ARGPARSER_CANNOT_READ_PROPERTIES_FILE.get(propertiesFile, getExceptionMessage(e));
                 throw new ArgumentException(message, e);
             }
-        } finally {
-            Utils.closeSilently(fis);
         }
 
         parseArguments(rawArguments, argumentProperties);
diff --git a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ConnectionFactoryProvider.java b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ConnectionFactoryProvider.java
index 1f21cb8..bd3b890 100644
--- a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ConnectionFactoryProvider.java
+++ b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ConnectionFactoryProvider.java
@@ -733,10 +733,10 @@
             keyStorePIN = keyStorePass.toCharArray();
         }
 
-        final FileInputStream fos = new FileInputStream(keyStoreFile);
         final KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
-        keystore.load(fos, keyStorePIN);
-        fos.close();
+        try (final FileInputStream fos = new FileInputStream(keyStoreFile)) {
+            keystore.load(fos, keyStorePIN);
+        }
 
         return new ApplicationKeyManager(keystore, keyStorePIN);
     }
diff --git a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/DocGenerationHelper.java b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/DocGenerationHelper.java
index a60d99a..ba6bf75 100644
--- a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/DocGenerationHelper.java
+++ b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/DocGenerationHelper.java
@@ -77,16 +77,13 @@
         configuration = getConfiguration();
 
         // FreeMarker takes the data and a Writer to process the template.
-        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        Writer writer = new OutputStreamWriter(outputStream);
-        try {
+        try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+            Writer writer = new OutputStreamWriter(outputStream)) {
             Template configurationTemplate = configuration.getTemplate(template);
             configurationTemplate.process(map, writer);
             builder.append(outputStream.toString());
         } catch (Exception e) {
             throw new RuntimeException(e.getMessage(), e);
-        } finally {
-            org.forgerock.util.Utils.closeSilently(writer, outputStream);
         }
     }
 
diff --git a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/FileBasedArgument.java b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/FileBasedArgument.java
index fd96b58..8d71a38 100644
--- a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/FileBasedArgument.java
+++ b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/FileBasedArgument.java
@@ -28,11 +28,12 @@
 
 import static com.forgerock.opendj.cli.CliMessages.*;
 import static com.forgerock.opendj.util.StaticUtils.getExceptionMessage;
-import static org.forgerock.util.Utils.closeSilently;
 
 import java.io.BufferedReader;
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.FileReader;
+import java.io.IOException;
 import java.util.LinkedHashMap;
 
 import org.forgerock.i18n.LocalizableMessage;
@@ -195,31 +196,20 @@
             return false;
         }
 
-        // Open the file for reading.
-        BufferedReader reader;
-        try {
-            reader = new BufferedReader(new FileReader(valueFile));
-        } catch (final Exception e) {
-            invalidReason.append(ERR_FILEARG_CANNOT_OPEN_FILE.get(valueString, getName(),
-                    getExceptionMessage(e)));
-            return false;
-        }
-
-        // Read the first line and close the file.
+        // Open the file, read the first line and close the file.
         String line;
-        try {
+        try (BufferedReader reader = new BufferedReader(new FileReader(valueFile))) {
             line = reader.readLine();
-        } catch (final Exception e) {
-            invalidReason.append(ERR_FILEARG_CANNOT_READ_FILE.get(valueString, getName(),
-                    getExceptionMessage(e)));
+        } catch (final FileNotFoundException e) {
+            invalidReason.append(ERR_FILEARG_CANNOT_OPEN_FILE.get(valueString, getName(), getExceptionMessage(e)));
             return false;
-        } finally {
-            closeSilently(reader);
+        } catch (final IOException e) {
+            invalidReason.append(ERR_FILEARG_CANNOT_READ_FILE.get(valueString, getName(), getExceptionMessage(e)));
+            return false;
         }
 
         // If the line read is null, then that means the file was empty.
         if (line == null) {
-
             invalidReason.append(ERR_FILEARG_EMPTY_FILE.get(valueString, getName()));
             return false;
         }
diff --git a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/PromptingTrustManager.java b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/PromptingTrustManager.java
index a7d4a73..d90ea02 100644
--- a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/PromptingTrustManager.java
+++ b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/PromptingTrustManager.java
@@ -152,11 +152,8 @@
         if (!onDiskTrustStorePath.exists()) {
             onDiskTrustStore.load(null, null);
         } else {
-            final FileInputStream fos = new FileInputStream(onDiskTrustStorePath);
-            try {
+            try (final FileInputStream fos = new FileInputStream(onDiskTrustStorePath)) {
                 onDiskTrustStore.load(fos, DEFAULT_PASSWORD);
-            } finally {
-                fos.close();
             }
         }
         final TrustManagerFactory tmf =
@@ -295,9 +292,9 @@
                 if (!truststoreFile.exists()) {
                     createFile(truststoreFile);
                 }
-                final FileOutputStream fos = new FileOutputStream(truststoreFile);
-                onDiskTrustStore.store(fos, DEFAULT_PASSWORD);
-                fos.close();
+                try (final FileOutputStream fos = new FileOutputStream(truststoreFile)) {
+                    onDiskTrustStore.store(fos, DEFAULT_PASSWORD);
+                }
             } catch (final Exception e) {
                 LOG.warn(LocalizableMessage.raw("Error saving store to disk: " + e));
             }
diff --git a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java
index 28cafe9..8131b6c 100644
--- a/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java
+++ b/opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java
@@ -161,13 +161,10 @@
      *             If a problem occurs while trying to read the specified file.
      */
     public static byte[] readBytesFromFile(final String filePath) throws IOException {
-        byte[] val = null;
-        FileInputStream fis = null;
-        try {
-            final File file = new File(filePath);
-            fis = new FileInputStream(file);
-            final long length = file.length();
-            val = new byte[(int) length];
+        final File file = new File(filePath);
+        final long length = file.length();
+        try (FileInputStream fis = new FileInputStream(file)) {
+            byte[] val = new byte[(int) length];
             // Read in the bytes
             int offset = 0;
             int numRead = 0;
@@ -182,10 +179,6 @@
             }
 
             return val;
-        } finally {
-            if (fis != null) {
-                fis.close();
-            }
         }
     }
 
diff --git a/opendj-sdk/opendj-copyright-maven-plugin/src/main/java/org/forgerock/maven/CopyrightAbstractMojo.java b/opendj-sdk/opendj-copyright-maven-plugin/src/main/java/org/forgerock/maven/CopyrightAbstractMojo.java
index 54fd884..932c818 100644
--- a/opendj-sdk/opendj-copyright-maven-plugin/src/main/java/org/forgerock/maven/CopyrightAbstractMojo.java
+++ b/opendj-sdk/opendj-copyright-maven-plugin/src/main/java/org/forgerock/maven/CopyrightAbstractMojo.java
@@ -25,8 +25,6 @@
  */
 package org.forgerock.maven;
 
-import static org.forgerock.util.Utils.closeSilently;
-
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
@@ -304,11 +302,8 @@
      * Check to see whether the provided file has a comment line containing a
      * copyright without the current year.
      */
-    @SuppressWarnings("resource")
     private boolean checkCopyrightForFile(File changedFile) throws MojoExecutionException {
-        BufferedReader reader = null;
-        try {
-            reader = new BufferedReader(new FileReader(changedFile));
+        try (BufferedReader reader = new BufferedReader(new FileReader(changedFile))) {
             String line;
             while ((line = reader.readLine()) != null) {
                 String lowerLine = line.toLowerCase().trim();
@@ -316,7 +311,6 @@
                         && lowerLine.contains("copyright")
                         && line.contains(currentYear.toString())
                         && line.contains(copyrightOwnerToken)) {
-                    reader.close();
                     return true;
                 }
             }
@@ -325,8 +319,6 @@
         } catch (IOException ioe) {
             throw new MojoExecutionException("Could not read file " + changedFile.getPath()
                     + " to check copyright date. No further copyright date checking will be performed.");
-        } finally {
-            closeSilently(reader);
         }
     }
 
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/KeyManagers.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/KeyManagers.java
index 7504772..482f03e 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/KeyManagers.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/KeyManagers.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2010 Sun Microsystems, Inc.
- *      Portions copyright 2012 ForgeRock AS.
+ *      Portions copyright 2012-2015 ForgeRock AS.
  */
 
 package org.forgerock.opendj.ldap;
@@ -209,19 +209,8 @@
         final String keyStoreFormat = format != null ? format : KeyStore.getDefaultType();
 
         final KeyStore keyStore = KeyStore.getInstance(keyStoreFormat);
-
-        FileInputStream fos = null;
-        try {
-            fos = new FileInputStream(keyStoreFile);
+        try (FileInputStream fos = new FileInputStream(keyStoreFile)) {
             keyStore.load(fos, password);
-        } finally {
-            if (fos != null) {
-                try {
-                    fos.close();
-                } catch (final IOException ignored) {
-                    // Ignore.
-                }
-            }
         }
 
         final KeyManagerFactory kmf =
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/TrustManagers.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/TrustManagers.java
index a2e2a83..4791d76 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/TrustManagers.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/TrustManagers.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2010 Sun Microsystems, Inc.
- *      Portions copyright 2012-2014 ForgeRock AS.
+ *      Portions copyright 2012-2015 ForgeRock AS.
  */
 
 package org.forgerock.opendj.ldap;
@@ -326,19 +326,8 @@
         final String trustStoreFormat = format != null ? format : KeyStore.getDefaultType();
 
         final KeyStore keyStore = KeyStore.getInstance(trustStoreFormat);
-
-        FileInputStream fos = null;
-        try {
-            fos = new FileInputStream(trustStoreFile);
+        try (FileInputStream fos = new FileInputStream(trustStoreFile)) {
             keyStore.load(fos, password);
-        } finally {
-            if (fos != null) {
-                try {
-                    fos.close();
-                } catch (final IOException ignored) {
-                    // Ignore.
-                }
-            }
         }
 
         final TrustManagerFactory tmf =
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/AbstractLDIFReader.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/AbstractLDIFReader.java
index b431cab..82070c9 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/AbstractLDIFReader.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/AbstractLDIFReader.java
@@ -288,11 +288,9 @@
                     throw DecodeException.error(message);
                 }
 
-                InputStream inputStream = null;
                 ByteStringBuilder builder = null;
-                try {
+                try (InputStream inputStream = contentURL.openConnection().getInputStream()) {
                     builder = new ByteStringBuilder();
-                    inputStream = contentURL.openConnection().getInputStream();
 
                     int bytesRead;
                     final byte[] buffer = new byte[4096];
@@ -310,14 +308,6 @@
                             ERR_LDIF_URL_IO_ERROR.get(entryDN.toString(), record.lineNumber,
                                     attrName, String.valueOf(contentURL), String.valueOf(e));
                     throw DecodeException.error(message);
-                } finally {
-                    if (inputStream != null) {
-                        try {
-                            inputStream.close();
-                        } catch (final Exception e) {
-                            // Ignore.
-                        }
-                    }
                 }
             } else {
                 /*
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIF.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIF.java
index 851c18c..af8bf14 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIF.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIF.java
@@ -22,7 +22,6 @@
  *
  *      Copyright 2011-2015 ForgeRock AS
  */
-
 package org.forgerock.opendj.ldif;
 
 import static com.forgerock.opendj.ldap.CoreMessages.*;
@@ -67,7 +66,6 @@
 import org.forgerock.opendj.ldap.requests.SearchRequest;
 import org.forgerock.opendj.ldap.schema.AttributeUsage;
 import org.forgerock.opendj.ldap.schema.Schema;
-import org.forgerock.util.Utils;
 
 /**
  * This class contains common utility methods for creating and manipulating
@@ -321,8 +319,7 @@
      */
     public static List<Entry> makeEntries(String... ldifLines) {
         List<Entry> entries = new ArrayList<>();
-        LDIFEntryReader reader = new LDIFEntryReader(ldifLines);
-        try {
+        try (LDIFEntryReader reader = new LDIFEntryReader(ldifLines)) {
             while (reader.hasNext()) {
                 entries.add(reader.readEntry());
             }
@@ -332,8 +329,6 @@
         } catch (final IOException e) {
             // This should never happen for a String based reader.
             throw new LocalizedIllegalArgumentException(WARN_READ_LDIF_RECORD_UNEXPECTED_IO_ERROR.get(e.getMessage()));
-        } finally {
-            Utils.closeSilently(reader);
         }
         if (entries.isEmpty()) {
             throw new LocalizedIllegalArgumentException(WARN_READ_LDIF_ENTRY_NO_ENTRY_FOUND.get());
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordReader.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordReader.java
index 5218abb..c89b0cc 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordReader.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordReader.java
@@ -24,7 +24,6 @@
  *      Copyright 2009-2010 Sun Microsystems, Inc.
  *      Portions copyright 2011-2015 ForgeRock AS
  */
-
 package org.forgerock.opendj.ldif;
 
 import java.io.IOException;
@@ -61,7 +60,6 @@
 import org.forgerock.opendj.ldap.schema.Syntax;
 import org.forgerock.opendj.ldap.schema.UnknownSchemaElementException;
 import org.forgerock.util.Reject;
-import org.forgerock.util.Utils;
 
 import static com.forgerock.opendj.ldap.CoreMessages.*;
 import static com.forgerock.opendj.util.StaticUtils.*;
@@ -114,8 +112,7 @@
      */
     public static ChangeRecord valueOfLDIFChangeRecord(final String... ldifLines) {
         // LDIF change record reader is tolerant to missing change types.
-        final LDIFChangeRecordReader reader = new LDIFChangeRecordReader(ldifLines);
-        try {
+        try (final LDIFChangeRecordReader reader = new LDIFChangeRecordReader(ldifLines)) {
             if (!reader.hasNext()) {
                 // No change record found.
                 final LocalizableMessage message =
@@ -141,8 +138,6 @@
             final LocalizableMessage message =
                     WARN_READ_LDIF_RECORD_UNEXPECTED_IO_ERROR.get(e.getMessage());
             throw new LocalizedIllegalArgumentException(message);
-        } finally {
-            Utils.closeSilently(reader);
         }
     }
 
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordWriter.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordWriter.java
index 84e1639..84d5916 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordWriter.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordWriter.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2009 Sun Microsystems, Inc.
- *      Portions copyright 2012-2013 ForgeRock AS.
+ *      Portions copyright 2012-2015 ForgeRock AS.
  */
 
 package org.forgerock.opendj.ldif;
@@ -82,9 +82,8 @@
      */
     public static String toString(final ChangeRecord change) {
         final StringWriter writer = new StringWriter(128);
-        try {
-            new LDIFChangeRecordWriter(writer).setAddUserFriendlyComments(true).writeChangeRecord(
-                    change).close();
+        try (LDIFChangeRecordWriter ldifWriter = new LDIFChangeRecordWriter(writer)) {
+            ldifWriter.setAddUserFriendlyComments(true).writeChangeRecord(change);
         } catch (final IOException e) {
             // Should never happen.
             throw new IllegalStateException(e);
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFEntryReader.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFEntryReader.java
index fade05e..1508aea 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFEntryReader.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFEntryReader.java
@@ -24,7 +24,6 @@
  *      Copyright 2009-2010 Sun Microsystems, Inc.
  *      Portions copyright 2011-2015 ForgeRock AS
  */
-
 package org.forgerock.opendj.ldif;
 
 import static com.forgerock.opendj.ldap.CoreMessages.*;
@@ -48,7 +47,6 @@
 import org.forgerock.opendj.ldap.schema.Schema;
 import org.forgerock.opendj.ldap.schema.SchemaValidationPolicy;
 import org.forgerock.util.Reject;
-import org.forgerock.util.Utils;
 
 /**
  * An LDIF entry reader reads attribute value records (entries) using the LDAP
@@ -75,8 +73,7 @@
      *             If {@code ldifLines} was {@code null}.
      */
     public static Entry valueOfLDIFEntry(final String... ldifLines) {
-        final LDIFEntryReader reader = new LDIFEntryReader(ldifLines);
-        try {
+        try (final LDIFEntryReader reader = new LDIFEntryReader(ldifLines)) {
             if (!reader.hasNext()) {
                 // No change record found.
                 final LocalizableMessage message =
@@ -102,8 +99,6 @@
             final LocalizableMessage message =
                     WARN_READ_LDIF_RECORD_UNEXPECTED_IO_ERROR.get(e.getMessage());
             throw new LocalizedIllegalArgumentException(message);
-        } finally {
-            Utils.closeSilently(reader);
         }
     }
 
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFEntryWriter.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFEntryWriter.java
index f64c8a4..0aa8d50 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFEntryWriter.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFEntryWriter.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2009-2010 Sun Microsystems, Inc.
- *      Portions copyright 2012-2013 ForgeRock AS.
+ *      Portions copyright 2012-2015 ForgeRock AS.
  */
 
 package org.forgerock.opendj.ldif;
@@ -60,8 +60,8 @@
      */
     public static String toString(final Entry entry) {
         final StringWriter writer = new StringWriter(128);
-        try {
-            new LDIFEntryWriter(writer).setAddUserFriendlyComments(true).writeEntry(entry).close();
+        try (LDIFEntryWriter ldifWriter = new LDIFEntryWriter(writer)) {
+            ldifWriter.setAddUserFriendlyComments(true).writeEntry(entry);
         } catch (final IOException e) {
             // Should never happen.
             throw new IllegalStateException(e);
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/TemplateFile.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/TemplateFile.java
index a56bcff..aa2c92b 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/TemplateFile.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/TemplateFile.java
@@ -81,7 +81,6 @@
 import org.forgerock.opendj.ldif.TemplateTag.UnderscoreParentDNTag;
 import org.forgerock.util.Pair;
 import org.forgerock.util.Reject;
-import org.forgerock.util.Utils;
 
 /**
  * A template file allow to generate entries from a collection of constant
@@ -250,28 +249,20 @@
     }
 
     private void retrieveFirstAndLastNames() throws IOException {
-        BufferedReader first = null;
-        try {
-            first = getReader(FIRST_NAME_FILE);
+        try (BufferedReader first = getReader(FIRST_NAME_FILE)) {
             if (first == null) {
                 throw DecodeException.fatalError(ERR_ENTRY_GENERATOR_COULD_NOT_FIND_NAME_FILE.get(FIRST_NAME_FILE));
             }
             final List<String> names = readLines(first);
             firstNames = names.toArray(new String[names.size()]);
-        } finally {
-            Utils.closeSilently(first);
         }
 
-        BufferedReader last = null;
-        try {
-            last = getReader(LAST_NAME_FILE);
+        try (BufferedReader last = getReader(LAST_NAME_FILE)) {
             if (last == null) {
                 throw DecodeException.fatalError(ERR_ENTRY_GENERATOR_COULD_NOT_FIND_NAME_FILE.get(LAST_NAME_FILE));
             }
             final List<String> names = readLines(last);
             lastNames = names.toArray(new String[names.size()]);
-        } finally {
-            Utils.closeSilently(first);
         }
     }
 
@@ -362,9 +353,7 @@
      *             If any other problem occurs while parsing the template file.
      */
     void parse(String templateFilename, List<LocalizableMessage> warnings) throws IOException, DecodeException {
-        BufferedReader templateReader = null;
-        try {
-            templateReader = getReader(templateFilename);
+        try (BufferedReader templateReader = getReader(templateFilename)) {
             if (templateReader == null) {
                 throw DecodeException.fatalError(
                         ERR_ENTRY_GENERATOR_COULD_NOT_FIND_TEMPLATE_FILE.get(templateFilename));
@@ -379,8 +368,6 @@
             final List<String> fileLines = readLines(templateReader);
             final String[] lines = fileLines.toArray(new String[fileLines.size()]);
             parse(lines, warnings);
-        } finally {
-            Utils.closeSilently(templateReader);
         }
     }
 
@@ -399,14 +386,10 @@
      *             If any other problem occurs while parsing the template.
      */
     void parse(InputStream inputStream, List<LocalizableMessage> warnings) throws IOException, DecodeException {
-        BufferedReader reader = null;
-        try {
-            reader = new BufferedReader(new InputStreamReader(inputStream));
+        try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
             final List<String> fileLines = readLines(reader);
             final String[] lines = fileLines.toArray(new String[fileLines.size()]);
             parse(lines, warnings);
-        } finally {
-            Utils.closeSilently(reader);
         }
     }
 
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/TemplateTag.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/TemplateTag.java
index 4f3a61c..5230928 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/TemplateTag.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/TemplateTag.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2006-2009 Sun Microsystems, Inc.
- *      Portions Copyright 2013 ForgeRock AS
+ *      Portions Copyright 2013-2015 ForgeRock AS
  */
 package org.forgerock.opendj.ldif;
 
@@ -44,7 +44,6 @@
 import org.forgerock.opendj.ldif.TemplateFile.Template;
 import org.forgerock.opendj.ldif.TemplateFile.TemplateEntry;
 import org.forgerock.opendj.ldif.TemplateFile.TemplateValue;
-import org.forgerock.util.Utils;
 
 /**
  * Represents a tag that may be used in a template line when generating entries.
@@ -395,31 +394,21 @@
 
             // The first argument should be the path to the file.
             final String filePath = arguments[0];
-            BufferedReader dataReader = null;
-            try {
-                dataReader = templateFile.getReader(filePath);
+            try (BufferedReader dataReader = templateFile.getReader(filePath)) {
                 if (dataReader == null) {
-                    LocalizableMessage message = ERR_ENTRY_GENERATOR_TAG_CANNOT_FIND_FILE.get(filePath, getName(),
-                            lineNumber);
-                    throw DecodeException.fatalError(message);
+                    throw DecodeException.fatalError(
+                        ERR_ENTRY_GENERATOR_TAG_CANNOT_FIND_FILE.get(filePath, getName(), lineNumber));
                 }
 
-                // See if the file has already been read into memory. If not, then
-                // read it.
-                try {
-                    fileLines = templateFile.getLines(filePath, dataReader);
-                } catch (IOException ioe) {
-                    LocalizableMessage message = ERR_ENTRY_GENERATOR_TAG_CANNOT_READ_FILE.get(filePath, getName(),
-                            lineNumber, String.valueOf(ioe));
-                    throw DecodeException.fatalError(message, ioe);
-                }
-            } finally {
-                Utils.closeSilently(dataReader);
+                // See if the file has already been read into memory. If not, then read it.
+                fileLines = templateFile.getLines(filePath, dataReader);
+            } catch (IOException e) {
+                throw DecodeException.fatalError(
+                    ERR_ENTRY_GENERATOR_TAG_CANNOT_READ_FILE.get(filePath, getName(), lineNumber, e), e);
             }
 
-            // If there is a second argument, then it should be either
-            // "sequential" or "random". If there isn't one, then we should
-            // assume "random".
+            // If there is a second argument, then it should be either "sequential" or "random".
+            // If there isn't one, then we should assume "random".
             if (arguments.length == 2) {
                 if ("sequential".equalsIgnoreCase(arguments[1])) {
                     isSequential = true;
@@ -854,11 +843,7 @@
         @Override
         TagResult generateValue(TemplateEntry templateEntry, TemplateValue templateValue) {
             int intValue = random.nextInt(100);
-            if (intValue < percentage) {
-                return TagResult.SUCCESS;
-            } else {
-                return TagResult.FAILURE;
-            }
+            return intValue < percentage ? TagResult.SUCCESS : TagResult.FAILURE;
         }
     }
 
diff --git a/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/TestCaseUtils.java b/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/TestCaseUtils.java
index 5cce402..a6646aa 100644
--- a/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/TestCaseUtils.java
+++ b/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/TestCaseUtils.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2009-2010 Sun Microsystems, Inc.
- *      Portions Copyright 2012-2014 ForgeRock AS.
+ *      Portions Copyright 2012-2015 ForgeRock AS.
  */
 package org.forgerock.opendj.ldap;
 
@@ -31,7 +31,6 @@
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
-import java.net.SocketAddress;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -66,13 +65,12 @@
         final File f = File.createTempFile("LDIFBasedTestCase", ".txt");
         f.deleteOnExit();
 
-        final FileWriter w = new FileWriter(f);
-        for (final String s : lines) {
-            w.write(s + System.getProperty("line.separator"));
+        try (final FileWriter w = new FileWriter(f)) {
+            for (final String s : lines) {
+                w.write(s + System.getProperty("line.separator"));
+            }
         }
 
-        w.close();
-
         return f.getAbsolutePath();
     }
 
@@ -101,13 +99,10 @@
      * @return The free port.
      */
     public static InetSocketAddress findFreeSocketAddress() {
-        try {
-            ServerSocket serverLdapSocket = new ServerSocket();
+        try (ServerSocket serverLdapSocket = new ServerSocket()) {
             serverLdapSocket.setReuseAddress(true);
             serverLdapSocket.bind(new InetSocketAddress("127.0.0.1", 0));
-            final SocketAddress address = serverLdapSocket.getLocalSocketAddress();
-            serverLdapSocket.close();
-            return (InetSocketAddress) address;
+            return (InetSocketAddress) serverLdapSocket.getLocalSocketAddress();
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
diff --git a/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/ConnectionChangeRecordWriterTestCase.java b/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/ConnectionChangeRecordWriterTestCase.java
index 914111c..5b90302 100644
--- a/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/ConnectionChangeRecordWriterTestCase.java
+++ b/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/ConnectionChangeRecordWriterTestCase.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2009-2010 Sun Microsystems, Inc.
- *      Portions Copyright 2012-2014 ForgeRock AS.
+ *      Portions Copyright 2012-2015 ForgeRock AS.
  */
 
 package org.forgerock.opendj.ldif;
@@ -88,14 +88,9 @@
     @Test
     public final void testWriteChangeRecordAddRequest() throws Exception {
         Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             writer.writeChangeRecord(Requests.newAddRequest(getStandardLDIFChangeRecord()));
             verify(connection, times(1)).add(any(AddRequest.class));
-        } finally {
-            writer.close();
         }
     }
 
@@ -107,12 +102,8 @@
     @Test(expectedExceptions = NullPointerException.class)
     public final void testWriteChangeRecordAddRequestDoesntAllowNull() throws Exception {
         final Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             writer.writeChangeRecord((AddRequest) null);
-        } finally {
-            writer.close();
         }
     }
 
@@ -125,15 +116,10 @@
     @Test
     public final void testWriteChangeRecordContainingAddRequest() throws Exception {
         Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             writer.writeChangeRecord(Requests.newChangeRecord(getStandardLDIFChangeRecord()));
             Assert.assertTrue(Requests.newChangeRecord(getStandardLDIFChangeRecord()) instanceof AddRequest);
             verify(connection, times(1)).add(any(AddRequest.class));
-        } finally {
-            writer.close();
         }
     }
 
@@ -146,10 +132,7 @@
     @Test
     public final void testWriteChangeRecordContainingDeleteRequest() throws Exception {
         Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             // @formatter:off
             ChangeRecord cr = Requests.newChangeRecord(
                 "dn: dc=example,dc=com",
@@ -159,8 +142,6 @@
             // @formatter:on
             Assert.assertTrue(cr instanceof DeleteRequest);
             verify(connection, times(1)).delete(any(DeleteRequest.class));
-        } finally {
-            writer.close();
         }
     }
 
@@ -172,10 +153,7 @@
     @Test(expectedExceptions = LocalizedIllegalArgumentException.class)
     public final void testWriteChangeRecordDoesntAllowMultipleLDIF() throws Exception {
         Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             // @formatter:off
             writer.writeChangeRecord(Requests.newChangeRecord(
                 "dn: uid=scarter,ou=People,dc=example,dc=com",
@@ -189,9 +167,6 @@
                 "sn: Amarr")
             );
             // @formatter:on
-
-        } finally {
-            writer.close();
         }
     }
 
@@ -205,7 +180,6 @@
     @Test(expectedExceptions = RuntimeException.class)
     public final void testWriteChangeRecordChangeAcceptSendIOException() throws Exception {
         Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
         ChangeRecord cr = mock(ChangeRecord.class);
 
         when(cr.accept(any(ChangeRecordVisitor.class), any(ConnectionChangeRecordWriter.class)))
@@ -222,11 +196,8 @@
                     }
                 });
 
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             writer.writeChangeRecord(cr);
-        } finally {
-            writer.close();
         }
     }
 
@@ -240,7 +211,6 @@
     @Test(expectedExceptions = LdapException.class)
     public final void testWriteChangeRecordChangeAcceptSendLdapException() throws Exception {
         Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
         ChangeRecord cr = mock(ChangeRecord.class);
 
         when(cr.accept(any(ChangeRecordVisitor.class), any(ConnectionChangeRecordWriter.class)))
@@ -257,11 +227,8 @@
                     }
                 });
 
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             writer.writeChangeRecord(cr);
-        } finally {
-            writer.close();
         }
     }
 
@@ -273,12 +240,8 @@
     @Test(expectedExceptions = NullPointerException.class)
     public final void testWriteChangeRecordChangeRecordDoesntAllowNull() throws Exception {
         final Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             writer.writeChangeRecord((ChangeRecord) null);
-        } finally {
-            writer.close();
         }
     }
 
@@ -290,15 +253,11 @@
     @Test
     public final void testWriteChangeRecordDeleteRequest() throws Exception {
         Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
 
-        try {
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             ChangeRecord cr = Requests.newDeleteRequest(DN.valueOf("cn=scarter,dc=example,dc=com"));
-            writer = new ConnectionChangeRecordWriter(connection);
             writer.writeChangeRecord(cr);
             verify(connection, times(1)).delete(any(DeleteRequest.class));
-        } finally {
-            writer.close();
         }
     }
 
@@ -310,12 +269,8 @@
     @Test(expectedExceptions = NullPointerException.class)
     public final void testWriteChangeRecordDeleteRequestDoesntAllowNull() throws Exception {
         final Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             writer.writeChangeRecord((DeleteRequest) null);
-        } finally {
-            writer.close();
         }
     }
 
@@ -327,19 +282,15 @@
     @Test
     public final void testWriteChangeRecordModifyDNRequest() throws Exception {
         Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
 
-        try {
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             // @formatter:off
             ChangeRecord cr = Requests.newModifyDNRequest(
                 "cn=scarter,dc=example,dc=com",
                 "cn=Susan Jacobs");
             //@formatter:on
-            writer = new ConnectionChangeRecordWriter(connection);
             writer.writeChangeRecord(cr);
             verify(connection, times(1)).modifyDN(any(ModifyDNRequest.class));
-        } finally {
-            writer.close();
         }
     }
 
@@ -351,12 +302,8 @@
     @Test(expectedExceptions = NullPointerException.class)
     public final void testWriteChangeRecordModifyDNRequestDoesntAllowNull() throws Exception {
         final Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             writer.writeChangeRecord((ModifyDNRequest) null);
-        } finally {
-            writer.close();
         }
     }
 
@@ -368,10 +315,7 @@
     @Test
     public final void testWriteChangeRecordModifyRequest() throws Exception {
         Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             // @formatter:off
             ChangeRecord cr = Requests.newModifyRequest(
                     "dn: cn=Fiona Jensen, ou=Marketing, dc=airius, dc=com",
@@ -382,8 +326,6 @@
             writer.writeChangeRecord(cr);
             // @formatter:on
             verify(connection, times(1)).modify(any(ModifyRequest.class));
-        } finally {
-            writer.close();
         }
     }
 
@@ -395,12 +337,8 @@
     @Test(expectedExceptions = NullPointerException.class)
     public final void testWriteChangeRecordModifyRequestDoesntAllowNull() throws Exception {
         final Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             writer.writeChangeRecord((ModifyRequest) null);
-        } finally {
-            writer.close();
         }
     }
 
@@ -413,17 +351,12 @@
     @Test
     public final void testWriteCommentDoNotSupportComment() throws Exception {
         Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             writer.writeComment("# A new comment");
             verify(connection, Mockito.never()).add(any(String.class));
             verify(connection, Mockito.never()).delete(any(String.class));
             verify(connection, Mockito.never()).modify(any(String.class));
             verify(connection, Mockito.never()).modifyDN(any(String.class), any(String.class));
-        } finally {
-            writer.close();
         }
     }
 
@@ -435,12 +368,8 @@
     @Test(expectedExceptions = NullPointerException.class)
     public final void testWriteCommentDoesntAllowNull() throws Exception {
         final Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
             writer.writeComment(null);
-        } finally {
-            writer.close();
         }
     }
 
@@ -451,11 +380,8 @@
      */
     @Test(expectedExceptions = NullPointerException.class)
     public final void testConnectionChangeRecordWriterDoesntAllowNull() throws Exception {
-        ConnectionChangeRecordWriter writer = null;
-        try {
-            writer = new ConnectionChangeRecordWriter(null);
-        } finally {
-            writer.close();
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(null)) {
+            // nothing more to do
         }
     }
 
@@ -468,11 +394,9 @@
     @Test
     public final void testConnectionChangeRecordWriterClose() throws Exception {
         Connection connection = mock(Connection.class);
-        ConnectionChangeRecordWriter writer = null;
-        try {
-            writer = new ConnectionChangeRecordWriter(connection);
+        try (ConnectionChangeRecordWriter writer = new ConnectionChangeRecordWriter(connection)) {
+            // nothing more to do
         } finally {
-            writer.close();
             verify(connection, times(1)).close();
         }
     }
diff --git a/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/EntryGeneratorTestCase.java b/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/EntryGeneratorTestCase.java
index 504cade..cfa7e2a 100644
--- a/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/EntryGeneratorTestCase.java
+++ b/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/EntryGeneratorTestCase.java
@@ -26,8 +26,9 @@
 package org.forgerock.opendj.ldif;
 
 import static com.forgerock.opendj.ldap.CoreMessages.*;
+
 import static org.fest.assertions.Assertions.*;
-import static org.forgerock.opendj.ldap.TestCaseUtils.getTestFilePath;
+import static org.forgerock.opendj.ldap.TestCaseUtils.*;
 import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
 
 import java.io.File;
@@ -74,52 +75,35 @@
     @Test(enabled = false)
     public void printEntriesToStdOut() throws Exception {
         String path = SUBTEMPLATES_TEMPLATE_PATH;
-        EntryGenerator generator = null;
-        try {
-            generator = new EntryGenerator(getTestFilePath(path)).setResourcePath(resourcePath);
+        try (EntryGenerator generator = new EntryGenerator(getTestFilePath(path)).setResourcePath(resourcePath)) {
             while (generator.hasNext()) {
                 System.out.println(generator.readEntry());
             }
-        } finally {
-            Utils.closeSilently(generator);
         }
-
     }
 
     @Test
     public void testCreateWithDefaultTemplateFile() throws Exception {
-        EntryGenerator generator = null;
-        try {
-            generator = new EntryGenerator();
+        try (EntryGenerator generator = new EntryGenerator()) {
             assertThat(generator.hasNext()).isTrue();
-        } finally {
-            Utils.closeSilently(generator);
         }
     }
 
     @Test(expectedExceptions = DecodeException.class,
             expectedExceptionsMessageRegExp = ".*Could not find template file unknown.*")
     public void testCreateWithMissingTemplateFile() throws Exception {
-        EntryGenerator generator = null;
-        try {
-            generator = new EntryGenerator("unknown/path");
+        try (EntryGenerator generator = new EntryGenerator("unknown/path")) {
             generator.hasNext();
-        } finally {
-            Utils.closeSilently(generator);
         }
     }
 
     @Test
     public void testCreateWithSetConstants() throws Exception {
-        EntryGenerator generator = null;
-        try {
-            generator = new EntryGenerator().setConstant("numusers", 1);
+        try (EntryGenerator generator = new EntryGenerator().setConstant("numusers", 1)) {
             generator.readEntry();
             generator.readEntry();
             assertThat(generator.readEntry().getName().toString()).isEqualTo("uid=user.0,ou=People,dc=example,dc=com");
             assertThat(generator.hasNext()).as("should have no more entries").isFalse();
-        } finally {
-            Utils.closeSilently(generator);
         }
     }
 
@@ -272,15 +256,15 @@
         Attribute ocAttribute = entry.getAttribute(getObjectClassAttributeType().getNameOrOID());
         assertThat(ocAttribute).isNotNull();
         Iterator<ByteString> it = ocAttribute.iterator();
-        for (int i = 0; i < objectClasses.length; i++) {
-            assertThat(it.next().toString()).isEqualTo(objectClasses[i]);
+        for (String objectClass : objectClasses) {
+            assertThat(it.next().toString()).isEqualTo(objectClass);
         }
         assertThat(it.hasNext()).isFalse();
     }
 
     private void checkPresenceOfAttributes(Entry entry, String... attributes) {
-        for (int i = 0; i < attributes.length; i++) {
-            assertThat(entry.getAttribute(attributes[i])).isNotNull();
+        for (String attribute : attributes) {
+            assertThat(entry.getAttribute(attribute)).isNotNull();
         }
     }
 
@@ -576,17 +560,13 @@
     @Test(dataProvider = "templatesToTestEscapeChars", dependsOnMethods = { "testParsingEscapeCharInTemplate" })
     public void testEscapeCharsFromTemplate(String testName, String[] lines, String attrName, String expectedValue)
             throws Exception {
-        EntryGenerator generator = null;
-        try {
-            generator = new EntryGenerator(lines).setResourcePath(resourcePath);
+        try (EntryGenerator generator = new EntryGenerator(lines).setResourcePath(resourcePath)) {
             Entry topEntry = generator.readEntry();
             Entry entry = generator.readEntry();
 
             assertThat(topEntry).isNotNull();
             assertThat(entry).isNotNull();
             assertThat(entry.getAttribute(attrName).firstValueAsString()).isEqualTo(expectedValue);
-        } finally {
-            Utils.closeSilently(generator);
         }
     }
 
@@ -609,17 +589,13 @@
             // from [A-Z].
             "cn: Foo \\<<random:chars:ABCDEFGHIJKLMNOPQRSTUVWXYZ:1>\\>\\{1\\}{sn}",
             "" };
-        EntryGenerator generator = null;
-        try {
-            generator = new EntryGenerator(lines).setResourcePath(resourcePath);
+        try (EntryGenerator generator = new EntryGenerator(lines).setResourcePath(resourcePath)) {
             Entry topEntry = generator.readEntry();
             Entry entry = generator.readEntry();
 
             assertThat(topEntry).isNotNull();
             assertThat(entry).isNotNull();
             assertThat(entry.getAttribute("cn").firstValueAsString()).matches("Foo <[A-Z]>\\{1\\}Bar");
-        } finally {
-            Utils.closeSilently(generator);
         }
     }
 }
diff --git a/opendj-sdk/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/Utils.java b/opendj-sdk/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/Utils.java
index 7db7c5f..66e7284 100644
--- a/opendj-sdk/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/Utils.java
+++ b/opendj-sdk/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/Utils.java
@@ -124,9 +124,9 @@
      */
     static void writeStringToFile(final String string, final File file) throws IOException {
         createFile(file);
-        PrintWriter printWriter = new PrintWriter(file);
-        printWriter.print(string);
-        printWriter.close();
+        try (PrintWriter printWriter = new PrintWriter(file)) {
+            printWriter.print(string);
+        }
     }
 
     /**
diff --git a/opendj-sdk/opendj-ldap-sdk-examples/src/main/java/org/forgerock/opendj/examples/Controls.java b/opendj-sdk/opendj-ldap-sdk-examples/src/main/java/org/forgerock/opendj/examples/Controls.java
index 4aaf8d1..6066085 100644
--- a/opendj-sdk/opendj-ldap-sdk-examples/src/main/java/org/forgerock/opendj/examples/Controls.java
+++ b/opendj-sdk/opendj-ldap-sdk-examples/src/main/java/org/forgerock/opendj/examples/Controls.java
@@ -112,9 +112,7 @@
         final int port = Integer.parseInt(args[1]);
 
         final LDAPConnectionFactory factory = new LDAPConnectionFactory(host, port);
-        Connection connection = null;
-        try {
-            connection = factory.getConnection();
+        try (Connection connection = factory.getConnection()) {
             checkSupportedControls(connection);
 
             final String user = "cn=Directory Manager";
@@ -149,10 +147,6 @@
             System.err.println(e.getMessage());
             System.exit(e.getResult().getResultCode().intValue());
             return;
-        } finally {
-            if (connection != null) {
-                connection.close();
-            }
         }
     }
 
@@ -265,10 +259,8 @@
 
             connection.modify(request);
 
-            final LDIFEntryWriter writer = new LDIFEntryWriter(System.out);
-            try {
+            try (final LDIFEntryWriter writer = new LDIFEntryWriter(System.out)) {
                 writer.writeEntry(connection.readEntry(dn, "description"));
-                writer.close();
             } catch (final IOException e) {
                 System.err.println(e.getMessage());
                 System.exit(ResultCode.CLIENT_SIDE_LOCAL_ERROR.intValue());
@@ -341,15 +333,13 @@
                                     true, authDN, "cn"));
 
             final ConnectionEntryReader reader = connection.search(request);
-            final LDIFEntryWriter writer = new LDIFEntryWriter(System.out);
-            try {
+            try (final LDIFEntryWriter writer = new LDIFEntryWriter(System.out)) {
                 while (reader.hasNext()) {
                     if (!reader.isReference()) {
                         final SearchResultEntry entry = reader.readEntry();
                         writer.writeEntry(entry);
                     }
                 }
-                writer.close();
             } catch (final LdapException e) {
                 System.err.println(e.getMessage());
                 System.exit(e.getResult().getResultCode().intValue());
diff --git a/opendj-sdk/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/DataSource.java b/opendj-sdk/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/DataSource.java
index 46f2455..1aea651 100644
--- a/opendj-sdk/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/DataSource.java
+++ b/opendj-sdk/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/DataSource.java
@@ -59,14 +59,11 @@
 
         public IncrementLineFileDataSource(final String file) throws IOException {
             lines = new ArrayList<>();
-            final BufferedReader in = new BufferedReader(new FileReader(file));
-            try {
+            try (final BufferedReader in = new BufferedReader(new FileReader(file))) {
                 String line;
                 while ((line = in.readLine()) != null) {
                     lines.add(line);
                 }
-            } finally {
-                in.close();
             }
         }
 
@@ -127,14 +124,11 @@
         public RandomLineFileDataSource(final long seed, final String file) throws IOException {
             lines = new ArrayList<>();
             random = new Random(seed);
-            final BufferedReader in = new BufferedReader(new FileReader(file));
-            try {
+            try (final BufferedReader in = new BufferedReader(new FileReader(file))) {
                 String line;
                 while ((line = in.readLine()) != null) {
                     lines.add(line);
                 }
-            } finally {
-                in.close();
             }
         }
 

--
Gitblit v1.10.0