This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git


The following commit(s) were added to refs/heads/main by this push:
     new c0331e3  fix for TIKA-3398 contributed by kamaci (#439)
c0331e3 is described below

commit c0331e3f74635cda68a345402b2855792a0bc140
Author: Furkan KAMACI <[email protected]>
AuthorDate: Wed May 12 19:24:54 2021 +0300

    fix for TIKA-3398 contributed by kamaci (#439)
    
    Thank you @kamaci !
---
 .../src/main/java/org/apache/tika/cli/TikaCLI.java |   2 -
 .../src/main/java/org/apache/tika/gui/TikaGUI.java |   2 +-
 .../java/org/apache/tika/pipes/PipesClient.java    |   4 +-
 .../org/apache/tika/sax/DIFContentHandler.java     |   8 +-
 .../java/org/apache/tika/utils/ParserUtils.java    |   2 +-
 .../java/org/apache/tika/fork/ForkParserTest.java  |   2 +-
 .../apache/tika/utils/ServiceLoaderUtilsTest.java  |   3 +-
 .../org/apache/tika/eval/app/AbstractProfiler.java |   4 +-
 .../org/apache/tika/eval/app/ExtractProfiler.java  |   2 +-
 .../java/org/apache/tika/eval/app/TikaEvalCLI.java |   6 +-
 .../java/org/apache/tika/eval/app/db/JDBCUtil.java |   3 +-
 .../eval/app/tools/CommonTokenOverlapCounter.java  |   2 +-
 .../tika/eval/app/tools/TopCommonTokenCounter.java |   2 +-
 .../apache/tika/eval/app/ProfilerBatchTest.java    |   2 +-
 .../tika/eval/app/db/AbstractBufferTest.java       |   2 +-
 .../tika/eval/core/tokens/TokenContraster.java     |   2 +-
 .../apache/tika/eval/core/langid/LangIdTest.java   |   2 +-
 .../tika/example/InterruptableParsingExample.java  |   2 +-
 .../org/apache/tika/example/RollbackSoftware.java  |   3 +-
 .../org/apache/tika/fuzzing/pdf/EvilCOSWriter.java |   2 +-
 .../langdetect/tika/LanguageIdentifierTest.java    |  14 +--
 .../apache/tika/parser/journal/TEIDOMParser.java   |   4 +-
 .../tika/parser/ner/mitie/MITIENERecogniser.java   |   9 +-
 .../org/apache/tika/parser/mp3/ID3v1Handler.java   |   4 +-
 .../apache/tika/parser/code/SourceCodeParser.java  |   2 +-
 .../org/apache/tika/parser/crypto/TSDParser.java   |   2 +-
 .../org/apache/tika/parser/image/ICNSParser.java   |  31 ++++--
 .../org/apache/tika/parser/image/PSDParser.java    |   3 +-
 .../tika/parser/microsoft/AbstractListManager.java |   2 +-
 .../tika/parser/microsoft/HSLFExtractor.java       |   2 +-
 .../apache/tika/parser/microsoft/ListManager.java  |   2 +-
 .../tika/parser/microsoft/WordExtractor.java       |  12 +--
 .../tika/parser/microsoft/chm/ChmBlockInfo.java    |  10 +-
 .../microsoft/chm/ChmDirectoryListingSet.java      |   8 +-
 .../tika/parser/microsoft/chm/ChmItsfHeader.java   |  26 ++---
 .../tika/parser/microsoft/chm/ChmItspHeader.java   |  84 ++++++++++------
 .../tika/parser/microsoft/chm/ChmLzxState.java     |  83 +++++++++------
 .../parser/microsoft/chm/ChmLzxcControlData.java   |  31 ++++--
 .../parser/microsoft/chm/ChmLzxcResetTable.java    |  17 ++--
 .../tika/parser/microsoft/chm/ChmPmgiHeader.java   |   4 +-
 .../tika/parser/microsoft/chm/ChmPmglHeader.java   |  10 +-
 .../microsoft/chm/DirectoryListingEntry.java       |  10 +-
 .../tika/parser/microsoft/onenote/IndentUtil.java  |   6 +-
 .../parser/microsoft/onenote/OneNoteParser.java    |   3 +-
 .../tika/parser/microsoft/onenote/OneNotePtr.java  |   6 +-
 .../ooxml/XSLFPowerPointExtractorDecorator.java    |   2 +-
 .../microsoft/ooxml/xps/XPSPageContentHandler.java |   2 +-
 .../apache/tika/parser/dif/DIFContentHandler.java  |   8 +-
 .../apache/tika/parser/iptc/IptcAnpaParser.java    | 112 ++++++++++-----------
 .../tika/parser/ocr/TesseractOCRParserTest.java    |   4 +-
 .../tika/parser/pdf/ImageGraphicsEngine.java       |   5 +-
 .../org/apache/tika/parser/pdf/PDFParserTest.java  |   1 +
 .../tika/parser/strings/Latin1StringsParser.java   |   5 +-
 .../tika/parser/xmp/JempboxExtractorTest.java      |   3 +-
 .../pipesiterator/jdbc/JDBCPipesIterator.java      |   2 +-
 .../apache/tika/server/core/TikaServerConfig.java  |   7 +-
 .../tika/server/core/TikaServerWatchDog.java       |   4 +-
 .../org/apache/tika/xmp/convert/RTFConverter.java  |   2 +-
 58 files changed, 324 insertions(+), 275 deletions(-)

diff --git a/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java 
b/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
index c110a6d..5026a3e 100644
--- a/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
+++ b/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
@@ -67,7 +67,6 @@ import org.apache.tika.config.TikaConfig;
 import org.apache.tika.config.TikaConfigSerializer;
 import org.apache.tika.detect.CompositeDetector;
 import org.apache.tika.detect.Detector;
-import org.apache.tika.exception.TikaConfigException;
 import org.apache.tika.exception.TikaException;
 import org.apache.tika.extractor.DefaultEmbeddedStreamTranslator;
 import org.apache.tika.extractor.EmbeddedDocumentExtractor;
@@ -99,7 +98,6 @@ import org.apache.tika.parser.pdf.PDFParserConfig;
 import org.apache.tika.pipes.FetchEmitTuple;
 import org.apache.tika.pipes.PipesException;
 import org.apache.tika.pipes.async.AsyncProcessor;
-import org.apache.tika.pipes.fetcher.Fetcher;
 import org.apache.tika.pipes.pipesiterator.PipesIterator;
 import org.apache.tika.sax.BasicContentHandlerFactory;
 import org.apache.tika.sax.BodyContentHandler;
diff --git a/tika-app/src/main/java/org/apache/tika/gui/TikaGUI.java 
b/tika-app/src/main/java/org/apache/tika/gui/TikaGUI.java
index 49e11f3..386d0d4 100644
--- a/tika-app/src/main/java/org/apache/tika/gui/TikaGUI.java
+++ b/tika-app/src/main/java/org/apache/tika/gui/TikaGUI.java
@@ -409,7 +409,7 @@ public class TikaGUI extends JFrame
     private void handleError(String name, Throwable t) {
         StringWriter writer = new StringWriter();
         writer.append("Apache Tika was unable to parse the document\n");
-        writer.append("at " + name + ".\n\n");
+        writer.append("at ").append(name).append(".\n\n");
         writer.append("The full exception stack trace is included below:\n\n");
         t.printStackTrace(new PrintWriter(writer));
 
diff --git a/tika-core/src/main/java/org/apache/tika/pipes/PipesClient.java 
b/tika-core/src/main/java/org/apache/tika/pipes/PipesClient.java
index 09826b0..52d921c 100644
--- a/tika-core/src/main/java/org/apache/tika/pipes/PipesClient.java
+++ b/tika-core/src/main/java/org/apache/tika/pipes/PipesClient.java
@@ -234,9 +234,7 @@ public class PipesClient implements Closeable {
         if (! hasExitOnOOM) {
             //warn
         }
-        for (String arg : configArgs) {
-            commandLine.add(arg);
-        }
+        commandLine.addAll(configArgs);
         commandLine.add("org.apache.tika.pipes.PipesServer");
         commandLine.add(
                 
ProcessUtils.escapeCommandLine(pipesConfig.getTikaConfig().toAbsolutePath().toString()));
diff --git a/tika-core/src/main/java/org/apache/tika/sax/DIFContentHandler.java 
b/tika-core/src/main/java/org/apache/tika/sax/DIFContentHandler.java
index 9764437..b76c4d7 100644
--- a/tika-core/src/main/java/org/apache/tika/sax/DIFContentHandler.java
+++ b/tika-core/src/main/java/org/apache/tika/sax/DIFContentHandler.java
@@ -116,16 +116,16 @@ public class DIFContentHandler extends DefaultHandler {
         }
         if (this.isLeaf) {
             Stack<String> tempStack = (Stack<String>) this.treeStack.clone();
-            String key = "";
+            StringBuilder key = new StringBuilder();
             while (!tempStack.isEmpty()) {
                 if (key.length() == 0) {
-                    key = tempStack.pop();
+                    key = new StringBuilder(tempStack.pop());
                 } else {
-                    key = tempStack.pop() + "-" + key;
+                    key.insert(0, tempStack.pop() + "-");
                 }
             }
             String value = this.dataStack.peek();
-            this.metadata.add(key, value);
+            this.metadata.add(key.toString(), value);
             this.isLeaf = false;
         }
         this.treeStack.pop();
diff --git a/tika-core/src/main/java/org/apache/tika/utils/ParserUtils.java 
b/tika-core/src/main/java/org/apache/tika/utils/ParserUtils.java
index 10e9243..c1400fd 100644
--- a/tika-core/src/main/java/org/apache/tika/utils/ParserUtils.java
+++ b/tika-core/src/main/java/org/apache/tika/utils/ParserUtils.java
@@ -80,7 +80,7 @@ public class ParserUtils {
         String[] parsedBys = 
metadata.getValues(TikaCoreProperties.TIKA_PARSED_BY);
         if (parsedBys == null || parsedBys.length == 0) {
             metadata.add(TikaCoreProperties.TIKA_PARSED_BY, className);
-        } else if (! Arrays.stream(parsedBys).anyMatch(className::equals)) {
+        } else if (Arrays.stream(parsedBys).noneMatch(className::equals)) {
             //only add parser once
             metadata.add(TikaCoreProperties.TIKA_PARSED_BY, className);
         }
diff --git a/tika-core/src/test/java/org/apache/tika/fork/ForkParserTest.java 
b/tika-core/src/test/java/org/apache/tika/fork/ForkParserTest.java
index bd992b4..6cfeb23 100644
--- a/tika-core/src/test/java/org/apache/tika/fork/ForkParserTest.java
+++ b/tika-core/src/test/java/org/apache/tika/fork/ForkParserTest.java
@@ -491,7 +491,7 @@ public class ForkParserTest extends TikaTest {
             }
             if (!contentHandler.getClass().equals(DefaultHandler.class)) {
                 sb.append("\n");
-                sb.append("CONTENT: " + contentHandler.toString());
+                sb.append("CONTENT: ").append(contentHandler);
                 sb.append("\n\n");
             }
             return sb.toString().getBytes(StandardCharsets.UTF_8);
diff --git 
a/tika-core/src/test/java/org/apache/tika/utils/ServiceLoaderUtilsTest.java 
b/tika-core/src/test/java/org/apache/tika/utils/ServiceLoaderUtilsTest.java
index bb79311..269e77c 100644
--- a/tika-core/src/test/java/org/apache/tika/utils/ServiceLoaderUtilsTest.java
+++ b/tika-core/src/test/java/org/apache/tika/utils/ServiceLoaderUtilsTest.java
@@ -44,8 +44,7 @@ public class ServiceLoaderUtilsTest {
         Detector[] detectors = new Detector[]{new MyCustomDetector(), new 
EmptyDetector(),
                 new FileCommandDetector(), new OverrideDetector(), new 
ZeroSizeFileDetector()};
         List<Detector> expected = Arrays.asList(detectors);
-        List<Detector> shuffled = new ArrayList<>();
-        shuffled.addAll(expected);
+        List<Detector> shuffled = new ArrayList<>(expected);
         Random random = new Random(42);
         for (int i = 0; i < 10; i++) {
             Collections.shuffle(shuffled, random);
diff --git 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/AbstractProfiler.java
 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/AbstractProfiler.java
index 7202204..5e5756e 100644
--- 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/AbstractProfiler.java
+++ 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/AbstractProfiler.java
@@ -609,7 +609,7 @@ public abstract class AbstractProfiler extends 
FileResourceConsumer {
             if (i > 0) {
                 sb.append(" | ");
             }
-            sb.append(pairs.get(i).getKey() + ": " + pairs.get(i).getValue());
+            sb.append(pairs.get(i).getKey()).append(": 
").append(pairs.get(i).getValue());
         }
         data.put(Cols.UNICODE_CHAR_BLOCKS, sb.toString());
     }
@@ -648,7 +648,7 @@ public abstract class AbstractProfiler extends 
FileResourceConsumer {
             if (i++ > 0) {
                 sb.append(" | ");
             }
-            sb.append(t.getToken() + ": " + t.getValue());
+            sb.append(t.getToken()).append(": ").append(t.getValue());
         }
 
         data.put(Cols.TOP_N_TOKENS, sb.toString());
diff --git 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfiler.java
 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfiler.java
index edaa2e4..5c041c6 100644
--- 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfiler.java
+++ 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfiler.java
@@ -193,7 +193,7 @@ public class ExtractProfiler extends AbstractProfiler {
         }
 
         Map<Cols, String> contOutput = new HashMap<>();
-        Long srcFileLen = getSourceFileLength(fps, metadataList);
+        long srcFileLen = getSourceFileLength(fps, metadataList);
         contOutput.put(Cols.LENGTH,
                 srcFileLen > NON_EXISTENT_FILE_LENGTH ? 
Long.toString(srcFileLen) : "");
         contOutput.put(Cols.CONTAINER_ID, containerIdString);
diff --git 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/TikaEvalCLI.java
 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/TikaEvalCLI.java
index 5a71544..20e9db6 100644
--- 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/TikaEvalCLI.java
+++ 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/TikaEvalCLI.java
@@ -40,7 +40,7 @@ public class TikaEvalCLI {
         StringBuilder sb = new StringBuilder();
         sb.append("Must specify one of the following tools in the first 
parameter:\n");
         for (String s : tools) {
-            sb.append(s + "\n");
+            sb.append(s).append("\n");
         }
         return sb.toString();
 
@@ -82,7 +82,7 @@ public class TikaEvalCLI {
     }
 
     private void handleProfileFiles(String[] subsetArgs) throws Exception {
-        List<String> argList = new ArrayList(Arrays.asList(subsetArgs));
+        List<String> argList = Arrays.asList(subsetArgs);
 
         boolean containsBC = false;
         String inputDir = null;
@@ -106,7 +106,7 @@ public class TikaEvalCLI {
                 argList.add(tmpBCConfig.toAbsolutePath().toString());
             }
 
-            String[] updatedArgs = argList.toArray(new String[argList.size()]);
+            String[] updatedArgs = argList.toArray(new String[0]);
             DefaultParser defaultCLIParser = new DefaultParser();
             try {
                 CommandLine commandLine = 
defaultCLIParser.parse(FileProfiler.OPTIONS, updatedArgs);
diff --git 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/db/JDBCUtil.java
 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/db/JDBCUtil.java
index 0f30540..4988642 100644
--- 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/db/JDBCUtil.java
+++ 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/db/JDBCUtil.java
@@ -278,7 +278,7 @@ public class JDBCUtil {
     //does not close the connection
     private void createTable(Connection conn, TableInfo tableInfo) throws 
SQLException {
         StringBuilder createSql = new StringBuilder();
-        createSql.append("CREATE TABLE " + tableInfo.getName());
+        createSql.append("CREATE TABLE ").append(tableInfo.getName());
         createSql.append("(");
 
         int last = 0;
@@ -299,7 +299,6 @@ public class JDBCUtil {
         createSql.append(")");
         try (Statement st = conn.createStatement()) {
             st.execute(createSql.toString());
-            st.close();
         }
         conn.commit();
     }
diff --git 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/tools/CommonTokenOverlapCounter.java
 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/tools/CommonTokenOverlapCounter.java
index 79d3136..d78a64a 100644
--- 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/tools/CommonTokenOverlapCounter.java
+++ 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/tools/CommonTokenOverlapCounter.java
@@ -61,7 +61,7 @@ public class CommonTokenOverlapCounter {
         denom = setA.size() + setB.size();
         double percent = (double) overlap / (double) denom;
         if (percent > 0.01) {
-            System.out.println(String.format(Locale.US, "%s %s %.2f", langA, 
langB, percent));
+            System.out.printf(Locale.US, "%s %s %.2f%n", langA, langB, 
percent);
         }
     }
 
diff --git 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/tools/TopCommonTokenCounter.java
 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/tools/TopCommonTokenCounter.java
index 484729b..c15eb1b 100644
--- 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/tools/TopCommonTokenCounter.java
+++ 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/tools/TopCommonTokenCounter.java
@@ -258,7 +258,7 @@ public class TopCommonTokenCounter {
         return new BufferedReader(new InputStreamReader(is, 
StandardCharsets.UTF_8));
     }
 
-    private abstract class AbstractTokenTFDFPriorityQueue extends 
PriorityQueue<TokenDFTF> {
+    private abstract static class AbstractTokenTFDFPriorityQueue extends 
PriorityQueue<TokenDFTF> {
 
         AbstractTokenTFDFPriorityQueue(int maxSize) {
             super(maxSize);
diff --git 
a/tika-eval/tika-eval-app/src/test/java/org/apache/tika/eval/app/ProfilerBatchTest.java
 
b/tika-eval/tika-eval-app/src/test/java/org/apache/tika/eval/app/ProfilerBatchTest.java
index 701ee81..a39ff01 100644
--- 
a/tika-eval/tika-eval-app/src/test/java/org/apache/tika/eval/app/ProfilerBatchTest.java
+++ 
b/tika-eval/tika-eval-app/src/test/java/org/apache/tika/eval/app/ProfilerBatchTest.java
@@ -59,7 +59,7 @@ public class ProfilerBatchTest {
     public static void setUp() throws Exception {
 
         Path inputRoot = Paths.get(
-                new 
ComparerBatchTest().getClass().getResource("/test-dirs/extractsA").toURI());
+                
ComparerBatchTest.class.getResource("/test-dirs/extractsA").toURI());
         dbDir = Files.createTempDirectory(inputRoot, "tika-test-db-dir-");
         Map<String, String> args = new HashMap<>();
         Path db = dbDir.resolve("profiler_test");
diff --git 
a/tika-eval/tika-eval-app/src/test/java/org/apache/tika/eval/app/db/AbstractBufferTest.java
 
b/tika-eval/tika-eval-app/src/test/java/org/apache/tika/eval/app/db/AbstractBufferTest.java
index 4e14256..2df0cec 100644
--- 
a/tika-eval/tika-eval-app/src/test/java/org/apache/tika/eval/app/db/AbstractBufferTest.java
+++ 
b/tika-eval/tika-eval-app/src/test/java/org/apache/tika/eval/app/db/AbstractBufferTest.java
@@ -77,7 +77,7 @@ public class AbstractBufferTest {
         assertEquals(keys.size(), b.getNumWrites());
     }
 
-    private class Tester implements Callable<MyTestResult> {
+    private static class Tester implements Callable<MyTestResult> {
 
         private final AbstractDBBuffer dbBuffer;
         private final int numGets;
diff --git 
a/tika-eval/tika-eval-core/src/main/java/org/apache/tika/eval/core/tokens/TokenContraster.java
 
b/tika-eval/tika-eval-core/src/main/java/org/apache/tika/eval/core/tokens/TokenContraster.java
index 84ddb18..b618625 100644
--- 
a/tika-eval/tika-eval-core/src/main/java/org/apache/tika/eval/core/tokens/TokenContraster.java
+++ 
b/tika-eval/tika-eval-core/src/main/java/org/apache/tika/eval/core/tokens/TokenContraster.java
@@ -137,7 +137,7 @@ public class TokenContraster {
 
     }
 
-    class TokenCountDiffQueue extends PriorityQueue<TokenCountDiff> {
+    static class TokenCountDiffQueue extends PriorityQueue<TokenCountDiff> {
 
         TokenCountDiffQueue(int maxSize) {
             super(maxSize);
diff --git 
a/tika-eval/tika-eval-core/src/test/java/org/apache/tika/eval/core/langid/LangIdTest.java
 
b/tika-eval/tika-eval-core/src/test/java/org/apache/tika/eval/core/langid/LangIdTest.java
index f5e8bb7..bff574c 100644
--- 
a/tika-eval/tika-eval-core/src/test/java/org/apache/tika/eval/core/langid/LangIdTest.java
+++ 
b/tika-eval/tika-eval-core/src/test/java/org/apache/tika/eval/core/langid/LangIdTest.java
@@ -49,7 +49,7 @@ public class LangIdTest {
         for (String lang : langs) {
             Set<String> tokens = commonTokens.getTokens(lang);
             if (tokens.size() == 0) {
-                System.out.println(String.format(Locale.US, "missing common 
tokens for: %s", lang));
+                System.out.printf(Locale.US, "missing common tokens for: 
%s%n", lang);
             } else if (tokens.size() < 250) { //ssw has 255
                 fail(String.format(Locale.US, "common tokens too small (%s) 
for: %s", tokens.size(),
                         lang));
diff --git 
a/tika-example/src/main/java/org/apache/tika/example/InterruptableParsingExample.java
 
b/tika-example/src/main/java/org/apache/tika/example/InterruptableParsingExample.java
index 9ef1085..652ddc8 100644
--- 
a/tika-example/src/main/java/org/apache/tika/example/InterruptableParsingExample.java
+++ 
b/tika-example/src/main/java/org/apache/tika/example/InterruptableParsingExample.java
@@ -71,7 +71,7 @@ public class InterruptableParsingExample {
      * <p>
      * Throws {@link QueryMatchedException} when query string is found.
      */
-    class InterruptingContentHandler extends DefaultHandler {
+    static class InterruptingContentHandler extends DefaultHandler {
         private String query;
         private StringBuilder sb = new StringBuilder();
 
diff --git 
a/tika-example/src/main/java/org/apache/tika/example/RollbackSoftware.java 
b/tika-example/src/main/java/org/apache/tika/example/RollbackSoftware.java
index 6a57450..83377cf 100755
--- a/tika-example/src/main/java/org/apache/tika/example/RollbackSoftware.java
+++ b/tika-example/src/main/java/org/apache/tika/example/RollbackSoftware.java
@@ -22,7 +22,6 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashSet;
@@ -84,7 +83,7 @@ public class RollbackSoftware {
          */
         public Set<MediaType> getSupportedTypes(ParseContext context) {
             return Collections
-                    .unmodifiableSet(new 
HashSet<>(Arrays.asList(MediaType.TEXT_PLAIN)));
+                    .unmodifiableSet(new 
HashSet<>(Collections.singletonList(MediaType.TEXT_PLAIN)));
         }
 
         /*
diff --git 
a/tika-fuzzing/src/main/java/org/apache/tika/fuzzing/pdf/EvilCOSWriter.java 
b/tika-fuzzing/src/main/java/org/apache/tika/fuzzing/pdf/EvilCOSWriter.java
index dcfd40a..58292a0 100644
--- a/tika-fuzzing/src/main/java/org/apache/tika/fuzzing/pdf/EvilCOSWriter.java
+++ b/tika-fuzzing/src/main/java/org/apache/tika/fuzzing/pdf/EvilCOSWriter.java
@@ -1317,7 +1317,7 @@ public class EvilCOSWriter implements ICOSVisitor, 
Closeable {
      *                               policy.
      */
     public void write(PDDocument doc, SignatureInterface signInterface) throws 
IOException {
-        Long idTime = doc.getDocumentId() == null ? System.currentTimeMillis() 
:
+        long idTime = doc.getDocumentId() == null ? System.currentTimeMillis() 
:
                 doc.getDocumentId();
 
         pdDocument = doc;
diff --git 
a/tika-langdetect/tika-langdetect-tika/src/test/java/org/apache/tika/langdetect/tika/LanguageIdentifierTest.java
 
b/tika-langdetect/tika-langdetect-tika/src/test/java/org/apache/tika/langdetect/tika/LanguageIdentifierTest.java
index e58b971..0e47293 100644
--- 
a/tika-langdetect/tika-langdetect-tika/src/test/java/org/apache/tika/langdetect/tika/LanguageIdentifierTest.java
+++ 
b/tika-langdetect/tika-langdetect-tika/src/test/java/org/apache/tika/langdetect/tika/LanguageIdentifierTest.java
@@ -114,7 +114,7 @@ public class LanguageIdentifierTest {
         for (int m = 0; m < MRUNS; m++) {
             LanguageProfile.useInterleaved =
                     (m & 1) == 1; // Alternate between standard and interleaved
-            String currentResult = "";
+            StringBuilder currentResult = new StringBuilder();
             final long start = System.nanoTime();
             for (int i = 0; i < IRUNS; i++) {
                 for (String language : languages) {
@@ -122,21 +122,21 @@ public class LanguageIdentifierTest {
                     writeTo(language, writer);
                     LanguageIdentifier identifier = new 
LanguageIdentifier(writer.getProfile());
                     if (identifier.isReasonablyCertain()) {
-                        currentResult += identifier.getLanguage();
+                        currentResult.append(identifier.getLanguage());
                         detected++;
                     }
                 }
             }
-            System.out.println(String.format(Locale.ROOT,
-                    "Performed %d detections at %2d ms/test with 
interleaved=%b",
+            System.out.printf(Locale.ROOT,
+                    "Performed %d detections at %2d ms/test with 
interleaved=%b%n",
                     languages.length * IRUNS,
                     (System.nanoTime() - start) / 1000000 / (languages.length 
* IRUNS),
-                    LanguageProfile.useInterleaved));
+                    LanguageProfile.useInterleaved);
             if (lastResult !=
                     null) { // Might as well test that they behave the same 
while we're at it
-                assertEquals("This result should be equal to the last", 
lastResult, currentResult);
+                assertEquals("This result should be equal to the last", 
lastResult, currentResult.toString());
             }
-            lastResult = currentResult;
+            lastResult = currentResult.toString();
         }
         if (detected == -1) {
             System.out.println(
diff --git 
a/tika-parsers/tika-parsers-advanced/tika-parser-nlp-module/src/main/java/org/apache/tika/parser/journal/TEIDOMParser.java
 
b/tika-parsers/tika-parsers-advanced/tika-parser-nlp-module/src/main/java/org/apache/tika/parser/journal/TEIDOMParser.java
index 52fecc9..f43cbd0 100644
--- 
a/tika-parsers/tika-parsers-advanced/tika-parser-nlp-module/src/main/java/org/apache/tika/parser/journal/TEIDOMParser.java
+++ 
b/tika-parsers/tika-parsers-advanced/tika-parser-nlp-module/src/main/java/org/apache/tika/parser/journal/TEIDOMParser.java
@@ -586,7 +586,7 @@ public class TEIDOMParser {
 
     }
 
-    class OrgName {
+    static class OrgName {
         private List<OrgTypeName> typeNames;
 
         public OrgName() {
@@ -710,7 +710,7 @@ public class TEIDOMParser {
         }
     }
 
-    private class Address {
+    private static class Address {
 
         private String region;
         private String postCode;
diff --git 
a/tika-parsers/tika-parsers-advanced/tika-parser-nlp-module/src/main/java/org/apache/tika/parser/ner/mitie/MITIENERecogniser.java
 
b/tika-parsers/tika-parsers-advanced/tika-parser-nlp-module/src/main/java/org/apache/tika/parser/ner/mitie/MITIENERecogniser.java
index b83b5ee..8686476 100644
--- 
a/tika-parsers/tika-parsers-advanced/tika-parser-nlp-module/src/main/java/org/apache/tika/parser/ner/mitie/MITIENERecogniser.java
+++ 
b/tika-parsers/tika-parsers-advanced/tika-parser-nlp-module/src/main/java/org/apache/tika/parser/ner/mitie/MITIENERecogniser.java
@@ -155,11 +155,12 @@ public class MITIENERecogniser implements NERecogniser {
                         .invoke(entityMentionObject);
                 int end = (Integer) entityMentionClass.getMethod("getEnd")
                         .invoke(entityMentionObject);
-                String match = "";
-                for (; start < end; start++) {
-                    match += stringVector.get(start) + " ";
+                StringBuilder match = new StringBuilder();
+                while (start < end) {
+                    match.append(stringVector.get(start)).append(" ");
+                    start++;
                 }
-                x.add(match.trim());
+                x.add(match.toString().trim());
             }
 
         } catch (Exception e) {
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/ID3v1Handler.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/ID3v1Handler.java
index ca4803f..7029d41 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/ID3v1Handler.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-audiovideo-module/src/main/java/org/apache/tika/parser/mp3/ID3v1Handler.java
@@ -20,7 +20,7 @@ import static java.nio.charset.StandardCharsets.ISO_8859_1;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 import org.xml.sax.ContentHandler;
@@ -135,7 +135,7 @@ public class ID3v1Handler implements ID3Tags {
     }
 
     public List<ID3Comment> getComments() {
-        return Arrays.asList(comment);
+        return Collections.singletonList(comment);
     }
 
     public String getGenre() {
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/code/SourceCodeParser.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/code/SourceCodeParser.java
index 00b39c2..1b675b0 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/code/SourceCodeParser.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-code-module/src/main/java/org/apache/tika/parser/code/SourceCodeParser.java
@@ -105,7 +105,7 @@ public class SourceCodeParser extends 
AbstractEncodingDetectorParser {
                 String line;
                 int nbLines = 0;
                 while ((line = reader.readLine()) != null) {
-                    out.append(line + System.getProperty("line.separator"));
+                    
out.append(line).append(System.getProperty("line.separator"));
                     String author = parserAuthor(line);
                     if (author != null) {
                         metadata.add(TikaCoreProperties.CREATOR, author);
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-crypto-module/src/main/java/org/apache/tika/parser/crypto/TSDParser.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-crypto-module/src/main/java/org/apache/tika/parser/crypto/TSDParser.java
index 397d581..5d0b05e 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-crypto-module/src/main/java/org/apache/tika/parser/crypto/TSDParser.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-crypto-module/src/main/java/org/apache/tika/parser/crypto/TSDParser.java
@@ -140,7 +140,7 @@ public class TSDParser extends AbstractParser {
     }
 
     private void buildMetas(List<TSDMetas> tsdMetasList, Metadata metadata) {
-        Integer count = 1;
+        int count = 1;
 
         for (TSDMetas tsdm : tsdMetasList) {
             metadata.set(TSD_LOOP_LABEL + count + " - " + 
Metadata.CONTENT_TYPE, TSD_MIME_TYPE);
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ICNSParser.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ICNSParser.java
index 095cd05..9b32b42 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ICNSParser.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ICNSParser.java
@@ -101,30 +101,39 @@ public class ICNSParser extends AbstractParser {
             }
             offset = offset + icon_length;
         }
-        String icon_details = "", iconmask_details = "", bitsPerPixel, 
dimensions;
+        StringBuilder icon_details = new StringBuilder();
+        StringBuilder iconmask_details = new StringBuilder();
+        String bitsPerPixel;
+        String dimensions;
         for (ICNSType icon : icons) {
             bitsPerPixel = (icon.getBitsPerPixel() != 0) ? 
icon.getBitsPerPixel() + " bpp" :
                     "JPEG 2000 or PNG format";
             dimensions = (!icon.hasRetinaDisplay()) ? (icon.getHeight() + "x" 
+ icon.getWidth()) :
                     (icon.getHeight() + "x" + icon.getWidth() + "@2X");
-            icon_details = icon_details + ", " + dimensions + " (" + 
bitsPerPixel + ")";
+            icon_details.append(", ").append(dimensions).append(" 
(").append(bitsPerPixel).append(")");
         }
         for (ICNSType icon : icon_masks) {
-            iconmask_details =
-                    iconmask_details + ", " + icon.getHeight() + "x" + 
icon.getWidth() + " (" +
-                            icon.getBitsPerPixel() + " bpp" + ")";
+            iconmask_details
+                    .append(", ")
+                    .append(icon.getHeight())
+                    .append("x")
+                    .append(icon.getWidth())
+                    .append(" (")
+                    .append(icon.getBitsPerPixel())
+                    .append(" bpp")
+                    .append(")");
         }
 
         metadata.set(Metadata.CONTENT_TYPE, ICNS_MIME_TYPE);
-        if (!icon_details.equals("")) {
+        if (!icon_details.toString().equals("")) {
             metadata.set("Icon count", String.valueOf(icons.size()));
-            icon_details = icon_details.substring(2);
-            metadata.set("Icon details", icon_details);
+            icon_details = new StringBuilder(icon_details.substring(2));
+            metadata.set("Icon details", icon_details.toString());
         }
-        if (!iconmask_details.equals("")) {
+        if (!iconmask_details.toString().equals("")) {
             metadata.set("Masked icon count", 
String.valueOf(icon_masks.size()));
-            iconmask_details = iconmask_details.substring(2);
-            metadata.set("Masked icon details", iconmask_details);
+            iconmask_details = new 
StringBuilder(iconmask_details.substring(2));
+            metadata.set("Masked icon details", iconmask_details.toString());
         }
         XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata);
         xhtml.startDocument();
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/PSDParser.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/PSDParser.java
index 752891b..997b6e3 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/PSDParser.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/PSDParser.java
@@ -22,7 +22,6 @@ import java.io.ByteArrayInputStream;
 import java.io.EOFException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
@@ -61,7 +60,7 @@ public class PSDParser extends AbstractParser {
     private static final long serialVersionUID = 883387734607994914L;
 
     private static final Set<MediaType> SUPPORTED_TYPES = 
Collections.unmodifiableSet(
-            new 
HashSet<>(Arrays.asList(MediaType.image("vnd.adobe.photoshop"))));
+            new 
HashSet<>(Collections.singletonList(MediaType.image("vnd.adobe.photoshop"))));
 
     private static final int MAX_DATA_LENGTH_BYTES = 10_000_000;
     private static final int MAX_BLOCKS = 10000;
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractListManager.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractListManager.java
index 7857509..2e5f8f2 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractListManager.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractListManager.java
@@ -33,7 +33,7 @@ public abstract class AbstractListManager {
     protected Map<Integer, LevelTuple[]> overrideTupleMap = new HashMap<>();
 
     //helper class that is docx/doc format agnostic
-    protected class ParagraphLevelCounter {
+    protected static class ParagraphLevelCounter {
 
         //counts can == 0 if the format is decimal, make sure
         //that flag values are < 0
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/HSLFExtractor.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/HSLFExtractor.java
index aa89ee0..2b20089 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/HSLFExtractor.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/HSLFExtractor.java
@@ -179,7 +179,7 @@ public class HSLFExtractor extends AbstractPOIFSExtractor {
                 if (authorStringBuilder.length() > 0) {
                     authorStringBuilder.append(" ");
                 }
-                authorStringBuilder.append("(" + comment.getAuthorInitials() + 
")");
+                
authorStringBuilder.append("(").append(comment.getAuthorInitials()).append(")");
             }
             if (authorStringBuilder.length() > 0) {
                 if (comment.getText() != null) {
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ListManager.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ListManager.java
index fa7a4f2..404d98a 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ListManager.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ListManager.java
@@ -164,7 +164,7 @@ public class ListManager extends AbstractListManager {
             //adds one.  In .doc, this was the array index;
             //but in .docx, this is the level number
             int lvlNum = (int) numberText.charAt(offset - 1) + 1;
-            sb.append("%" + lvlNum);
+            sb.append("%").append(lvlNum);
             last = offset;
         }
         if (last < numberText.length()) {
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/WordExtractor.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/WordExtractor.java
index 0e44076..f8ff5e1 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/WordExtractor.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/WordExtractor.java
@@ -456,15 +456,15 @@ public class WordExtractor extends AbstractPOIFSExtractor 
{
 
         // Do we need to do something special with this?
         if (controls.size() > 0) {
-            String text = controls.get(0).text();
+            StringBuilder text = new StringBuilder(controls.get(0).text());
             for (int j = 1; j < controls.size(); j++) {
-                text += controls.get(j).text();
+                text.append(controls.get(j).text());
             }
 
-            if ((text.startsWith("HYPERLINK") || text.startsWith(" 
HYPERLINK")) &&
-                    text.indexOf('"') > -1) {
-                int start = text.indexOf('"') + 1;
-                int end = findHyperlinkEnd(text, start);
+            if ((text.toString().startsWith("HYPERLINK") || 
text.toString().startsWith(" HYPERLINK"))
+                    && text.toString().indexOf('"') > -1) {
+                int start = text.toString().indexOf('"') + 1;
+                int end = findHyperlinkEnd(text.toString(), start);
                 String url = "";
                 if (start >= 0 && start < end && end <= text.length()) {
                     url = text.substring(start, end);
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmBlockInfo.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmBlockInfo.java
index 3162eea..817ac78 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmBlockInfo.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmBlockInfo.java
@@ -93,11 +93,11 @@ public class ChmBlockInfo {
      */
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append("iniBlock:=" + getIniBlock() + ", ");
-        sb.append("startBlock:=" + getStartBlock() + ", ");
-        sb.append("endBlock:=" + getEndBlock() + ", ");
-        sb.append("startOffset:=" + getStartOffset() + ", ");
-        sb.append("endOffset:=" + getEndOffset() + 
System.getProperty("line.separator"));
+        sb.append("iniBlock:=").append(getIniBlock()).append(", ");
+        sb.append("startBlock:=").append(getStartBlock()).append(", ");
+        sb.append("endBlock:=").append(getEndBlock()).append(", ");
+        sb.append("startOffset:=").append(getStartOffset()).append(", ");
+        
sb.append("endOffset:=").append(getEndOffset()).append(System.getProperty("line.separator"));
         return sb.toString();
     }
 
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmDirectoryListingSet.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmDirectoryListingSet.java
index b2153d5..87538c4 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmDirectoryListingSet.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmDirectoryListingSet.java
@@ -75,9 +75,11 @@ public class ChmDirectoryListingSet {
 
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append("list:=" + getDirectoryListingEntryList().toString() +
-                System.getProperty("line.separator"));
-        sb.append("number of list items:=" + 
getDirectoryListingEntryList().size());
+        sb.append("list:=")
+                .append(getDirectoryListingEntryList().toString())
+                .append(System.getProperty("line.separator"));
+        sb.append("number of list items:=")
+                .append(getDirectoryListingEntryList().size());
         return sb.toString();
     }
 
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItsfHeader.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItsfHeader.java
index 990b06a..5fcb3c7 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItsfHeader.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItsfHeader.java
@@ -66,19 +66,19 @@ public class ChmItsfHeader implements 
ChmAccessor<ChmItsfHeader> {
      */
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append(new String(getSignature(), UTF_8) + " ");
-        sb.append(getVersion() + " ");
-        sb.append(getHeaderLen() + " ");
-        sb.append(getUnknown_000c() + " ");
-        sb.append(getLastModified() + " ");
-        sb.append(getLangId() + " ");
-        sb.append(getDir_uuid() + " ");
-        sb.append(getStream_uuid() + " ");
-        sb.append(getUnknownOffset() + " ");
-        sb.append(getUnknownLen() + " ");
-        sb.append(getDirOffset() + " ");
-        sb.append(getDirLen() + " ");
-        sb.append(getDataOffset() + " ");
+        sb.append(new String(getSignature(), UTF_8)).append(" ");
+        sb.append(getVersion()).append(" ");
+        sb.append(getHeaderLen()).append(" ");
+        sb.append(getUnknown_000c()).append(" ");
+        sb.append(getLastModified()).append(" ");
+        sb.append(getLangId()).append(" ");
+        sb.append(getDir_uuid()).append(" ");
+        sb.append(getStream_uuid()).append(" ");
+        sb.append(getUnknownOffset()).append(" ");
+        sb.append(getUnknownLen()).append(" ");
+        sb.append(getDirOffset()).append(" ");
+        sb.append(getDirLen()).append(" ");
+        sb.append(getDataOffset()).append(" ");
         return sb.toString();
     }
 
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItspHeader.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItspHeader.java
index 3015733..d9176d9 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItspHeader.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmItspHeader.java
@@ -68,35 +68,61 @@ public class ChmItspHeader implements 
ChmAccessor<ChmItspHeader> {
 
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append("[ signature:=" + new String(getSignature(), UTF_8) +
-                System.getProperty("line.separator"));
-        sb.append("version:=\t" + getVersion() + 
System.getProperty("line.separator"));
-        sb.append("header_len:=\t" + getHeader_len() + 
System.getProperty("line.separator"));
-        sb.append("unknown_00c:=\t" + getUnknown_000c() + 
System.getProperty("line.separator"));
-        sb.append("block_len:=\t" + getBlock_len() + " [directory chunk size]" 
+
-                System.getProperty("line.separator"));
-        sb.append("blockidx_intvl:=" + getBlockidx_intvl() +
-                ", density of quickref section, usually 2" + 
System.getProperty("line.separator"));
-        sb.append("index_depth:=\t" + getIndex_depth() +
-                ", depth of the index tree - 1 there is no index, 2 if there 
is one level of PMGI" +
-                " chunk" + System.getProperty("line.separator"));
-        sb.append("index_root:=\t" + getIndex_root() +
-                ", chunk number of root index chunk, -1 if there is none" +
-                System.getProperty("line.separator"));
-        sb.append("index_head:=\t" + getIndex_head() +
-                ", chunk number of first PMGL (listing) chunk" +
-                System.getProperty("line.separator"));
-        sb.append("unknown_0024:=\t" + getUnknown_0024() +
-                ", chunk number of last PMGL (listing) chunk" +
-                System.getProperty("line.separator"));
-        sb.append("num_blocks:=\t" + getNum_blocks() + ", -1 (unknown)" +
-                System.getProperty("line.separator"));
-        sb.append("unknown_002c:=\t" + getUnknown_002c() + ", number of 
directory chunks (total)" +
-                System.getProperty("line.separator"));
-        sb.append("lang_id:=\t" + getLang_id() + " - " + 
ChmCommons.getLanguage(getLang_id()) +
-                System.getProperty("line.separator"));
-        sb.append("system_uuid:=" + getSystem_uuid() + 
System.getProperty("line.separator"));
-        sb.append("unknown_0044:=" + getUnknown_0044() + " ]");
+        sb.append("[ signature:=")
+                .append(new String(getSignature(), UTF_8))
+                .append(System.getProperty("line.separator"));
+        sb.append("version:=\t")
+                .append(getVersion())
+                .append(System.getProperty("line.separator"));
+        sb.append("header_len:=\t")
+                .append(getHeader_len())
+                .append(System.getProperty("line.separator"));
+        sb.append("unknown_00c:=\t")
+                .append(getUnknown_000c())
+                .append(System.getProperty("line.separator"));
+        sb.append("block_len:=\t")
+                .append(getBlock_len())
+                .append(" [directory chunk size]")
+                .append(System.getProperty("line.separator"));
+        sb.append("blockidx_intvl:=")
+                .append(getBlockidx_intvl())
+                .append(", density of quickref section, usually 2")
+                .append(System.getProperty("line.separator"));
+        sb.append("index_depth:=\t")
+                .append(getIndex_depth())
+                .append(", depth of the index tree - 1 there is no index, 2 if 
there is one level of PMGI")
+                .append(" chunk")
+                .append(System.getProperty("line.separator"));
+        sb.append("index_root:=\t")
+                .append(getIndex_root())
+                .append(", chunk number of root index chunk, -1 if there is 
none")
+                .append(System.getProperty("line.separator"));
+        sb.append("index_head:=\t")
+                .append(getIndex_head())
+                .append(", chunk number of first PMGL (listing) chunk")
+                .append(System.getProperty("line.separator"));
+        sb.append("unknown_0024:=\t")
+                .append(getUnknown_0024())
+                .append(", chunk number of last PMGL (listing) chunk")
+                .append(System.getProperty("line.separator"));
+        sb.append("num_blocks:=\t")
+                .append(getNum_blocks())
+                .append(", -1 (unknown)")
+                .append(System.getProperty("line.separator"));
+        sb.append("unknown_002c:=\t")
+                .append(getUnknown_002c()).append(", number of directory 
chunks (total)")
+                .append(System.getProperty("line.separator"));
+        sb.append("lang_id:=\t")
+                .append(getLang_id())
+                .append(" - ")
+                .append(ChmCommons.getLanguage(getLang_id()))
+                .append(System.getProperty("line.separator"));
+        sb.append("system_uuid:=")
+                .append(getSystem_uuid())
+                .append(System.getProperty("line.separator"));
+        sb.append("unknown_0044:=")
+                .append(getUnknown_0044())
+                .append(" ]");
         return sb.toString();
     }
 
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxState.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxState.java
index 1fb445d..a41ee80 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxState.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxState.java
@@ -145,38 +145,57 @@ public class ChmLzxState implements Cloneable {
      */
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append("actual decoding window:=" + getWindow() + 
System.getProperty("line.separator"));
-        sb.append("window size (32Kb through 2Mb):=" + getWindowSize() +
-                System.getProperty("line.separator"));
-        sb.append("current offset within the window:=" + getWindowPosition() +
-                System.getProperty("line.separator"));
-        sb.append("number of main tree elements:=" + getMainTreeElements() +
-                System.getProperty("line.separator"));
-        sb.append("have we started decoding at all yet?:=" + getHadStarted() +
-                System.getProperty("line.separator"));
-        sb.append("type of this block:=" + getBlockType() + 
System.getProperty("line.separator"));
-        sb.append("uncompressed length of this block:=" + getBlockLength() +
-                System.getProperty("line.separator"));
-        sb.append("uncompressed bytes still left to decode:=" + 
getBlockRemaining() +
-                System.getProperty("line.separator"));
-        sb.append("the number of CFDATA blocks processed:=" + getFramesRead() +
-                System.getProperty("line.separator"));
-        sb.append("magic header value used for transform:=" + 
getIntelFileSize() +
-                System.getProperty("line.separator"));
-        sb.append("current offset in transform space:=" + 
getIntelCurrentPossition() +
-                System.getProperty("line.separator"));
-        sb.append("have we seen any translatable data yet?:=" + 
getIntelState() +
-                System.getProperty("line.separator"));
-        sb.append(
-                "R0 for the LRU offset system:=" + getR0() + 
System.getProperty("line.separator"));
-        sb.append(
-                "R1 for the LRU offset system:=" + getR1() + 
System.getProperty("line.separator"));
-        sb.append(
-                "R2 for the LRU offset system:=" + getR2() + 
System.getProperty("line.separator"));
-        sb.append("main tree length:=" + getMainTreeLengtsTable().length +
-                System.getProperty("line.separator"));
-        sb.append("secondary tree length:=" + 
getLengthTreeLengtsTable().length +
-                System.getProperty("line.separator"));
+        sb.append("actual decoding window:=")
+                .append(getWindow())
+                .append(System.getProperty("line.separator"));
+        sb.append("window size (32Kb through 2Mb):=")
+                .append(getWindowSize())
+                .append(System.getProperty("line.separator"));
+        sb.append("current offset within the window:=")
+                .append(getWindowPosition())
+                .append(System.getProperty("line.separator"));
+        sb.append("number of main tree elements:=")
+                .append(getMainTreeElements())
+                .append(System.getProperty("line.separator"));
+        sb.append("have we started decoding at all yet?:=")
+                .append(getHadStarted())
+                .append(System.getProperty("line.separator"));
+        sb.append("type of this block:=")
+                .append(getBlockType())
+                .append(System.getProperty("line.separator"));
+        sb.append("uncompressed length of this block:=")
+                .append(getBlockLength())
+                .append(System.getProperty("line.separator"));
+        sb.append("uncompressed bytes still left to decode:=")
+                .append(getBlockRemaining())
+                .append(System.getProperty("line.separator"));
+        sb.append("the number of CFDATA blocks processed:=")
+                .append(getFramesRead())
+                .append(System.getProperty("line.separator"));
+        sb.append("magic header value used for transform:=")
+                .append(getIntelFileSize())
+                .append(System.getProperty("line.separator"));
+        sb.append("current offset in transform space:=")
+                .append(getIntelCurrentPossition())
+                .append(System.getProperty("line.separator"));
+        sb.append("have we seen any translatable data yet?:=")
+                .append(getIntelState())
+                .append(System.getProperty("line.separator"));
+        sb.append("R0 for the LRU offset system:=")
+                .append(getR0())
+                .append(System.getProperty("line.separator"));
+        sb.append("R1 for the LRU offset system:=")
+                .append(getR1())
+                .append(System.getProperty("line.separator"));
+        sb.append("R2 for the LRU offset system:=")
+                .append(getR2())
+                .append(System.getProperty("line.separator"));
+        sb.append("main tree length:=")
+                .append(getMainTreeLengtsTable().length)
+                .append(System.getProperty("line.separator"));
+        sb.append("secondary tree length:=")
+                .append(getLengthTreeLengtsTable().length)
+                .append(System.getProperty("line.separator"));
         return sb.toString();
     }
 
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcControlData.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcControlData.java
index 0a7a61e..32b2ea6 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcControlData.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcControlData.java
@@ -248,16 +248,27 @@ public class ChmLzxcControlData implements 
ChmAccessor<ChmLzxcControlData> {
      */
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append("size(unknown):=" + this.getSize() + ", ");
-        sb.append("signature(Compression type identifier):=" +
-                new String(this.getSignature(), UTF_8) + ", ");
-        sb.append("version(Possibly numeric code for LZX):=" + 
this.getVersion() +
-                System.getProperty("line.separator"));
-        sb.append("resetInterval(The Huffman reset interval):=" + 
this.getResetInterval() + ", ");
-        sb.append("windowSize:=" + this.getWindowSize() + ", ");
-        sb.append("windowsPerReset(unknown (sometimes 2, sometimes 1, 
sometimes 0):=" +
-                this.getWindowsPerReset() + ", ");
-        sb.append("unknown_18:=" + this.getUnknown_18() + 
System.getProperty("line.separator"));
+        sb.append("size(unknown):=")
+                .append(this.getSize())
+                .append(", ");
+        sb.append("signature(Compression type identifier):=")
+                .append(new String(this.getSignature(), UTF_8))
+                .append(", ");
+        sb.append("version(Possibly numeric code for LZX):=")
+                .append(this.getVersion())
+                .append(System.getProperty("line.separator"));
+        sb.append("resetInterval(The Huffman reset interval):=")
+                .append(this.getResetInterval())
+                .append(", ");
+        sb.append("windowSize:=")
+                .append(this.getWindowSize())
+                .append(", ");
+        sb.append("windowsPerReset(unknown (sometimes 2, sometimes 1, 
sometimes 0):=")
+                .append(this.getWindowsPerReset())
+                .append(", ");
+        sb.append("unknown_18:=")
+                .append(this.getUnknown_18())
+                .append(System.getProperty("line.separator"));
         return sb.toString();
     }
 
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcResetTable.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcResetTable.java
index 485c53d..91543aa 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcResetTable.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmLzxcResetTable.java
@@ -81,15 +81,14 @@ public class ChmLzxcResetTable implements 
ChmAccessor<ChmLzxcResetTable> {
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append("version:=" + getVersion() + 
System.getProperty("line.separator"));
-        sb.append("block_count:=" + getBlockCount() + 
System.getProperty("line.separator"));
-        sb.append("unknown:=" + getUnknown() + 
System.getProperty("line.separator"));
-        sb.append("table_offset:=" + getTableOffset() + 
System.getProperty("line.separator"));
-        sb.append(
-                "uncompressed_len:=" + getUncompressedLen() + 
System.getProperty("line.separator"));
-        sb.append("compressed_len:=" + getCompressedLen() + 
System.getProperty("line.separator"));
-        sb.append("block_len:=" + getBlockLen() + 
System.getProperty("line.separator"));
-        sb.append("block_addresses:=" + Arrays.toString(getBlockAddress()));
+        
sb.append("version:=").append(getVersion()).append(System.getProperty("line.separator"));
+        
sb.append("block_count:=").append(getBlockCount()).append(System.getProperty("line.separator"));
+        
sb.append("unknown:=").append(getUnknown()).append(System.getProperty("line.separator"));
+        
sb.append("table_offset:=").append(getTableOffset()).append(System.getProperty("line.separator"));
+        
sb.append("uncompressed_len:=").append(getUncompressedLen()).append(System.getProperty("line.separator"));
+        
sb.append("compressed_len:=").append(getCompressedLen()).append(System.getProperty("line.separator"));
+        
sb.append("block_len:=").append(getBlockLen()).append(System.getProperty("line.separator"));
+        
sb.append("block_addresses:=").append(Arrays.toString(getBlockAddress()));
         return sb.toString();
     }
 
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmgiHeader.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmgiHeader.java
index 0c93301..ccd59bb 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmgiHeader.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmgiHeader.java
@@ -142,8 +142,8 @@ public class ChmPmgiHeader implements 
ChmAccessor<ChmPmgiHeader> {
      */
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append("signature:=" + new String(getSignature(), UTF_8) + ", ");
-        sb.append("free space:=" + getFreeSpace() + 
System.getProperty("line.separator"));
+        sb.append("signature:=").append(new String(getSignature(), 
UTF_8)).append(", ");
+        sb.append("free 
space:=").append(getFreeSpace()).append(System.getProperty("line.separator"));
         return sb.toString();
     }
 
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmglHeader.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmglHeader.java
index 7a41938..e1e74fe 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmglHeader.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/ChmPmglHeader.java
@@ -94,11 +94,11 @@ public class ChmPmglHeader implements 
ChmAccessor<ChmPmglHeader> {
 
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append("signatute:=" + new String(getSignature(), UTF_8) + ", ");
-        sb.append("free space:=" + getFreeSpace() + ", ");
-        sb.append("unknown0008:=" + getUnknown0008() + ", ");
-        sb.append("prev block:=" + getBlockPrev() + ", ");
-        sb.append("next block:=" + getBlockNext() + 
System.getProperty("line.separator"));
+        sb.append("signatute:=").append(new String(getSignature(), 
UTF_8)).append(", ");
+        sb.append("free space:=").append(getFreeSpace()).append(", ");
+        sb.append("unknown0008:=").append(getUnknown0008()).append(", ");
+        sb.append("prev block:=").append(getBlockPrev()).append(", ");
+        sb.append("next 
block:=").append(getBlockNext()).append(System.getProperty("line.separator"));
         return sb.toString();
     }
 
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/DirectoryListingEntry.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/DirectoryListingEntry.java
index df5eb25..8a4b7f9 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/DirectoryListingEntry.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/chm/DirectoryListingEntry.java
@@ -66,11 +66,11 @@ public class DirectoryListingEntry {
 
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append("name_length:=" + getNameLength() + 
System.getProperty("line.separator"));
-        sb.append("name:=" + getName() + System.getProperty("line.separator"));
-        sb.append("entryType:=" + getEntryType() + 
System.getProperty("line.separator"));
-        sb.append("offset:=" + getOffset() + 
System.getProperty("line.separator"));
-        sb.append("length:=" + getLength());
+        
sb.append("name_length:=").append(getNameLength()).append(System.getProperty("line.separator"));
+        
sb.append("name:=").append(getName()).append(System.getProperty("line.separator"));
+        
sb.append("entryType:=").append(getEntryType()).append(System.getProperty("line.separator"));
+        
sb.append("offset:=").append(getOffset()).append(System.getProperty("line.separator"));
+        sb.append("length:=").append(getLength());
         return sb.toString();
     }
 
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/IndentUtil.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/IndentUtil.java
index 50c381f..4ccef77 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/IndentUtil.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/IndentUtil.java
@@ -18,10 +18,10 @@ package org.apache.tika.parser.microsoft.onenote;
 
 class IndentUtil {
     public static String getIndent(int indentLevel) {
-        String retval = "";
+        StringBuilder retval = new StringBuilder();
         for (int i = 0; i < indentLevel; ++i) {
-            retval += "  ";
+            retval.append("  ");
         }
-        return retval;
+        return retval.toString();
     }
 }
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNoteParser.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNoteParser.java
index 058a31c..41d342c 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNoteParser.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNoteParser.java
@@ -19,7 +19,6 @@ package org.apache.tika.parser.microsoft.onenote;
 import java.io.IOException;
 import java.io.InputStream;
 import java.time.Instant;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -57,7 +56,7 @@ public class OneNoteParser extends AbstractParser {
 
     static {
         // All types should be 4 bytes long, space padded as needed
-        typesMap.put(MediaType.application("onenote; format=one"), 
Arrays.asList("ONE "));
+        typesMap.put(MediaType.application("onenote; format=one"), 
Collections.singletonList("ONE "));
         // TODO - add onetoc and other onenote mime types
     }
 
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNotePtr.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNotePtr.java
index 46ba76c..03fb58e 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNotePtr.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNotePtr.java
@@ -224,11 +224,11 @@ class OneNotePtr {
     }
 
     private String getIndent() {
-        String retval = "";
+        StringBuilder retval = new StringBuilder();
         for (int i = 0; i < indentLevel; ++i) {
-            retval += "  ";
+            retval.append("  ");
         }
-        return retval;
+        return retval.toString();
     }
 
     public void reposition(FileChunkReference loc) throws IOException {
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSLFPowerPointExtractorDecorator.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSLFPowerPointExtractorDecorator.java
index eaf40e9..7994046 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSLFPowerPointExtractorDecorator.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSLFPowerPointExtractorDecorator.java
@@ -156,7 +156,7 @@ public class XSLFPowerPointExtractorDecorator extends 
AbstractOOXMLExtractor {
                         if (authorStringBuilder.length() > 0) {
                             authorStringBuilder.append(" ");
                         }
-                        authorStringBuilder.append("(" + 
comment.getAuthorInitials() + ")");
+                        
authorStringBuilder.append("(").append(comment.getAuthorInitials()).append(")");
                     }
                     if (comment.getText() != null && 
authorStringBuilder.length() > 0) {
                         authorStringBuilder.append(" - ");
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xps/XPSPageContentHandler.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xps/XPSPageContentHandler.java
index 3a5148f..bce65b9 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xps/XPSPageContentHandler.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xps/XPSPageContentHandler.java
@@ -139,7 +139,7 @@ class XPSPageContentHandler extends DefaultHandler {
         Float originX = null;
         Float originY = null;
         String unicodeString = null;
-        Integer bidilevel = 1;
+        int bidilevel = 1;
         String indicesString = null;
 
         for (int i = 0; i < atts.getLength(); i++) {
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/dif/DIFContentHandler.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/dif/DIFContentHandler.java
index 6028216..5a021e0 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/dif/DIFContentHandler.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/dif/DIFContentHandler.java
@@ -115,16 +115,16 @@ public class DIFContentHandler extends DefaultHandler {
         }
         if (this.isLeaf) {
             Stack<String> tempStack = (Stack<String>) this.treeStack.clone();
-            String key = "";
+            StringBuilder key = new StringBuilder();
             while (!tempStack.isEmpty()) {
                 if (key.length() == 0) {
-                    key = tempStack.pop();
+                    key = new StringBuilder(tempStack.pop());
                 } else {
-                    key = tempStack.pop() + "-" + key;
+                    key.insert(0, tempStack.pop() + "-");
                 }
             }
             String value = this.dataStack.peek();
-            this.metadata.add(key, value);
+            this.metadata.add(key.toString(), value);
             this.isLeaf = false;
         }
         this.treeStack.pop();
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-news-module/src/main/java/org/apache/tika/parser/iptc/IptcAnpaParser.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-news-module/src/main/java/org/apache/tika/parser/iptc/IptcAnpaParser.java
index 40ec405..ad52ca7 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-news-module/src/main/java/org/apache/tika/parser/iptc/IptcAnpaParser.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-news-module/src/main/java/org/apache/tika/parser/iptc/IptcAnpaParser.java
@@ -365,9 +365,9 @@ public class IptcAnpaParser implements Parser {
         String env_category = "";
         String env_urgency = "";
         String hdr_edcode = "";
-        String hdr_subject = "";
-        String hdr_date = "";
-        String hdr_time = "";
+        StringBuilder hdr_subject = new StringBuilder();
+        StringBuilder hdr_date = new StringBuilder();
+        StringBuilder hdr_time = new StringBuilder();
 
         int read = 0;
 
@@ -405,7 +405,7 @@ public class IptcAnpaParser implements Parser {
                 byte val_next = value[read++];
                 while ((subject) && (val_next != SP) &&
                         (val_next != 0x00)) {  // ignore the envelope subject
-                    hdr_subject += (char) (val_next & 0xff);  // convert the 
byte to an unsigned int
+                    hdr_subject.append((char) (val_next & 0xff));  // convert 
the byte to an unsigned int
                     val_next = (read < value.length) ? value[read++] : 0x00;
                     while (val_next == SP) {  // consume all the spaces
                         subject = false;
@@ -427,8 +427,7 @@ public class IptcAnpaParser implements Parser {
                     while (((val_next >= (byte) 0x30) && (val_next <= (byte) 
0x39))
                             // consume all numerics and hyphens
                             || (val_next == HY)) {
-                        hdr_date +=
-                                (char) (val_next & 0xff);  // convert the byte 
to an unsigned int
+                        hdr_date.append((char) (val_next & 0xff));  // convert 
the byte to an unsigned int
                         val_next = (read < value.length) ? value[read++] : 
0x00;
                     }
                 } else if (val_next == SP) {
@@ -440,8 +439,7 @@ public class IptcAnpaParser implements Parser {
                     while (((val_next >= (byte) 0x30) && (val_next <= (byte) 
0x39))
                             // consume all numerics and hyphens
                             || (val_next == HY)) {
-                        hdr_time +=
-                                (char) (val_next & 0xff);  // convert the byte 
to an unsigned int
+                        hdr_time.append((char) (val_next & 0xff));  // convert 
the byte to an unsigned int
                         val_next = (read < value.length) ? value[read++] : 
0x00;
                     }
                 }
@@ -459,11 +457,11 @@ public class IptcAnpaParser implements Parser {
     private boolean parseBody(byte[] value, HashMap<String, String> 
properties) {
         boolean added = false;
 
-        String bdy_heading = "";
-        String bdy_title = "";
-        String bdy_source = "";
-        String bdy_author = "";
-        String bdy_body = "";
+        StringBuilder bdy_heading = new StringBuilder();
+        StringBuilder bdy_title = new StringBuilder();
+        StringBuilder bdy_source = new StringBuilder();
+        StringBuilder bdy_author = new StringBuilder();
+        StringBuilder bdy_body = new StringBuilder();
 
         int read = 0;
         boolean done = false;
@@ -478,8 +476,7 @@ public class IptcAnpaParser implements Parser {
                     // AP, NYT, and Bloomberg end with < , Reuters with EOL
                     while ((val_next != LT) && (val_next != CR) &&
                             (val_next != LF)) {   // less than delimiter 
(\x3c) and not EOL
-                        bdy_heading +=
-                                (char) (val_next & 0xff);  // convert the byte 
to an unsigned int
+                        bdy_heading.append((char) (val_next & 0xff));  // 
convert the byte to an unsigned int
                         val_next = (read < value.length) ? value[read++] : 
0x00;
                         if (read >= value.length) {
                             break;
@@ -531,8 +528,7 @@ public class IptcAnpaParser implements Parser {
                     // AP, NYT, and Bloomberg end with < , Reuters with EOL
                     while ((val_next != LT) && (val_next != CT) && (val_next 
!= CR) && (val_next !=
                             LF)) {   // less than delimiter (\x3c), or carat 
(\x5e) and not EOL
-                        bdy_title +=
-                                (char) (val_next & 0xff);  // convert the byte 
to an unsigned int
+                        bdy_title.append((char) (val_next & 0xff));  // 
convert the byte to an unsigned int
                         val_next = (read < value.length) ? value[read++] : 
0x00;
                         if (read >= value.length) {
                             break;
@@ -593,7 +589,7 @@ public class IptcAnpaParser implements Parser {
             // pull apart the body, getting the title (^....\x0d\x0a)
             boolean metastarted = false;
             String longline = "";
-            String longkey = "";
+            String longkey;
             while (read < value.length) {
                 byte val_next = value[read++];
 
@@ -605,12 +601,11 @@ public class IptcAnpaParser implements Parser {
                 if (val_next ==
                         CT) {      //  start of a new section , could be 
authors, sources, etc
                     val_next = (read < value.length) ? value[read++] : 0x00;
-                    String tmp_line = "";
+                    StringBuilder tmp_line = new StringBuilder();
                     while ((val_next != LT) && (val_next != CT) && (val_next 
!= CR) &&
                             (val_next != LF) && (val_next != 0)) {
                         // less than delimiter (\x3c), maybe also badly formed 
with just new line
-                        tmp_line +=
-                                (char) (val_next & 0xff);  // convert the byte 
to an unsigned int
+                        tmp_line.append((char) (val_next & 0xff));  // convert 
the byte to an unsigned int
                         val_next = (read < value.length) ? value[read++] : 
0x00;
                         if (read >= value.length) {
                             break;
@@ -634,49 +629,49 @@ public class IptcAnpaParser implements Parser {
                             --read;
                         }
                     }
-                    if (tmp_line.toLowerCase(Locale.ROOT).startsWith("by") ||
+                    if 
(tmp_line.toString().toLowerCase(Locale.ROOT).startsWith("by") ||
                             longline.equals("bdy_author")) {
                         longkey = "bdy_author";
 
                         // prepend a space to subsequent line, so it gets 
parsed consistent with
                         // the lead line
-                        tmp_line = (longline.equals(longkey) ? " " : "") + 
tmp_line;
+                        tmp_line.insert(0, (longline.equals(longkey) ? " " : 
""));
 
                         // we have an author candidate
                         int term = tmp_line.length();
                         term = Math.min(term,
-                                (tmp_line.contains("<") ? 
tmp_line.indexOf("<") : term));
+                                (tmp_line.toString().contains("<") ? 
tmp_line.indexOf("<") : term));
                         term = Math.min(term,
-                                (tmp_line.contains("=") ? 
tmp_line.indexOf("=") : term));
+                                (tmp_line.toString().contains("=") ? 
tmp_line.indexOf("=") : term));
                         term = Math.min(term,
-                                (tmp_line.contains("\n") ? 
tmp_line.indexOf("\n") : term));
+                                (tmp_line.toString().contains("\n") ? 
tmp_line.indexOf("\n") : term));
                         term = (term > 0) ? term : tmp_line.length();
-                        bdy_author += tmp_line.substring(tmp_line.indexOf(" 
"), term);
+                        
bdy_author.append(tmp_line.substring(tmp_line.indexOf(" "), term));
                         metastarted = true;
                         longline =
-                                ((tmp_line.contains("=")) && 
(!longline.equals(longkey)) ? longkey :
+                                ((tmp_line.toString().contains("=")) && 
(!longline.equals(longkey)) ? longkey :
                                         "");
                     } else if (FORMAT == this.FMT_IPTC_BLM) {
                         String byline = "   by ";
-                        if 
(tmp_line.toLowerCase(Locale.ROOT).contains(byline)) {
+                        if 
(tmp_line.toString().toLowerCase(Locale.ROOT).contains(byline)) {
                             longkey = "bdy_author";
 
                             int term = tmp_line.length();
                             term = Math.min(term,
-                                    (tmp_line.contains("<") ? 
tmp_line.indexOf("<") : term));
+                                    (tmp_line.toString().contains("<") ? 
tmp_line.indexOf("<") : term));
                             term = Math.min(term,
-                                    (tmp_line.contains("=") ? 
tmp_line.indexOf("=") : term));
+                                    (tmp_line.toString().contains("=") ? 
tmp_line.indexOf("=") : term));
                             term = Math.min(term,
-                                    (tmp_line.contains("\n") ? 
tmp_line.indexOf("\n") : term));
+                                    (tmp_line.toString().contains("\n") ? 
tmp_line.indexOf("\n") : term));
                             term = (term > 0) ? term : tmp_line.length();
                             // for bloomberg, the author line sits below their 
copyright statement
-                            bdy_author += tmp_line.substring(
-                                    
tmp_line.toLowerCase(Locale.ROOT).indexOf(byline) +
-                                            byline.length(), term) + " ";
+                            bdy_author.append(tmp_line.substring(
+                                    
tmp_line.toString().toLowerCase(Locale.ROOT).indexOf(byline) +
+                                    byline.length(), term)).append(" ");
                             metastarted = true;
-                            longline = ((tmp_line.contains("=")) && 
(!longline.equals(longkey)) ?
+                            longline = ((tmp_line.toString().contains("=")) && 
(!longline.equals(longkey)) ?
                                     longkey : "");
-                        } else if 
(tmp_line.toLowerCase(Locale.ROOT).startsWith("c.")) {
+                        } else if 
(tmp_line.toString().toLowerCase(Locale.ROOT).startsWith("c.")) {
                             // the author line for bloomberg is a multiline 
starting with c.2011
                             // Bloomberg News
                             // then containing the author info on the next line
@@ -684,8 +679,8 @@ public class IptcAnpaParser implements Parser {
                                 value[--read] = CT;
                                 continue;
                             }
-                        } else if 
(tmp_line.toLowerCase(Locale.ROOT).trim().startsWith("(") &&
-                                
tmp_line.toLowerCase(Locale.ROOT).trim().endsWith(")")) {
+                        } else if 
(tmp_line.toString().toLowerCase(Locale.ROOT).trim().startsWith("(") &&
+                                   
tmp_line.toString().toLowerCase(Locale.ROOT).trim().endsWith(")")) {
                             // the author line may have one or more comment 
lines between the
                             // copyright
                             // statement, and the By AUTHORNAME line
@@ -694,44 +689,43 @@ public class IptcAnpaParser implements Parser {
                                 continue;
                             }
                         }
-                    } else if 
(tmp_line.toLowerCase(Locale.ROOT).startsWith("eds") ||
-                            longline.equals("bdy_source")) {
+                    } else if 
(tmp_line.toString().toLowerCase(Locale.ROOT).startsWith("eds") ||
+                               longline.equals("bdy_source")) {
                         longkey = "bdy_source";
                         // prepend a space to subsequent line, so it gets 
parsed consistent with
                         // the lead line
-                        tmp_line = (longline.equals(longkey) ? " " : "") + 
tmp_line;
+                        tmp_line.insert(0, (longline.equals(longkey) ? " " : 
""));
 
                         // we have a source candidate
                         int term = tmp_line.length();
                         term = Math.min(term,
-                                (tmp_line.contains("<") ? 
tmp_line.indexOf("<") : term));
+                                (tmp_line.toString().contains("<") ? 
tmp_line.indexOf("<") : term));
                         term = Math.min(term,
-                                (tmp_line.contains("=") ? 
tmp_line.indexOf("=") : term));
+                                (tmp_line.toString().contains("=") ? 
tmp_line.indexOf("=") : term));
 //                  term = Math.min(term, (tmp_line.indexOf("\n") > -1 ? 
tmp_line.indexOf("\n") :
 //                  term));
                         term = (term > 0) ? term : tmp_line.length();
-                        bdy_source += tmp_line.substring(tmp_line.indexOf(" ") 
+ 1, term) + " ";
+                        
bdy_source.append(tmp_line.substring(tmp_line.indexOf(" ") + 1, term)).append(" 
");
                         metastarted = true;
                         longline = (!longline.equals(longkey) ? longkey : "");
                     } else {
                         // this has fallen all the way through.  trap it as 
part of the subject,
                         // rather than just losing it
                         if (!metastarted) {
-                            bdy_title += " , " +
-                                    tmp_line;     //  not sure where else to 
put this but in the
+                            bdy_title.append(" , ").append(tmp_line);     //  
not sure where else to put this but in the
                             // title
                         } else {
                             // what to do with stuff that is metadata, which 
falls after metadata
                             // lines started?
-                            bdy_body += " " + tmp_line +
-                                    " , ";     //  not sure where else to put 
this but in the title
+                            bdy_body.append(" ")
+                                    .append(tmp_line)
+                                    .append(" , ");     //  not sure where 
else to put this but in the title
                         }
                     }
                 } else {  // we're on to the main body
                     while ((read < value.length) && (val_next != 0)) {
                         // read until the train runs out of tracks
-                        bdy_body +=
-                                (char) (val_next & 0xff);  // convert the byte 
to an unsigned int
+                        bdy_body.append((char) (val_next & 0xff));  // convert 
the byte to an unsigned int
                         val_next = (read < value.length) ? value[read++] : 
0x00;
                         if (read >= value.length) {
                             break;
@@ -743,11 +737,11 @@ public class IptcAnpaParser implements Parser {
             }
             done = true; // don't let this run back through and start 
thrashing metadata
         }
-        properties.put("body", bdy_body);
-        properties.put("title", bdy_title);
-        properties.put("subject", bdy_heading);
-        properties.put("author", bdy_author);
-        properties.put("source", bdy_source);
+        properties.put("body", bdy_body.toString());
+        properties.put("title", bdy_title.toString());
+        properties.put("subject", bdy_heading.toString());
+        properties.put("author", bdy_author.toString());
+        properties.put("source", bdy_source.toString());
 
         added = (bdy_body.length() + bdy_title.length() + bdy_heading.length() 
+
                 bdy_author.length() + bdy_source.length()) > 0;
@@ -758,7 +752,7 @@ public class IptcAnpaParser implements Parser {
     private boolean parseFooter(byte[] value, HashMap<String, String> 
properties) {
         boolean added = false;
 
-        String ftr_source = "";
+        StringBuilder ftr_source = new StringBuilder();
         String ftr_datetime = "";
 
         int read = 0;
@@ -772,7 +766,7 @@ public class IptcAnpaParser implements Parser {
 
             while (((val_next < (byte) 0x30) || (val_next > (byte) 0x39)) &&
                     (val_next != 0)) {  // consume all non-numerics first
-                ftr_source += (char) (val_next & 0xff);  // convert the byte 
to an unsigned int
+                ftr_source.append((char) (val_next & 0xff));  // convert the 
byte to an unsigned int
                 val_next = (read < value.length) ? value[read] :
                         0x00;  // attempt to read until end of stream
                 read++;
@@ -826,7 +820,7 @@ public class IptcAnpaParser implements Parser {
             done = true; // don't let this run back through and start 
thrashing metadata
         }
 
-        properties.put("publisher", ftr_source);
+        properties.put("publisher", ftr_source.toString());
         properties.put("created", ftr_datetime);
         properties.put("modified", ftr_datetime);
 
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-ocr-module/src/test/java/org/apache/tika/parser/ocr/TesseractOCRParserTest.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-ocr-module/src/test/java/org/apache/tika/parser/ocr/TesseractOCRParserTest.java
index 26cc1c4..a67fc17 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-ocr-module/src/test/java/org/apache/tika/parser/ocr/TesseractOCRParserTest.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-ocr-module/src/test/java/org/apache/tika/parser/ocr/TesseractOCRParserTest.java
@@ -235,9 +235,7 @@ public class TesseractOCRParserTest extends TikaTest {
         for (Parser p : new Parser[]{new BPGParser(), new HeifParser(), new 
ICNSParser(),
                 new ImageParser(), new JpegParser(), new PSDParser(), new 
TiffParser(),
                 new WebPParser(),}) {
-            for (MediaType mt : p.getSupportedTypes(new ParseContext())) {
-                imageParserMimes.add(mt);
-            }
+            imageParserMimes.addAll(p.getSupportedTypes(new ParseContext()));
         }
         //mime types that Tesseract will cover if there is no existing parser
         //that in turn will call tesseract .. e.g. the mime subtype doesn't 
start
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/ImageGraphicsEngine.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/ImageGraphicsEngine.java
index d0c2bc8..63c3825 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/ImageGraphicsEngine.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/ImageGraphicsEngine.java
@@ -24,6 +24,7 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -80,9 +81,9 @@ class ImageGraphicsEngine extends PDFGraphicsStreamEngine {
             Arrays.asList(COSName.DCT_DECODE.getName(), 
COSName.DCT_DECODE_ABBREVIATION.getName());
 
 
-    private static final List<String> JP2 = 
Arrays.asList(COSName.JPX_DECODE.getName());
+    private static final List<String> JP2 = 
Collections.singletonList(COSName.JPX_DECODE.getName());
 
-    private static final List<String> JB2 = 
Arrays.asList(COSName.JBIG2_DECODE.getName());
+    private static final List<String> JB2 = 
Collections.singletonList(COSName.JBIG2_DECODE.getName());
     final List<IOException> exceptions = new ArrayList<>();
     private final EmbeddedDocumentExtractor embeddedDocumentExtractor;
     private final PDFParserConfig pdfParserConfig;
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-pdf-module/src/test/java/org/apache/tika/parser/pdf/PDFParserTest.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-pdf-module/src/test/java/org/apache/tika/parser/pdf/PDFParserTest.java
index 0c83ab4..4ec104a 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-pdf-module/src/test/java/org/apache/tika/parser/pdf/PDFParserTest.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-pdf-module/src/test/java/org/apache/tika/parser/pdf/PDFParserTest.java
@@ -639,6 +639,7 @@ public class PDFParserTest extends TikaTest {
             for (String v : vals) {
                 if (v.equals(e.getValue())) {
                     foundDC = true;
+                    break;
                 }
             }
             assertTrue("dc:format ::" + e.getValue(), foundDC);
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-text-module/src/main/java/org/apache/tika/parser/strings/Latin1StringsParser.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-text-module/src/main/java/org/apache/tika/parser/strings/Latin1StringsParser.java
index ce45e41..47eee7c 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-text-module/src/main/java/org/apache/tika/parser/strings/Latin1StringsParser.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-text-module/src/main/java/org/apache/tika/parser/strings/Latin1StringsParser.java
@@ -175,8 +175,9 @@ public class Latin1StringsParser extends AbstractParser {
 
         xhtml.characters(new String(output, 0, outPos, "windows-1252"));
 
-        for (int k = 0; k < tmpPos - outPos; k++)
-            output[k] = output[outPos + k];
+        if (tmpPos - outPos >= 0) {
+            System.arraycopy(output, outPos, output, 0, tmpPos - outPos);
+        }
         tmpPos = tmpPos - outPos;
         outPos = 0;
     }
diff --git 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-xmp-commons/src/test/java/org/apache/tika/parser/xmp/JempboxExtractorTest.java
 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-xmp-commons/src/test/java/org/apache/tika/parser/xmp/JempboxExtractorTest.java
index a204491..76364cb 100644
--- 
a/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-xmp-commons/src/test/java/org/apache/tika/parser/xmp/JempboxExtractorTest.java
+++ 
b/tika-parsers/tika-parsers-classic/tika-parsers-classic-modules/tika-parser-xmp-commons/src/test/java/org/apache/tika/parser/xmp/JempboxExtractorTest.java
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 
 import org.junit.Test;
 
@@ -103,7 +104,7 @@ public class JempboxExtractorTest extends TikaTest {
 
     @Test
     public void testJoinCreators() {
-        assertEquals("Mr B", new 
JempboxExtractor(null).joinCreators(Arrays.asList("Mr B")));
+        assertEquals("Mr B", new 
JempboxExtractor(null).joinCreators(Collections.singletonList("Mr B")));
         // TODO use multi-value property instead?
         assertEquals("Mr B, Mr A",
                 new JempboxExtractor(null).joinCreators(Arrays.asList("Mr B", 
"Mr A")));
diff --git 
a/tika-pipes/tika-pipes-iterators/tika-pipes-iterator-jdbc/src/main/java/org/apache/tika/pipes/pipesiterator/jdbc/JDBCPipesIterator.java
 
b/tika-pipes/tika-pipes-iterators/tika-pipes-iterator-jdbc/src/main/java/org/apache/tika/pipes/pipesiterator/jdbc/JDBCPipesIterator.java
index 024b99b..3fb45a1 100644
--- 
a/tika-pipes/tika-pipes-iterators/tika-pipes-iterator-jdbc/src/main/java/org/apache/tika/pipes/pipesiterator/jdbc/JDBCPipesIterator.java
+++ 
b/tika-pipes/tika-pipes-iterators/tika-pipes-iterator-jdbc/src/main/java/org/apache/tika/pipes/pipesiterator/jdbc/JDBCPipesIterator.java
@@ -211,7 +211,7 @@ public class JDBCPipesIterator extends PipesIterator 
implements Initializable {
             String val = rs.getString(i);
             val = (val == null) ? "" : val;
             val = (val.length() > 100) ? val.substring(0, 100) : val;
-            sb.append(rs.getMetaData().getColumnLabel(i) + ":" + val + "\n");
+            
sb.append(rs.getMetaData().getColumnLabel(i)).append(":").append(val).append("\n");
         }
         return sb.toString();
     }
diff --git 
a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerConfig.java
 
b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerConfig.java
index d73307a..b8c9473 100644
--- 
a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerConfig.java
+++ 
b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerConfig.java
@@ -332,12 +332,7 @@ public class TikaServerConfig extends ConfigBase {
             }
         }
         //add headless if not already configured
-        boolean foundHeadlessOption = false;
-        for (String arg : forkedJvmArgs) {
-            if (arg.contains("java.awt.headless")) {
-                foundHeadlessOption = true;
-            }
-        }
+        boolean foundHeadlessOption = forkedJvmArgs.stream().anyMatch(arg -> 
arg.contains("java.awt.headless"));
         //if user has already specified headless...don't modify
         if (!foundHeadlessOption) {
             forkedJvmArgs.add("-Djava.awt.headless=true");
diff --git 
a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerWatchDog.java
 
b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerWatchDog.java
index 186d84a..d00141f 100644
--- 
a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerWatchDog.java
+++ 
b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerWatchDog.java
@@ -138,7 +138,7 @@ public class TikaServerWatchDog implements 
Callable<WatchDogResult> {
                             forkedProcess.close();
                             mustRestart = true;
                         } else {
-                            Long elapsed = 
Duration.between(Instant.ofEpochMilli(status.timestamp),
+                            long elapsed = 
Duration.between(Instant.ofEpochMilli(status.timestamp),
                                     Instant.now()).toMillis();
                             if (elapsed > 
tikaServerConfig.getTaskTimeoutMillis()) {
                                 LOG.info(
@@ -255,7 +255,7 @@ public class TikaServerWatchDog implements 
Callable<WatchDogResult> {
 
         private ForkedStatus readStatus() throws Exception {
             Instant started = Instant.now();
-            Long elapsed = Duration.between(started, Instant.now()).toMillis();
+            long elapsed = Duration.between(started, Instant.now()).toMillis();
             //only reading, but need to include write to allow for locking
             try (FileChannel fc = FileChannel.open(forkedStatusFile, READ, 
WRITE)) {
 
diff --git 
a/tika-xmp/src/main/java/org/apache/tika/xmp/convert/RTFConverter.java 
b/tika-xmp/src/main/java/org/apache/tika/xmp/convert/RTFConverter.java
index 8118686..4f83543 100644
--- a/tika-xmp/src/main/java/org/apache/tika/xmp/convert/RTFConverter.java
+++ b/tika-xmp/src/main/java/org/apache/tika/xmp/convert/RTFConverter.java
@@ -38,7 +38,7 @@ import com.adobe.xmp.options.PropertyOptions;
  */
 public class RTFConverter extends AbstractConverter {
     protected static final Set<Namespace> ADDITIONAL_NAMESPACES = Collections
-            .unmodifiableSet(new HashSet<>(Arrays.asList(new Namespace(
+            .unmodifiableSet(new HashSet<>(Collections.singletonList(new 
Namespace(
                     OfficeOpenXMLExtended.NAMESPACE_URI, 
OfficeOpenXMLExtended.PREFIX))) );
 
     public RTFConverter() throws TikaException {

Reply via email to