RAT-204: Unify resource handling.

* Module: apache-rat-core
** Use IOUtils.closeQuietly() instead of manual try/finally/if !null - Java7 tryWithResources would ease that even more!
** ClaimAggregator: remove unnecessary (un)boxing of integers.
** DirectoryWalker: Avoid possible null access during comparison if files array is null.
** Inline variables that are initialized just before being returned.
** Refactor test class members to be private
** Remove redundant javadoc elements that are IntelliJ-autogenerated.


git-svn-id: https://svn.apache.org/repos/asf/creadur/rat/trunk@1682341 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt
index 057470f..422396e 100644
--- a/RELEASE_NOTES.txt
+++ b/RELEASE_NOTES.txt
@@ -53,6 +53,7 @@
                   Furthermore BinaryGuesser falls back to UTF-8 encoding in case the encoding given via system property (-Dfile.encoding) was not found.
     * [RAT-202] - Report layout differs between successful RAT checks and existence of unapproved files.
     * [RAT-203] - Using 'license' in README, source code, javadoc, comments and site instead of 'licence'; improve terminology to not confuse RAT consumers.
+    * [RAT-204] - Unify resource handling in code and tests, make sure the resources are properly closed. Apply minor refactorings.
 
 Rat 0.11
 ========
@@ -265,4 +266,4 @@
  * This is the last release with the original hacked together plain test report.
    The new XML reporting code is present but is not yet the default.
  * Rat 0.3 is the first release with release notes. All previous releases are
-   now consigned to Ancient History. No record of them will be found here.
\ No newline at end of file
+   now consigned to Ancient History. No record of them will be found here.
diff --git a/apache-rat-core/src/main/java/org/apache/rat/Defaults.java b/apache-rat-core/src/main/java/org/apache/rat/Defaults.java
index 651552f..68fb5ec 100644
--- a/apache-rat-core/src/main/java/org/apache/rat/Defaults.java
+++ b/apache-rat-core/src/main/java/org/apache/rat/Defaults.java
@@ -91,18 +91,15 @@
     public static final String UNAPPROVED_LICENSES_STYLESHEET = "org/apache/rat/unapproved-licenses.xsl";
 
     public static InputStream getPlainStyleSheet() {
-        InputStream result = Defaults.class.getClassLoader().getResourceAsStream(Defaults.PLAIN_STYLESHEET);
-        return result;
+        return Defaults.class.getClassLoader().getResourceAsStream(Defaults.PLAIN_STYLESHEET);
     }
 
     public static InputStream getUnapprovedLicensesStyleSheet() {
-        InputStream result = Defaults.class.getClassLoader().getResourceAsStream(Defaults.UNAPPROVED_LICENSES_STYLESHEET);
-        return result;
+        return Defaults.class.getClassLoader().getResourceAsStream(Defaults.UNAPPROVED_LICENSES_STYLESHEET);
     }
 
     public static InputStream getDefaultStyleSheet() {
-        InputStream result = getPlainStyleSheet();
-        return result;
+        return getPlainStyleSheet();
     }
 
     public static IHeaderMatcher createDefaultMatcher() {
diff --git a/apache-rat-core/src/main/java/org/apache/rat/Report.java b/apache-rat-core/src/main/java/org/apache/rat/Report.java
index c53fffd..0cc09f1 100644
--- a/apache-rat-core/src/main/java/org/apache/rat/Report.java
+++ b/apache-rat-core/src/main/java/org/apache/rat/Report.java
@@ -231,8 +231,7 @@
         HelpFormatter f = new HelpFormatter();
         String header = "Options";
 
-        StringBuilder footer = new StringBuilder("\n");
-        footer.append("NOTE:\n");
+        StringBuilder footer = new StringBuilder("\nNOTE:\n");
         footer.append("Rat is really little more than a grep ATM\n");
         footer.append("Rat is also rather memory hungry ATM\n");
         footer.append("Rat is very basic ATM\n");
diff --git a/apache-rat-core/src/main/java/org/apache/rat/analysis/DocumentHeaderAnalyser.java b/apache-rat-core/src/main/java/org/apache/rat/analysis/DocumentHeaderAnalyser.java
index 891e0f6..e9f658c 100644
--- a/apache-rat-core/src/main/java/org/apache/rat/analysis/DocumentHeaderAnalyser.java
+++ b/apache-rat-core/src/main/java/org/apache/rat/analysis/DocumentHeaderAnalyser.java
@@ -18,13 +18,14 @@
  */ 
 package org.apache.rat.analysis;
 
-import java.io.IOException;
-import java.io.Reader;
-
+import org.apache.commons.io.IOUtils;
 import org.apache.rat.api.Document;
 import org.apache.rat.document.IDocumentAnalyser;
 import org.apache.rat.document.RatDocumentAnalysisException;
 
+import java.io.IOException;
+import java.io.Reader;
+
 public class DocumentHeaderAnalyser implements IDocumentAnalyser {
 
     private final IHeaderMatcher matcher;
@@ -46,13 +47,7 @@
         } catch (RatHeaderAnalysisException e) {
             throw new RatDocumentAnalysisException("Cannot analyse header", e);
         } finally {
-            if (reader != null) {
-                try {
-                    reader.close();
-                } catch (IOException e) {
-                    // SWALLOW
-                }
-            }
+            IOUtils.closeQuietly(reader);
         }
      }
 
diff --git a/apache-rat-core/src/main/java/org/apache/rat/analysis/HeaderCheckWorker.java b/apache-rat-core/src/main/java/org/apache/rat/analysis/HeaderCheckWorker.java
index 32acf97..2ae9edc 100644
--- a/apache-rat-core/src/main/java/org/apache/rat/analysis/HeaderCheckWorker.java
+++ b/apache-rat-core/src/main/java/org/apache/rat/analysis/HeaderCheckWorker.java
@@ -18,13 +18,14 @@
  * under the License.                                           *
  */
 
+import org.apache.commons.io.IOUtils;
+import org.apache.rat.api.Document;
+import org.apache.rat.api.MetaData;
+
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.Reader;
 
-import org.apache.rat.api.Document;
-import org.apache.rat.api.MetaData;
-
 /**
  * <p>Reads from a stream to check license.</p>
  * <p><strong>Note</strong> that this class is not thread safe.</p> 
@@ -94,11 +95,7 @@
             } catch (IOException e) {
                 throw new RatHeaderAnalysisException("Cannot read header for " + subject, e);
             }
-            try {
-                reader.close();
-            } catch (IOException e) {
-                // swallow
-            }
+            IOUtils.closeQuietly(reader);
             matcher.reset();
         }
         finished = true;
diff --git a/apache-rat-core/src/main/java/org/apache/rat/annotation/AbstractLicenseAppender.java b/apache-rat-core/src/main/java/org/apache/rat/annotation/AbstractLicenseAppender.java
index d5e7287..65c9042 100644
--- a/apache-rat-core/src/main/java/org/apache/rat/annotation/AbstractLicenseAppender.java
+++ b/apache-rat-core/src/main/java/org/apache/rat/annotation/AbstractLicenseAppender.java
@@ -18,6 +18,8 @@
  */
 package org.apache.rat.annotation;
 
+import org.apache.commons.io.IOUtils;
+
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
@@ -227,11 +229,14 @@
                 }
             }
         } finally {
-            writer.close();
+            IOUtils.closeQuietly(writer);
         }
 
         if (isForced) {
-            document.delete();
+            boolean deleted = document.delete();
+            if (!deleted) {
+                System.err.println("Could not delete original file to prepare renaming.");
+            }
             boolean renamed = newDocument.renameTo(document.getAbsoluteFile());
             if (!renamed) {
                 System.err.println("Failed to rename new file, original file remains unchanged.");
@@ -254,73 +259,69 @@
                                   boolean expectsMSVSSF)
             throws IOException {
         boolean written = false;
+        FileInputStream fis = null;
+        BufferedReader br = null;
         try {
-            FileInputStream fis = new FileInputStream(document);
-            BufferedReader br = null;
-            try {
-                br = new BufferedReader(new InputStreamReader(new BOMInputStream(fis)));
+            fis = new FileInputStream(document);
+            br = new BufferedReader(new InputStreamReader(new BOMInputStream(fis)));
 
-                if (!expectsHashPling
-                        && !expectsAtEcho
-                        && !expectsPackage
-                        && !expectsXMLDecl
-                        && !expectsPhpPI
-                        && !expectsMSVSSF) {
+            if (!expectsHashPling
+                    && !expectsAtEcho
+                    && !expectsPackage
+                    && !expectsXMLDecl
+                    && !expectsPhpPI
+                    && !expectsMSVSSF) {
+                written = true;
+                writer.write(getLicenseHeader(document));
+                writer.write(LINE_SEP);
+            }
+
+            String line;
+            boolean first = true;
+            while ((line = br.readLine()) != null) {
+                if (first && expectsHashPling) {
                     written = true;
-                    writer.write(getLicenseHeader(document));
+                    doFirstLine(document, writer, line, "#!");
+                } else if (first && expectsAtEcho) {
+                    written = true;
+                    doFirstLine(document, writer, line, "@echo");
+                } else if (first && expectsMSVSSF) {
+                    written = true;
+                    if ("".equals(line)) {
+                        line = passThroughReadNext(writer, line, br);
+                    }
+                    if (line.startsWith("Microsoft Visual Studio Solution"
+                            + " File")) {
+                        line = passThroughReadNext(writer, line, br);
+                    }
+                    doFirstLine(document, writer, line, "# Visual ");
+                } else {
+                    writer.write(line);
                     writer.write(LINE_SEP);
                 }
 
-                String line;
-                boolean first = true;
-                while ((line = br.readLine()) != null) {
-                    if (first && expectsHashPling) {
-                        written = true;
-                        doFirstLine(document, writer, line, "#!");
-                    } else if (first && expectsAtEcho) {
-                        written = true;
-                        doFirstLine(document, writer, line, "@echo");
-                    } else if (first && expectsMSVSSF) {
-                        written = true;
-                        if ("".equals(line)) {
-                            line = passThroughReadNext(writer, line, br);
-                        }
-                        if (line.startsWith("Microsoft Visual Studio Solution"
-                                + " File")) {
-                            line = passThroughReadNext(writer, line, br);
-                        }
-                        doFirstLine(document, writer, line, "# Visual ");
-                    } else {
-                        writer.write(line);
-                        writer.write(LINE_SEP);
-                    }
-
-                    if (expectsPackage && line.startsWith("package ")) {
-                        written = true;
-                        writer.write(LINE_SEP);
-                        writer.write(getLicenseHeader(document));
-                        writer.write(LINE_SEP);
-                    } else if (expectsXMLDecl && line.startsWith("<?xml ")) {
-                        written = true;
-                        writer.write(LINE_SEP);
-                        writer.write(getLicenseHeader(document));
-                        writer.write(LINE_SEP);
-                    } else if (expectsPhpPI && line.startsWith("<?php")) {
-                        written = true;
-                        writer.write(LINE_SEP);
-                        writer.write(getLicenseHeader(document));
-                        writer.write(LINE_SEP);
-                    }
-                    first = false;
+                if (expectsPackage && line.startsWith("package ")) {
+                    written = true;
+                    writer.write(LINE_SEP);
+                    writer.write(getLicenseHeader(document));
+                    writer.write(LINE_SEP);
+                } else if (expectsXMLDecl && line.startsWith("<?xml ")) {
+                    written = true;
+                    writer.write(LINE_SEP);
+                    writer.write(getLicenseHeader(document));
+                    writer.write(LINE_SEP);
+                } else if (expectsPhpPI && line.startsWith("<?php")) {
+                    written = true;
+                    writer.write(LINE_SEP);
+                    writer.write(getLicenseHeader(document));
+                    writer.write(LINE_SEP);
                 }
-            } finally {
-                if (br != null) {
-                    br.close();
-                }
-                fis.close();
+                first = false;
             }
         } finally {
-            writer.close();
+            IOUtils.closeQuietly(br);
+            IOUtils.closeQuietly(fis);
+            IOUtils.closeQuietly(writer);
         }
         return written;
     }
diff --git a/apache-rat-core/src/main/java/org/apache/rat/config/AddLicenseHeaders.java b/apache-rat-core/src/main/java/org/apache/rat/config/AddLicenseHeaders.java
index 04d6154..523aa6e 100644
--- a/apache-rat-core/src/main/java/org/apache/rat/config/AddLicenseHeaders.java
+++ b/apache-rat-core/src/main/java/org/apache/rat/config/AddLicenseHeaders.java
@@ -21,9 +21,6 @@
 
 /**
  * Value of addLicenseHeaders configuration option.
- *
- * @author pottlinger
- * @version 2015-05-11
  */
 public enum AddLicenseHeaders {
     TRUE, //
diff --git a/apache-rat-core/src/main/java/org/apache/rat/config/ReportFormat.java b/apache-rat-core/src/main/java/org/apache/rat/config/ReportFormat.java
index 1f7c2f4..a0635b4 100644
--- a/apache-rat-core/src/main/java/org/apache/rat/config/ReportFormat.java
+++ b/apache-rat-core/src/main/java/org/apache/rat/config/ReportFormat.java
@@ -19,10 +19,6 @@
  * under the License.
  */
 
-/**
- * @author pottlinger
- * @version 2015-05-18, 19:49
- */
 public enum ReportFormat {
     PLAIN,
 
diff --git a/apache-rat-core/src/main/java/org/apache/rat/document/impl/guesser/BinaryGuesser.java b/apache-rat-core/src/main/java/org/apache/rat/document/impl/guesser/BinaryGuesser.java
index a0b68ab..44f7b1d 100644
--- a/apache-rat-core/src/main/java/org/apache/rat/document/impl/guesser/BinaryGuesser.java
+++ b/apache-rat-core/src/main/java/org/apache/rat/document/impl/guesser/BinaryGuesser.java
@@ -18,6 +18,7 @@
  */
 package org.apache.rat.document.impl.guesser;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.rat.api.Document;
 
 import java.io.IOException;
@@ -51,13 +52,7 @@
         } catch (IOException e) {
             result = false;
         } finally {
-            try {
-                if (stream != null) {
-                    stream.close();
-                }
-            } catch (IOException e) {
-                // SWALLOW
-            }
+            IOUtils.closeQuietly(stream);
         }
         return result;
     }
@@ -182,7 +177,7 @@
     public static boolean containsExtension(final String name,
                                             final String[] exts) {
         for (int i = 0; i < exts.length; i++) {
-            if (name.indexOf(DOT + exts[i] + DOT) >= 0) {
+            if (name.contains(DOT + exts[i] + DOT)) {
                 return true;
             }
         }
diff --git a/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/ClaimAggregator.java b/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/ClaimAggregator.java
index 9791266..a4f915d 100644
--- a/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/ClaimAggregator.java
+++ b/apache-rat-core/src/main/java/org/apache/rat/report/claim/impl/ClaimAggregator.java
@@ -19,13 +19,13 @@
 
 package org.apache.rat.report.claim.impl;
 
+import org.apache.rat.api.MetaData;
+import org.apache.rat.api.RatException;
+import org.apache.rat.report.claim.ClaimStatistic;
+
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.rat.api.RatException;
-import org.apache.rat.api.MetaData;
-import org.apache.rat.report.claim.ClaimStatistic;
-
 
 /**
  * The aggregator is used to create a numerical statistic
@@ -48,9 +48,9 @@
         if (num == null) {
             newNum = 1;
         } else {
-            newNum = num.intValue() + 1;
+            newNum = num + 1;
         }
-        pMap.put(pKey, new Integer(newNum));
+        pMap.put(pKey, newNum);
     }
     
     @Override
diff --git a/apache-rat-core/src/main/java/org/apache/rat/report/xml/writer/impl/base/XmlWriter.java b/apache-rat-core/src/main/java/org/apache/rat/report/xml/writer/impl/base/XmlWriter.java
index b990163..71ab3b9 100644
--- a/apache-rat-core/src/main/java/org/apache/rat/report/xml/writer/impl/base/XmlWriter.java
+++ b/apache-rat-core/src/main/java/org/apache/rat/report/xml/writer/impl/base/XmlWriter.java
@@ -557,8 +557,7 @@
     }
 
     private boolean isOutOfRange(final char character) {
-        final boolean result = !ALLOWED_CHARACTERS[character];
-        return result;
+        return !ALLOWED_CHARACTERS[character];
     }
 
     /**
@@ -641,13 +640,11 @@
 
     private boolean isValidNameStart(final char character) {
         final byte code = CHARACTER_CODES[character];
-        final boolean result = (code & NAME_START_MASK) > 0;
-        return result;
+        return (code & NAME_START_MASK) > 0;
     }
 
     private boolean isValidNameBody(final char character) {
         final byte code = CHARACTER_CODES[character];
-        final boolean result = (code & NAME_MASK) > 0;
-        return result;
+        return (code & NAME_MASK) > 0;
     }
 }
diff --git a/apache-rat-core/src/main/java/org/apache/rat/walker/DirectoryWalker.java b/apache-rat-core/src/main/java/org/apache/rat/walker/DirectoryWalker.java
index 7b58387..49dfcb4 100644
--- a/apache-rat-core/src/main/java/org/apache/rat/walker/DirectoryWalker.java
+++ b/apache-rat-core/src/main/java/org/apache/rat/walker/DirectoryWalker.java
@@ -92,8 +92,8 @@
      */
     private void process(final RatReport report, final File file) throws RatException {
         final File[] files = file.listFiles();
-        Arrays.sort(files, COMPARATOR);
         if (files != null) {
+            Arrays.sort(files, COMPARATOR);
             // breadth first traversal
             processNonDirectories(report, files);
             processDirectories(report, files);
diff --git a/apache-rat-core/src/main/java/org/apache/rat/walker/Walker.java b/apache-rat-core/src/main/java/org/apache/rat/walker/Walker.java
index f8a2c19..06f8bd7 100644
--- a/apache-rat-core/src/main/java/org/apache/rat/walker/Walker.java
+++ b/apache-rat-core/src/main/java/org/apache/rat/walker/Walker.java
@@ -19,12 +19,12 @@
 
 package org.apache.rat.walker;
 
+import org.apache.rat.report.IReportable;
+
 import java.io.File;
 import java.io.FilenameFilter;
 import java.util.regex.Pattern;
 
-import org.apache.rat.report.IReportable;
-
 /**
  * Abstract walker.
  */
@@ -50,9 +50,7 @@
     }
 
     protected boolean isRestricted(File file) {
-        String name = file.getName();
-        boolean result = name.startsWith(".");
-        return result;
+        return file.getName().startsWith(".");
     }
  
     protected final boolean ignored(final File file) {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequiredTest.java b/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequiredTest.java
index cc9c361..d9fc72f 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequiredTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/GeneratedLicenseNotRequiredTest.java
@@ -31,8 +31,8 @@
 
 public class GeneratedLicenseNotRequiredTest {
 
-    GeneratedLicenseNotRequired license;
-    MockClaimReporter reporter;
+    private GeneratedLicenseNotRequired license;
+    private MockClaimReporter reporter;
     
     @Before
     public void setUp() throws Exception {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequiredTest.java b/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequiredTest.java
index 0fce4fb..2f22cdc 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequiredTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/analysis/generation/JavaDocLicenseNotRequiredTest.java
@@ -15,9 +15,10 @@
  * KIND, either express or implied.  See the License for the    *
  * specific language governing permissions and limitations      *
  * under the License.                                           *
- */ 
+ */
 package org.apache.rat.analysis.generation;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.rat.api.Document;
 import org.apache.rat.document.MockLocation;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
@@ -34,9 +35,9 @@
 
 public class JavaDocLicenseNotRequiredTest {
 
-    MockClaimReporter reporter;
-    JavaDocLicenseNotRequired license;
-    
+    private MockClaimReporter reporter;
+    private JavaDocLicenseNotRequired license;
+
     @Before
     public void setUp() throws Exception {
         license = new JavaDocLicenseNotRequired();
@@ -60,18 +61,22 @@
         boolean result = readAndMatch("notjavadoc.html");
         assertFalse("Not javadocs and so should return null", result);
     }
-    
+
     boolean readAndMatch(String name) throws Exception {
         File file = Resources.getResourceFile("javadocs/" + name);
         boolean result = false;
-        BufferedReader in = new BufferedReader(new FileReader(file));
-        String line = in.readLine();
-        final Document subject = new MockLocation("subject");
-        while (line != null && !result) {
-            result = license.match(subject, line);
-            line = in.readLine();
+        BufferedReader in = null;
+        try {
+            in = new BufferedReader(new FileReader(file));
+            String line = in.readLine();
+            final Document subject = new MockLocation("subject");
+            while (line != null && !result) {
+                result = license.match(subject, line);
+                line = in.readLine();
+            }
+        } finally {
+                IOUtils.closeQuietly(in);
         }
-        in.close();
-        return result;
+            return result;
+        }
     }
-}
diff --git a/apache-rat-core/src/test/java/org/apache/rat/analysis/license/ApacheSoftwareLicense20Test.java b/apache-rat-core/src/test/java/org/apache/rat/analysis/license/ApacheSoftwareLicense20Test.java
index 28fb2c0..838ae0b 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/analysis/license/ApacheSoftwareLicense20Test.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/analysis/license/ApacheSoftwareLicense20Test.java
@@ -29,7 +29,7 @@
 
 public class ApacheSoftwareLicense20Test {
 
-    MockClaimReporter reporter;
+    private MockClaimReporter reporter;
 
     @Before
     public void setUp() throws Exception {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/analysis/license/AppliedApacheSoftwareLicense20Test.java b/apache-rat-core/src/test/java/org/apache/rat/analysis/license/AppliedApacheSoftwareLicense20Test.java
index 5304e82..94c0917 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/analysis/license/AppliedApacheSoftwareLicense20Test.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/analysis/license/AppliedApacheSoftwareLicense20Test.java
@@ -15,12 +15,10 @@
  * KIND, either express or implied.  See the License for the    *
  * specific language governing permissions and limitations      *
  * under the License.                                           *
- */ 
+ */
 package org.apache.rat.analysis.license;
 
-import java.io.BufferedReader;
-import java.io.StringReader;
-
+import org.apache.commons.io.IOUtils;
 import org.apache.rat.api.Document;
 import org.apache.rat.document.MockLocation;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
@@ -28,6 +26,9 @@
 import org.junit.Before;
 import org.junit.Test;
 
+import java.io.BufferedReader;
+import java.io.StringReader;
+
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
@@ -50,9 +51,9 @@
             + " *  limitations under the License.\n"
             + " */\n";
 
-    AppliedApacheSoftwareLicense20 license;
-    
-    MockClaimReporter reporter;
+    private AppliedApacheSoftwareLicense20 license;
+
+    private MockClaimReporter reporter;
 
     @Before
     public void setUp() throws Exception {
@@ -78,25 +79,31 @@
 
     @Test
     public void noMatch() throws Exception {
-        BufferedReader in = Resources.getBufferedResourceReader("elements/Source.java");
-        String line = in.readLine();
-        boolean result = false;
-        final Document subject = new MockLocation("subject");
-        while (line != null) {
-            result = license.match(subject, line);
-            line = in.readLine();
+        BufferedReader in = null;
+        try {
+            in = Resources.getBufferedResourceReader("elements/Source.java");
+            String line = in.readLine();
+            boolean result = false;
+            final Document subject = new MockLocation("subject");
+            while (line != null) {
+                result = license.match(subject, line);
+                line = in.readLine();
+            }
+            assertFalse("Applied AL2.0 license should not be matched", result);
+            license.reset();
+        } finally {
+            IOUtils.closeQuietly(in);
         }
-        assertFalse("Applied AL2.0 license should not be matched", result);
-        license.reset();
     }
-    @Test(timeout=2000) // may need to be adjusted if many more files are added
+
+    @Test(timeout = 2000) // may need to be adjusted if many more files are added
     public void goodFiles() throws Exception {
         DirectoryScanner.testFilesInDir("appliedAL20/good", license, true);
     }
-   
-    @Test(timeout=2000) // may need to be adjusted if many more files are added
+
+    @Test(timeout = 2000) // may need to be adjusted if many more files are added
     public void baddFiles() throws Exception {
         DirectoryScanner.testFilesInDir("appliedAL20/bad", license, false);
     }
-   
+
 }
diff --git a/apache-rat-core/src/test/java/org/apache/rat/analysis/license/CopyrightHeaderTest.java b/apache-rat-core/src/test/java/org/apache/rat/analysis/license/CopyrightHeaderTest.java
index 82dd89e..5699cf5 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/analysis/license/CopyrightHeaderTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/analysis/license/CopyrightHeaderTest.java
@@ -43,9 +43,9 @@
             , "/*  Copyright 2013FooBar*/"
             , "/*  Copyright 2012 2013 FooBar.*/" };
 
-    CopyrightHeader header;
-    MockClaimReporter reporter;
-    Document subject = new MockLocation("subject");
+    private CopyrightHeader header;
+    private MockClaimReporter reporter;
+    private Document subject = new MockLocation("subject");
 
     @Before
     public void setUp() throws Exception {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/analysis/license/OASISLicenseTest.java b/apache-rat-core/src/test/java/org/apache/rat/analysis/license/OASISLicenseTest.java
index 235c180..7e46921 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/analysis/license/OASISLicenseTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/analysis/license/OASISLicenseTest.java
@@ -15,9 +15,10 @@
  * KIND, either express or implied.  See the License for the    *
  * specific language governing permissions and limitations      *
  * under the License.                                           *
- */ 
+ */
 package org.apache.rat.analysis.license;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.rat.api.Document;
 import org.apache.rat.document.MockLocation;
 import org.apache.rat.report.claim.impl.xml.MockClaimReporter;
@@ -32,7 +33,7 @@
 import static org.junit.Assert.assertTrue;
 
 public class OASISLicenseTest {
-    
+
     private static final String LICENSE = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<!--\n" +
             "\n" +
@@ -52,10 +53,10 @@
             "\n" +
             "This document and the information contained herein is provided on an \"AS IS\" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n" +
             "-->\n";
-    
-    OASISLicense license;
-    
-    MockClaimReporter reporter;
+
+    private OASISLicense license;
+
+    private MockClaimReporter reporter;
 
     @Before
     public void setUp() throws Exception {
@@ -65,42 +66,52 @@
 
     @Test
     public void match() throws Exception {
-        BufferedReader in = new BufferedReader(new StringReader(LICENSE));
-        String line = in.readLine();
-        boolean result = false;
-        final Document subject = new MockLocation("subject");
-        while (line != null) {
-            result = license.match(subject, line);
-            line = in.readLine();
+        BufferedReader in = null;
+        try {
+            in = new BufferedReader(new StringReader(LICENSE));
+            String line = in.readLine();
+            boolean result = false;
+            final Document subject = new MockLocation("subject");
+            while (line != null) {
+                result = license.match(subject, line);
+                line = in.readLine();
+            }
+            assertTrue("OASIS license should be matched", result);
+            license.reset();
+            result = license.match(subject, "New line");
+            assertFalse("After reset, content should build up again", result);
+        } finally {
+            IOUtils.closeQuietly(in);
         }
-        assertTrue("OASIS license should be matched", result);
-        license.reset();
-        result = license.match(subject, "New line");
-        assertFalse("After reset, content should build up again", result);
     }
 
     @Test
     public void noMatch() throws Exception {
-        BufferedReader in = Resources.getBufferedResourceReader("elements/Source.java");
-        String line = in.readLine();
-        boolean result = false;
-        final Document subject = new MockLocation("subject");
-        while (line != null) {
-            result = license.match(subject, line);
-            line = in.readLine();
+        BufferedReader in = null;
+        try {
+            in = Resources.getBufferedResourceReader("elements/Source.java");
+            String line = in.readLine();
+            boolean result = false;
+            final Document subject = new MockLocation("subject");
+            while (line != null) {
+                result = license.match(subject, line);
+                line = in.readLine();
+            }
+            assertFalse("OASIS license should not be matched", result);
+            license.reset();
+        } finally {
+            IOUtils.closeQuietly(in);
         }
-        assertFalse("OASIS license should not be matched", result);
-        license.reset();
     }
-    
-    @Test(timeout=2000) // may need to be adjusted if many more files are added
+
+    @Test(timeout = 2000) // may need to be adjusted if many more files are added
     public void goodFiles() throws Exception {
         DirectoryScanner.testFilesInDir("oasis/good", license, true);
     }
-   
-    @Test(timeout=2000) // may need to be adjusted if many more files are added
+
+    @Test(timeout = 2000) // may need to be adjusted if many more files are added
     public void baddFiles() throws Exception {
         DirectoryScanner.testFilesInDir("oasis/bad", license, false);
     }
-   
+
 }
diff --git a/apache-rat-core/src/test/java/org/apache/rat/analysis/license/W3CLicenseTest.java b/apache-rat-core/src/test/java/org/apache/rat/analysis/license/W3CLicenseTest.java
index ce4f412..6397bbd 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/analysis/license/W3CLicenseTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/analysis/license/W3CLicenseTest.java
@@ -38,8 +38,8 @@
     public static final String COPYRIGHT_URL_XML
     = "<!-- http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 -->";
     
-    W3CLicense license;
-    MockClaimReporter reporter;
+    private W3CLicense license;
+    private MockClaimReporter reporter;
 
     @Before
     public void setUp() throws Exception {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/annotation/TestLicenseAppender.java b/apache-rat-core/src/test/java/org/apache/rat/annotation/TestLicenseAppender.java
index a76488a..0c58154 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/annotation/TestLicenseAppender.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/annotation/TestLicenseAppender.java
@@ -18,6 +18,7 @@
  */
 package org.apache.rat.annotation;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.rat.test.utils.Resources;
 import org.junit.ClassRule;
 import org.junit.Test;
@@ -62,9 +63,7 @@
         try {
             creator.createFile(w = new FileWriter(fileName));
         } finally {
-            if (w != null) {
-                w.close();
-            }
+            IOUtils.closeQuietly(w);
         }
     }
 
@@ -91,9 +90,7 @@
                 r = new BufferedReader(new FileReader(name + ".new"));
                 reader.readFile(r);
             } finally {
-                if (r != null) {
-                    r.close();
-                }
+                IOUtils.closeQuietly(r);
             }
         } finally {
             tryToDelete(new File(name));
@@ -142,28 +139,23 @@
     @Test
     public void addLicenseToUnknownFile() throws IOException {
         String filename = getTemporaryFileWithName(null);
-        File file = null;
-        File newFile = null;
-        try {
-            createTestFile(filename, new FileCreator() {
-                public void createFile(Writer writer)
-                        throws IOException {
-                    writer.write("Unknown file type\n");
-                }
-            });
+        createTestFile(filename, new FileCreator() {
+            public void createFile(Writer writer)
+                    throws IOException {
+                writer.write("Unknown file type\n");
+            }
+        });
 
-            file = new File(filename);
-            ApacheV2LicenseAppender appender =
-                    new ApacheV2LicenseAppender();
-            appender.append(file);
+        File file = new File(filename);
+        file.deleteOnExit();
+        ApacheV2LicenseAppender appender =
+                new ApacheV2LicenseAppender();
+        appender.append(file);
 
-            newFile = new File(filename + ".new");
-            assertFalse("No new file should have been written",
-                    newFile.exists());
-        } finally {
-            tryToDelete(file);
-            tryToDelete(newFile);
-        }
+        File newFile = new File(filename + ".new");
+        newFile.deleteOnExit();
+        assertFalse("No new file should have been written",
+                newFile.exists());
     }
 
     @Test
@@ -530,9 +522,7 @@
                 }
                 assertEquals("#if NET_2_0", r.readLine());
             } finally {
-                if (r != null) {
-                    r.close();
-                }
+                IOUtils.closeQuietly(r);
             }
         } finally {
             tryToDelete(new File(f.getAbsolutePath() + ".new"));
diff --git a/apache-rat-core/src/test/java/org/apache/rat/config/AddLicenseHeadersTest.java b/apache-rat-core/src/test/java/org/apache/rat/config/AddLicenseHeadersTest.java
index c5da80f..7b90c18 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/config/AddLicenseHeadersTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/config/AddLicenseHeadersTest.java
@@ -21,10 +21,6 @@
 
 import static org.junit.Assert.assertFalse;
 
-/**
- * @author pottlinger
- * @version 2015-05-17, 21:14
- */
 public class AddLicenseHeadersTest {
     @Test
     public void verifyHelpOptions() {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/config/ReportFormatTest.java b/apache-rat-core/src/test/java/org/apache/rat/config/ReportFormatTest.java
index fc080f1..ccb5612 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/config/ReportFormatTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/config/ReportFormatTest.java
@@ -26,10 +26,6 @@
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-/**
- * @author pottlinger
- * @version 2015-05-18, 19:52
- */
 public class ReportFormatTest {
     @Test
     public void isANullSafe() {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/document/MockDocument.java b/apache-rat-core/src/test/java/org/apache/rat/document/MockDocument.java
index d1c20ae..d52ae6b 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/document/MockDocument.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/document/MockDocument.java
@@ -18,17 +18,17 @@
  */ 
 package org.apache.rat.document;
 
+import org.apache.rat.api.Document;
+import org.apache.rat.api.MetaData;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
 
-import org.apache.rat.api.Document;
-import org.apache.rat.api.MetaData;
-
 public class MockDocument implements Document {
 
-    public Reader reader;
-    public String name;
+    private final Reader reader;
+    private final String name;
     private final MetaData metaData = new MetaData();
 
     public MockDocument() {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/document/ToNameTransformerTest.java b/apache-rat-core/src/test/java/org/apache/rat/document/ToNameTransformerTest.java
index 8145222..a5aadb4 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/document/ToNameTransformerTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/document/ToNameTransformerTest.java
@@ -26,7 +26,7 @@
 
 public class ToNameTransformerTest {
 
-    ToNameTransformer transformer = new ToNameTransformer();
+    private ToNameTransformer transformer = new ToNameTransformer();
     
     @Test
     public void transformLocation() {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/document/impl/guesser/BinaryGuesserTest.java b/apache-rat-core/src/test/java/org/apache/rat/document/impl/guesser/BinaryGuesserTest.java
index f96fe0d..a80c3fb 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/document/impl/guesser/BinaryGuesserTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/document/impl/guesser/BinaryGuesserTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.rat.document.impl.guesser;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.rat.document.MockDocument;
 import org.apache.rat.document.impl.FileDocument;
 import org.apache.rat.test.utils.Resources;
@@ -52,7 +53,6 @@
             "deprecatedtechnology.swf"
     );
 
-
     @Test
     public void testMatches() {
         for (String name : BINARY_FILES) {
@@ -94,16 +94,14 @@
             System.err.println("Skipping testBinaryWithMalformedInput");
         } catch (IOException e) {
             if (r != null) {
-                r.close();
+                IOUtils.closeQuietly(r);
             } else {
                 throw e; // could not open the second file
             }
             r = null;
             assertTrue("Expected binary for " + doc.getName(), BinaryGuesser.isBinary(doc));
         } finally {
-            if (r != null) {
-                r.close();
-            }
+            IOUtils.closeQuietly(r);
         }
     }
 
diff --git a/apache-rat-core/src/test/java/org/apache/rat/document/impl/util/DocumentAnalyserMultiplexerTest.java b/apache-rat-core/src/test/java/org/apache/rat/document/impl/util/DocumentAnalyserMultiplexerTest.java
index 9fc7711..c03df15 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/document/impl/util/DocumentAnalyserMultiplexerTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/document/impl/util/DocumentAnalyserMultiplexerTest.java
@@ -25,9 +25,9 @@
 
 public class DocumentAnalyserMultiplexerTest extends TestCase {
 
-    DocumentAnalyserMultiplexer multiplexer;
-    IDocumentAnalyser[] analysers;
-    MockDocument document;
+    private DocumentAnalyserMultiplexer multiplexer;
+    private IDocumentAnalyser[] analysers;
+    private MockDocument document;
     
     @Override
     protected void setUp() throws Exception {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/header/ArrayCharFilterTest.java b/apache-rat-core/src/test/java/org/apache/rat/header/ArrayCharFilterTest.java
index b7f2382..adddf1a 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/header/ArrayCharFilterTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/header/ArrayCharFilterTest.java
@@ -27,7 +27,7 @@
 public class ArrayCharFilterTest {
 
     private static final char[] filtered = {'d', 'o', 'a'};
-    ArrayCharFilter filter;
+    private ArrayCharFilter filter;
     
     @Before
     public void setUp() throws Exception {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/header/FilteringSequenceFactoryTest.java b/apache-rat-core/src/test/java/org/apache/rat/header/FilteringSequenceFactoryTest.java
index 0006a7a..c98db84 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/header/FilteringSequenceFactoryTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/header/FilteringSequenceFactoryTest.java
@@ -28,9 +28,9 @@
 
 public class FilteringSequenceFactoryTest {
 
-    int capacity;
-    FilteringSequenceFactory factory;
-    SimpleCharFilter filter;
+    private int capacity;
+    private FilteringSequenceFactory factory;
+    private SimpleCharFilter filter;
 
     @Before
     public void setUp() throws Exception {
@@ -75,7 +75,7 @@
         StringReader reader = new StringReader(INPUT);
         CharSequence result = factory.filter(reader);
         assertNotNull(result);
-        String output = new StringBuffer().append(result).toString();
+        String output = result.toString();
         assertEquals("No filtering so input equals output.", INPUT.substring(0, capacity), output);
     }
 }
diff --git a/apache-rat-core/src/test/java/org/apache/rat/header/HeaderMatcherTest.java b/apache-rat-core/src/test/java/org/apache/rat/header/HeaderMatcherTest.java
index 381b6e9..7bfd068 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/header/HeaderMatcherTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/header/HeaderMatcherTest.java
@@ -30,9 +30,9 @@
 
 public class HeaderMatcherTest {
 
-    int capacity;
-    HeaderMatcher matcher;
-    SimpleCharFilter filter;
+    private int capacity;
+    private HeaderMatcher matcher;
+    private SimpleCharFilter filter;
 
     @Before
     public void setUp() throws Exception {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/header/HeaderMatcherWithBeansTest.java b/apache-rat-core/src/test/java/org/apache/rat/header/HeaderMatcherWithBeansTest.java
index e937d6a..ce5e9db 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/header/HeaderMatcherWithBeansTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/header/HeaderMatcherWithBeansTest.java
@@ -30,10 +30,10 @@
 
 public class HeaderMatcherWithBeansTest {
 
-    int capacity;
-    HeaderMatcher matcher;
-    SimpleCharFilter filter;
-    HeaderBean[] beans;
+    private int capacity;
+    private HeaderMatcher matcher;
+    private SimpleCharFilter filter;
+    private HeaderBean[] beans;
 
     @Before
     public void setUp() throws Exception {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/report/xml/MockXmlWriter.java b/apache-rat-core/src/test/java/org/apache/rat/report/xml/MockXmlWriter.java
index 69ed4d3..ec08988 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/report/xml/MockXmlWriter.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/report/xml/MockXmlWriter.java
@@ -18,19 +18,15 @@
  */ 
 package org.apache.rat.report.xml;
 
+import org.apache.rat.report.xml.writer.IXmlWriter;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.rat.report.xml.writer.IXmlWriter;
-
 public class MockXmlWriter implements IXmlWriter {
 
-    public final List<Object> calls;
-    
-    public MockXmlWriter() {
-        calls = new ArrayList<Object>();
-    }
+    public final List<Object> calls = new ArrayList<Object>();
     
     public IXmlWriter attribute(CharSequence name, CharSequence value)
             throws IOException {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java b/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java
index 7cd1513..b02d047 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportFactoryTest.java
@@ -41,8 +41,8 @@
 
     private static final Pattern IGNORE_EMPTY = Pattern.compile(".svn|Empty.txt");
     
-    StringWriter out;
-    IXmlWriter writer;
+    private StringWriter out;
+    private IXmlWriter writer;
     
     @Before
     public void setUp() throws Exception {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java b/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java
index 4fe0a37..6debecc 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/report/xml/XmlReportTest.java
@@ -45,9 +45,9 @@
 public class XmlReportTest {
 
     private static final Pattern IGNORE = Pattern.compile(".svn");
-    StringWriter out;
-    IXmlWriter writer;
-    RatReport report;
+    private StringWriter out;
+    private IXmlWriter writer;
+    private RatReport report;
     
     @Before
     public void setUp() throws Exception {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/report/xml/writer/XmlWriterUtilsTest.java b/apache-rat-core/src/test/java/org/apache/rat/report/xml/writer/XmlWriterUtilsTest.java
index 8aa532a..69ef2c4 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/report/xml/writer/XmlWriterUtilsTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/report/xml/writer/XmlWriterUtilsTest.java
@@ -28,8 +28,8 @@
 
 public class XmlWriterUtilsTest {
 
-    StringWriter out;
-    IXmlWriter writer;
+    private StringWriter out;
+    private IXmlWriter writer;
 
     @Before
     public void setUp() throws Exception {
diff --git a/apache-rat-core/src/test/java/org/apache/rat/report/xml/writer/impl/base/XmlWriterTest.java b/apache-rat-core/src/test/java/org/apache/rat/report/xml/writer/impl/base/XmlWriterTest.java
index 3e43acf..6c86118 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/report/xml/writer/impl/base/XmlWriterTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/report/xml/writer/impl/base/XmlWriterTest.java
@@ -34,8 +34,8 @@
 
     private static final char[] ZERO_CHAR = {(char)0};
     
-    XmlWriter writer;
-    StringWriter out;
+    private XmlWriter writer;
+    private StringWriter out;
     
     @Before
     public void setUp() throws Exception {