mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noël Rouvignac
21.47.2015 c1163974763652fed86c1559b169a83923f91d1d
Converted try/finally Closeable.close() (or Utils.closeSilently()) into try-with-resources

TemplateFile.java:
In retrieveFirstAndLastNames(), fixed a bug.
23 files modified
453 ■■■■ changed files
opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java 19 ●●●●● patch | view | raw | blame | history
opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/ConnectionFactoryProvider.java 6 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/DocGenerationHelper.java 7 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/FileBasedArgument.java 28 ●●●●● patch | view | raw | blame | history
opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/PromptingTrustManager.java 11 ●●●●● patch | view | raw | blame | history
opendj-sdk/opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java 15 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-copyright-maven-plugin/src/main/java/org/forgerock/maven/CopyrightAbstractMojo.java 10 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/KeyManagers.java 15 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/TrustManagers.java 15 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/AbstractLDIFReader.java 12 ●●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIF.java 7 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordReader.java 7 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFChangeRecordWriter.java 7 ●●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFEntryReader.java 7 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/LDIFEntryWriter.java 6 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/TemplateFile.java 25 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldif/TemplateTag.java 39 ●●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/TestCaseUtils.java 19 ●●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/ConnectionChangeRecordWriterTestCase.java 118 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/EntryGeneratorTestCase.java 48 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-doc-maven-plugin/src/main/java/org/forgerock/opendj/maven/doc/Utils.java 6 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-ldap-sdk-examples/src/main/java/org/forgerock/opendj/examples/Controls.java 16 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/DataSource.java 10 ●●●● patch | view | raw | blame | history
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);
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);
    }
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);
        }
    }
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;
        }
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));
            }
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();
            }
        }
    }
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);
        }
    }
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 =
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 =
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 {
                /*
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());
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);
        }
    }
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);
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);
        }
    }
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);
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);
        }
    }
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;
        }
    }
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);
        }
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();
        }
    }
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);
        }
    }
}
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);
        }
    }
    /**
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());
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();
            }
        }