You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ta...@apache.org on 2021/03/22 21:00:01 UTC

[tika] branch main updated: TIKA-3324 -- add checkstyle enforcement to the tika-server module

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 0beb61a  TIKA-3324 -- add checkstyle enforcement to the tika-server module
0beb61a is described below

commit 0beb61a9806d9fbefb7dc131a46b03418c005ead
Author: tallison <ta...@apache.org>
AuthorDate: Mon Mar 22 16:59:41 2021 -0400

    TIKA-3324 -- add checkstyle enforcement to the tika-server module
---
 tika-server/pom.xml                                |  38 +-
 .../server/classic/config/PDFServerConfig.java     |  32 +-
 .../classic/config/TesseractServerConfig.java      |  29 +-
 .../classic/resource/XMPMetadataResource.java      |  34 +-
 .../classic/writer/XMPMessageBodyWriter.java       |  26 +-
 .../src/main/resources/log4j.properties            |   4 +-
 .../tika/server/classic/DetectorResourceTest.java  |  55 +--
 .../apache/tika/server/classic/FetcherTest.java    |  35 +-
 .../tika/server/classic/MetadataResourceTest.java  |  96 ++--
 .../classic/RecursiveMetadataFilterTest.java       |  42 +-
 .../classic/RecursiveMetadataResourceTest.java     |  32 +-
 .../tika/server/classic/TikaDetectorsTest.java     |  41 +-
 .../tika/server/classic/TikaMimeTypesTest.java     |  39 +-
 .../tika/server/classic/TikaParsersTest.java       |  46 +-
 .../tika/server/classic/TikaResourceTest.java      | 427 +++++++---------
 .../tika/server/classic/UnpackerResourceTest.java  |  91 ++--
 .../test/resources/config/TIKA-3137-include.xml    |  38 +-
 .../src/test/resources/log4j.properties            |   6 +-
 .../test/resources/test-documents/testHTML.html    |  20 +-
 .../org/apache/tika/server/client/TikaClient.java  |  31 +-
 .../apache/tika/server/client/TikaClientCLI.java   |  35 +-
 .../tika/server/client/TikaEmitterResult.java      |  19 +-
 .../apache/tika/server/client/TikaHttpClient.java  |  73 ++-
 .../src/main/resources/log4j.properties            |   6 +-
 .../org/apache/tika/server/client/TestBasic.java   |  15 +-
 .../src/test/resources/log4j.properties            |   6 +-
 .../server/core/CompositeParseContextConfig.java   |  10 +-
 .../server/core/DefaultInputStreamFactory.java     |   9 +-
 .../tika/server/core/FetcherStreamFactory.java     |  17 +-
 .../org/apache/tika/server/core/HTMLHelper.java    |   7 +-
 .../tika/server/core/InputStreamFactory.java       |   9 +-
 .../org/apache/tika/server/core/MetadataList.java  |   7 +-
 .../tika/server/core/ParseContextConfig.java       |  13 +-
 .../org/apache/tika/server/core/ServerStatus.java  | 122 +++--
 .../tika/server/core/ServerStatusWatcher.java      |  57 ++-
 .../apache/tika/server/core/TikaLoggingFilter.java |   7 +-
 .../org/apache/tika/server/core/TikaServerCli.java |  39 +-
 .../apache/tika/server/core/TikaServerConfig.java  | 543 ++++++++++-----------
 .../tika/server/core/TikaServerParseException.java |   3 +-
 .../core/TikaServerParseExceptionMapper.java       |  12 +-
 .../apache/tika/server/core/TikaServerProcess.java | 194 ++++----
 .../tika/server/core/TikaServerWatchDog.java       | 222 ++++-----
 .../apache/tika/server/core/WatchDogResult.java    |   7 +-
 .../server/core/config/DocumentSelectorConfig.java |  10 +-
 .../server/core/config/PasswordProviderConfig.java |  27 +-
 .../tika/server/core/resource/AsyncEmitter.java    |  39 +-
 .../tika/server/core/resource/AsyncParser.java     |  42 +-
 .../tika/server/core/resource/AsyncRequest.java    |   4 +-
 .../tika/server/core/resource/AsyncResource.java   |  56 +--
 .../server/core/resource/DetectorResource.java     |  21 +-
 .../tika/server/core/resource/EmitterResource.java | 150 +++---
 .../server/core/resource/LanguageResource.java     |  55 +--
 .../server/core/resource/MetadataResource.java     |  62 +--
 .../core/resource/RecursiveMetadataResource.java   | 131 +++--
 .../tika/server/core/resource/TikaDetectors.java   |  15 +-
 .../tika/server/core/resource/TikaMimeTypes.java   |  37 +-
 .../tika/server/core/resource/TikaParsers.java     |  43 +-
 .../tika/server/core/resource/TikaResource.java    | 217 ++++----
 .../server/core/resource/TikaServerStatus.java     |   8 +-
 .../tika/server/core/resource/TikaWelcome.java     |  44 +-
 .../server/core/resource/TranslateResource.java    | 135 +++--
 .../server/core/resource/UnpackerResource.java     |  84 ++--
 .../server/core/writer/CSVMessageBodyWriter.java   |  29 +-
 .../server/core/writer/JSONMessageBodyWriter.java  |  29 +-
 .../tika/server/core/writer/JSONObjWriter.java     |  30 +-
 .../core/writer/MetadataListMessageBodyWriter.java |  29 +-
 .../apache/tika/server/core/writer/TarWriter.java  |  25 +-
 .../server/core/writer/TextMessageBodyWriter.java  |  28 +-
 .../apache/tika/server/core/writer/ZipWriter.java  |  27 +-
 .../src/main/resources/tikaserver-template.html    |  18 +-
 .../main/resources/tikaserver-version.properties   |  15 +
 .../org/apache/tika/server/core/CXFTestBase.java   |  84 ++--
 .../tika/server/core/IntegrationTestBase.java      |  92 ++--
 .../tika/server/core/LanguageResourceTest.java     | 139 +++---
 .../tika/server/core/NullWebClientLogger.java      |   5 +-
 .../apache/tika/server/core/ServerStatusTest.java  |  16 +-
 .../apache/tika/server/core/StackTraceOffTest.java |  54 +-
 .../apache/tika/server/core/StackTraceTest.java    |  62 +--
 .../apache/tika/server/core/TikaEmitterTest.java   | 162 +++---
 .../apache/tika/server/core/TikaMimeTypesTest.java |  34 +-
 .../apache/tika/server/core/TikaResourceTest.java  |  60 +--
 .../core/TikaServerAsyncIntegrationTest.java       | 123 ++---
 .../tika/server/core/TikaServerConfigTest.java     |  32 +-
 .../core/TikaServerEmitterIntegrationTest.java     | 151 +++---
 .../server/core/TikaServerIntegrationTest.java     | 217 ++++----
 .../tika/server/core/TikaServerStatusTest.java     |  29 +-
 .../apache/tika/server/core/TikaVersionTest.java   |  20 +-
 .../apache/tika/server/core/TikaWelcomeTest.java   |  54 +-
 .../tika/server/core/TranslateResourceTest.java    |  90 ++--
 .../src/test/resources/log4j.properties            |   6 +-
 .../test-documents/mock/heavy_hang_100.xml         |   2 +-
 .../test-documents/mock/heavy_hang_30000.xml       |   2 +-
 .../resources/test-documents/mock/system_exit.xml  |   2 +-
 .../test-documents/mock/testStaticStdOutErr.xml    |  45 +-
 .../test-documents/mock/testStdOutErr.xml          |  45 +-
 .../test-documents/mock/thread_interrupt.xml       |   2 +-
 96 files changed, 2640 insertions(+), 2892 deletions(-)

diff --git a/tika-server/pom.xml b/tika-server/pom.xml
index f35927b..47d1e3d 100644
--- a/tika-server/pom.xml
+++ b/tika-server/pom.xml
@@ -14,7 +14,8 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
     <modules>
@@ -34,4 +35,39 @@
     <name>Apache Tika server</name>
     <url>http://tika.apache.org/</url>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <version>${checkstyle.plugin.version}</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>com.puppycrawl.tools</groupId>
+                        <artifactId>checkstyle</artifactId>
+                        <version>8.41</version>
+                    </dependency>
+                </dependencies>
+                <executions>
+                    <execution>
+                        <id>validate</id>
+                        <phase>validate</phase>
+                        <configuration>
+                            <configLocation>checkstyle.xml</configLocation>
+                            <encoding>UTF-8</encoding>
+                            <consoleOutput>false</consoleOutput>
+                            <includeTestSourceDirectory>true</includeTestSourceDirectory>
+                            <testSourceDirectories>${project.basedir}/src/test/java</testSourceDirectories>
+                            <violationSeverity>error</violationSeverity>
+                            <failOnViolation>true</failOnViolation>
+                        </configuration>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+
+    </build>
 </project>
diff --git a/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/config/PDFServerConfig.java b/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/config/PDFServerConfig.java
index 1c49652..8adfe5d 100644
--- a/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/config/PDFServerConfig.java
+++ b/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/config/PDFServerConfig.java
@@ -16,21 +16,19 @@
  */
 package org.apache.tika.server.classic.config;
 
+import static org.apache.tika.server.core.resource.TikaResource.processHeaderConfig;
+
+import java.util.List;
+import java.util.Map;
+import javax.ws.rs.core.MultivaluedMap;
+
 import org.apache.commons.lang3.StringUtils;
-import org.apache.tika.exception.TikaException;
-import org.apache.tika.extractor.DocumentSelector;
+
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.pdf.PDFParserConfig;
 import org.apache.tika.server.core.ParseContextConfig;
 
-import javax.ws.rs.core.MultivaluedMap;
-
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.tika.server.core.resource.TikaResource.processHeaderConfig;
-
 /**
  * PDF parser configuration, for the request
  */
@@ -45,21 +43,23 @@ public class PDFServerConfig implements ParseContextConfig {
      * Configures the parseContext with present headers.
      * Note: only first value of header is considered.
      *
-     * @param httpHeaders the headers.
-     * @param metadata  the metadata.
-     * @param parseContext  the parse context to configure.
+     * @param httpHeaders  the headers.
+     * @param metadata     the metadata.
+     * @param parseContext the parse context to configure.
      */
     @Override
-    public void configure(MultivaluedMap<String, String> httpHeaders,
-                          Metadata metadata, ParseContext parseContext) {
+    public void configure(MultivaluedMap<String, String> httpHeaders, Metadata metadata,
+                          ParseContext parseContext) {
         //lazily initialize configs
         //if a header is submitted, any params set in --tika-config tika-config.xml
         //upon server startup will be ignored.
         PDFParserConfig pdfParserConfig = null;
         for (Map.Entry<String, List<String>> kvp : httpHeaders.entrySet()) {
             if (StringUtils.startsWithIgnoreCase(kvp.getKey(), X_TIKA_PDF_HEADER_PREFIX)) {
-                pdfParserConfig = (pdfParserConfig == null) ? new PDFParserConfig() : pdfParserConfig;
-                processHeaderConfig(pdfParserConfig, kvp.getKey(), kvp.getValue().get(0).trim(), X_TIKA_PDF_HEADER_PREFIX);
+                pdfParserConfig =
+                        (pdfParserConfig == null) ? new PDFParserConfig() : pdfParserConfig;
+                processHeaderConfig(pdfParserConfig, kvp.getKey(), kvp.getValue().get(0).trim(),
+                        X_TIKA_PDF_HEADER_PREFIX);
             }
         }
         if (pdfParserConfig != null) {
diff --git a/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/config/TesseractServerConfig.java b/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/config/TesseractServerConfig.java
index aaddfed..cf8036d 100644
--- a/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/config/TesseractServerConfig.java
+++ b/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/config/TesseractServerConfig.java
@@ -16,21 +16,19 @@
  */
 package org.apache.tika.server.classic.config;
 
+import static org.apache.tika.server.core.resource.TikaResource.processHeaderConfig;
+
+import java.util.List;
+import java.util.Map;
+import javax.ws.rs.core.MultivaluedMap;
+
 import org.apache.commons.lang3.StringUtils;
-import org.apache.tika.exception.TikaException;
-import org.apache.tika.extractor.DocumentSelector;
+
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.ocr.TesseractOCRConfig;
 import org.apache.tika.server.core.ParseContextConfig;
 
-import javax.ws.rs.core.MultivaluedMap;
-
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.tika.server.core.resource.TikaResource.processHeaderConfig;
-
 /**
  * Tesseract configuration, for the request
  */
@@ -45,13 +43,13 @@ public class TesseractServerConfig implements ParseContextConfig {
      * Configures the parseContext with present headers.
      * Note: only first value of header is considered.
      *
-     * @param httpHeaders the headers.
-     * @param metadata  the metadata.
-     * @param parseContext  the parse context to configure.
+     * @param httpHeaders  the headers.
+     * @param metadata     the metadata.
+     * @param parseContext the parse context to configure.
      */
     @Override
-    public void configure(MultivaluedMap<String, String> httpHeaders,
-                          Metadata metadata, ParseContext parseContext) {
+    public void configure(MultivaluedMap<String, String> httpHeaders, Metadata metadata,
+                          ParseContext parseContext) {
         //lazily initialize configs
         //if a header is submitted, any params set in --tika-config tika-config.xml
         //upon server startup will be ignored.
@@ -59,7 +57,8 @@ public class TesseractServerConfig implements ParseContextConfig {
         for (Map.Entry<String, List<String>> kvp : httpHeaders.entrySet()) {
             if (StringUtils.startsWithIgnoreCase(kvp.getKey(), X_TIKA_OCR_HEADER_PREFIX)) {
                 ocrConfig = (ocrConfig == null) ? new TesseractOCRConfig() : ocrConfig;
-                processHeaderConfig(ocrConfig, kvp.getKey(), kvp.getValue().get(0).trim(), X_TIKA_OCR_HEADER_PREFIX);
+                processHeaderConfig(ocrConfig, kvp.getKey(), kvp.getValue().get(0).trim(),
+                        X_TIKA_OCR_HEADER_PREFIX);
             }
         }
         if (ocrConfig != null) {
diff --git a/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/resource/XMPMetadataResource.java b/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/resource/XMPMetadataResource.java
index 546cdb2..80397df 100644
--- a/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/resource/XMPMetadataResource.java
+++ b/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/resource/XMPMetadataResource.java
@@ -16,12 +16,7 @@
  */
 package org.apache.tika.server.classic.resource;
 
-import org.apache.cxf.jaxrs.ext.multipart.Attachment;
-import org.apache.tika.metadata.Metadata;
-import org.apache.tika.server.core.resource.MetadataResource;
-import org.apache.tika.server.core.resource.TikaResource;
-import org.apache.tika.server.core.resource.TikaServerResource;
-
+import java.io.InputStream;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
 import javax.ws.rs.PUT;
@@ -32,7 +27,13 @@ import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
-import java.io.InputStream;
+
+import org.apache.cxf.jaxrs.ext.multipart.Attachment;
+
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.server.core.resource.MetadataResource;
+import org.apache.tika.server.core.resource.TikaResource;
+import org.apache.tika.server.core.resource.TikaServerResource;
 
 public class XMPMetadataResource extends MetadataResource implements TikaServerResource {
 
@@ -41,7 +42,8 @@ public class XMPMetadataResource extends MetadataResource implements TikaServerR
     @Produces({"application/rdf+xml"})
     @Override
     public Response getMetadataField(InputStream is, @Context HttpHeaders httpHeaders,
-                                     @Context UriInfo info, @PathParam("field") String field) throws Exception {
+                                     @Context UriInfo info, @PathParam("field") String field)
+            throws Exception {
         return super.getMetadataField(is, httpHeaders, info, field);
     }
 
@@ -49,17 +51,19 @@ public class XMPMetadataResource extends MetadataResource implements TikaServerR
     @Consumes("multipart/form-data")
     @Produces({"application/rdf+xml"})
     @Path("form")
-    public Response getMetadataFromMultipart(Attachment att, @Context UriInfo info) throws Exception {
-        return Response.ok(
-                parseMetadata(att.getObject(InputStream.class), new Metadata(),
-                        att.getHeaders(), info)).build();
+    public Response getMetadataFromMultipart(Attachment att, @Context UriInfo info)
+            throws Exception {
+        return Response.ok(parseMetadata(att.getObject(InputStream.class), new Metadata(),
+                att.getHeaders(), info)).build();
     }
 
     @PUT
     @Produces({"application/rdf+xml"})
-    public Response getMetadata(InputStream is, @Context HttpHeaders httpHeaders, @Context UriInfo info) throws Exception {
+    public Response getMetadata(InputStream is, @Context HttpHeaders httpHeaders,
+                                @Context UriInfo info) throws Exception {
         Metadata metadata = new Metadata();
-        return Response.ok(
-                parseMetadata(TikaResource.getInputStream(is, metadata, httpHeaders), metadata, httpHeaders.getRequestHeaders(), info)).build();
+        return Response
+                .ok(parseMetadata(TikaResource.getInputStream(is, metadata, httpHeaders), metadata,
+                        httpHeaders.getRequestHeaders(), info)).build();
     }
 }
diff --git a/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/writer/XMPMessageBodyWriter.java b/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/writer/XMPMessageBodyWriter.java
index 88dcbf3..c7f9798 100644
--- a/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/writer/XMPMessageBodyWriter.java
+++ b/tika-server/tika-server-classic/src/main/java/org/apache/tika/server/classic/writer/XMPMessageBodyWriter.java
@@ -17,11 +17,7 @@
 
 package org.apache.tika.server.classic.writer;
 
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.Provider;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -29,32 +25,38 @@ import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.ext.Provider;
 
 import org.apache.tika.exception.TikaException;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.server.core.writer.TikaServerWriter;
 import org.apache.tika.xmp.XMPMetadata;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
-
 @Provider
 @Produces("application/rdf+xml")
 public class XMPMessageBodyWriter implements TikaServerWriter<Metadata> {
 
     private static MediaType RDF_XML = MediaType.valueOf("application/rdf+xml");
 
-    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations,
+                               MediaType mediaType) {
         return mediaType.equals(RDF_XML) && Metadata.class.isAssignableFrom(type);
     }
 
-    public long getSize(Metadata data, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public long getSize(Metadata data, Class<?> type, Type genericType, Annotation[] annotations,
+                        MediaType mediaType) {
         return -1;
     }
 
     @Override
-    public void writeTo(Metadata metadata, Class<?> type, Type genericType, Annotation[] annotations,
-                        MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException,
-            WebApplicationException {
+    public void writeTo(Metadata metadata, Class<?> type, Type genericType,
+                        Annotation[] annotations, MediaType mediaType,
+                        MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
+            throws IOException, WebApplicationException {
         try {
             Writer writer = new OutputStreamWriter(entityStream, UTF_8);
             XMPMetadata xmp = new XMPMetadata(metadata);
diff --git a/tika-server/tika-server-classic/src/main/resources/log4j.properties b/tika-server/tika-server-classic/src/main/resources/log4j.properties
index 248f1a5..05c52d7 100644
--- a/tika-server/tika-server-classic/src/main/resources/log4j.properties
+++ b/tika-server/tika-server-classic/src/main/resources/log4j.properties
@@ -1,3 +1,4 @@
+#
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
 # this work for additional information regarding copyright ownership.
@@ -12,13 +13,10 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 #info,debug, error,fatal ...
 log4j.rootLogger=info,stderr
-
 #console
 log4j.appender.stderr=org.apache.log4j.ConsoleAppender
 log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
 log4j.appender.stderr.Target=System.err
-
 log4j.appender.stderr.layout.ConversionPattern=%d{ABSOLUTE} %-5p %m%n
diff --git a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/DetectorResourceTest.java b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/DetectorResourceTest.java
index 8f1afb5..3e06d2e 100644
--- a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/DetectorResourceTest.java
+++ b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/DetectorResourceTest.java
@@ -17,24 +17,25 @@
 
 package org.apache.tika.server.classic;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import javax.ws.rs.core.Response;
+
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.junit.Test;
+
 import org.apache.tika.server.core.CXFTestBase;
 import org.apache.tika.server.core.ServerStatus;
 import org.apache.tika.server.core.TikaServerParseExceptionMapper;
 import org.apache.tika.server.core.resource.DetectorResource;
 import org.apache.tika.server.core.writer.TarWriter;
 import org.apache.tika.server.core.writer.ZipWriter;
-import org.junit.Test;
-
-import javax.ws.rs.core.Response;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
 
 public class DetectorResourceTest extends CXFTestBase {
 
@@ -64,16 +65,12 @@ public class DetectorResourceTest extends CXFTestBase {
     @Test
     public void testDetectCsvWithExt() throws Exception {
         String url = endPoint + DETECT_STREAM_PATH;
-        Response response = WebClient
-                .create(endPoint + DETECT_STREAM_PATH)
-                .type("text/csv")
-                .accept("*/*")
-                .header("Content-Disposition",
-                        "attachment; filename=" + FOO_CSV)
-                .put(ClassLoader.getSystemResourceAsStream(FOO_CSV));
+        Response response =
+                WebClient.create(endPoint + DETECT_STREAM_PATH).type("text/csv").accept("*/*")
+                        .header("Content-Disposition", "attachment; filename=" + FOO_CSV)
+                        .put(ClassLoader.getSystemResourceAsStream(FOO_CSV));
         assertNotNull(response);
-        String readMime = getStringFromInputStream((InputStream) response
-                .getEntity());
+        String readMime = getStringFromInputStream((InputStream) response.getEntity());
         assertEquals("text/csv", readMime);
 
     }
@@ -81,25 +78,17 @@ public class DetectorResourceTest extends CXFTestBase {
     @Test
     public void testDetectCsvNoExt() throws Exception {
 
-        Response response = WebClient
-                .create(endPoint + DETECT_STREAM_PATH)
-                .type("text/csv")
-                .accept("*/*")
-                .header("Content-Disposition",
-                        "attachment; filename=" + CDEC_CSV_NO_EXT)
-                .put(ClassLoader.getSystemResourceAsStream(CDEC_CSV_NO_EXT));
+        Response response =
+                WebClient.create(endPoint + DETECT_STREAM_PATH).type("text/csv").accept("*/*")
+                        .header("Content-Disposition", "attachment; filename=" + CDEC_CSV_NO_EXT)
+                        .put(ClassLoader.getSystemResourceAsStream(CDEC_CSV_NO_EXT));
         assertNotNull(response);
-        String readMime = getStringFromInputStream((InputStream) response
-                .getEntity());
+        String readMime = getStringFromInputStream((InputStream) response.getEntity());
         assertEquals("text/plain", readMime);
 
         // now trick it by adding .csv to the end
-        response = WebClient
-                .create(endPoint + DETECT_STREAM_PATH)
-                .type("text/csv")
-                .accept("*/*")
-                .header("Content-Disposition",
-                        "attachment; filename=" + CDEC_CSV_NO_EXT + ".csv")
+        response = WebClient.create(endPoint + DETECT_STREAM_PATH).type("text/csv").accept("*/*")
+                .header("Content-Disposition", "attachment; filename=" + CDEC_CSV_NO_EXT + ".csv")
                 .put(ClassLoader.getSystemResourceAsStream(CDEC_CSV_NO_EXT));
         assertNotNull(response);
         readMime = getStringFromInputStream((InputStream) response.getEntity());
diff --git a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/FetcherTest.java b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/FetcherTest.java
index 1760225..07fe241 100644
--- a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/FetcherTest.java
+++ b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/FetcherTest.java
@@ -17,10 +17,23 @@
 
 package org.apache.tika.server.classic;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertEquals;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+import javax.ws.rs.core.Response;
+
 import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.junit.Ignore;
+import org.junit.Test;
+
 import org.apache.tika.config.TikaConfig;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.TikaCoreProperties;
@@ -30,18 +43,6 @@ import org.apache.tika.server.core.FetcherStreamFactory;
 import org.apache.tika.server.core.InputStreamFactory;
 import org.apache.tika.server.core.resource.RecursiveMetadataResource;
 import org.apache.tika.server.core.writer.MetadataListMessageBodyWriter;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import javax.ws.rs.core.Response;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.List;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertEquals;
 
 
 @Ignore("turn into actual unit tests -- this relies on network connectivity...bad")
@@ -78,14 +79,12 @@ public class FetcherTest extends CXFTestBase {
 
     @Test
     public void testBasic() throws Exception {
-        Response response = WebClient
-                .create(endPoint + META_PATH)
-                .accept("application/json")
-                .acceptEncoding("gzip")
-                .header("fetcherName", "url")
+        Response response = WebClient.create(endPoint + META_PATH).accept("application/json")
+                .acceptEncoding("gzip").header("fetcherName", "url")
                 .header("fetchKey", "https://tika.apache.org").put("");
 
-        Reader reader = new InputStreamReader(new GzipCompressorInputStream((InputStream) response.getEntity()), UTF_8);
+        Reader reader = new InputStreamReader(
+                new GzipCompressorInputStream((InputStream) response.getEntity()), UTF_8);
         List<Metadata> metadataList = JsonMetadataList.fromJson(reader);
         Metadata parent = metadataList.get(0);
         String txt = parent.get(TikaCoreProperties.TIKA_CONTENT);
diff --git a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/MetadataResourceTest.java b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/MetadataResourceTest.java
index 7319d24..0d92ec3 100644
--- a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/MetadataResourceTest.java
+++ b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/MetadataResourceTest.java
@@ -21,9 +21,6 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
@@ -31,25 +28,28 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import au.com.bytecode.opencsv.CSVReader;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.metadata.serialization.JsonMetadata;
 import org.apache.tika.server.classic.resource.XMPMetadataResource;
+import org.apache.tika.server.classic.writer.XMPMessageBodyWriter;
 import org.apache.tika.server.core.CXFTestBase;
 import org.apache.tika.server.core.resource.MetadataResource;
 import org.apache.tika.server.core.writer.CSVMessageBodyWriter;
 import org.apache.tika.server.core.writer.JSONMessageBodyWriter;
 import org.apache.tika.server.core.writer.TextMessageBodyWriter;
-import org.apache.tika.server.classic.writer.XMPMessageBodyWriter;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
 
 public class MetadataResourceTest extends CXFTestBase {
     private static final String META_PATH = "/meta";
@@ -75,12 +75,9 @@ public class MetadataResourceTest extends CXFTestBase {
 
     @Test
     public void testSimpleWord() throws Exception {
-        Response response = WebClient
-                .create(endPoint + META_PATH)
-                .type("application/msword")
-                .accept("text/csv")
-                .put(ClassLoader
-                        .getSystemResourceAsStream(TikaResourceTest.TEST_DOC));
+        Response response =
+                WebClient.create(endPoint + META_PATH).type("application/msword").accept("text/csv")
+                        .put(ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_DOC));
 
         Reader reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
 
@@ -102,33 +99,24 @@ public class MetadataResourceTest extends CXFTestBase {
 
     @Test
     public void testPasswordProtected() throws Exception {
-        Response response = WebClient
-                .create(endPoint + META_PATH)
-                .type("application/vnd.ms-excel")
-                .accept("text/csv")
-                .put(ClassLoader
+        Response response = WebClient.create(endPoint + META_PATH).type("application/vnd.ms-excel")
+                .accept("text/csv").put(ClassLoader
                         .getSystemResourceAsStream(TikaResourceTest.TEST_PASSWORD_PROTECTED));
 
         // Won't work, no password given
         assertEquals(500, response.getStatus());
 
         // Try again, this time with the wrong password
-        response = WebClient
-                .create(endPoint + META_PATH)
-                .type("application/vnd.ms-excel")
-                .accept("text/csv")
-                .header("Password", "wrong password")
-                .put(ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_PASSWORD_PROTECTED));
+        response = WebClient.create(endPoint + META_PATH).type("application/vnd.ms-excel")
+                .accept("text/csv").header("Password", "wrong password").put(ClassLoader
+                        .getSystemResourceAsStream(TikaResourceTest.TEST_PASSWORD_PROTECTED));
 
         assertEquals(500, response.getStatus());
 
         // Try again, this time with the password
-        response = WebClient
-                .create(endPoint + META_PATH)
-                .type("application/vnd.ms-excel")
-                .accept("text/csv")
-                .header("Password", "password")
-                .put(ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_PASSWORD_PROTECTED));
+        response = WebClient.create(endPoint + META_PATH).type("application/vnd.ms-excel")
+                .accept("text/csv").header("Password", "password").put(ClassLoader
+                        .getSystemResourceAsStream(TikaResourceTest.TEST_PASSWORD_PROTECTED));
 
         // Will work
         assertEquals(200, response.getStatus());
@@ -151,12 +139,9 @@ public class MetadataResourceTest extends CXFTestBase {
 
     @Test
     public void testJSON() throws Exception {
-        Response response = WebClient
-                .create(endPoint + META_PATH)
-                .type("application/msword")
+        Response response = WebClient.create(endPoint + META_PATH).type("application/msword")
                 .accept("application/json")
-                .put(ClassLoader
-                        .getSystemResourceAsStream(TikaResourceTest.TEST_DOC));
+                .put(ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_DOC));
 
         Reader reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
 
@@ -167,12 +152,9 @@ public class MetadataResourceTest extends CXFTestBase {
 
     @Test
     public void testXMP() throws Exception {
-        Response response = WebClient
-                .create(endPoint + META_PATH)
-                .type("application/msword")
+        Response response = WebClient.create(endPoint + META_PATH).type("application/msword")
                 .accept("application/rdf+xml")
-                .put(ClassLoader
-                        .getSystemResourceAsStream(TikaResourceTest.TEST_DOC));
+                .put(ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_DOC));
 
         String result = IOUtils.readStringFromStream((InputStream) response.getEntity());
         assertContains("<rdf:li>Maxim Valyanskiy</rdf:li>", result);
@@ -181,8 +163,10 @@ public class MetadataResourceTest extends CXFTestBase {
     //Now test requesting one field
     @Test
     public void testGetField_XXX_NotFound() throws Exception {
-        Response response = WebClient.create(endPoint + META_PATH + "/xxx").type("application/msword")
-                .accept(MediaType.APPLICATION_JSON).put(ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_DOC));
+        Response response =
+                WebClient.create(endPoint + META_PATH + "/xxx").type("application/msword")
+                        .accept(MediaType.APPLICATION_JSON)
+                        .put(ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_DOC));
         Assert.assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatus());
     }
 
@@ -191,8 +175,9 @@ public class MetadataResourceTest extends CXFTestBase {
 
         InputStream stream = ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_DOC);
 
-        Response response = WebClient.create(endPoint + META_PATH + "/Author").type("application/msword")
-                .accept(MediaType.TEXT_PLAIN).put(copy(stream, 8000));
+        Response response =
+                WebClient.create(endPoint + META_PATH + "/Author").type("application/msword")
+                        .accept(MediaType.TEXT_PLAIN).put(copy(stream, 8000));
         Assert.assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus());
     }
 
@@ -202,9 +187,10 @@ public class MetadataResourceTest extends CXFTestBase {
 
         InputStream stream = ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_DOC);
 
-        Response response = WebClient.create(endPoint + META_PATH + "/"+TikaCoreProperties.CREATOR.getName())
-                .type("application/msword")
-                .accept(MediaType.TEXT_PLAIN).put(copy(stream, 12000));
+        Response response =
+                WebClient.create(endPoint + META_PATH + "/" + TikaCoreProperties.CREATOR.getName())
+                        .type("application/msword").accept(MediaType.TEXT_PLAIN)
+                        .put(copy(stream, 12000));
         Assert.assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
         String s = IOUtils.readStringFromStream((InputStream) response.getEntity());
         assertEquals("Maxim Valyanskiy", s);
@@ -215,12 +201,13 @@ public class MetadataResourceTest extends CXFTestBase {
 
         InputStream stream = ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_DOC);
 
-        Response response = WebClient.create(endPoint + META_PATH + "/"+TikaCoreProperties.CREATOR.getName())
-                .type("application/msword")
-                .accept(MediaType.APPLICATION_JSON).put(copy(stream, 12000));
+        Response response =
+                WebClient.create(endPoint + META_PATH + "/" + TikaCoreProperties.CREATOR.getName())
+                        .type("application/msword").accept(MediaType.APPLICATION_JSON)
+                        .put(copy(stream, 12000));
         Assert.assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
-        Metadata metadata = JsonMetadata.fromJson(new InputStreamReader(
-                (InputStream) response.getEntity(), UTF_8));
+        Metadata metadata = JsonMetadata
+                .fromJson(new InputStreamReader((InputStream) response.getEntity(), UTF_8));
         assertEquals("Maxim Valyanskiy", metadata.get(TikaCoreProperties.CREATOR));
         assertEquals(1, metadata.names().length);
     }
@@ -231,8 +218,9 @@ public class MetadataResourceTest extends CXFTestBase {
 
         InputStream stream = ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_DOC);
 
-        Response response = WebClient.create(endPoint + META_PATH + "/dc:creator").type("application/msword")
-                .accept("application/rdf+xml").put(copy(stream, 12000));
+        Response response =
+                WebClient.create(endPoint + META_PATH + "/dc:creator").type("application/msword")
+                        .accept("application/rdf+xml").put(copy(stream, 12000));
         Assert.assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
         String s = IOUtils.readStringFromStream((InputStream) response.getEntity());
         assertContains("<rdf:li>Maxim Valyanskiy</rdf:li>", s);
diff --git a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/RecursiveMetadataFilterTest.java b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/RecursiveMetadataFilterTest.java
index 11fcc77..2a2fa99 100644
--- a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/RecursiveMetadataFilterTest.java
+++ b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/RecursiveMetadataFilterTest.java
@@ -17,18 +17,11 @@
 
 package org.apache.tika.server.classic;
 
-import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
-import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
-import org.apache.cxf.jaxrs.client.WebClient;
-import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
-import org.apache.tika.metadata.Metadata;
-import org.apache.tika.metadata.serialization.JsonMetadataList;
-import org.apache.tika.server.core.CXFTestBase;
-import org.apache.tika.server.core.resource.RecursiveMetadataResource;
-import org.apache.tika.server.core.writer.MetadataListMessageBodyWriter;
-import org.junit.Test;
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
-import javax.ws.rs.core.Response;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
@@ -36,11 +29,19 @@ import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import javax.ws.rs.core.Response;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
+import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.junit.Test;
+
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.serialization.JsonMetadataList;
+import org.apache.tika.server.core.CXFTestBase;
+import org.apache.tika.server.core.resource.RecursiveMetadataResource;
+import org.apache.tika.server.core.writer.MetadataListMessageBodyWriter;
 
 public class RecursiveMetadataFilterTest extends CXFTestBase {
 
@@ -69,13 +70,12 @@ public class RecursiveMetadataFilterTest extends CXFTestBase {
 
     @Test
     public void testBasicFilter() throws Exception {
-        Response response = WebClient
-                .create(endPoint + META_PATH)
-                .accept("application/json")
+        Response response = WebClient.create(endPoint + META_PATH).accept("application/json")
                 .acceptEncoding("gzip")
                 .put(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
 
-        Reader reader = new InputStreamReader(new GzipCompressorInputStream((InputStream) response.getEntity()), UTF_8);
+        Reader reader = new InputStreamReader(
+                new GzipCompressorInputStream((InputStream) response.getEntity()), UTF_8);
         List<Metadata> metadataList = JsonMetadataList.fromJson(reader);
         assertEquals(5, metadataList.size());
 
@@ -92,8 +92,8 @@ public class RecursiveMetadataFilterTest extends CXFTestBase {
             }
             assertTrue(m.names().length >= 2);
             for (String n : m.names()) {
-                if (! expectedKeys.contains(n)) {
-                    fail("didn't expect "+n);
+                if (!expectedKeys.contains(n)) {
+                    fail("didn't expect " + n);
                 }
             }
         }
diff --git a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/RecursiveMetadataResourceTest.java b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/RecursiveMetadataResourceTest.java
index c704892..fc09f4d 100644
--- a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/RecursiveMetadataResourceTest.java
+++ b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/RecursiveMetadataResourceTest.java
@@ -18,28 +18,27 @@
 package org.apache.tika.server.classic;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.apache.tika.TikaTest.assertNotContained;
-import static org.apache.tika.TikaTest.debug;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.util.ArrayList;
 import java.util.List;
+import javax.ws.rs.core.MultivaluedHashMap;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
 
 import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.junit.Test;
+
 import org.apache.tika.TikaTest;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.OfficeOpenXMLExtended;
@@ -48,7 +47,6 @@ import org.apache.tika.metadata.serialization.JsonMetadataList;
 import org.apache.tika.server.core.CXFTestBase;
 import org.apache.tika.server.core.resource.RecursiveMetadataResource;
 import org.apache.tika.server.core.writer.MetadataListMessageBodyWriter;
-import org.junit.Test;
 
 public class RecursiveMetadataResourceTest extends CXFTestBase {
 
@@ -87,7 +85,8 @@ public class RecursiveMetadataResourceTest extends CXFTestBase {
                 .acceptEncoding("gzip")
                 .put(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
 
-        Reader reader = new InputStreamReader(new GzipCompressorInputStream((InputStream) response.getEntity()), UTF_8);
+        Reader reader = new InputStreamReader(
+                new GzipCompressorInputStream((InputStream) response.getEntity()), UTF_8);
         List<Metadata> metadataList = JsonMetadataList.fromJson(reader);
         assertEquals(12, metadataList.size());
         assertEquals("Microsoft Office Word",
@@ -102,7 +101,8 @@ public class RecursiveMetadataResourceTest extends CXFTestBase {
     public void testGZIn() throws Exception {
 
         Response response =
-                WebClient.create(endPoint + META_PATH).accept("application/json").encoding("gzip").put(gzip(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC)));
+                WebClient.create(endPoint + META_PATH).accept("application/json").encoding("gzip")
+                        .put(gzip(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC)));
 
         Reader reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
         List<Metadata> metadataList = JsonMetadataList.fromJson(reader);
@@ -147,7 +147,8 @@ public class RecursiveMetadataResourceTest extends CXFTestBase {
         map.addAll("meta_mymeta", "first", "second", "third");
 
         Response response =
-                WebClient.create(endPoint + META_PATH).headers(map).accept("application/json").put(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
+                WebClient.create(endPoint + META_PATH).headers(map).accept("application/json")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
 
         Reader reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
         List<Metadata> metadataList = JsonMetadataList.fromJson(reader);
@@ -171,7 +172,8 @@ public class RecursiveMetadataResourceTest extends CXFTestBase {
                 metadataList.get(0).get(TikaCoreProperties.CONTAINER_EXCEPTION));
         // Try again, this time with the password
         response = WebClient.create(endPoint + META_PATH).type("application/vnd.ms-excel")
-                .accept("application/json").header("Password", "password").put(ClassLoader.getSystemResourceAsStream(TikaResourceTest.TEST_PASSWORD_PROTECTED));
+                .accept("application/json").header("Password", "password").put(ClassLoader
+                        .getSystemResourceAsStream(TikaResourceTest.TEST_PASSWORD_PROTECTED));
 
         // Will work
         assertEquals(200, response.getStatus());
@@ -205,8 +207,9 @@ public class RecursiveMetadataResourceTest extends CXFTestBase {
         assertTrue(content.startsWith("<html xmlns=\"http://www.w3.org/1999/xhtml\">"));
 
         //unparseable
-        response = WebClient.create(endPoint + META_PATH + UNPARSEABLE_PATH).accept("application/json")
-                .put(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
+        response =
+                WebClient.create(endPoint + META_PATH + UNPARSEABLE_PATH).accept("application/json")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
         reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
         metadataList = JsonMetadataList.fromJson(reader);
         assertEquals(12, metadataList.size());
@@ -305,7 +308,8 @@ public class RecursiveMetadataResourceTest extends CXFTestBase {
                 ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
         webClient = WebClient.create(endPoint + META_PATH + FORM_PATH + IGNORE_PATH);
 
-        response = webClient.type("multipart/form-data").accept("application/json").query("handler", "ignore").post(attachmentPart);
+        response = webClient.type("multipart/form-data").accept("application/json")
+                .query("handler", "ignore").post(attachmentPart);
         reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
         metadataList = JsonMetadataList.fromJson(reader);
         assertEquals(12, metadataList.size());
diff --git a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaDetectorsTest.java b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaDetectorsTest.java
index dd5fd5c..703fd74 100644
--- a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaDetectorsTest.java
+++ b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaDetectorsTest.java
@@ -20,25 +20,23 @@ package org.apache.tika.server.classic;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import javax.ws.rs.core.Response;
-
 import java.io.InputStream;
 import java.util.List;
 import java.util.Map;
+import javax.ws.rs.core.Response;
 
-import com.fasterxml.jackson.core.JsonFactory;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.gagravarr.tika.OggDetector;
+import org.junit.Test;
+
 import org.apache.tika.detect.microsoft.POIFSContainerDetector;
 import org.apache.tika.detect.zip.DefaultZipContainerDetector;
 import org.apache.tika.mime.MimeTypes;
-
 import org.apache.tika.server.core.CXFTestBase;
 import org.apache.tika.server.core.resource.TikaDetectors;
-import org.gagravarr.tika.OggDetector;
-import org.junit.Test;
 
 public class TikaDetectorsTest extends CXFTestBase {
 
@@ -47,10 +45,8 @@ public class TikaDetectorsTest extends CXFTestBase {
     @Override
     protected void setUpResources(JAXRSServerFactoryBean sf) {
         sf.setResourceClasses(TikaDetectors.class);
-        sf.setResourceProvider(
-                TikaDetectors.class,
-                new SingletonResourceProvider(new TikaDetectors())
-        );
+        sf.setResourceProvider(TikaDetectors.class,
+                new SingletonResourceProvider(new TikaDetectors()));
     }
 
     @Override
@@ -59,11 +55,9 @@ public class TikaDetectorsTest extends CXFTestBase {
 
     @Test
     public void testGetPlainText() throws Exception {
-        Response response = WebClient
-                .create(endPoint + DETECTORS_PATH)
-                .type("text/plain")
-                .accept("text/plain")
-                .get();
+        Response response =
+                WebClient.create(endPoint + DETECTORS_PATH).type("text/plain").accept("text/plain")
+                        .get();
 
         String text = getStringFromInputStream((InputStream) response.getEntity());
         assertContains("org.apache.tika.detect.DefaultDetector (Composite Detector)", text);
@@ -75,11 +69,9 @@ public class TikaDetectorsTest extends CXFTestBase {
 
     @Test
     public void testGetHTML() throws Exception {
-        Response response = WebClient
-                .create(endPoint + DETECTORS_PATH)
-                .type("text/html")
-                .accept("text/html")
-                .get();
+        Response response =
+                WebClient.create(endPoint + DETECTORS_PATH).type("text/html").accept("text/html")
+                        .get();
 
         String text = getStringFromInputStream((InputStream) response.getEntity());
         assertContains("<h2>DefaultDetector</h2>", text);
@@ -98,15 +90,12 @@ public class TikaDetectorsTest extends CXFTestBase {
     @Test
     @SuppressWarnings("unchecked")
     public void testGetJSON() throws Exception {
-        Response response = WebClient
-                .create(endPoint + DETECTORS_PATH)
+        Response response = WebClient.create(endPoint + DETECTORS_PATH)
                 .type(javax.ws.rs.core.MediaType.APPLICATION_JSON)
-                .accept(javax.ws.rs.core.MediaType.APPLICATION_JSON)
-                .get();
+                .accept(javax.ws.rs.core.MediaType.APPLICATION_JSON).get();
 
         String jsonStr = getStringFromInputStream((InputStream) response.getEntity());
-        Map<String, Object> json =
-                new ObjectMapper().readerFor(Map.class).readValue(jsonStr);
+        Map<String, Object> json = new ObjectMapper().readerFor(Map.class).readValue(jsonStr);
 
         // Should have a nested structure
         assertTrue(json.containsKey("name"));
diff --git a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaMimeTypesTest.java b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaMimeTypesTest.java
index b727176..9150869 100644
--- a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaMimeTypesTest.java
+++ b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaMimeTypesTest.java
@@ -17,21 +17,22 @@
 package org.apache.tika.server.classic;
 
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
+import javax.ws.rs.core.Response;
+
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
-import org.apache.tika.server.core.CXFTestBase;
-import org.apache.tika.server.core.resource.TikaMimeTypes;
 import org.junit.Test;
 
-import javax.ws.rs.core.Response;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import org.apache.tika.server.core.CXFTestBase;
+import org.apache.tika.server.core.resource.TikaMimeTypes;
 
 public class TikaMimeTypesTest extends CXFTestBase {
 
@@ -41,10 +42,8 @@ public class TikaMimeTypesTest extends CXFTestBase {
     @Override
     protected void setUpResources(JAXRSServerFactoryBean sf) {
         sf.setResourceClasses(TikaMimeTypes.class);
-        sf.setResourceProvider(
-                TikaMimeTypes.class,
-                new SingletonResourceProvider(new TikaMimeTypes())
-        );
+        sf.setResourceProvider(TikaMimeTypes.class,
+                new SingletonResourceProvider(new TikaMimeTypes()));
     }
 
     @Override
@@ -54,14 +53,13 @@ public class TikaMimeTypesTest extends CXFTestBase {
     @Test
     @SuppressWarnings("unchecked")
     public void testGetJSON() throws Exception {
-        Response response = WebClient
-                .create(endPoint + MIMETYPES_PATH)
+        Response response = WebClient.create(endPoint + MIMETYPES_PATH)
                 .type(javax.ws.rs.core.MediaType.APPLICATION_JSON)
-                .accept(javax.ws.rs.core.MediaType.APPLICATION_JSON)
-                .get();
+                .accept(javax.ws.rs.core.MediaType.APPLICATION_JSON).get();
 
         String jsonStr = getStringFromInputStream((InputStream) response.getEntity());
-        Map<String, Map<String, Object>> json = new ObjectMapper().readerFor(Map.class).readValue(jsonStr);
+        Map<String, Map<String, Object>> json =
+                new ObjectMapper().readerFor(Map.class).readValue(jsonStr);
 
         assertEquals(true, json.containsKey("text/plain"));
         assertEquals(true, json.containsKey("application/xml"));
@@ -77,8 +75,9 @@ public class TikaMimeTypesTest extends CXFTestBase {
         assertEquals("image/x-ms-bmp", aliases.get(1));
 
         String whichParser = bmp.get("parser").toString();
-        assertTrue("Which parser", whichParser.equals("org.apache.tika.parser.ocr.TesseractOCRParser") ||
-                whichParser.equals("org.apache.tika.parser.image.ImageParser"));
+        assertTrue("Which parser",
+                whichParser.equals("org.apache.tika.parser.ocr.TesseractOCRParser") ||
+                        whichParser.equals("org.apache.tika.parser.image.ImageParser"));
 
         Map<String, Object> ogm = json.get("video/x-ogm");
         assertEquals("video/ogg", ogm.get("supertype"));
diff --git a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaParsersTest.java b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaParsersTest.java
index 771cca6..968ff86 100644
--- a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaParsersTest.java
+++ b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaParsersTest.java
@@ -20,22 +20,22 @@ package org.apache.tika.server.classic;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import javax.ws.rs.core.Response;
-
 import java.io.InputStream;
 import java.util.List;
 import java.util.Map;
+import javax.ws.rs.core.Response;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.gagravarr.tika.OpusParser;
+import org.junit.Test;
+
 import org.apache.tika.parser.microsoft.ooxml.OOXMLParser;
 import org.apache.tika.parser.pkg.PackageParser;
 import org.apache.tika.server.core.CXFTestBase;
 import org.apache.tika.server.core.resource.TikaParsers;
-import org.gagravarr.tika.OpusParser;
-import org.junit.Test;
 
 public class TikaParsersTest extends CXFTestBase {
 
@@ -45,10 +45,7 @@ public class TikaParsersTest extends CXFTestBase {
     @Override
     protected void setUpResources(JAXRSServerFactoryBean sf) {
         sf.setResourceClasses(TikaParsers.class);
-        sf.setResourceProvider(
-                TikaParsers.class,
-                new SingletonResourceProvider(new TikaParsers())
-        );
+        sf.setResourceProvider(TikaParsers.class, new SingletonResourceProvider(new TikaParsers()));
     }
 
     @Override
@@ -67,11 +64,8 @@ public class TikaParsersTest extends CXFTestBase {
     @Test
     public void testGetPlainText() throws Exception {
         for (boolean details : new boolean[]{false, true}) {
-            Response response = WebClient
-                    .create(endPoint + getPath(details))
-                    .type("text/plain")
-                    .accept("text/plain")
-                    .get();
+            Response response = WebClient.create(endPoint + getPath(details)).type("text/plain")
+                    .accept("text/plain").get();
 
             String text = getStringFromInputStream((InputStream) response.getEntity());
             assertContains("org.apache.tika.parser.DefaultParser (Composite Parser)", text);
@@ -96,11 +90,8 @@ public class TikaParsersTest extends CXFTestBase {
     @Test
     public void testGetHTML() throws Exception {
         for (boolean details : new boolean[]{false, true}) {
-            Response response = WebClient
-                    .create(endPoint + getPath(details))
-                    .type("text/html")
-                    .accept("text/html")
-                    .get();
+            Response response = WebClient.create(endPoint + getPath(details)).type("text/html")
+                    .accept("text/html").get();
 
             String text = getStringFromInputStream((InputStream) response.getEntity());
             assertContains("<h3>DefaultParser</h3>", text);
@@ -132,11 +123,9 @@ public class TikaParsersTest extends CXFTestBase {
     @SuppressWarnings("unchecked")
     public void testGetJSON() throws Exception {
         for (boolean details : new boolean[]{false, true}) {
-            Response response = WebClient
-                    .create(endPoint + getPath(details))
+            Response response = WebClient.create(endPoint + getPath(details))
                     .type(javax.ws.rs.core.MediaType.APPLICATION_JSON)
-                    .accept(javax.ws.rs.core.MediaType.APPLICATION_JSON)
-                    .get();
+                    .accept(javax.ws.rs.core.MediaType.APPLICATION_JSON).get();
 
             String jsonStr = getStringFromInputStream((InputStream) response.getEntity());
             Map<String, Map<String, Object>> json =
@@ -150,7 +139,7 @@ public class TikaParsersTest extends CXFTestBase {
             assertEquals(Boolean.TRUE, json.get("composite"));
 
             // At least 20 child parsers which aren't composite, except for CompositeExternalParser
-            List<Object> children = (List)json.get("children");
+            List<Object> children = (List) json.get("children");
             assertTrue(children.size() >= 2);
             boolean hasOpus = false, hasOOXML = false, hasZip = false;
             int nonComposite = 0;
@@ -168,14 +157,16 @@ public class TikaParsersTest extends CXFTestBase {
                 for (Object grandChildO : grandChildrenArr) {
                     Map<String, Object> grandChildren = (Map<String, Object>) grandChildO;
 
-                    if (grandChildren.get("composite") == Boolean.FALSE)
+                    if (grandChildren.get("composite") == Boolean.FALSE) {
                         nonComposite++;
-                    else
+                    } else {
                         composite++;
+                    }
 
                     // Will only have mime types if requested
-                    if (grandChildren.get("composite") == Boolean.FALSE)
+                    if (grandChildren.get("composite") == Boolean.FALSE) {
                         assertEquals(details, grandChildren.containsKey("supportedTypes"));
+                    }
 
                     String name = (String) grandChildren.get("name");
                     if (OpusParser.class.getName().equals(name)) {
@@ -193,7 +184,8 @@ public class TikaParsersTest extends CXFTestBase {
             assertEquals(true, hasOOXML);
             assertEquals(true, hasZip);
             assertTrue(nonComposite > 20);
-            assertTrue(composite == 0 || composite == 1); // if CompositeExternalParser is available it will be 1
+            assertTrue(composite == 0 ||
+                    composite == 1); // if CompositeExternalParser is available it will be 1
         }
     }
 }
diff --git a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaResourceTest.java b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaResourceTest.java
index 7104484..4dc3b21 100644
--- a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaResourceTest.java
+++ b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/TikaResourceTest.java
@@ -17,6 +17,19 @@
 
 package org.apache.tika.server.classic;
 
+import static org.apache.cxf.helpers.HttpHeaderHelper.CONTENT_ENCODING;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import javax.ws.rs.ProcessingException;
+import javax.ws.rs.core.Response;
+
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
 import org.apache.cxf.attachment.AttachmentUtil;
@@ -24,7 +37,8 @@ import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
-import org.apache.tika.parser.ocr.TesseractOCRConfig;
+import org.junit.Test;
+
 import org.apache.tika.parser.ocr.TesseractOCRParser;
 import org.apache.tika.server.classic.config.PDFServerConfig;
 import org.apache.tika.server.classic.config.TesseractServerConfig;
@@ -33,22 +47,6 @@ import org.apache.tika.server.core.TikaServerParseExceptionMapper;
 import org.apache.tika.server.core.config.DocumentSelectorConfig;
 import org.apache.tika.server.core.config.PasswordProviderConfig;
 import org.apache.tika.server.core.resource.TikaResource;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import javax.ws.rs.ProcessingException;
-import javax.ws.rs.core.Response;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import static org.apache.cxf.helpers.HttpHeaderHelper.CONTENT_ENCODING;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 public class TikaResourceTest extends CXFTestBase {
     public static final String TEST_DOC = "test-documents/test.doc";
@@ -82,32 +80,27 @@ public class TikaResourceTest extends CXFTestBase {
 
     @Test
     public void testHelloWorld() throws Exception {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("text/plain").accept("text/plain").get();
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH).type("text/plain").accept("text/plain")
+                        .get();
         assertEquals(TikaResource.GREETING,
                 getStringFromInputStream((InputStream) response.getEntity()));
     }
 
     @Test
     public void testSimpleWord() throws Exception {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/msword")
-                .accept("text/plain")
-                .put(ClassLoader.getSystemResourceAsStream(TEST_DOC));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        Response response = WebClient.create(endPoint + TIKA_PATH).type("application/msword")
+                .accept("text/plain").put(ClassLoader.getSystemResourceAsStream(TEST_DOC));
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(responseMsg.contains("test"));
     }
 
     @Test
     public void testWordGzipIn() throws Exception {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/msword")
-                .accept("text/plain")
-                .encoding("gzip")
+        Response response = WebClient.create(endPoint + TIKA_PATH).type("application/msword")
+                .accept("text/plain").encoding("gzip")
                 .put(gzip(ClassLoader.getSystemResourceAsStream(TEST_DOC)));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(responseMsg.contains("test"));
     }
 
@@ -115,15 +108,13 @@ public class TikaResourceTest extends CXFTestBase {
     public void testLongGzipOut() throws Exception {
         //if the output is long enough, jax-rs will compress it, otherwise it won't
         //this output is long enough, and should be compressed
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .accept("text/plain")
-                .acceptEncoding("gzip")
-                .put(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH).accept("text/plain").acceptEncoding("gzip")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
         assertTrue(response.getHeaders().containsKey(CONTENT_ENCODING));
         assertEquals("gzip", response.getHeaderString(CONTENT_ENCODING));
         String responseMsg = getStringFromInputStream(
-                new GzipCompressorInputStream((InputStream) response
-                        .getEntity()));
+                new GzipCompressorInputStream((InputStream) response.getEntity()));
         assertTrue(responseMsg.contains("Course of human"));
     }
 
@@ -131,26 +122,21 @@ public class TikaResourceTest extends CXFTestBase {
     public void testShortGzipOut() throws Exception {
         //if the output is long enough, jax-rs will compress it, otherwise it won't
         //this output is short enough, and should not be compressed
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .accept("text/plain")
-                .acceptEncoding("gzip")
-                .put(ClassLoader.getSystemResourceAsStream(TEST_DOC));
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH).accept("text/plain").acceptEncoding("gzip")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_DOC));
         assertFalse(response.getHeaders().containsKey(CONTENT_ENCODING));
 
-        String responseMsg = getStringFromInputStream(
-                (InputStream) response
-                        .getEntity());
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(responseMsg.contains("test"));
     }
 
     @Test
     public void testTextMain() throws Exception {
         //boilerpipe
-        Response response = WebClient.create(endPoint + TIKA_PATH + "/main")
-                .accept("text/plain")
+        Response response = WebClient.create(endPoint + TIKA_PATH + "/main").accept("text/plain")
                 .put(ClassLoader.getSystemResourceAsStream("test-documents/testHTML.html"));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(responseMsg.contains("Title : Test Indexation Html"));
         assertFalse(responseMsg.contains("Indexation du fichier"));
     }
@@ -158,26 +144,22 @@ public class TikaResourceTest extends CXFTestBase {
     @Test
     public void testTextMainMultipart() throws Exception {
         //boilerpipe
-        Attachment attachmentPart =
-                new Attachment("myhtml", "text/html", ClassLoader.getSystemResourceAsStream("test-documents/testHTML.html"));
+        Attachment attachmentPart = new Attachment("myhtml", "text/html",
+                ClassLoader.getSystemResourceAsStream("test-documents/testHTML.html"));
 
 
-        Response response = WebClient.create(endPoint + TIKA_PATH+"/form/main")
-                .type("multipart/form-data")
-                .accept("text/plain")
-                .post(attachmentPart);
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH + "/form/main").type("multipart/form-data")
+                        .accept("text/plain").post(attachmentPart);
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(responseMsg.contains("Title : Test Indexation Html"));
         assertFalse(responseMsg.contains("Indexation du fichier"));
     }
 
 
-
     @Test
     public void testPasswordXLS() throws Exception {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/vnd.ms-excel")
+        Response response = WebClient.create(endPoint + TIKA_PATH).type("application/vnd.ms-excel")
                 .accept("text/plain")
                 .put(ClassLoader.getSystemResourceAsStream("test-documents/password.xls"));
 
@@ -186,23 +168,21 @@ public class TikaResourceTest extends CXFTestBase {
 
     @Test
     public void testSimpleWordHTML() throws Exception {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/msword")
-                .accept("text/html")
-                .put(ClassLoader.getSystemResourceAsStream(TEST_DOC));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        Response response = WebClient.create(endPoint + TIKA_PATH).type("application/msword")
+                .accept("text/html").put(ClassLoader.getSystemResourceAsStream(TEST_DOC));
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(responseMsg.contains("test"));
-        assertContains("<meta name=\"X-TIKA:digest:MD5\" content=\"f8be45c34e8919eedba48cc8d207fbf0\"/>",
+        assertContains(
+                "<meta name=\"X-TIKA:digest:MD5\" content=\"f8be45c34e8919eedba48cc8d207fbf0\"/>",
                 responseMsg);
-        assertContains("<meta name=\"X-TIKA:digest:SHA1\" content=\"N4EBCE7EGTIGZWETEJ6WD3W4KN32TLPG\"/>",
+        assertContains(
+                "<meta name=\"X-TIKA:digest:SHA1\" content=\"N4EBCE7EGTIGZWETEJ6WD3W4KN32TLPG\"/>",
                 responseMsg);
     }
 
     @Test
     public void testPasswordXLSHTML() throws Exception {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/vnd.ms-excel")
+        Response response = WebClient.create(endPoint + TIKA_PATH).type("application/vnd.ms-excel")
                 .accept("text/html")
                 .put(ClassLoader.getSystemResourceAsStream("test-documents/password.xls"));
 
@@ -211,19 +191,16 @@ public class TikaResourceTest extends CXFTestBase {
 
     @Test
     public void testSimpleWordXML() throws Exception {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/msword")
-                .accept("text/xml")
-                .put(ClassLoader.getSystemResourceAsStream(TEST_DOC));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/msword").accept("text/xml")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_DOC));
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(responseMsg.contains("test"));
     }
 
     @Test
     public void testPasswordXLSXML() throws Exception {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/vnd.ms-excel")
+        Response response = WebClient.create(endPoint + TIKA_PATH).type("application/vnd.ms-excel")
                 .accept("text/xml")
                 .put(ClassLoader.getSystemResourceAsStream("test-documents/password.xls"));
 
@@ -233,16 +210,15 @@ public class TikaResourceTest extends CXFTestBase {
     @Test
     public void testSimpleWordMultipartXML() throws Exception {
         ClassLoader.getSystemResourceAsStream(TEST_DOC);
-        Attachment attachmentPart =
-                new Attachment("myworddoc", "application/msword", ClassLoader.getSystemResourceAsStream(TEST_DOC));
+        Attachment attachmentPart = new Attachment("myworddoc", "application/msword",
+                ClassLoader.getSystemResourceAsStream(TEST_DOC));
         WebClient webClient = WebClient.create(endPoint + TIKA_PATH + "/form");
-        Response response = webClient.type("multipart/form-data")
-                .accept("text/xml")
-                .post(attachmentPart);
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        Response response =
+                webClient.type("multipart/form-data").accept("text/xml").post(attachmentPart);
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(responseMsg.contains("test"));
-        assertContains("<meta name=\"X-TIKA:digest:MD5\" content=\"f8be45c34e8919eedba48cc8d207fbf0\"/>",
+        assertContains(
+                "<meta name=\"X-TIKA:digest:MD5\" content=\"f8be45c34e8919eedba48cc8d207fbf0\"/>",
                 responseMsg);
 
     }
@@ -256,21 +232,18 @@ public class TikaResourceTest extends CXFTestBase {
     @Test
     public void testEmbedded() throws Exception {
         //first try text
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .accept("text/plain")
+        Response response = WebClient.create(endPoint + TIKA_PATH).accept("text/plain")
                 .put(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(responseMsg.contains("Course of human events"));
 
         //now go for xml -- different call than text
-        response = WebClient.create(endPoint + TIKA_PATH)
-                .accept("text/xml")
+        response = WebClient.create(endPoint + TIKA_PATH).accept("text/xml")
                 .put(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
-        responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(responseMsg.contains("Course of human events"));
-        assertContains("<meta name=\"X-TIKA:digest:MD5\" content=\"59f626e09a8c16ab6dbc2800c685f772\"/>",
+        assertContains(
+                "<meta name=\"X-TIKA:digest:MD5\" content=\"59f626e09a8c16ab6dbc2800c685f772\"/>",
                 responseMsg);
 
     }
@@ -278,123 +251,113 @@ public class TikaResourceTest extends CXFTestBase {
     //TIKA-1845
     @Test
     public void testWMFInRTF() throws Exception {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/rtf")
-                .accept("text/plain")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testRTF_npeFromWMFInTikaServer.rtf"));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/rtf").accept("text/plain")
+                        .put(ClassLoader.getSystemResourceAsStream(
+                                "test-documents/testRTF_npeFromWMFInTikaServer.rtf"));
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(responseMsg.contains("Example text"));
     }
 
     //TIKA-2638 and TIKA-2816
     @Test
     public void testOCRLanguageConfig() throws Exception {
-        if (! new TesseractOCRParser().hasTesseract()) {
+        if (!new TesseractOCRParser().hasTesseract()) {
             return;
         }
 
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .accept("text/plain")
-                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX+"OcrStrategy", "ocr_only")
-                .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX+"Language", "eng+fra")
-                .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX+"MinFileSizeToOcr", "10")
-                .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX+"MaxFileSizeToOcr", "1000000000")
+        Response response = WebClient.create(endPoint + TIKA_PATH).accept("text/plain")
+                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX + "OcrStrategy", "ocr_only")
+                .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX + "Language", "eng+fra")
+                .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX + "MinFileSizeToOcr", "10")
+                .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX + "MaxFileSizeToOcr",
+                        "1000000000")
                 .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertContains("Happy New Year 2003!", responseMsg);
     }
 
     //TIKA-2290
     @Test
     public void testPDFOCRConfig() throws Exception {
-        if (! new TesseractOCRParser().hasTesseract()) {
+        if (!new TesseractOCRParser().hasTesseract()) {
             return;
         }
 
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX+"OcrStrategy", "no_ocr")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX + "OcrStrategy", "no_ocr")
+                        .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
 
         assertTrue(responseMsg.trim().equals(""));
 
-        response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX+"skipOcr", "true")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
-        responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX + "skipOcr", "true")
+                        .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
+        responseMsg = getStringFromInputStream((InputStream) response.getEntity());
 
         assertTrue(responseMsg.trim().equals(""));
 
 
-        response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX+"OcrStrategy", "ocr_only")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
-        responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX + "OcrStrategy",
+                                "ocr_only")
+                        .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
+        responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertContains("Happy New Year 2003!", responseMsg);
 
         //now try a bad value
-        response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX + "OcrStrategy", "non-sense-value")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
+        response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX + "OcrStrategy",
+                                "non-sense-value")
+                        .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
         assertEquals(400, response.getStatus());
     }
 
     // TIKA-3320
     @Test
     public void testPDFLowerCaseOCRConfig() throws Exception {
-        if (! new TesseractOCRParser().hasTesseract()) {
+        if (!new TesseractOCRParser().hasTesseract()) {
             return;
         }
 
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX.toLowerCase(Locale.ROOT)+"ocrstrategy", "no_ocr")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX.toLowerCase(Locale.ROOT) +
+                                "ocrstrategy", "no_ocr")
+                        .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
 
         assertTrue(responseMsg.trim().equals(""));
 
-        response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX.toLowerCase(Locale.ROOT)+"skipocr", "true")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
-        responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX
+                                .toLowerCase(Locale.ROOT) + "skipocr", "true")
+                        .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
+        responseMsg = getStringFromInputStream((InputStream) response.getEntity());
 
         assertTrue(responseMsg.trim().equals(""));
 
 
-        response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX.toLowerCase(Locale.ROOT)+"ocrstrategy", "ocr_only")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
-        responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX.toLowerCase(Locale.ROOT) +
+                                "ocrstrategy", "ocr_only")
+                        .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
+        responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertContains("Happy New Year 2003!", responseMsg);
 
         //now try a bad value
-        response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX.toLowerCase(Locale.ROOT) + "ocrstrategy", "non-sense-value")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
+        response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX.toLowerCase(Locale.ROOT) +
+                                "ocrstrategy", "non-sense-value")
+                        .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
         assertEquals(400, response.getStatus());
     }
 
@@ -402,35 +365,36 @@ public class TikaResourceTest extends CXFTestBase {
     @Test
     public void testPDFConfig() throws Exception {
 
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testPDFTwoTextBoxes.pdf"));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .put(ClassLoader.getSystemResourceAsStream(
+                                "test-documents/testPDFTwoTextBoxes.pdf"));
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         responseMsg = responseMsg.replaceAll("[\r\n ]+", " ").trim();
-        assertEquals("Left column line 1 Right column line 1 Left colu mn line 2 Right column line 2",
+        assertEquals(
+                "Left column line 1 Right column line 1 Left colu mn line 2 Right column line 2",
                 responseMsg);
 
-        response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX+"sortByPosition", "false")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testPDFTwoTextBoxes.pdf"));
-        responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX + "sortByPosition",
+                                "false").put(ClassLoader
+                        .getSystemResourceAsStream("test-documents/testPDFTwoTextBoxes.pdf"));
+        responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         responseMsg = responseMsg.replaceAll("[\r\n ]+", " ").trim();
-        assertEquals("Left column line 1 Left column line 2 Right column line 1 Right column line 2", responseMsg);
+        assertEquals(
+                "Left column line 1 Left column line 2 Right column line 1 Right column line 2",
+                responseMsg);
 
         //make sure that default reverts to initial config option
-        response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testPDFTwoTextBoxes.pdf"));
-        responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .put(ClassLoader.getSystemResourceAsStream(
+                                "test-documents/testPDFTwoTextBoxes.pdf"));
+        responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         responseMsg = responseMsg.replaceAll("[\r\n ]+", " ").trim();
-        assertEquals("Left column line 1 Right column line 1 Left colu mn line 2 Right column line 2",
+        assertEquals(
+                "Left column line 1 Right column line 1 Left colu mn line 2 Right column line 2",
                 responseMsg);
 
     }
@@ -439,34 +403,26 @@ public class TikaResourceTest extends CXFTestBase {
     @Test
     public void testExtractTextAcceptPlainText() throws Exception {
         //TIKA-2384
-        Attachment attachmentPart = new Attachment(
-                "my-docx-file",
+        Attachment attachmentPart = new Attachment("my-docx-file",
                 "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
-                ClassLoader.getSystemResourceAsStream("test-documents/2pic.docx")
-        );
+                ClassLoader.getSystemResourceAsStream("test-documents/2pic.docx"));
 
-        Response response = WebClient.create(endPoint + TIKA_PATH + "/form")
-                .type("multipart/form-data")
-                .accept("text/plain")
-                .post(attachmentPart);
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH + "/form").type("multipart/form-data")
+                        .accept("text/plain").post(attachmentPart);
 
         String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(responseMsg.contains("P1040893.JPG"));
-        assertNotFound(
-                STREAM_CLOSED_FAULT,
-                responseMsg
-        );
+        assertNotFound(STREAM_CLOSED_FAULT, responseMsg);
     }
 
     @Test
     public void testDataIntegrityCheck() throws Exception {
         Response response = null;
         try {
-            response = WebClient.create(endPoint + TIKA_PATH)
-                    .type("application/pdf")
+            response = WebClient.create(endPoint + TIKA_PATH).type("application/pdf")
                     .accept("text/plain")
-                    .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX +
-                                    "tesseractPath",
+                    .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX + "tesseractPath",
                             "C://tmp//hello.bat\u0000")
                     .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
             assertEquals(400, response.getStatus());
@@ -476,87 +432,78 @@ public class TikaResourceTest extends CXFTestBase {
         }
 
         try {
-            response = WebClient.create(endPoint + TIKA_PATH)
-                    .type("application/pdf")
+            response = WebClient.create(endPoint + TIKA_PATH).type("application/pdf")
                     .accept("text/plain")
-                    .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX +
-                                    "tesseractPath",
+                    .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX + "tesseractPath",
                             "bogus path")
                     .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
             assertEquals(400, response.getStatus());
         } catch (ProcessingException e) {
-
+            //swallow
         }
     }
 
     @Test
     public void testTrustedMethodPrevention() {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX +
-                                "trustedPageSeparator",
-                        "\u0020")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .header(TesseractServerConfig.X_TIKA_OCR_HEADER_PREFIX +
+                                "trustedPageSeparator", "\u0020")
+                        .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
         assertEquals(400, response.getStatus());
 
     }
 
     @Test
     public void testFloatInHeader() {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("application/pdf")
-                .accept("text/plain")
-                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX +
-                                "averageCharTolerance",
-                        "2.0")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH).type("application/pdf").accept("text/plain")
+                        .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX + "averageCharTolerance",
+                                "2.0")
+                        .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
         assertEquals(200, response.getStatus());
 
     }
 
 
-
     @Test
     public void testUnicodePasswordProtectedSpaces() throws Exception {
         //TIKA-2858
         final String password = "    ";
-        final String encoded = new Base64().encodeAsString(password.getBytes(StandardCharsets.UTF_8));
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .accept("text/plain")
-                .header(PasswordProviderConfig.PASSWORD_BASE64_UTF8, encoded)
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testPassword4Spaces.pdf"));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        final String encoded =
+                new Base64().encodeAsString(password.getBytes(StandardCharsets.UTF_8));
+        Response response = WebClient.create(endPoint + TIKA_PATH).accept("text/plain")
+                .header(PasswordProviderConfig.PASSWORD_BASE64_UTF8, encoded).put(ClassLoader
+                        .getSystemResourceAsStream("test-documents/testPassword4Spaces.pdf"));
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertContains("Just some text.", responseMsg);
     }
 
     @Test
     public void testUnicodePasswordProtectedUnicode() throws Exception {
         //TIKA-2858
-        final String password = "  ! < > \" \\ \u20AC \u0153 \u00A4 \u0031\u2044\u0034 \u0031\u2044\u0032 \uD841\uDF0E \uD867\uDD98 \uD83D\uDE00  ";
-        final String encoded = new Base64().encodeAsString(password.getBytes(StandardCharsets.UTF_8));
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .accept("text/plain")
-                .header(PasswordProviderConfig.PASSWORD_BASE64_UTF8, encoded)
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/testUnicodePassword.pdf"));
-        String responseMsg = getStringFromInputStream((InputStream) response
-                .getEntity());
+        final String password =
+                "  ! < > \" \\ \u20AC \u0153 \u00A4 \u0031\u2044\u0034 " +
+                        "\u0031\u2044\u0032 \uD841\uDF0E \uD867\uDD98 \uD83D\uDE00  ";
+        final String encoded =
+                new Base64().encodeAsString(password.getBytes(StandardCharsets.UTF_8));
+        Response response = WebClient.create(endPoint + TIKA_PATH).accept("text/plain")
+                .header(PasswordProviderConfig.PASSWORD_BASE64_UTF8, encoded).put(ClassLoader
+                        .getSystemResourceAsStream("test-documents/testUnicodePassword.pdf"));
+        String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertContains("Just some text.", responseMsg);
     }
 
     // TIKA-3227
     @Test
     public void testSkipEmbedded() throws Exception {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .accept("text/plain")
+        Response response = WebClient.create(endPoint + TIKA_PATH).accept("text/plain")
                 .header(DocumentSelectorConfig.X_TIKA_SKIP_EMBEDDED_HEADER, "false")
                 .put(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
         String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
         assertContains("embed4.txt", responseMsg);
 
-        response = WebClient.create(endPoint + TIKA_PATH)
-                .accept("text/plain")
+        response = WebClient.create(endPoint + TIKA_PATH).accept("text/plain")
                 .header(DocumentSelectorConfig.X_TIKA_SKIP_EMBEDDED_HEADER, "true")
                 .put(ClassLoader.getSystemResourceAsStream(TEST_RECURSIVE_DOC));
         responseMsg = getStringFromInputStream((InputStream) response.getEntity());
diff --git a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/UnpackerResourceTest.java b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/UnpackerResourceTest.java
index dc9d638..d1bc0eb 100644
--- a/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/UnpackerResourceTest.java
+++ b/tika-server/tika-server-classic/src/test/java/org/apache/tika/server/classic/UnpackerResourceTest.java
@@ -22,27 +22,26 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import javax.ws.rs.core.Response;
-
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import javax.ws.rs.core.Response;
 
 import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
-import org.apache.tika.parser.ocr.TesseractOCRConfig;
+import org.junit.Assume;
+import org.junit.Test;
+
 import org.apache.tika.parser.ocr.TesseractOCRParser;
 import org.apache.tika.server.classic.config.PDFServerConfig;
 import org.apache.tika.server.core.CXFTestBase;
 import org.apache.tika.server.core.TikaServerParseExceptionMapper;
-import org.apache.tika.server.core.writer.TarWriter;
 import org.apache.tika.server.core.resource.UnpackerResource;
+import org.apache.tika.server.core.writer.TarWriter;
 import org.apache.tika.server.core.writer.ZipWriter;
-import org.junit.Assume;
-import org.junit.Test;
 
 public class UnpackerResourceTest extends CXFTestBase {
     private static final String BASE_PATH = "/unpack";
@@ -91,9 +90,10 @@ public class UnpackerResourceTest extends CXFTestBase {
 
     @Test
     public void testDocWAV() throws Exception {
-        Response response = WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH)
-                .type(APPLICATION_MSWORD).accept("application/zip")
-                .put(ClassLoader.getSystemResourceAsStream(TEST_DOC_WAV));
+        Response response =
+                WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH).type(APPLICATION_MSWORD)
+                        .accept("application/zip")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_DOC_WAV));
 
         Map<String, String> data = readZipArchive((InputStream) response.getEntity());
         assertEquals(WAV1_MD5, data.get(WAV1_NAME));
@@ -103,9 +103,10 @@ public class UnpackerResourceTest extends CXFTestBase {
 
     @Test
     public void testDocWAVText() throws Exception {
-        Response response = WebClient.create(CXFTestBase.endPoint + ALL_PATH)
-                .type(APPLICATION_MSWORD).accept("application/zip")
-                .put(ClassLoader.getSystemResourceAsStream(TEST_DOC_WAV));
+        Response response =
+                WebClient.create(CXFTestBase.endPoint + ALL_PATH).type(APPLICATION_MSWORD)
+                        .accept("application/zip")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_DOC_WAV));
 
         Map<String, String> data = readZipArchive((InputStream) response.getEntity());
         assertEquals(WAV1_MD5, data.get(WAV1_NAME));
@@ -115,9 +116,10 @@ public class UnpackerResourceTest extends CXFTestBase {
 
     @Test
     public void testDocPicture() throws Exception {
-        Response response = WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH)
-                .type(APPLICATION_MSWORD).accept("application/zip")
-                .put(ClassLoader.getSystemResourceAsStream(TEST_DOC_WAV));
+        Response response =
+                WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH).type(APPLICATION_MSWORD)
+                        .accept("application/zip")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_DOC_WAV));
 
         Map<String, String> data = readZipArchive((InputStream) response.getEntity());
 
@@ -126,9 +128,10 @@ public class UnpackerResourceTest extends CXFTestBase {
 
     @Test
     public void testDocPictureNoOle() throws Exception {
-        Response response = WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH)
-                .type(APPLICATION_MSWORD).accept("application/zip")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/2pic.doc"));
+        Response response =
+                WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH).type(APPLICATION_MSWORD)
+                        .accept("application/zip")
+                        .put(ClassLoader.getSystemResourceAsStream("test-documents/2pic.doc"));
 
         Map<String, String> data = readZipArchive((InputStream) response.getEntity());
         assertEquals(JPG2_MD5, data.get(JPG2_NAME));
@@ -136,9 +139,9 @@ public class UnpackerResourceTest extends CXFTestBase {
 
     @Test
     public void testImageDOCX() throws Exception {
-        Response response = WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH)
-                .accept("application/zip").put(
-                        ClassLoader.getSystemResourceAsStream(TEST_DOCX_IMAGE));
+        Response response =
+                WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH).accept("application/zip")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_DOCX_IMAGE));
 
         Map<String, String> data = readZipArchive((InputStream) response.getEntity());
         assertEquals(DOCX_IMAGE1_MD5, data.get(DOCX_IMAGE1_NAME));
@@ -147,10 +150,9 @@ public class UnpackerResourceTest extends CXFTestBase {
 
     @Test
     public void test204() throws Exception {
-        Response response = WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH)
-                .type("xxx/xxx")
-                .accept("*/*")
-                .put(ClassLoader.getSystemResourceAsStream(TEST_DOC_WAV));
+        Response response =
+                WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH).type("xxx/xxx").accept("*/*")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_DOC_WAV));
 
         assertEquals(204, response.getStatus());
     }
@@ -158,9 +160,9 @@ public class UnpackerResourceTest extends CXFTestBase {
     @Test
     public void testExeDOCX() throws Exception {
         String TEST_DOCX_EXE = "test-documents/2exe.docx";
-        Response response = WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH)
-                .accept("application/zip")
-                .put(ClassLoader.getSystemResourceAsStream(TEST_DOCX_EXE));
+        Response response =
+                WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH).accept("application/zip")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_DOCX_EXE));
 
         Map<String, String> data = readZipArchive((InputStream) response.getEntity());
 
@@ -170,9 +172,9 @@ public class UnpackerResourceTest extends CXFTestBase {
 
     @Test
     public void testImageXSL() throws Exception {
-        Response response = WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH)
-                .accept("application/zip")
-                .put(ClassLoader.getSystemResourceAsStream("test-documents/pic.xls"));
+        Response response =
+                WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH).accept("application/zip")
+                        .put(ClassLoader.getSystemResourceAsStream("test-documents/pic.xls"));
 
         Map<String, String> data = readZipArchive((InputStream) response.getEntity());
         assertEquals(XSL_IMAGE1_MD5, data.get("0.jpg"));
@@ -181,11 +183,13 @@ public class UnpackerResourceTest extends CXFTestBase {
 
     @Test
     public void testTarDocPicture() throws Exception {
-        Response response = WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH)
-                .type(APPLICATION_MSWORD).accept("application/x-tar")
-                .put(ClassLoader.getSystemResourceAsStream(TEST_DOC_WAV));
+        Response response =
+                WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH).type(APPLICATION_MSWORD)
+                        .accept("application/x-tar")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_DOC_WAV));
 
-        Map<String, String> data = readArchiveFromStream(new TarArchiveInputStream((InputStream) response.getEntity()));
+        Map<String, String> data = readArchiveFromStream(
+                new TarArchiveInputStream((InputStream) response.getEntity()));
 
         assertEquals(JPG_MD5, data.get(JPG_NAME));
     }
@@ -193,8 +197,7 @@ public class UnpackerResourceTest extends CXFTestBase {
     @Test
     public void testText() throws Exception {
         Response response = WebClient.create(CXFTestBase.endPoint + ALL_PATH)
-                .header(CONTENT_TYPE, APPLICATION_XML)
-                .accept("application/zip")
+                .header(CONTENT_TYPE, APPLICATION_XML).accept("application/zip")
                 .put(ClassLoader.getSystemResourceAsStream("test-documents/test.doc"));
 
         String responseMsg = readArchiveText((InputStream) response.getEntity());
@@ -205,28 +208,28 @@ public class UnpackerResourceTest extends CXFTestBase {
     @Test
     public void testPDFImages() throws Exception {
         Response response = WebClient.create(CXFTestBase.endPoint + UNPACKER_PATH)
-                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX+"ExtractInlineImages", "true")
+                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX + "ExtractInlineImages", "true")
                 .accept("application/zip")
                 .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
-        Map<String, String> results = readZipArchive((InputStream)response.getEntity());
+        Map<String, String> results = readZipArchive((InputStream) response.getEntity());
         assertTrue(results.containsKey("image0.png"));
         String md5 = results.get("image0.png");
         assertTrue(
                 //pre Java 11
                 md5.equals("7c2f14acbb737672a1245f4ceb50622a") ||
-                //Java 11 -- underlying image libraries generate a diff image in Java 11
-                md5.equals("58b8269d1a584b7e8c1adcb936123923"));
+                        //Java 11 -- underlying image libraries generate a diff image in Java 11
+                        md5.equals("58b8269d1a584b7e8c1adcb936123923"));
     }
 
     @Test
     public void testPDFRenderOCR() throws Exception {
-        Assume.assumeTrue( new TesseractOCRParser().hasTesseract());
+        Assume.assumeTrue(new TesseractOCRParser().hasTesseract());
 
         Response response = WebClient.create(CXFTestBase.endPoint + ALL_PATH)
-                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX+"ocrStrategy", "ocr_only")
+                .header(PDFServerConfig.X_TIKA_PDF_HEADER_PREFIX + "ocrStrategy", "ocr_only")
                 .accept("application/zip")
                 .put(ClassLoader.getSystemResourceAsStream("test-documents/testOCR.pdf"));
-        String txt = readArchiveText((InputStream)response.getEntity());
+        String txt = readArchiveText((InputStream) response.getEntity());
         CXFTestBase.assertContains("Happy New Year", txt);
     }
 }
diff --git a/tika-server/tika-server-classic/src/test/resources/config/TIKA-3137-include.xml b/tika-server/tika-server-classic/src/test/resources/config/TIKA-3137-include.xml
index b99af0b..5e563bf 100644
--- a/tika-server/tika-server-classic/src/test/resources/config/TIKA-3137-include.xml
+++ b/tika-server/tika-server-classic/src/test/resources/config/TIKA-3137-include.xml
@@ -16,23 +16,23 @@
   limitations under the License.
 -->
 <properties>
-  <metadataFilters>
-    <metadataFilter class="org.apache.tika.metadata.filter.IncludeFieldMetadataFilter">
-      <params>
-        <param name="include" type="list">
-          <string>X-TIKA:content</string>
-          <string>extended-properties:Application</string>
-          <string>Content-Type</string>
-        </param>
-      </params>
-    </metadataFilter>
-    <metadataFilter class="org.apache.tika.metadata.filter.ClearByMimeMetadataFilter">
-      <params>
-        <param name="mimes" type="list">
-          <string>image/emf</string>
-          <string>text/plain</string>
-        </param>
-      </params>
-    </metadataFilter>
-  </metadataFilters>
+    <metadataFilters>
+        <metadataFilter class="org.apache.tika.metadata.filter.IncludeFieldMetadataFilter">
+            <params>
+                <param name="include" type="list">
+                    <string>X-TIKA:content</string>
+                    <string>extended-properties:Application</string>
+                    <string>Content-Type</string>
+                </param>
+            </params>
+        </metadataFilter>
+        <metadataFilter class="org.apache.tika.metadata.filter.ClearByMimeMetadataFilter">
+            <params>
+                <param name="mimes" type="list">
+                    <string>image/emf</string>
+                    <string>text/plain</string>
+                </param>
+            </params>
+        </metadataFilter>
+    </metadataFilters>
 </properties>
diff --git a/tika-server/tika-server-classic/src/test/resources/log4j.properties b/tika-server/tika-server-classic/src/test/resources/log4j.properties
index c3676a2..258c52e 100644
--- a/tika-server/tika-server-classic/src/test/resources/log4j.properties
+++ b/tika-server/tika-server-classic/src/test/resources/log4j.properties
@@ -1,3 +1,4 @@
+#
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
 # this work for additional information regarding copyright ownership.
@@ -12,13 +13,10 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 #info,debug, error,fatal ...
 log4j.rootLogger=warn,stderr
-
 #console
 log4j.appender.stderr=org.apache.log4j.ConsoleAppender
 log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
 log4j.appender.stderr.Target=System.err
-
-log4j.appender.stderr.layout.ConversionPattern= %-5p %d [%t] (%F:%L) - %m%n
+log4j.appender.stderr.layout.ConversionPattern=%-5p %d [%t] (%F:%L) - %m%n
diff --git a/tika-server/tika-server-classic/src/test/resources/test-documents/testHTML.html b/tika-server/tika-server-classic/src/test/resources/test-documents/testHTML.html
index 5bbd4d8..c239795 100644
--- a/tika-server/tika-server-classic/src/test/resources/test-documents/testHTML.html
+++ b/tika-server/tika-server-classic/src/test/resources/test-documents/testHTML.html
@@ -15,14 +15,14 @@
  limitations under the License.
 -->
 <html>
-	<head>
-        <title>Title : Test Indexation Html</title>
-        <meta name="Author" content="Tika Developers">
-        <meta name="ICBM" content="51.2312, -5.1987">
-        <meta http-equiv="refresh" content="5">
-    </head>
-	<body>
-		<h1><a name="test-anchor"></a>Test Indexation Html</h1>
-		<p><a href="http://www.apache.org/">Indexation</a> du fichier</p>
-	</body>
+<head>
+    <title>Title : Test Indexation Html</title>
+    <meta content="Tika Developers" name="Author">
+    <meta content="51.2312, -5.1987" name="ICBM">
+    <meta content="5" http-equiv="refresh">
+</head>
+<body>
+<h1><a name="test-anchor"></a>Test Indexation Html</h1>
+<p><a href="http://www.apache.org/">Indexation</a> du fichier</p>
+</body>
 </html>
diff --git a/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaClient.java b/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaClient.java
index 336cb7d..3b1fb25 100644
--- a/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaClient.java
+++ b/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaClient.java
@@ -16,25 +16,31 @@
  */
 package org.apache.tika.server.client;
 
-import org.apache.tika.config.TikaConfig;
-import org.apache.tika.exception.TikaException;
-import org.apache.tika.metadata.serialization.JsonFetchEmitTuple;
-import org.apache.tika.metadata.serialization.JsonFetchEmitTupleList;
-import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
-
 import java.io.IOException;
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Random;
 
+import org.apache.tika.config.TikaConfig;
+import org.apache.tika.exception.TikaException;
+import org.apache.tika.metadata.serialization.JsonFetchEmitTuple;
+import org.apache.tika.metadata.serialization.JsonFetchEmitTupleList;
+import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
+
 public class TikaClient {
 
     private final Random random = new Random();
     private List<TikaHttpClient> clients;
 
 
-    public static TikaClient get(TikaConfig tikaConfig, List<String> tikaServers) throws TikaClientConfigException {
+    private TikaClient(List<TikaHttpClient> clients) {
+
+        this.clients = clients;
+    }
+
+    public static TikaClient get(TikaConfig tikaConfig, List<String> tikaServers)
+            throws TikaClientConfigException {
         List clients = new ArrayList<>();
         for (String url : tikaServers) {
             clients.add(TikaHttpClient.get(url));
@@ -42,17 +48,12 @@ public class TikaClient {
         return new TikaClient(clients);
     }
 
-    private TikaClient(List<TikaHttpClient> clients) {
-
-        this.clients = clients;
-    }
-
-    /*public List<Metadata> parse(InputStream is, Metadata metadata) throws IOException, TikaException {
+    /*public List<Metadata> parse(InputStream is, Metadata metadata)
+    throws IOException, TikaException {
 
     }*/
 
-    public TikaEmitterResult parse(FetchEmitTuple fetchEmit)
-            throws IOException, TikaException {
+    public TikaEmitterResult parse(FetchEmitTuple fetchEmit) throws IOException, TikaException {
         TikaHttpClient client = getHttpClient();
         StringWriter writer = new StringWriter();
         JsonFetchEmitTuple.toJson(fetchEmit, writer);
diff --git a/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaClientCLI.java b/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaClientCLI.java
index d760ab9..b959839 100644
--- a/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaClientCLI.java
+++ b/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaClientCLI.java
@@ -16,14 +16,6 @@
  */
 package org.apache.tika.server.client;
 
-import org.apache.tika.config.TikaConfig;
-import org.apache.tika.exception.TikaException;
-import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
-import org.apache.tika.pipes.fetchiterator.FetchIterator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.SAXException;
-
 import java.io.IOException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -41,6 +33,15 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xml.sax.SAXException;
+
+import org.apache.tika.config.TikaConfig;
+import org.apache.tika.exception.TikaException;
+import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
+import org.apache.tika.pipes.fetchiterator.FetchIterator;
+
 public class TikaClientCLI {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(TikaClientCLI.class);
@@ -60,8 +61,9 @@ public class TikaClientCLI {
             throws TikaException, IOException, SAXException {
         TikaConfig config = new TikaConfig(tikaConfigPath);
 
-        ExecutorService executorService = Executors.newFixedThreadPool(numThreads+1);
-        ExecutorCompletionService<Integer> completionService = new ExecutorCompletionService<>(executorService);
+        ExecutorService executorService = Executors.newFixedThreadPool(numThreads + 1);
+        ExecutorCompletionService<Integer> completionService =
+                new ExecutorCompletionService<>(executorService);
         final FetchIterator fetchIterator = config.getFetchIterator();
         final ArrayBlockingQueue<FetchEmitTuple> queue = fetchIterator.init(numThreads);
 
@@ -69,8 +71,8 @@ public class TikaClientCLI {
         if (tikaServerUrls.size() == numThreads) {
             logDiffSizes(tikaServerUrls.size(), numThreads);
             for (int i = 0; i < numThreads; i++) {
-                TikaClient client = TikaClient.get(config,
-                        Collections.singletonList(tikaServerUrls.get(i)));
+                TikaClient client =
+                        TikaClient.get(config, Collections.singletonList(tikaServerUrls.get(i)));
                 completionService.submit(new FetchWorker(queue, client));
             }
         } else {
@@ -81,7 +83,7 @@ public class TikaClientCLI {
         }
 
         int finished = 0;
-        while (finished < numThreads+1) {
+        while (finished < numThreads + 1) {
             Future<Integer> future = null;
             try {
                 future = completionService.poll(maxWaitMs, TimeUnit.MILLISECONDS);
@@ -94,7 +96,7 @@ public class TikaClientCLI {
                 finished++;
                 try {
                     future.get();
-                } catch (InterruptedException|ExecutionException e) {
+                } catch (InterruptedException | ExecutionException e) {
                     //stop the world
                     LOGGER.error("", e);
                     throw new RuntimeException(e);
@@ -105,13 +107,13 @@ public class TikaClientCLI {
 
     private void logDiffSizes(int servers, int numThreads) {
         LOGGER.info("tika server count ({}) != numThreads ({}). " +
-                        "Each client will randomly select a server from this list",
-                servers, numThreads);
+                "Each client will randomly select a server from this list", servers, numThreads);
     }
 
     private class AsyncFetchWorker implements Callable<Integer> {
         private final ArrayBlockingQueue<FetchEmitTuple> queue;
         private final TikaClient client;
+
         public AsyncFetchWorker(ArrayBlockingQueue<FetchEmitTuple> queue, TikaClient client) {
             this.queue = queue;
             this.client = client;
@@ -148,6 +150,7 @@ public class TikaClientCLI {
     private class FetchWorker implements Callable<Integer> {
         private final ArrayBlockingQueue<FetchEmitTuple> queue;
         private final TikaClient client;
+
         public FetchWorker(ArrayBlockingQueue<FetchEmitTuple> queue, TikaClient client) {
             this.queue = queue;
             this.client = client;
diff --git a/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaEmitterResult.java b/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaEmitterResult.java
index 9bed7a6..1438885 100644
--- a/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaEmitterResult.java
+++ b/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaEmitterResult.java
@@ -19,17 +19,9 @@ package org.apache.tika.server.client;
 public class TikaEmitterResult {
 
 
-    enum STATUS {
-        OK,
-        NOT_OK,
-        EXCEEDED_MAX_RETRIES,
-        TIMED_OUT_WAITING_FOR_TIKA
-    }
-
     private STATUS status;
     private String msg;//used for exceptions. will be null for status ok
     private long timeElapsed;
-
     public TikaEmitterResult(STATUS status, long timeElapsed, String msg) {
         this.status = status;
         this.timeElapsed = timeElapsed;
@@ -38,11 +30,8 @@ public class TikaEmitterResult {
 
     @Override
     public String toString() {
-        return "TikaEmitterResult{" +
-                "status=" + status +
-                ", msg='" + msg + '\'' +
-                ", timeElapsed=" + timeElapsed +
-                '}';
+        return "TikaEmitterResult{" + "status=" + status + ", msg='" + msg + '\'' +
+                ", timeElapsed=" + timeElapsed + '}';
     }
 
     public STATUS getStatus() {
@@ -57,5 +46,9 @@ public class TikaEmitterResult {
         return timeElapsed;
     }
 
+    enum STATUS {
+        OK, NOT_OK, EXCEEDED_MAX_RETRIES, TIMED_OUT_WAITING_FOR_TIKA
+    }
+
 
 }
diff --git a/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaHttpClient.java b/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaHttpClient.java
index 591064a..6d6517f 100644
--- a/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaHttpClient.java
+++ b/tika-server/tika-server-client/src/main/java/org/apache/tika/server/client/TikaHttpClient.java
@@ -16,6 +16,11 @@
  */
 package org.apache.tika.server.client;
 
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.charset.StandardCharsets;
+
 import org.apache.http.HttpHost;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
@@ -24,15 +29,10 @@ import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.ByteArrayEntity;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
-import org.apache.tika.exception.TikaException;
-import org.apache.tika.pipes.emitter.TikaEmitterException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.charset.StandardCharsets;
+import org.apache.tika.exception.TikaException;
 
 /**
  * Low-level class to handle the http layer.
@@ -54,6 +54,22 @@ class TikaHttpClient {
     //how often to ping /tika (in ms) to see if the server is up and running
     private long pulseWaitForTikaMs = 1000;
 
+    /**
+     * @param baseUrl    url to base endpoint
+     * @param httpHost
+     * @param httpClient
+     */
+    private TikaHttpClient(String baseUrl, HttpHost httpHost, HttpClient httpClient) {
+        if (!baseUrl.endsWith("/")) {
+            baseUrl += "/";
+        }
+        this.emitEndPointUrl = baseUrl + EMIT_ENDPOINT;
+        this.asyncEndPointUrl = baseUrl + ASYNC_ENDPOINT;
+        this.tikaUrl = baseUrl + TIKA_ENDPOINT;
+        this.httpHost = httpHost;
+        this.httpClient = httpClient;
+    }
+
     static TikaHttpClient get(String baseUrl) throws TikaClientConfigException {
         URI uri;
         try {
@@ -67,23 +83,6 @@ class TikaHttpClient {
         return new TikaHttpClient(baseUrl, httpHost, client);
     }
 
-    /**
-     *
-     * @param baseUrl url to base endpoint
-     * @param httpHost
-     * @param httpClient
-     */
-    private TikaHttpClient(String baseUrl, HttpHost httpHost, HttpClient httpClient) {
-        if (! baseUrl.endsWith("/")) {
-            baseUrl += "/";
-        }
-        this.emitEndPointUrl = baseUrl+EMIT_ENDPOINT;
-        this.asyncEndPointUrl = baseUrl+ASYNC_ENDPOINT;
-        this.tikaUrl = baseUrl+TIKA_ENDPOINT;
-        this.httpHost = httpHost;
-        this.httpClient = httpClient;
-    }
-
     public TikaEmitterResult postJsonAsync(String jsonRequest) {
         return postJson(asyncEndPointUrl, jsonRequest);
     }
@@ -93,7 +92,7 @@ class TikaHttpClient {
     }
 
     private TikaEmitterResult postJson(String endPoint, String jsonRequest) {
-        System.out.println("NED:"+endPoint);
+        System.out.println("NED:" + endPoint);
         HttpPost post = new HttpPost(endPoint);
         ByteArrayEntity entity = new ByteArrayEntity(jsonRequest.getBytes(StandardCharsets.UTF_8));
         post.setEntity(entity);
@@ -115,6 +114,7 @@ class TikaHttpClient {
                 try {
                     msg = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
                 } catch (IOException e) {
+                    //swallow
                 }
                 long elapsed = System.currentTimeMillis() - start;
                 TikaEmitterResult.STATUS status = TikaEmitterResult.STATUS.OK;
@@ -127,16 +127,11 @@ class TikaHttpClient {
             }
         } catch (TimeoutWaitingForTikaException e) {
             long elapsed = System.currentTimeMillis() - start;
-            return new TikaEmitterResult(
-                    TikaEmitterResult.STATUS.TIMED_OUT_WAITING_FOR_TIKA,
-                    elapsed, ""
-            );
+            return new TikaEmitterResult(TikaEmitterResult.STATUS.TIMED_OUT_WAITING_FOR_TIKA,
+                    elapsed, "");
         }
         long elapsed = System.currentTimeMillis() - start;
-        return new TikaEmitterResult(
-                TikaEmitterResult.STATUS.EXCEEDED_MAX_RETRIES,
-                elapsed, ""
-        );
+        return new TikaEmitterResult(TikaEmitterResult.STATUS.EXCEEDED_MAX_RETRIES, elapsed, "");
     }
 
 
@@ -148,7 +143,7 @@ class TikaHttpClient {
             try {
                 Thread.sleep(pulseWaitForTikaMs);
             } catch (InterruptedException e) {
-
+                //swallow
             }
 
             HttpGet get = new HttpGet(tikaUrl);
@@ -159,16 +154,14 @@ class TikaHttpClient {
                     return;
                 }
             } catch (IOException e) {
-                elapsed = System.currentTimeMillis()-start;
-                LOGGER.debug("waiting for server; failed to reach it: {} ms",
-                        elapsed);
+                elapsed = System.currentTimeMillis() - start;
+                LOGGER.debug("waiting for server; failed to reach it: {} ms", elapsed);
             }
 
-            elapsed = System.currentTimeMillis()-start;
+            elapsed = System.currentTimeMillis() - start;
         }
 
-        LOGGER.warn("Timeout waiting for tika server {} in {} ms", tikaUrl,
-                elapsed);
+        LOGGER.warn("Timeout waiting for tika server {} in {} ms", tikaUrl, elapsed);
         throw new TimeoutWaitingForTikaException("");
     }
 
@@ -177,4 +170,4 @@ class TikaHttpClient {
             super(msg);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/tika-server/tika-server-client/src/main/resources/log4j.properties b/tika-server/tika-server-client/src/main/resources/log4j.properties
index 7d3b372..51f1199 100644
--- a/tika-server/tika-server-client/src/main/resources/log4j.properties
+++ b/tika-server/tika-server-client/src/main/resources/log4j.properties
@@ -1,3 +1,4 @@
+#
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
 # this work for additional information regarding copyright ownership.
@@ -12,13 +13,10 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 #info,debug, error,fatal ...
 log4j.rootLogger=info,stderr
-
 #console
 log4j.appender.stderr=org.apache.log4j.ConsoleAppender
 log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
 log4j.appender.stderr.Target=System.err
-
-log4j.appender.stderr.layout.ConversionPattern= %-5p %m%n
+log4j.appender.stderr.layout.ConversionPattern=%-5p %m%n
diff --git a/tika-server/tika-server-client/src/test/java/org/apache/tika/server/client/TestBasic.java b/tika-server/tika-server-client/src/test/java/org/apache/tika/server/client/TestBasic.java
index 1cee50f..4f4eeb5 100644
--- a/tika-server/tika-server-client/src/test/java/org/apache/tika/server/client/TestBasic.java
+++ b/tika-server/tika-server-client/src/test/java/org/apache/tika/server/client/TestBasic.java
@@ -16,27 +16,24 @@
  */
 package org.apache.tika.server.client;
 
-import org.junit.Ignore;
-import org.junit.Test;
+import static org.junit.Assert.assertTrue;
 
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 
-import static org.junit.Assert.assertTrue;
+import org.junit.Ignore;
+import org.junit.Test;
 
 @Ignore("turn into actual unit test")
 public class TestBasic {
 
     @Test
     public void testBasic() throws Exception {
-        Path p = Paths.get(TestBasic.class.getResource("/tika-config-simple-fs-emitter.xml").toURI());
+        Path p = Paths.get(
+                TestBasic.class.getResource("/tika-config-simple-fs-emitter.xml").toURI());
         assertTrue(Files.isRegularFile(p));
-        String[] args = new String[]{
-                p.toAbsolutePath().toString(),
-                "http://localhost:9998/",
-                "fs"
-        };
+        String[] args = new String[]{p.toAbsolutePath().toString(), "http://localhost:9998/", "fs"};
         TikaClientCLI.main(args);
     }
 }
diff --git a/tika-server/tika-server-client/src/test/resources/log4j.properties b/tika-server/tika-server-client/src/test/resources/log4j.properties
index afc3ec5..57afd8d 100644
--- a/tika-server/tika-server-client/src/test/resources/log4j.properties
+++ b/tika-server/tika-server-client/src/test/resources/log4j.properties
@@ -1,3 +1,4 @@
+#
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
 # this work for additional information regarding copyright ownership.
@@ -12,13 +13,10 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 #info,debug, error,fatal ...
 log4j.rootLogger=debug,stderr
-
 #console
 log4j.appender.stderr=org.apache.log4j.ConsoleAppender
 log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
 log4j.appender.stderr.Target=System.err
-
-log4j.appender.stderr.layout.ConversionPattern= %-5p %d [%t] (%F:%L) - %m%n
+log4j.appender.stderr.layout.ConversionPattern=%-5p %d [%t] (%F:%L) - %m%n
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/CompositeParseContextConfig.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/CompositeParseContextConfig.java
index 0bc0e46..29c8d75 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/CompositeParseContextConfig.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/CompositeParseContextConfig.java
@@ -16,13 +16,13 @@
  */
 package org.apache.tika.server.core;
 
+import java.util.List;
+import javax.ws.rs.core.MultivaluedMap;
+
 import org.apache.tika.config.ServiceLoader;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ParseContext;
 
-import javax.ws.rs.core.MultivaluedMap;
-import java.util.List;
-
 public class CompositeParseContextConfig implements ParseContextConfig {
 
 
@@ -34,8 +34,8 @@ public class CompositeParseContextConfig implements ParseContextConfig {
     }
 
     @Override
-    public void configure(MultivaluedMap<String, String> httpHeaders,
-                          Metadata metadata, ParseContext context) {
+    public void configure(MultivaluedMap<String, String> httpHeaders, Metadata metadata,
+                          ParseContext context) {
         for (ParseContextConfig config : configs) {
             config.configure(httpHeaders, metadata, context);
         }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/DefaultInputStreamFactory.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/DefaultInputStreamFactory.java
index 022d178..86df77a 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/DefaultInputStreamFactory.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/DefaultInputStreamFactory.java
@@ -17,11 +17,11 @@
 
 package org.apache.tika.server.core;
 
-import org.apache.tika.metadata.Metadata;
-
-import javax.ws.rs.core.HttpHeaders;
 import java.io.IOException;
 import java.io.InputStream;
+import javax.ws.rs.core.HttpHeaders;
+
+import org.apache.tika.metadata.Metadata;
 
 /**
  * Passthrough -- returns InputStream as is
@@ -29,7 +29,8 @@ import java.io.InputStream;
 public class DefaultInputStreamFactory implements InputStreamFactory {
 
     @Override
-    public InputStream getInputSteam(InputStream is, Metadata metadata, HttpHeaders httpHeaders) throws IOException {
+    public InputStream getInputSteam(InputStream is, Metadata metadata, HttpHeaders httpHeaders)
+            throws IOException {
         return is;
     }
 }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/FetcherStreamFactory.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/FetcherStreamFactory.java
index 949ab57..56042c1 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/FetcherStreamFactory.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/FetcherStreamFactory.java
@@ -16,13 +16,13 @@
  */
 package org.apache.tika.server.core;
 
-import javax.ws.rs.core.HttpHeaders;
 import java.io.IOException;
 import java.io.InputStream;
+import javax.ws.rs.core.HttpHeaders;
 
 import org.apache.commons.lang3.StringUtils;
+
 import org.apache.tika.exception.TikaException;
-import org.apache.tika.pipes.fetcher.Fetcher;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.pipes.fetcher.FetcherManager;
 
@@ -40,7 +40,6 @@ import org.apache.tika.pipes.fetcher.FetcherManager;
  * to your intranet, and you let the public hit this service, they will now
  * have access to your intranet.
  * See <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3271">CVE-2015-3271</a>
- *
  */
 public class FetcherStreamFactory implements InputStreamFactory {
 
@@ -51,16 +50,16 @@ public class FetcherStreamFactory implements InputStreamFactory {
     }
 
     @Override
-    public InputStream getInputSteam(InputStream is, Metadata metadata,
-                                     HttpHeaders httpHeaders) throws IOException {
-        String fetcherName= httpHeaders.getHeaderString("fetcherName");
+    public InputStream getInputSteam(InputStream is, Metadata metadata, HttpHeaders httpHeaders)
+            throws IOException {
+        String fetcherName = httpHeaders.getHeaderString("fetcherName");
         String fetchKey = httpHeaders.getHeaderString("fetchKey");
         if (StringUtils.isBlank(fetcherName) != StringUtils.isBlank(fetchKey)) {
-            throw new IOException("Must specify both a 'fetcherName' and a 'fetchKey'. I see: "+
-                    " fetcherName:"+fetcherName+" and fetchKey:"+fetchKey);
+            throw new IOException("Must specify both a 'fetcherName' and a 'fetchKey'. I see: " +
+                    " fetcherName:" + fetcherName + " and fetchKey:" + fetchKey);
         }
 
-        if (!StringUtils.isBlank(fetcherName)){
+        if (!StringUtils.isBlank(fetcherName)) {
             try {
                 return fetcherManager.getFetcher(fetcherName).fetch(fetchKey, metadata);
             } catch (TikaException e) {
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/HTMLHelper.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/HTMLHelper.java
index f4af353..631545a 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/HTMLHelper.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/HTMLHelper.java
@@ -17,12 +17,12 @@
 
 package org.apache.tika.server.core;
 
-import org.apache.commons.io.IOUtils;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
 import java.io.IOException;
 import java.io.InputStream;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
+import org.apache.commons.io.IOUtils;
 
 /**
  * Helps produce user facing HTML output.
@@ -62,4 +62,5 @@ public class HTMLHelper {
 
     public void generateFooter(StringBuffer html) {
         html.append(POST_BODY);
-    }}
\ No newline at end of file
+    }
+}
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/InputStreamFactory.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/InputStreamFactory.java
index 66ec45a..1d3ee8a 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/InputStreamFactory.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/InputStreamFactory.java
@@ -17,11 +17,11 @@
 
 package org.apache.tika.server.core;
 
-import org.apache.tika.metadata.Metadata;
-
-import javax.ws.rs.core.HttpHeaders;
 import java.io.IOException;
 import java.io.InputStream;
+import javax.ws.rs.core.HttpHeaders;
+
+import org.apache.tika.metadata.Metadata;
 
 /**
  * Interface to allow for custom/consistent creation of InputStream
@@ -31,6 +31,7 @@ import java.io.InputStream;
  */
 public interface InputStreamFactory {
 
-    InputStream getInputSteam(InputStream is, Metadata metadata, HttpHeaders httpHeaders) throws IOException;
+    InputStream getInputSteam(InputStream is, Metadata metadata, HttpHeaders httpHeaders)
+            throws IOException;
 
 }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/MetadataList.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/MetadataList.java
index 1a2ce91..94028fb 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/MetadataList.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/MetadataList.java
@@ -1,5 +1,3 @@
-package org.apache.tika.server.core;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,11 +14,12 @@ package org.apache.tika.server.core;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-import org.apache.tika.metadata.Metadata;
+package org.apache.tika.server.core;
 
 import java.util.List;
 
+import org.apache.tika.metadata.Metadata;
+
 /**
  * wrapper class to make isWriteable in MetadataListMBW simpler
  */
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/ParseContextConfig.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/ParseContextConfig.java
index 0bc26df..97f9b82 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/ParseContextConfig.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/ParseContextConfig.java
@@ -32,14 +32,14 @@
  */
 package org.apache.tika.server.core;
 
+import javax.ws.rs.core.MultivaluedMap;
+
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ParseContext;
 
-import javax.ws.rs.core.MultivaluedMap;
-
 /**
  * Implementations must be thread-safe!
- *
+ * <p>
  * This class translates http headers into objects/configurations set
  * via the ParseContext
  */
@@ -48,10 +48,9 @@ public interface ParseContextConfig {
     /**
      * Configures the parseContext with present headers.
      *
-     * @param headers the headers.
-     * @param metadata  the metadata.
+     * @param headers  the headers.
+     * @param metadata the metadata.
      * @param context  the parse context to configure.
      */
-    void configure(MultivaluedMap<String, String> headers,
-                   Metadata metadata, ParseContext context);
+    void configure(MultivaluedMap<String, String> headers, Metadata metadata, ParseContext context);
 }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/ServerStatus.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/ServerStatus.java
index 92068f5..794dfb2 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/ServerStatus.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/ServerStatus.java
@@ -16,79 +16,28 @@
  */
 package org.apache.tika.server.core;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.time.Instant;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
 
-public class ServerStatus {
-
-    enum DIRECTIVES {
-        PING((byte)0),
-        PING_ACTIVE_SERVER_TASKS((byte)1),
-        SHUTDOWN((byte)2);
-
-        private final byte b;
-        DIRECTIVES(byte b) {
-            this.b = b;
-        }
-        byte getByte() { return b;}
-    }
-
-    public enum STATUS {
-        INITIALIZING(0),
-        OPERATING(1),
-        HIT_MAX_FILES(2),
-        TIMEOUT(3),
-        ERROR(4),
-        PARENT_REQUESTED_SHUTDOWN(5),
-        PARENT_EXCEPTION(6),
-        OFF(7);
-
-        private final int shutdownCode;
-
-        static STATUS lookup(int i) {
-            STATUS[] values = STATUS.values();
-            if (i < 0 || i >= values.length) {
-                throw new ArrayIndexOutOfBoundsException(i +
-                        " is not acceptable for an array of length "+values.length);
-            }
-            return STATUS.values()[i];
-        }
-
-        STATUS(int shutdownCode) {
-            this.shutdownCode = shutdownCode;
-        }
-        int getShutdownCode() {
-            return shutdownCode;
-        }
-        int getInt() { return shutdownCode;}
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-    }
+public class ServerStatus {
 
-    public enum TASK {
-        PARSE,
-        DETECT,
-        TRANSLATE
-    };
     private static final Logger LOG = LoggerFactory.getLogger(ServerStatus.class);
-
     private final String serverId;
     private final int numRestarts;
+
+    private final boolean isLegacy;
     private AtomicLong counter = new AtomicLong(0);
     private Map<Long, TaskStatus> tasks = new HashMap<>();
-    private final boolean isLegacy;
     private STATUS status = STATUS.OPERATING;
-
     private volatile long lastStarted = Instant.now().toEpochMilli();
-
     public ServerStatus(String serverId, int numRestarts) {
         this(serverId, numRestarts, false);
     }
-
     public ServerStatus(String serverId, int numRestarts, boolean isLegacy) {
         this.serverId = serverId;
         this.numRestarts = numRestarts;
@@ -112,18 +61,18 @@ public class ServerStatus {
     public synchronized void complete(long taskId) throws IllegalArgumentException {
         TaskStatus status = tasks.remove(taskId);
         if (status == null) {
-            throw new IllegalArgumentException("TaskId is not in map:"+taskId);
+            throw new IllegalArgumentException("TaskId is not in map:" + taskId);
         }
     }
 
-    public synchronized void setStatus(STATUS status) {
-        this.status = status;
-    }
-
     public synchronized STATUS getStatus() {
         return status;
     }
 
+    public synchronized void setStatus(STATUS status) {
+        this.status = status;
+    }
+
     public synchronized Map<Long, TaskStatus> getTasks() {
         return new HashMap<>(tasks);
     }
@@ -133,10 +82,10 @@ public class ServerStatus {
     }
 
     public long getMillisSinceLastParseStarted() {
-        return Instant.now().toEpochMilli()-lastStarted;
+        return Instant.now().toEpochMilli() - lastStarted;
     }
+
     /**
-     *
      * @return true if this is legacy, otherwise whether or not status == OPERATING.
      */
     public synchronized boolean isOperating() {
@@ -153,4 +102,51 @@ public class ServerStatus {
     public int getNumRestarts() {
         return numRestarts;
     }
+
+    enum DIRECTIVES {
+        PING((byte) 0), PING_ACTIVE_SERVER_TASKS((byte) 1), SHUTDOWN((byte) 2);
+
+        private final byte b;
+
+        DIRECTIVES(byte b) {
+            this.b = b;
+        }
+
+        byte getByte() {
+            return b;
+        }
+    }
+
+    public enum STATUS {
+        INITIALIZING(0), OPERATING(1), HIT_MAX_FILES(2), TIMEOUT(3), ERROR(4),
+        PARENT_REQUESTED_SHUTDOWN(5), PARENT_EXCEPTION(6), OFF(7);
+
+        private final int shutdownCode;
+
+        STATUS(int shutdownCode) {
+            this.shutdownCode = shutdownCode;
+        }
+
+        static STATUS lookup(int i) {
+            STATUS[] values = STATUS.values();
+            if (i < 0 || i >= values.length) {
+                throw new ArrayIndexOutOfBoundsException(
+                        i + " is not acceptable for an array of length " + values.length);
+            }
+            return STATUS.values()[i];
+        }
+
+        int getShutdownCode() {
+            return shutdownCode;
+        }
+
+        int getInt() {
+            return shutdownCode;
+        }
+
+    }
+
+    public enum TASK {
+        PARSE, DETECT, TRANSLATE
+    }
 }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/ServerStatusWatcher.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/ServerStatusWatcher.java
index 968a41a..26f47be 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/ServerStatusWatcher.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/ServerStatusWatcher.java
@@ -17,10 +17,6 @@
 
 package org.apache.tika.server.core;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.DataInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.Buffer;
@@ -33,6 +29,9 @@ import java.nio.file.StandardOpenOption;
 import java.time.Duration;
 import java.time.Instant;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 public class ServerStatusWatcher implements Runnable {
 
 
@@ -44,9 +43,9 @@ public class ServerStatusWatcher implements Runnable {
     private final ByteBuffer statusBuffer = ByteBuffer.allocate(16);
     private volatile boolean shuttingDown = false;
 
-    public ServerStatusWatcher(ServerStatus serverStatus,
-                               InputStream inputStream, Path forkedStatusPath,
-                               TikaServerConfig tikaServerConfig) throws InterruptedException {
+    public ServerStatusWatcher(ServerStatus serverStatus, InputStream inputStream,
+                               Path forkedStatusPath, TikaServerConfig tikaServerConfig)
+            throws InterruptedException {
         this.serverStatus = serverStatus;
         this.tikaServerConfig = tikaServerConfig;
         this.forkedStatusPath = forkedStatusPath;
@@ -79,8 +78,7 @@ public class ServerStatusWatcher implements Runnable {
 
     }
 
-    private synchronized void writeStatus(boolean shuttingDown)
-            throws InterruptedException {
+    private synchronized void writeStatus(boolean shuttingDown) throws InterruptedException {
         if (this.shuttingDown == true) {
             return;
         }
@@ -90,9 +88,8 @@ public class ServerStatusWatcher implements Runnable {
 
         Instant started = Instant.now();
         long elapsed = Duration.between(started, Instant.now()).toMillis();
-        try (FileChannel channel = FileChannel.open(forkedStatusPath,
-                StandardOpenOption.CREATE,
-                StandardOpenOption.WRITE)) {
+        try (FileChannel channel = FileChannel
+                .open(forkedStatusPath, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
             while (elapsed < tikaServerConfig.getTaskTimeoutMillis()) {
                 try (FileLock lock = channel.tryLock()) {
                     if (lock != null) {
@@ -113,7 +110,8 @@ public class ServerStatusWatcher implements Runnable {
         } catch (IOException e) {
             LOG.warn("Couldn't open forked status file for writing", e);
         }
-        throw new FatalException("Couldn't write to status file after trying for " + elapsed + " millis.");
+        throw new FatalException(
+                "Couldn't write to status file after trying for " + elapsed + " millis.");
     }
 
     private void checkForHitMaxFiles() {
@@ -135,13 +133,14 @@ public class ServerStatusWatcher implements Runnable {
                 if (status.fileName.isPresent()) {
                     LOG.error("Timeout task {}, millis elapsed {}, file {}" +
                                     "consider increasing the allowable time with the " +
-                                    "<taskTimeoutMillis/> parameter",
-                            status.task.toString(), millisElapsed, status.fileName.get());
+                                    "<taskTimeoutMillis/> parameter", status.task.toString(),
+                            millisElapsed,
+                            status.fileName.get());
                 } else {
                     LOG.error("Timeout task {}, millis elapsed {}; " +
                                     "consider increasing the allowable time with the " +
-                                    "<taskTimeoutMillis/> parameter",
-                            status.task.toString(), millisElapsed);
+                                    "<taskTimeoutMillis/> parameter", status.task.toString(),
+                            millisElapsed);
                 }
             }
         }
@@ -168,6 +167,15 @@ public class ServerStatusWatcher implements Runnable {
         System.exit(status.getShutdownCode());
     }
 
+    private static class FatalException extends RuntimeException {
+        public FatalException() {
+            super();
+        }
+
+        public FatalException(String msg) {
+            super(msg);
+        }
+    }
 
     //This is an internal thread that pulses every ServerTimeouts#pingPulseMillis
     //within the forked process to see if the forked process should terminate.
@@ -181,7 +189,8 @@ public class ServerStatusWatcher implements Runnable {
                 checkForTaskTimeouts();
                 ServerStatus.STATUS currStatus = serverStatus.getStatus();
                 if (currStatus != ServerStatus.STATUS.OPERATING) {
-                    LOG.warn("forked process observed " + currStatus.name() + " and is shutting down.");
+                    LOG.warn("forked process observed " + currStatus.name() +
+                            " and is shutting down.");
                     shutdown(currStatus);
                 } else {
                     long elapsed = Duration.between(lastWrite, Instant.now()).toMillis();
@@ -204,14 +213,4 @@ public class ServerStatusWatcher implements Runnable {
             }
         }
     }
-
-    private static class FatalException extends RuntimeException {
-        public FatalException() {
-            super();
-        }
-
-        public FatalException(String msg) {
-            super(msg);
-        }
-    }
-}
\ No newline at end of file
+}
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaLoggingFilter.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaLoggingFilter.java
index 3532eda..206e297 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaLoggingFilter.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaLoggingFilter.java
@@ -17,15 +17,14 @@
 
 package org.apache.tika.server.core;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
+import java.io.IOException;
 import javax.ws.rs.container.ContainerRequestContext;
 import javax.ws.rs.container.ContainerRequestFilter;
 import javax.ws.rs.container.PreMatching;
 import javax.ws.rs.ext.Provider;
 
-import java.io.IOException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @Provider
 @PreMatching
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerCli.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerCli.java
index b42f50d..e5a4921 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerCli.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerCli.java
@@ -17,10 +17,10 @@
 
 package org.apache.tika.server.core;
 
+import static org.apache.tika.server.core.TikaServerConfig.DEFAULT_HOST;
+
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
-import java.util.UUID;
 import java.util.concurrent.ExecutorCompletionService;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -34,13 +34,9 @@ import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.DefaultParser;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
-import org.apache.tika.Tika;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.apache.tika.server.core.TikaServerConfig.DEFAULT_HOST;
-import static org.apache.tika.server.core.TikaServerConfig.DEFAULT_PORT;
-
 public class TikaServerCli {
 
     private static final Logger LOG = LoggerFactory.getLogger(TikaServerCli.class);
@@ -48,19 +44,19 @@ public class TikaServerCli {
      * This value is set to the server's id in the forked process.
      */
     public static String TIKA_SERVER_ID_ENV = "tika.server.id";
+
     private static Options getOptions() {
         Options options = new Options();
-        options.addOption("h", "host", true, "host name (default = "
-                + DEFAULT_HOST + ", use * for all)");
-        options.addOption("p", "port", true,
-                "listen port(s) (default = 9998)\n" +
-                        "Can specify multiple ports with inclusive ranges (e.g. 9990-9999)\n" +
-                        "or with comma delimited list (e.g. 9996,9998,9995)");
+        options.addOption("h", "host", true,
+                "host name (default = " + DEFAULT_HOST + ", use * for all)");
+        options.addOption("p", "port", true, "listen port(s) (default = 9998)\n" +
+                "Can specify multiple ports with inclusive ranges (e.g. 9990-9999)\n" +
+                "or with comma delimited list (e.g. 9996,9998,9995)");
         options.addOption("?", "help", false, "this help message");
         options.addOption("c", "config", true, "tika-config file");
 
-        options.addOption("i", "id", true, "id to use for server in" +
-                " the server status endpoint and logging");
+        options.addOption("i", "id", true,
+                "id to use for server in" + " the server status endpoint and logging");
         options.addOption("noFork", false, "runs in legacy 1.x mode -- " +
                 "server runs in process and is not safely isolated in a forked process");
 
@@ -121,7 +117,7 @@ public class TikaServerCli {
                     LOG.debug("main loop future is available");
                     WatchDogResult result = future.get();
                     LOG.debug("main loop future: ({}); finished", result);
-                        finished++;
+                    finished++;
                 }
             }
         } catch (InterruptedException e) {
@@ -146,8 +142,8 @@ public class TikaServerCli {
     }
 
     public static void noFork(TikaServerConfig tikaServerConfig) {
-        List<String> args = tikaServerConfig.getForkedProcessArgs(
-                tikaServerConfig.getPort(), tikaServerConfig.getIdBase());
+        List<String> args = tikaServerConfig
+                .getForkedProcessArgs(tikaServerConfig.getPort(), tikaServerConfig.getIdBase());
         TikaServerProcess.main(args.toArray(new String[0]));
     }
 
@@ -165,8 +161,10 @@ public class TikaServerCli {
         for (String val : commaDelimited) {
             rangeMatcher.reset(val);
             if (rangeMatcher.find()) {
-                int min = Math.min(Integer.parseInt(rangeMatcher.group(1)), Integer.parseInt(rangeMatcher.group(2)));
-                int max = Math.max(Integer.parseInt(rangeMatcher.group(1)), Integer.parseInt(rangeMatcher.group(2)));
+                int min = Math.min(Integer.parseInt(rangeMatcher.group(1)),
+                        Integer.parseInt(rangeMatcher.group(2)));
+                int max = Math.max(Integer.parseInt(rangeMatcher.group(1)),
+                        Integer.parseInt(rangeMatcher.group(2)));
                 for (int i = min; i <= max; i++) {
                     indivPorts.add(i);
                 }
@@ -176,7 +174,8 @@ public class TikaServerCli {
         }
         //if there's only one port, use only the idbase, otherwise append -$port
         if (indivPorts.size() == 0) {
-            throw new IllegalArgumentException("Couldn't find any ports in: "+tikaServerConfig.getPortString());
+            throw new IllegalArgumentException(
+                    "Couldn't find any ports in: " + tikaServerConfig.getPortString());
         } else if (indivPorts.size() == 1) {
             pairs.add(new PortIdPair(indivPorts.get(0), tikaServerConfig.getIdBase()));
         } else {
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 69524ed..e12dd37 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
@@ -16,16 +16,6 @@
  */
 package org.apache.tika.server.core;
 
-import org.apache.commons.cli.CommandLine;
-import org.apache.tika.exception.TikaConfigException;
-import org.apache.tika.exception.TikaException;
-import org.apache.tika.utils.ProcessUtils;
-import org.apache.tika.utils.StringUtils;
-import org.apache.tika.utils.XMLReaderUtils;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.InvocationTargetException;
@@ -35,39 +25,98 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
 import java.util.UUID;
 
-public class TikaServerConfig {
+import org.apache.commons.cli.CommandLine;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
 
-    //used in fork mode -- restart after processing this many files
-    private static final long DEFAULT_MAX_FILES = 100000;
+import org.apache.tika.exception.TikaConfigException;
+import org.apache.tika.exception.TikaException;
+import org.apache.tika.utils.ProcessUtils;
+import org.apache.tika.utils.StringUtils;
+import org.apache.tika.utils.XMLReaderUtils;
 
+public class TikaServerConfig {
 
     public static final int DEFAULT_PORT = 9998;
-    private static final int DEFAULT_DIGEST_MARK_LIMIT = 20*1024*1024;
     public static final String DEFAULT_HOST = "localhost";
     public static final Set<String> LOG_LEVELS = new HashSet<>(Arrays.asList("debug", "info"));
-
+    /**
+     * Number of milliseconds to wait per server task (parse, detect, unpack, translate,
+     * etc.) before timing out and shutting down the forked process.
+     */
+    public static final long DEFAULT_TASK_TIMEOUT_MILLIS = 120000;
+    /**
+     * How often to check to see that the task hasn't timed out
+     */
+    public static final long DEFAULT_TASK_PULSE_MILLIS = 10000;
+    /**
+     * Number of milliseconds to wait for forked process to startup
+     */
+    public static final long DEFAULT_FORKED_STARTUP_MILLIS = 120000;
+    //used in fork mode -- restart after processing this many files
+    private static final long DEFAULT_MAX_FILES = 100000;
+    private static final int DEFAULT_DIGEST_MARK_LIMIT = 20 * 1024 * 1024;
     private static final String UNSECURE_WARNING =
-            "WARNING: You have chosen to run tika-server with unsecure features enabled.\n"+
-                    "Whoever has access to your service now has the same read permissions\n"+
-                    "as you've given your fetchers and the same write permissions as your emitters.\n" +
+            "WARNING: You have chosen to run tika-server with unsecure features enabled.\n" +
+                    "Whoever has access to your service now has the same read permissions\n" +
+                    "as you've given your fetchers and the same write permissions " +
+                    "as your emitters.\n" +
                     "Users could request and receive a sensitive file from your\n" +
                     "drive or a webpage from your intranet and/or send malicious content to\n" +
-                    " your emitter endpoints.  See CVE-2015-3271.\n"+
+                    " your emitter endpoints.  See CVE-2015-3271.\n" +
                     "Please make sure you know what you are doing.";
-
-    private static final List<String> ONLY_IN_FORK_MODE =
-            Arrays.asList(new String[] { "taskTimeoutMillis", "taskPulseMillis",
-                    "pingTimeoutMillis", "pingPulseMillis", "maxFiles", "javaHome", "maxRestarts",
-                    "numRestarts",
+    private static final List<String> ONLY_IN_FORK_MODE = Arrays.asList(
+            new String[]{"taskTimeoutMillis", "taskPulseMillis", "pingTimeoutMillis",
+                    "pingPulseMillis", "maxFiles", "javaHome", "maxRestarts", "numRestarts",
                     "forkedStatusFile", "maxForkedStartupMillis", "tmpFilePrefix"});
 
+        /*
+    TODO: integrate these settings:
+     * Number of milliseconds to wait to start forked process.
+    public static final long DEFAULT_FORKED_PROCESS_STARTUP_MILLIS = 60000;
+
+     * Maximum number of milliseconds to wait to shutdown forked process to allow
+     * for current parses to complete.
+    public static final long DEFAULT_FORKED_PROCESS_SHUTDOWN_MILLIS = 30000;
+
+    private long forkedProcessStartupMillis = DEFAULT_FORKED_PROCESS_STARTUP_MILLIS;
+
+    private long forkedProcessShutdownMillis = DEFAULT_FORKED_PROCESS_SHUTDOWN_MILLIS;
+
+     */
+    private int maxRestarts = -1;
+    private long maxFiles = 100000;
+    private long taskTimeoutMillis = DEFAULT_TASK_TIMEOUT_MILLIS;
+    private long taskPulseMillis = DEFAULT_TASK_PULSE_MILLIS;
+    private long maxforkedStartupMillis = DEFAULT_FORKED_STARTUP_MILLIS;
+    private boolean enableUnsecureFeatures = false;
+    private String cors = "";
+    private boolean returnStackTrace = false;
+    private boolean noFork = false;
+    private String tempFilePrefix = "apache-tika-server-forked-tmp-"; //can be set for debugging
+    private List<String> forkedJvmArgs = new ArrayList<>();
+    private String idBase = UUID.randomUUID().toString();
+    private String portString = Integer.toString(DEFAULT_PORT);
+    private int port = DEFAULT_PORT;
+    private String host = DEFAULT_HOST;
+    private int digestMarkLimit = DEFAULT_DIGEST_MARK_LIMIT;
+    private String digest = "";
+    //debug or info only
+    private String logLevel = "";
+    private Path configPath;
+    private List<String> endPoints = new ArrayList<>();
+    //these should only be set in the forked process
+    //and they are automatically set by the forking process
+    private String forkedStatusFile;
+    private int numRestarts = 0;
+
     /**
      * Config with only the defaults
      */
@@ -75,7 +124,8 @@ public class TikaServerConfig {
         return new TikaServerConfig();
     }
 
-    public static TikaServerConfig load(CommandLine commandLine) throws IOException, TikaException {
+    public static TikaServerConfig load(CommandLine commandLine)
+            throws IOException, TikaException {
 
         TikaServerConfig config = null;
         Set<String> settings = new HashSet<>();
@@ -92,6 +142,7 @@ public class TikaServerConfig {
             try {
                 config.setPort(Integer.parseInt(commandLine.getOptionValue("p")));
             } catch (NumberFormatException e) {
+                //swallow
             }
             config.setPortString(commandLine.getOptionValue("p"));
             settings.add("port");
@@ -124,94 +175,134 @@ public class TikaServerConfig {
         return config;
     }
 
-    static TikaServerConfig load (Path p, Set<String> settings) throws IOException, TikaException {
+    static TikaServerConfig load(Path p, Set<String> settings) throws IOException, TikaException {
         try (InputStream is = Files.newInputStream(p)) {
             return TikaServerConfig.load(is, settings);
         }
     }
 
-        /*
-    TODO: integrate these settings:
-     * Number of milliseconds to wait to start forked process.
-    public static final long DEFAULT_FORKED_PROCESS_STARTUP_MILLIS = 60000;
-
-     * Maximum number of milliseconds to wait to shutdown forked process to allow
-     * for current parses to complete.
-    public static final long DEFAULT_FORKED_PROCESS_SHUTDOWN_MILLIS = 30000;
-
-    private long forkedProcessStartupMillis = DEFAULT_FORKED_PROCESS_STARTUP_MILLIS;
-
-    private long forkedProcessShutdownMillis = DEFAULT_FORKED_PROCESS_SHUTDOWN_MILLIS;
-
-     */
-
-
-
-
-    /**
-     * Number of milliseconds to wait per server task (parse, detect, unpack, translate,
-     * etc.) before timing out and shutting down the forked process.
-     */
-    public static final long DEFAULT_TASK_TIMEOUT_MILLIS = 120000;
-
-    /**
-     * How often to check to see that the task hasn't timed out
-     */
-    public static final long DEFAULT_TASK_PULSE_MILLIS = 10000;
-
-    /**
-     * Number of milliseconds to wait for forked process to startup
-     */
-    public static final long DEFAULT_FORKED_STARTUP_MILLIS = 120000;
-
-    private int maxRestarts = -1;
-    private long maxFiles = 100000;
-    private long taskTimeoutMillis = DEFAULT_TASK_TIMEOUT_MILLIS;
-    private long taskPulseMillis = DEFAULT_TASK_PULSE_MILLIS;
-    private long maxforkedStartupMillis = DEFAULT_FORKED_STARTUP_MILLIS;
-    private boolean enableUnsecureFeatures = false;
-    private String cors = "";
-    private boolean returnStackTrace = false;
-    private boolean noFork = false;
-    private String tempFilePrefix = "apache-tika-server-forked-tmp-"; //can be set for debugging
-    private List<String> forkedJvmArgs = new ArrayList<>();
-    private String idBase = UUID.randomUUID().toString();
-    private String portString = Integer.toString(DEFAULT_PORT);
-    private int port = DEFAULT_PORT;
-    private String host = DEFAULT_HOST;
-
-    private int digestMarkLimit = DEFAULT_DIGEST_MARK_LIMIT;
-    private String digest = "";
-    //debug or info only
-    private String logLevel = "";
-    private Path configPath;
-    private List<String> endPoints = new ArrayList<>();
+    static TikaServerConfig load(InputStream is, Set<String> settings)
+            throws IOException, TikaException {
+        Node properties = null;
+        try {
+            properties = XMLReaderUtils.buildDOM(is).getDocumentElement();
+        } catch (SAXException e) {
+            throw new IOException(e);
+        }
+        if (!properties.getLocalName().equals("properties")) {
+            throw new TikaConfigException("expect settings as root node");
+        }
+        NodeList children = properties.getChildNodes();
+        TikaServerConfig config = new TikaServerConfig();
 
-    //these should only be set in the forked process
-    //and they are automatically set by the forking process
-    private String forkedStatusFile;
-    private int numRestarts = 0;
+        for (int i = 0; i < children.getLength(); i++) {
+            Node child = children.item(i);
+            if ("server".equals(child.getLocalName())) {
+                loadServerConfig(child, config, settings);
+            }
+        }
+        return config;
+    }
 
-    private void setNoFork(boolean noFork) {
-        this.noFork = noFork;
+    private static Set<String> loadServerConfig(Node server, TikaServerConfig config,
+                                                Set<String> settings) throws TikaConfigException {
+        NodeList params = server.getChildNodes();
+        for (int i = 0; i < params.getLength(); i++) {
+            Node param = params.item(i);
+            String localName = param.getLocalName();
+            String txt = param.getTextContent();
+            if ("configPath".equals(localName)) {
+                throw new TikaConfigException(
+                        "can't currently " + "set config path within a config file");
+            }
+            if ("endpoints".equals(localName)) {
+                config.addEndPoints(loadStringList("endpoint", param.getChildNodes()));
+            } else if ("forkedJVMArgs".equals(localName)) {
+                config.addJVMArgs(loadStringList("arg", param.getChildNodes()));
+            } else if (localName != null && txt != null) {
+                if ("port".equals(localName)) {
+                    config.setPortString(txt);
+                } else {
+                    tryToSet(config, localName, txt);
+                }
+            }
+            if (localName != null && txt != null) {
+                settings.add(localName);
+            }
+        }
+        return settings;
     }
 
-    private void setPortString(String portString) {
-        this.portString = portString;
+    private static void tryToSet(TikaServerConfig config, String name, String value)
+            throws TikaConfigException {
+        String setter = "set" + name.substring(0, 1).toUpperCase(Locale.US) + name.substring(1);
+        Class[] types = new Class[]{String.class, boolean.class, int.class, long.class};
+        for (Class t : types) {
+            try {
+                Method m = TikaServerConfig.class.getMethod(setter, t);
+                if (t == int.class) {
+                    try {
+                        m.invoke(config, Integer.parseInt(value));
+                        return;
+                    } catch (IllegalAccessException | InvocationTargetException e) {
+                        throw new TikaConfigException("bad parameter " + setter, e);
+                    }
+                } else if (t == long.class) {
+                    try {
+                        m.invoke(config, Long.parseLong(value));
+                        return;
+                    } catch (IllegalAccessException | InvocationTargetException e) {
+                        throw new TikaConfigException("bad parameter " + setter, e);
+                    }
+                } else if (t == boolean.class) {
+                    try {
+                        m.invoke(config, Boolean.parseBoolean(value));
+                        return;
+                    } catch (IllegalAccessException | InvocationTargetException e) {
+                        throw new TikaConfigException("bad parameter " + setter, e);
+                    }
+                } else {
+                    try {
+                        m.invoke(config, value);
+                        return;
+                    } catch (IllegalAccessException | InvocationTargetException e) {
+                        throw new TikaConfigException("bad parameter " + setter, e);
+                    }
+                }
+            } catch (NoSuchMethodException e) {
+                //swallow
+            }
+        }
+        throw new TikaConfigException("Couldn't find setter: " + setter);
     }
 
-    private void setId(String id) {
-        this.idBase = id;
+    private static List<String> loadStringList(String itemName, NodeList nodelist) {
+        List<String> list = new ArrayList<>();
+        for (int i = 0; i < nodelist.getLength(); i++) {
+            Node n = nodelist.item(i);
+            if (itemName.equals(n.getLocalName())) {
+                list.add(n.getTextContent());
+            }
+        }
+        return list;
     }
 
     public boolean isNoFork() {
         return noFork;
     }
 
+    private void setNoFork(boolean noFork) {
+        this.noFork = noFork;
+    }
+
     public String getPortString() {
         return portString;
     }
 
+    private void setPortString(String portString) {
+        this.portString = portString;
+    }
+
     public int getPort() {
         return port;
     }
@@ -223,6 +314,7 @@ public class TikaServerConfig {
     /**
      * How long to wait for a task before shutting down the forked server process
      * and restarting it.
+     *
      * @return
      */
     public long getTaskTimeoutMillis() {
@@ -230,21 +322,24 @@ public class TikaServerConfig {
     }
 
     /**
+     * @param taskTimeoutMillis number of milliseconds to allow per task
+     *                          (parse, detection, unzipping, etc.)
+     */
+    public void setTaskTimeoutMillis(long taskTimeoutMillis) {
+        this.taskTimeoutMillis = taskTimeoutMillis;
+    }
+
+    /**
      * How often to check to see that a task has timed out
+     *
      * @return
      */
     public long getTaskPulseMillis() {
         return taskPulseMillis;
     }
 
-
-    /**
-     *
-     * @param taskTimeoutMillis number of milliseconds to allow per task
-     *                          (parse, detection, unzipping, etc.)
-     */
-    public void setTaskTimeoutMillis(long taskTimeoutMillis) {
-        this.taskTimeoutMillis = taskTimeoutMillis;
+    public void setTaskPulseMillis(long taskPulseMillis) {
+        this.taskPulseMillis = taskPulseMillis;
     }
 
     public int getMaxRestarts() {
@@ -255,16 +350,10 @@ public class TikaServerConfig {
         this.maxRestarts = maxRestarts;
     }
 
-    public void setHost(String host) {
-        if ("*".equals(host)) {
-            host = "0.0.0.0";
-        }
-        this.host = host;
-    }
-
     /**
      * Maximum time in millis to allow for the forked process to startup
      * or restart
+     *
      * @return
      */
     public long getMaxForkedStartupMillis() {
@@ -286,9 +375,7 @@ public class TikaServerConfig {
         args.add(id);
         if (hasConfigFile()) {
             args.add("-c");
-            args.add(
-                    ProcessUtils.escapeCommandLine(
-                            configPath.toAbsolutePath().toString()));
+            args.add(ProcessUtils.escapeCommandLine(configPath.toAbsolutePath().toString()));
         }
         return args;
     }
@@ -299,6 +386,7 @@ public class TikaServerConfig {
 
     /**
      * full path to the java executable
+     *
      * @return
      */
     public String getJavaPath() {
@@ -318,6 +406,10 @@ public class TikaServerConfig {
         return enableUnsecureFeatures;
     }
 
+    public void setEnableUnsecureFeatures(boolean enableUnsecureFeatures) {
+        this.enableUnsecureFeatures = enableUnsecureFeatures;
+    }
+
     private void validateConsistency(Set<String> settings) throws TikaConfigException {
         if (host == null) {
             throw new TikaConfigException("Must specify 'host'");
@@ -326,30 +418,29 @@ public class TikaServerConfig {
             try {
                 setPort(Integer.parseInt(portString));
             } catch (NumberFormatException e) {
-
+                //swallow
             }
         }
 
         if (isNoFork()) {
             for (String onlyFork : ONLY_IN_FORK_MODE) {
                 if (settings.contains(onlyFork)) {
-                    throw new TikaConfigException("Can't set param="
-                            + onlyFork + "if you've selected noFork");
+                    throw new TikaConfigException(
+                            "Can't set param=" + onlyFork + "if you've selected noFork");
                 }
             }
         }
         //add headless if not already configured
-            boolean foundHeadlessOption = false;
-            for (String arg : forkedJvmArgs) {
-                if (arg.contains("java.awt.headless")) {
-                    foundHeadlessOption = true;
-                }
-            }
-            //if user has already specified headless...don't modify
-            if (! foundHeadlessOption) {
-                forkedJvmArgs.add("-Djava.awt.headless=true");
+        boolean foundHeadlessOption = false;
+        for (String arg : forkedJvmArgs) {
+            if (arg.contains("java.awt.headless")) {
+                foundHeadlessOption = true;
             }
-
+        }
+        //if user has already specified headless...don't modify
+        if (!foundHeadlessOption) {
+            forkedJvmArgs.add("-Djava.awt.headless=true");
+        }
 
 
     }
@@ -358,6 +449,17 @@ public class TikaServerConfig {
         return host;
     }
 
+    public void setHost(String host) {
+        if ("*".equals(host)) {
+            host = "0.0.0.0";
+        }
+        this.host = host;
+    }
+
+    public String getLogLevel() {
+        return logLevel;
+    }
+
     public void setLogLevel(String level) throws TikaConfigException {
         if (level.equals("debug") || level.equals("info")) {
             this.logLevel = level;
@@ -365,47 +467,56 @@ public class TikaServerConfig {
             throw new TikaConfigException("log level must be one of: 'debug' or 'info'");
         }
     }
-    public String getLogLevel() {
-        return logLevel;
-    }
 
     /**
-     *
      * @return the origin url for cors, can be "*"
      */
     public String getCors() {
         return cors;
     }
 
-    public boolean hasConfigFile() {
-        return configPath != null;
+    public void setCors(String cors) {
+        this.cors = cors;
     }
 
-    public void setConfigPath(String path) {
-        this.configPath = Paths.get(path);
+    public boolean hasConfigFile() {
+        return configPath != null;
     }
 
     public Path getConfigPath() {
         return configPath;
     }
 
+    public void setConfigPath(String path) {
+        this.configPath = Paths.get(path);
+    }
+
     public int getDigestMarkLimit() {
         return digestMarkLimit;
     }
 
+    public void setDigestMarkLimit(int digestMarkLimit) {
+        this.digestMarkLimit = digestMarkLimit;
+    }
+
     /**
      * digest configuration string, e.g. md5 or sha256, alternately w 16 or 32 encoding,
      * e.g. md5:32,sha256:16 would result in two digests per file
+     *
      * @return
      */
     public String getDigest() {
         return digest;
     }
 
+    public void setDigest(String digest) {
+        this.digest = digest;
+    }
 
     /**
      * maximum number of files before the forked server restarts.
      * This is useful for avoiding any slow-building memory leaks/bloat.
+     *
      * @return
      */
     public long getMaxFiles() {
@@ -433,6 +544,10 @@ public class TikaServerConfig {
         return idBase;
     }
 
+    private void setId(String id) {
+        this.idBase = id;
+    }
+
     private void addEndPoints(List<String> endPoints) {
         this.endPoints.addAll(endPoints);
     }
@@ -441,8 +556,8 @@ public class TikaServerConfig {
         this.forkedJvmArgs.addAll(args);
     }
 
-    public void setEnableUnsecureFeatures(boolean enableUnsecureFeatures) {
-        this.enableUnsecureFeatures = enableUnsecureFeatures;
+    public int getNumRestarts() {
+        return numRestarts;
     }
 
     /******
@@ -454,10 +569,6 @@ public class TikaServerConfig {
         this.numRestarts = numRestarts;
     }
 
-    public int getNumRestarts() {
-        return numRestarts;
-    }
-
     public String getForkedStatusFile() {
         return forkedStatusFile;
     }
@@ -466,156 +577,22 @@ public class TikaServerConfig {
         this.forkedStatusFile = forkedStatusFile;
     }
 
-    public void setCors(String cors) {
-        this.cors = cors;
-    }
-
-    public void setTaskPulseMillis(long taskPulseMillis) {
-        this.taskPulseMillis = taskPulseMillis;
-    }
-
     public void setMaxforkedStartupMillis(long maxforkedStartupMillis) {
         this.maxforkedStartupMillis = maxforkedStartupMillis;
     }
 
-    public void setDigestMarkLimit(int digestMarkLimit) {
-        this.digestMarkLimit = digestMarkLimit;
-    }
-
-    public void setDigest(String digest) {
-        this.digest = digest;
-    }
-
     @Override
     public String toString() {
-        return "TikaServerConfig{" +
-                "maxRestarts=" + maxRestarts +
-                ", maxFiles=" + maxFiles +
-                ", taskTimeoutMillis=" + taskTimeoutMillis +
-                ", taskPulseMillis=" + taskPulseMillis +
-                ", maxforkedStartupMillis=" + maxforkedStartupMillis +
-                ", enableUnsecureFeatures=" + enableUnsecureFeatures +
-                ", cors='" + cors + '\'' +
-                ", returnStackTrace=" + returnStackTrace +
-                ", noFork=" + noFork +
-                ", tempFilePrefix='" + tempFilePrefix + '\'' +
-                ", forkedJvmArgs=" + forkedJvmArgs +
-                ", idBase='" + idBase + '\'' +
-                ", portString='" + portString + '\'' +
-                ", port=" + port +
-                ", host='" + host + '\'' +
-                ", digestMarkLimit=" + digestMarkLimit +
-                ", digest='" + digest + '\'' +
-                ", logLevel='" + logLevel + '\'' +
-                ", configPath=" + configPath +
-                ", endPoints=" + endPoints +
-                ", forkedStatusFile='" + forkedStatusFile + '\'' +
-                ", numRestarts=" + numRestarts +
-                '}';
-    }
-
-    static TikaServerConfig load(InputStream is, Set<String> settings) throws IOException, TikaException {
-        Node properties  = null;
-        try {
-            properties = XMLReaderUtils.buildDOM(is).getDocumentElement();
-        } catch (SAXException e) {
-            throw new IOException(e);
-        }
-        if (! properties.getLocalName().equals("properties")) {
-            throw new TikaConfigException("expect settings as root node");
-        }
-        NodeList children = properties.getChildNodes();
-        TikaServerConfig config = new TikaServerConfig();
-
-        for (int i = 0; i < children.getLength(); i++) {
-            Node child = children.item(i);
-            if ("server".equals(child.getLocalName())) {
-                loadServerConfig(child, config, settings);
-            }
-        }
-        return config;
-    }
-
-    private static Set<String> loadServerConfig(Node server,
-                                                TikaServerConfig config, Set<String> settings)
-            throws TikaConfigException {
-        NodeList params = server.getChildNodes();
-        for (int i = 0; i < params.getLength(); i++) {
-            Node param = params.item(i);
-            String localName = param.getLocalName();
-            String txt = param.getTextContent();
-            if ("configPath".equals(localName)) {
-                throw new TikaConfigException("can't currently " +
-                        "set config path within a config file");
-            }
-            if ("endpoints".equals(localName)) {
-                config.addEndPoints(loadStringList("endpoint", param.getChildNodes()));
-            } else if ("forkedJVMArgs".equals(localName)) {
-                config.addJVMArgs(loadStringList("arg", param.getChildNodes()));
-            } else if (localName != null && txt != null) {
-                if ("port".equals(localName)) {
-                    config.setPortString(txt);
-                } else {
-                    tryToSet(config, localName, txt);
-                }
-            }
-            if (localName != null && txt != null) {
-                settings.add(localName);
-            }
-        }
-        return settings;
-    }
-
-    private static void tryToSet(TikaServerConfig config, String name, String value) throws TikaConfigException {
-        String setter = "set"+name.substring(0,1).toUpperCase(Locale.US)+name.substring(1);
-        Class[] types = new Class[]{String.class, boolean.class, int.class, long.class};
-        for (Class t : types) {
-            try {
-                Method m = TikaServerConfig.class.getMethod(setter, t);
-                if (t == int.class) {
-                    try {
-                        m.invoke(config, Integer.parseInt(value));
-                        return;
-                    } catch (IllegalAccessException|InvocationTargetException e) {
-                        throw new TikaConfigException("bad parameter "+setter, e);
-                    }
-                } else if (t == long.class) {
-                    try {
-                        m.invoke(config, Long.parseLong(value));
-                        return;
-                    } catch (IllegalAccessException | InvocationTargetException e) {
-                        throw new TikaConfigException("bad parameter " + setter, e);
-                    }
-                } else if (t == boolean.class) {
-                    try {
-                        m.invoke(config, Boolean.parseBoolean(value));
-                        return;
-                    } catch (IllegalAccessException | InvocationTargetException e) {
-                        throw new TikaConfigException("bad parameter " + setter, e);
-                    }
-                } else {
-                    try {
-                        m.invoke(config, value);
-                        return;
-                    } catch (IllegalAccessException|InvocationTargetException e) {
-                        throw new TikaConfigException("bad parameter "+setter, e);
-                    }
-                }
-            } catch (NoSuchMethodException e) {
-                //swallow
-            }
-        }
-        throw new TikaConfigException("Couldn't find setter: "+setter);
-    }
-
-    private static List<String> loadStringList(String itemName, NodeList nodelist) {
-        List<String> list = new ArrayList<>();
-        for (int i = 0; i < nodelist.getLength(); i++) {
-            Node n = nodelist.item(i);
-            if (itemName.equals(n.getLocalName())) {
-                list.add(n.getTextContent());
-            }
-        }
-        return list;
+        return "TikaServerConfig{" + "maxRestarts=" + maxRestarts + ", maxFiles=" + maxFiles +
+                ", taskTimeoutMillis=" + taskTimeoutMillis + ", taskPulseMillis=" +
+                taskPulseMillis + ", maxforkedStartupMillis=" + maxforkedStartupMillis +
+                ", enableUnsecureFeatures=" + enableUnsecureFeatures + ", cors='" + cors + '\'' +
+                ", returnStackTrace=" + returnStackTrace + ", noFork=" + noFork +
+                ", tempFilePrefix='" + tempFilePrefix + '\'' + ", forkedJvmArgs=" + forkedJvmArgs +
+                ", idBase='" + idBase + '\'' + ", portString='" + portString + '\'' + ", port=" +
+                port + ", host='" + host + '\'' + ", digestMarkLimit=" + digestMarkLimit +
+                ", digest='" + digest + '\'' + ", logLevel='" + logLevel + '\'' + ", configPath=" +
+                configPath + ", endPoints=" + endPoints + ", forkedStatusFile='" +
+                forkedStatusFile + '\'' + ", numRestarts=" + numRestarts + '}';
     }
 }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerParseException.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerParseException.java
index 898a623..a3cea19 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerParseException.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerParseException.java
@@ -1,5 +1,3 @@
-package org.apache.tika.server.core;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,6 +14,7 @@ package org.apache.tika.server.core;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.tika.server.core;
 
 import javax.ws.rs.WebApplicationException;
 
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerParseExceptionMapper.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerParseExceptionMapper.java
index 4401d2e..18a829a 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerParseExceptionMapper.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerParseExceptionMapper.java
@@ -1,4 +1,3 @@
-package org.apache.tika.server.core;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,18 +14,17 @@ package org.apache.tika.server.core;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.ext.ExceptionMapper;
-import javax.ws.rs.ext.Provider;
+package org.apache.tika.server.core;
 
 
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.io.Writer;
-
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
 
 import org.apache.tika.exception.EncryptedDocumentException;
 import org.apache.tika.exception.TikaException;
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerProcess.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerProcess.java
index e2dc773..9dd6787 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerProcess.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/TikaServerProcess.java
@@ -17,10 +17,26 @@
 
 package org.apache.tika.server.core;
 
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.ExecutorCompletionService;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.DefaultParser;
-import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
 import org.apache.cxf.binding.BindingFactoryManager;
 import org.apache.cxf.endpoint.Server;
@@ -32,6 +48,9 @@ import org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter;
 import org.apache.cxf.service.factory.ServiceConstructionException;
 import org.apache.cxf.transport.common.gzip.GZIPInInterceptor;
 import org.apache.cxf.transport.common.gzip.GZIPOutInterceptor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import org.apache.tika.Tika;
 import org.apache.tika.config.ServiceLoader;
 import org.apache.tika.config.TikaConfig;
@@ -66,27 +85,6 @@ import org.apache.tika.server.core.writer.TarWriter;
 import org.apache.tika.server.core.writer.TextMessageBodyWriter;
 import org.apache.tika.server.core.writer.ZipWriter;
 import org.apache.tika.utils.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.UUID;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorCompletionService;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
 
 public class TikaServerProcess {
 
@@ -99,16 +97,20 @@ public class TikaServerProcess {
         Options options = new Options();
         options.addOption("h", "host", true, "host name, use * for all)");
         options.addOption("p", "port", true, "listen port");
-        options.addOption("c", "config", true, "Tika Configuration file to override default config with.");
-        options.addOption("i", "id", true, "id to use for server in server status endpoint");
+        options.addOption("c", "config", true,
+                "Tika Configuration file to override default config with.");
+        options.addOption("i", "id", true,
+                "id to use for server in server status endpoint");
         options.addOption("?", "help", false, "this help message");
         options.addOption("forkedStatusFile", true,
                 "Not allowed in -noFork: temporary file used to communicate " +
-                        "with forking process -- do not use this! Should only be invoked by forking process.");
+                        "with forking process -- do not use this! " +
+                        "Should only be invoked by forking process.");
         options.addOption("tmpFilePrefix", true,
                 "Not allowed in -noFork: prefix for temp file - for debugging only");
         options.addOption("numRestarts", true,
-                "Not allowed in -noFork: number of times that the forked server has had to be restarted.");
+                "Not allowed in -noFork: number of times that " +
+                        "the forked server has had to be restarted.");
         return options;
     }
 
@@ -139,13 +141,15 @@ public class TikaServerProcess {
         }
 
         ServerDetails serverDetails = initServer(tikaServerConfig, asyncResource);
-        ExecutorService executorService = Executors.newFixedThreadPool(numAsyncParserThreads+1);
-        ExecutorCompletionService<Integer> executorCompletionService = new ExecutorCompletionService<>(executorService);
+        ExecutorService executorService = Executors.newFixedThreadPool(numAsyncParserThreads + 1);
+        ExecutorCompletionService<Integer> executorCompletionService =
+                new ExecutorCompletionService<>(executorService);
 
         if (asyncFetchEmitQueue != null) {
             executorCompletionService.submit(new AsyncEmitter(asyncEmitData));
             for (int i = 0; i < numAsyncParserThreads; i++) {
-                executorCompletionService.submit(new AsyncParser(asyncFetchEmitQueue, asyncEmitData));
+                executorCompletionService
+                        .submit(new AsyncParser(asyncFetchEmitQueue, asyncEmitData));
             }
         }
         try {
@@ -156,9 +160,7 @@ public class TikaServerProcess {
             System.exit(DO_NOT_RESTART_EXIT_VALUE);
         }
 
-        LOG.info("Started Apache Tika server {} at {}",
-                serverDetails.serverId,
-                serverDetails.url);
+        LOG.info("Started Apache Tika server {} at {}", serverDetails.serverId, serverDetails.url);
 
         while (true) {
             Future<Integer> future = executorCompletionService.poll(1, TimeUnit.MINUTES);
@@ -170,7 +172,7 @@ public class TikaServerProcess {
 
     //This returns the server, configured and ready to be started.
     private static ServerDetails initServer(TikaServerConfig tikaServerConfig,
-                                     AsyncResource asyncResource) throws Exception {
+                                            AsyncResource asyncResource) throws Exception {
         String host = tikaServerConfig.getHost();
         int port = tikaServerConfig.getPort();
 
@@ -178,27 +180,26 @@ public class TikaServerProcess {
         TikaConfig tika;
 
         if (tikaServerConfig.hasConfigFile()) {
-            LOG.info("Using custom config: {}",
-                    tikaServerConfig.getConfigPath());
+            LOG.info("Using custom config: {}", tikaServerConfig.getConfigPath());
             tika = new TikaConfig(tikaServerConfig.getConfigPath());
         } else {
             tika = TikaConfig.getDefaultConfig();
         }
 
         DigestingParser.Digester digester = null;
-        if (! StringUtils.isBlank(tikaServerConfig.getDigest())) {
+        if (!StringUtils.isBlank(tikaServerConfig.getDigest())) {
             try {
-                digester = new CommonsDigester(
-                        tikaServerConfig.getDigestMarkLimit(),
+                digester = new CommonsDigester(tikaServerConfig.getDigestMarkLimit(),
                         tikaServerConfig.getDigest());
             } catch (IllegalArgumentException commonsException) {
                 try {
-                    digester = new BouncyCastleDigester(
-                            tikaServerConfig.getDigestMarkLimit(),
+                    digester = new BouncyCastleDigester(tikaServerConfig.getDigestMarkLimit(),
                             tikaServerConfig.getDigest());
                 } catch (IllegalArgumentException bcException) {
-                    throw new IllegalArgumentException("Tried both CommonsDigester (" + commonsException.getMessage() +
-                            ") and BouncyCastleDigester (" + bcException.getMessage() + ")", bcException);
+                    throw new IllegalArgumentException(
+                            "Tried both CommonsDigester (" + commonsException.getMessage() +
+                                    ") and BouncyCastleDigester (" + bcException.getMessage() + ")",
+                            bcException);
                 }
             }
         }
@@ -218,18 +219,16 @@ public class TikaServerProcess {
         if (tikaServerConfig.isNoFork()) {
             serverStatus = new ServerStatus(serverId, 0, true);
         } else {
-            serverStatus = new ServerStatus(serverId,
-                    tikaServerConfig.getNumRestarts(),
-                    false);
+            serverStatus = new ServerStatus(serverId, tikaServerConfig.getNumRestarts(), false);
             //redirect!!!
             InputStream in = System.in;
             System.setIn(new ByteArrayInputStream(new byte[0]));
             System.setOut(System.err);
 
             String forkedStatusFile = tikaServerConfig.getForkedStatusFile();
-            Thread serverThread =
-                    new Thread(new ServerStatusWatcher(serverStatus, in,
-                            Paths.get(forkedStatusFile), tikaServerConfig));
+            Thread serverThread = new Thread(
+                    new ServerStatusWatcher(serverStatus, in, Paths.get(forkedStatusFile),
+                            tikaServerConfig));
 
             serverThread.start();
         }
@@ -238,19 +237,16 @@ public class TikaServerProcess {
 
         List<ResourceProvider> resourceProviders = new ArrayList<>();
         List<Object> providers = new ArrayList<>();
-        loadAllProviders(tikaServerConfig, asyncResource, serverStatus,
-                resourceProviders, providers);
+        loadAllProviders(tikaServerConfig, asyncResource, serverStatus, resourceProviders,
+                providers);
 
         sf.setResourceProviders(resourceProviders);
 
         sf.setProviders(providers);
 
         //set compression interceptors
-        sf.setOutInterceptors(
-                Collections.singletonList(new GZIPOutInterceptor())
-        );
-        sf.setInInterceptors(
-                Collections.singletonList(new GZIPInInterceptor()));
+        sf.setOutInterceptors(Collections.singletonList(new GZIPOutInterceptor()));
+        sf.setInInterceptors(Collections.singletonList(new GZIPInInterceptor()));
 
         String url = "http://" + host + ":" + port + "/";
         sf.setAddress(url);
@@ -269,12 +265,11 @@ public class TikaServerProcess {
                                          AsyncResource asyncResource, ServerStatus serverStatus,
                                          List<ResourceProvider> resourceProviders,
                                          List<Object> writers) {
-        List<ResourceProvider> tmpCoreProviders = loadCoreProviders(
-                tikaServerConfig, asyncResource, serverStatus);
+        List<ResourceProvider> tmpCoreProviders =
+                loadCoreProviders(tikaServerConfig, asyncResource, serverStatus);
 
         resourceProviders.addAll(tmpCoreProviders);
-        resourceProviders.add(new SingletonResourceProvider(
-                new TikaWelcome(tmpCoreProviders)));
+        resourceProviders.add(new SingletonResourceProvider(new TikaWelcome(tmpCoreProviders)));
 
         //for now, just load everything
         writers.add(new TarWriter());
@@ -284,8 +279,7 @@ public class TikaServerProcess {
         writers.add(new JSONMessageBodyWriter());
         writers.add(new TextMessageBodyWriter());
         writers.addAll(loadWriterServices());
-        writers.add(new TikaServerParseExceptionMapper(
-                tikaServerConfig.isReturnStackTrace()));
+        writers.add(new TikaServerParseExceptionMapper(tikaServerConfig.isReturnStackTrace()));
         writers.add(new JSONObjWriter());
 
         TikaLoggingFilter logFilter = null;
@@ -305,22 +299,27 @@ public class TikaServerProcess {
             corsFilter = new CrossOriginResourceSharingFilter();
             String url = tikaServerConfig.getCors();
             List<String> origins = new ArrayList<>();
-            if (!url.equals("*")) origins.add(url);         // Empty list allows all origins.
+            if (!url.equals("*")) {
+                origins.add(url);         // Empty list allows all origins.
+            }
             corsFilter.setAllowOrigins(origins);
             writers.add(corsFilter);
         }
 
     }
 
-    private static List<ResourceProvider> loadCoreProviders(
-            TikaServerConfig tikaServerConfig, AsyncResource asyncResource, ServerStatus serverStatus) {
+    private static List<ResourceProvider> loadCoreProviders(TikaServerConfig tikaServerConfig,
+                                                            AsyncResource asyncResource,
+                                                            ServerStatus serverStatus) {
         List<ResourceProvider> resourceProviders = new ArrayList<>();
         if (tikaServerConfig.getEndPoints().size() == 0) {
             resourceProviders.add(new SingletonResourceProvider(new MetadataResource()));
             resourceProviders.add(new SingletonResourceProvider(new RecursiveMetadataResource()));
-            resourceProviders.add(new SingletonResourceProvider(new DetectorResource(serverStatus)));
+            resourceProviders
+                    .add(new SingletonResourceProvider(new DetectorResource(serverStatus)));
             resourceProviders.add(new SingletonResourceProvider(new LanguageResource()));
-            resourceProviders.add(new SingletonResourceProvider(new TranslateResource(serverStatus)));
+            resourceProviders
+                    .add(new SingletonResourceProvider(new TranslateResource(serverStatus)));
             resourceProviders.add(new SingletonResourceProvider(new TikaResource()));
             resourceProviders.add(new SingletonResourceProvider(new UnpackerResource()));
             resourceProviders.add(new SingletonResourceProvider(new TikaMimeTypes()));
@@ -330,7 +329,8 @@ public class TikaServerProcess {
             if (tikaServerConfig.isEnableUnsecureFeatures()) {
                 resourceProviders.add(new SingletonResourceProvider(new EmitterResource()));
                 resourceProviders.add(new SingletonResourceProvider(asyncResource));
-                resourceProviders.add(new SingletonResourceProvider(new TikaServerStatus(serverStatus)));
+                resourceProviders
+                        .add(new SingletonResourceProvider(new TikaServerStatus(serverStatus)));
             }
             resourceProviders.addAll(loadResourceServices());
             return resourceProviders;
@@ -339,13 +339,16 @@ public class TikaServerProcess {
             if ("meta".equals(endPoint)) {
                 resourceProviders.add(new SingletonResourceProvider(new MetadataResource()));
             } else if ("rmeta".equals(endPoint)) {
-                resourceProviders.add(new SingletonResourceProvider(new RecursiveMetadataResource()));
+                resourceProviders
+                        .add(new SingletonResourceProvider(new RecursiveMetadataResource()));
             } else if ("detect".equals(endPoint)) {
-                resourceProviders.add(new SingletonResourceProvider(new DetectorResource(serverStatus)));
+                resourceProviders
+                        .add(new SingletonResourceProvider(new DetectorResource(serverStatus)));
             } else if ("language".equals(endPoint)) {
                 resourceProviders.add(new SingletonResourceProvider(new LanguageResource()));
             } else if ("translate".equals(endPoint)) {
-                resourceProviders.add(new SingletonResourceProvider(new TranslateResource(serverStatus)));
+                resourceProviders
+                        .add(new SingletonResourceProvider(new TranslateResource(serverStatus)));
             } else if ("tika".equals(endPoint)) {
                 resourceProviders.add(new SingletonResourceProvider(new TikaResource()));
             } else if ("unpack".equals(endPoint)) {
@@ -363,7 +366,8 @@ public class TikaServerProcess {
             } else if ("async".equals(endPoint)) {
                 resourceProviders.add(new SingletonResourceProvider(asyncResource));
             } else if ("status".equals(endPoint)) {
-                resourceProviders.add(new SingletonResourceProvider(new TikaServerStatus(serverStatus)));
+                resourceProviders
+                        .add(new SingletonResourceProvider(new TikaServerStatus(serverStatus)));
             }
             resourceProviders.addAll(loadResourceServices());
         }
@@ -378,7 +382,9 @@ public class TikaServerProcess {
             if (supportedFetchers.size() == 0) {
                 sb.append("There are no fetchers specified in the TikaConfig");
             } else {
-                sb.append("The following fetchers are available to whomever has access to this server:\n");
+                sb.append(
+                        "The following fetchers are available to whomever has " +
+                                "access to this server:\n");
                 for (String p : supportedFetchers) {
                     sb.append(p).append("\n");
                 }
@@ -387,7 +393,9 @@ public class TikaServerProcess {
             if (supportedFetchers.size() == 0) {
                 sb.append("There are no emitters specified in the TikaConfig");
             } else {
-                sb.append("The following emitters are available to whomever has access to this server:\n");
+                sb.append(
+                        "The following emitters are available to whomever has " +
+                                "access to this server:\n");
                 for (String e : emitters) {
                     sb.append(e).append("\n");
                 }
@@ -395,30 +403,40 @@ public class TikaServerProcess {
             LOG.info(sb.toString());
         } else {
             if (tika.getEmitterManager().getSupported().size() > 0) {
-                String warn = "enableUnsecureFeatures has not been set to 'true' in the server config file.\n" +
-                        "The " + tika.getEmitterManager().getSupported().size() + " emitter(s) that you've\n" +
-                        "specified in TikaConfig will not be available on the /emit or /async endpoints.\n" +
-                        "To enable your emitters, start tika-server with " +
-                        "<enableUnsecureFeatures>true</enableUnsecureFeatures> parameter in " +
-                        "the TikaConfig\n\n";
+                String warn =
+                        "enableUnsecureFeatures has not been set to 'true' in the server " +
+                                "config file.\n" +
+                                "The " + tika.getEmitterManager().getSupported().size() +
+                                " emitter(s) that you've\n" +
+                                "specified in TikaConfig will not be available on the /emit " +
+                                "or /async endpoints.\n" +
+                                "To enable your emitters, start tika-server with " +
+                                "<enableUnsecureFeatures>true</enableUnsecureFeatures> " +
+                                "parameter in " +
+                                "the TikaConfig\n\n";
                 LOG.warn(warn);
             }
             if (tika.getFetcherManager().getSupported().size() > 0) {
-                String warn = "enableUnsecureFeatures has not been set to 'true' in the server config file.\n" +
-                        "The " + tika.getFetcherManager().getSupported().size() + " fetcher(s) that you've\n" +
-                        "specified in TikaConfig will not be available on the /emit or /async endpoints.\n" +
-                        "To enable your emitters, start tika-server with " +
-                        "<enableUnsecureFeatures>true</enableUnsecureFeatures> parameter in " +
-                        "the TikaConfig\n\n";
+                String warn =
+                        "enableUnsecureFeatures has not been set to 'true' in the server " +
+                                "config file.\n" +
+                                "The " + tika.getFetcherManager().getSupported().size() +
+                                " fetcher(s) that you've\n" +
+                                "specified in TikaConfig will not be available on the /emit " +
+                                "or /async endpoints.\n" +
+                                "To enable your emitters, start tika-server with " +
+                                "<enableUnsecureFeatures>true</enableUnsecureFeatures> " +
+                                "parameter in " +
+                                "the TikaConfig\n\n";
                 LOG.warn(warn);
             }
         }
     }
 
     private static Collection<? extends ResourceProvider> loadResourceServices() {
-        List<TikaServerResource> resources = new ServiceLoader(
-                TikaServerProcess.class.getClassLoader())
-                .loadServiceProviders(TikaServerResource.class);
+        List<TikaServerResource> resources =
+                new ServiceLoader(TikaServerProcess.class.getClassLoader())
+                        .loadServiceProviders(TikaServerResource.class);
         List<ResourceProvider> providers = new ArrayList<>();
 
         for (TikaServerResource r : resources) {
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 4c4337c..46eb29f 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
@@ -17,21 +17,15 @@
 
 package org.apache.tika.server.core;
 
-import org.apache.tika.config.TikaConfig;
-import org.apache.tika.exception.TikaException;
-import org.apache.tika.utils.ProcessUtils;
-import org.apache.tika.utils.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import static java.nio.file.StandardOpenOption.READ;
+import static java.nio.file.StandardOpenOption.WRITE;
+import static org.apache.tika.server.core.TikaServerCli.TIKA_SERVER_ID_ENV;
 
 import java.io.BufferedReader;
-import java.io.DataOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.PrintStream;
-import java.net.URL;
-import java.net.URLClassLoader;
 import java.nio.Buffer;
 import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
@@ -40,7 +34,6 @@ import java.nio.channels.OverlappingFileLockException;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.time.Duration;
 import java.time.Instant;
 import java.util.ArrayList;
@@ -48,50 +41,76 @@ import java.util.List;
 import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
 
-import static java.nio.file.StandardOpenOption.READ;
-import static java.nio.file.StandardOpenOption.WRITE;
-import static org.apache.tika.server.core.TikaServerCli.TIKA_SERVER_ID_ENV;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-public class TikaServerWatchDog implements Callable<WatchDogResult> {
+import org.apache.tika.exception.TikaException;
+import org.apache.tika.utils.ProcessUtils;
 
-    private enum FORKED_STATUS {
-        INITIALIZING,
-        RUNNING,
-        SHUTTING_DOWN,
-        FAILED_COMMUNICATION
-    }
+public class TikaServerWatchDog implements Callable<WatchDogResult> {
 
     private static final Logger LOG = LoggerFactory.getLogger(TikaServerWatchDog.class);
-    private static final String DEFAULT_FORKED_STATUS_FILE_PREFIX = "tika-server-forked-process-mmap-";
-
+    private static final String DEFAULT_FORKED_STATUS_FILE_PREFIX =
+            "tika-server-forked-process-mmap-";
+    private final int port;
+    private final String id;
+    private final TikaServerConfig tikaServerConfig;
     private Object[] forkedStatusLock = new Object[0];
     private volatile FORKED_STATUS forkedStatus = FORKED_STATUS.INITIALIZING;
     private volatile Instant lastPing = null;
     private ForkedProcess forkedProcess = null;
-
-    private final int port;
-    private final String id;
     private int restarts = 0;
-    private final TikaServerConfig tikaServerConfig;
     private volatile boolean shutDown = false;
-
-    TikaServerWatchDog(int port, String id,
-                       TikaServerConfig tikaServerConfig) {
+    TikaServerWatchDog(int port, String id, TikaServerConfig tikaServerConfig) {
         this.port = port;
         this.id = id;
         this.tikaServerConfig = tikaServerConfig;
     }
 
+    private static void redirectIO(final InputStream src, final PrintStream targ) {
+        Thread gobbler = new Thread(new Runnable() {
+            public void run() {
+                BufferedReader reader =
+                        new BufferedReader(new InputStreamReader(src, StandardCharsets.UTF_8));
+                String line = null;
+                try {
+                    line = reader.readLine();
+                    while (line != null) {
+                        targ.println(line);
+                        line = reader.readLine();
+                    }
+                } catch (IOException e) {
+                    //swallow
+                }
+            }
+        });
+        gobbler.setDaemon(true);
+        gobbler.start();
+    }
+
+    private static synchronized void destroyForkedForcibly(Process process) {
+        process = process.destroyForcibly();
+        try {
+            boolean destroyed = process.waitFor(60, TimeUnit.SECONDS);
+            if (!destroyed) {
+                LOG.error("Forked process still alive after 60 seconds. " +
+                        "Shutting down the forking process.");
+                System.exit(1);
+            }
+        } catch (InterruptedException e) {
+            //swallow
+        }
+    }
 
     @Override
     public WatchDogResult call() throws Exception {
         boolean mustRestart = true;
         try {
             while (true) {
-                if (tikaServerConfig.getMaxRestarts() > 0
-                        && restarts >= tikaServerConfig.getMaxRestarts()) {
-                    LOG.warn("hit max restarts ({}). Ending processing for {} {}",
-                            restarts, id, port);
+                if (tikaServerConfig.getMaxRestarts() > 0 &&
+                        restarts >= tikaServerConfig.getMaxRestarts()) {
+                    LOG.warn("hit max restarts ({}). Ending processing for {} {}", restarts, id,
+                            port);
                     return new WatchDogResult(port, id, restarts);
                 }
 
@@ -101,8 +120,8 @@ public class TikaServerWatchDog implements Callable<WatchDogResult> {
                         setForkedStatus(FORKED_STATUS.RUNNING);
                         mustRestart = false;
                     }
-                    boolean exited = forkedProcess.process.waitFor(tikaServerConfig.getTaskPulseMillis(),
-                            TimeUnit.MILLISECONDS);
+                    boolean exited = forkedProcess.process
+                            .waitFor(tikaServerConfig.getTaskPulseMillis(), TimeUnit.MILLISECONDS);
                     if (exited) {
                         LOG.info("forked process exited with exit value {}",
                                 forkedProcess.process.exitValue());
@@ -121,11 +140,13 @@ public class TikaServerWatchDog implements Callable<WatchDogResult> {
                             forkedProcess.close();
                             mustRestart = true;
                         } else {
-                            Long elapsed = Duration.between(Instant.ofEpochMilli(status.timestamp), Instant.now()).toMillis();
+                            Long elapsed = Duration.between(Instant.ofEpochMilli(status.timestamp),
+                                    Instant.now()).toMillis();
                             if (elapsed > tikaServerConfig.getTaskTimeoutMillis()) {
-                                LOG.info("{} ms have elapsed since forked process last updated status. " +
-                                                "Shutting down and restarting.",
-                                        elapsed);
+                                LOG.info(
+                                        "{} ms have elapsed since forked process " +
+                                                "last updated status. " +
+                                                "Shutting down and restarting.", elapsed);
                                 forkedProcess.close();
                                 mustRestart = true;
                             }
@@ -145,7 +166,6 @@ public class TikaServerWatchDog implements Callable<WatchDogResult> {
         }
     }
 
-
     public void shutDown() {
         shutDown = true;
     }
@@ -156,13 +176,45 @@ public class TikaServerWatchDog implements Callable<WatchDogResult> {
         }
     }
 
-    private class ForkedProcess {
-        private Thread SHUTDOWN_HOOK = null;
+    private enum FORKED_STATUS {
+        INITIALIZING, RUNNING, SHUTTING_DOWN, FAILED_COMMUNICATION
+    }
+
+    private static class ForkedStatus {
+        private final long timestamp;
+        private final int status;
+        private final int numTasks;
 
+        public ForkedStatus(long timestamp, int status, int numTasks) {
+            this.timestamp = timestamp;
+            this.status = status;
+            this.numTasks = numTasks;
+        }
+
+        @Override
+        public String toString() {
+            return "ForkedStatus{" + "timestamp=" + timestamp + ", status=" + status +
+                    ", numTasks=" + numTasks + '}';
+        }
+    }
+
+    private static class DoNotRestartException extends TikaException {
+
+        public DoNotRestartException(String msg) {
+            super(msg);
+        }
+
+        public DoNotRestartException(String msg, Throwable cause) {
+            super(msg, cause);
+        }
+    }
+
+    private class ForkedProcess {
         private final Process process;
-//        private final DataOutputStream toForked;
+        //        private final DataOutputStream toForked;
         private final Path forkedStatusFile;
         private final ByteBuffer statusBuffer = ByteBuffer.allocate(16);
+        private Thread SHUTDOWN_HOOK = null;
 
         private ForkedProcess(int numRestarts) throws Exception {
             String prefix = tikaServerConfig.getTempFilePrefix();
@@ -174,8 +226,8 @@ public class TikaServerWatchDog implements Callable<WatchDogResult> {
             Instant start = Instant.now();
             long elapsed = Duration.between(start, Instant.now()).toMillis();
             try {
-                while (process.isAlive() && Files.size(forkedStatusFile) < 12
-                        && elapsed < tikaServerConfig.getMaxForkedStartupMillis()) {
+                while (process.isAlive() && Files.size(forkedStatusFile) < 12 &&
+                        elapsed < tikaServerConfig.getMaxForkedStartupMillis()) {
                     Thread.sleep(50);
                     elapsed = Duration.between(start, Instant.now()).toMillis();
                 }
@@ -187,7 +239,8 @@ public class TikaServerWatchDog implements Callable<WatchDogResult> {
 
             if (elapsed > tikaServerConfig.getMaxForkedStartupMillis()) {
                 close();
-                throw new RuntimeException("Forked process failed to start after " + elapsed + " (ms)");
+                throw new RuntimeException(
+                        "Forked process failed to start after " + elapsed + " (ms)");
             }
             if (!process.isAlive()) {
                 close();
@@ -195,7 +248,8 @@ public class TikaServerWatchDog implements Callable<WatchDogResult> {
             }
             if (!Files.exists(forkedStatusFile)) {
                 close();
-                throw new RuntimeException("Failed to start forked process -- forked status file does not exist");
+                throw new RuntimeException(
+                        "Failed to start forked process -- forked status file does not exist");
             }
 
             lastPing = Instant.now();
@@ -237,7 +291,7 @@ public class TikaServerWatchDog implements Callable<WatchDogResult> {
                             throw new DoNotRestartException("Forked exited with: " + exit);
                         }
                     } catch (IllegalThreadStateException e) {
-
+                        //swallow
                     }
                 }
                 destroyForkedForcibly(process);
@@ -264,7 +318,8 @@ public class TikaServerWatchDog implements Callable<WatchDogResult> {
             List<String> jvmArgs = tikaServerConfig.getForkedJvmArgs();
             List<String> forkedArgs = tikaServerConfig.getForkedProcessArgs(port, id);
             forkedArgs.add("-forkedStatusFile");
-            forkedArgs.add(ProcessUtils.escapeCommandLine(forkedStatusFile.toAbsolutePath().toString()));
+            forkedArgs.add(ProcessUtils
+                    .escapeCommandLine(forkedStatusFile.toAbsolutePath().toString()));
 
             argList.add(javaPath);
             if (!jvmArgs.contains("-cp") && !jvmArgs.contains("--classpath")) {
@@ -294,7 +349,8 @@ public class TikaServerWatchDog implements Callable<WatchDogResult> {
             }
             Process process = builder.start();
             //redirect stdout to parent stderr to avoid error msgs
-            //from maven during build: Corrupted STDOUT by directly writing to native stream in forked
+            //from maven during build: Corrupted STDOUT by directly writing to
+            // native stream in forked
             redirectIO(process.getInputStream(), System.err);
             redirectIO(process.getErrorStream(), System.err);
             if (SHUTDOWN_HOOK != null) {
@@ -313,70 +369,4 @@ public class TikaServerWatchDog implements Callable<WatchDogResult> {
             return process;
         }
     }
-
-    private static void redirectIO(final InputStream src, final PrintStream targ) {
-        Thread gobbler = new Thread(new Runnable() {
-            public void run() {
-                BufferedReader reader = new BufferedReader(new InputStreamReader(src, StandardCharsets.UTF_8));
-                String line = null;
-                try {
-                    line = reader.readLine();
-                    while (line != null) {
-                        targ.println(line);
-                        line = reader.readLine();
-                    }
-                } catch (IOException e) {
-                    //swallow
-                }
-            }
-        });
-        gobbler.setDaemon(true);
-        gobbler.start();
-    }
-
-    private static synchronized void destroyForkedForcibly(Process process) {
-        process = process.destroyForcibly();
-        try {
-            boolean destroyed = process.waitFor(60, TimeUnit.SECONDS);
-            if (!destroyed) {
-                LOG.error("Forked process still alive after 60 seconds. " +
-                        "Shutting down the forking process.");
-                System.exit(1);
-            }
-        } catch (InterruptedException e) {
-            //swallow
-        }
-    }
-
-    private static class ForkedStatus {
-        private final long timestamp;
-        private final int status;
-        private final int numTasks;
-
-        public ForkedStatus(long timestamp, int status, int numTasks) {
-            this.timestamp = timestamp;
-            this.status = status;
-            this.numTasks = numTasks;
-        }
-
-        @Override
-        public String toString() {
-            return "ForkedStatus{" +
-                    "timestamp=" + timestamp +
-                    ", status=" + status +
-                    ", numTasks=" + numTasks +
-                    '}';
-        }
-    }
-
-    private static class DoNotRestartException extends TikaException {
-
-        public DoNotRestartException(String msg) {
-            super(msg);
-        }
-
-        public DoNotRestartException(String msg, Throwable cause) {
-            super(msg, cause);
-        }
-    }
 }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/WatchDogResult.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/WatchDogResult.java
index 03174d3..1fa2b3d 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/WatchDogResult.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/WatchDogResult.java
@@ -42,10 +42,7 @@ public class WatchDogResult {
 
     @Override
     public String toString() {
-        return "WatchDogResult{" +
-                "port=" + port +
-                ", id='" + id + '\'' +
-                ", numRetries=" + numRetries +
-                '}';
+        return "WatchDogResult{" + "port=" + port + ", id='" + id + '\'' + ", numRetries=" +
+                numRetries + '}';
     }
 }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/config/DocumentSelectorConfig.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/config/DocumentSelectorConfig.java
index e9106af..5b42eff 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/config/DocumentSelectorConfig.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/config/DocumentSelectorConfig.java
@@ -16,22 +16,22 @@
  */
 package org.apache.tika.server.core.config;
 
+import javax.ws.rs.core.MultivaluedMap;
+
 import org.apache.commons.lang3.StringUtils;
-import org.apache.tika.exception.TikaException;
+
 import org.apache.tika.extractor.DocumentSelector;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.server.core.ParseContextConfig;
 
-import javax.ws.rs.core.MultivaluedMap;
-
 public class DocumentSelectorConfig implements ParseContextConfig {
 
     public static final String X_TIKA_SKIP_EMBEDDED_HEADER = "X-Tika-Skip-Embedded";
 
     @Override
-    public void configure(MultivaluedMap<String, String> httpHeaders,
-                          Metadata mtadata, ParseContext context) {
+    public void configure(MultivaluedMap<String, String> httpHeaders, Metadata mtadata,
+                          ParseContext context) {
         DocumentSelector documentSelector = null;
         for (String key : httpHeaders.keySet()) {
             if (StringUtils.endsWithIgnoreCase(key, X_TIKA_SKIP_EMBEDDED_HEADER)) {
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/config/PasswordProviderConfig.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/config/PasswordProviderConfig.java
index 8ddf2fa..ab176ef 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/config/PasswordProviderConfig.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/config/PasswordProviderConfig.java
@@ -16,26 +16,30 @@
  */
 package org.apache.tika.server.core.config;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import javax.ws.rs.core.MultivaluedMap;
+
 import org.apache.commons.codec.binary.Base64;
-import org.apache.tika.exception.TikaException;
+
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.PasswordProvider;
 import org.apache.tika.server.core.ParseContextConfig;
 
-import javax.ws.rs.core.MultivaluedMap;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
 public class PasswordProviderConfig implements ParseContextConfig {
-    private static final Base64 BASE_64 = new Base64();
-
     public static final String PASSWORD = "Password";
     public static final String PASSWORD_BASE64_UTF8 = "Password_Base64_UTF-8";
+    private static final Base64 BASE_64 = new Base64();
+
+    private static String decodeBase64UTF8(String s) {
+        byte[] bytes = BASE_64.decode(s);
+        return new String(bytes, UTF_8);
+    }
 
     @Override
-    public void configure(MultivaluedMap<String, String> httpHeaders,
-                          Metadata metadata, ParseContext context) {
+    public void configure(MultivaluedMap<String, String> httpHeaders, Metadata metadata,
+                          ParseContext context) {
         String tmpPassword = httpHeaders.getFirst(PASSWORD_BASE64_UTF8);
         if (tmpPassword != null) {
             tmpPassword = decodeBase64UTF8(tmpPassword);
@@ -53,9 +57,4 @@ public class PasswordProviderConfig implements ParseContextConfig {
         }
     }
 
-    private static String decodeBase64UTF8(String s) {
-        byte[] bytes = BASE_64.decode(s);
-        return new String(bytes, UTF_8);
-    }
-
 }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncEmitter.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncEmitter.java
index 315927a..81f9a7e 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncEmitter.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncEmitter.java
@@ -16,14 +16,6 @@
  */
 package org.apache.tika.server.core.resource;
 
-import org.apache.tika.pipes.emitter.AbstractEmitter;
-import org.apache.tika.pipes.emitter.EmitData;
-import org.apache.tika.pipes.emitter.Emitter;
-import org.apache.tika.pipes.emitter.TikaEmitterException;
-import org.apache.tika.utils.ExceptionUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.io.IOException;
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
@@ -35,6 +27,15 @@ import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.tika.pipes.emitter.AbstractEmitter;
+import org.apache.tika.pipes.emitter.EmitData;
+import org.apache.tika.pipes.emitter.Emitter;
+import org.apache.tika.pipes.emitter.TikaEmitterException;
+import org.apache.tika.utils.ExceptionUtils;
+
 /**
  * Worker thread that takes EmitData off the queue, batches it
  * and tries to emit it as a batch
@@ -45,12 +46,9 @@ public class AsyncEmitter implements Callable<Integer> {
 
     //TODO -- need to configure these
     private final long emitWithinMs = 1000;
-
-    private long maxEstimatedBytes = 10_000_000;
-
     private final ArrayBlockingQueue<EmitData> emitDataQueue;
-
     Instant lastEmitted = Instant.now();
+    private long maxEstimatedBytes = 10_000_000;
 
     public AsyncEmitter(ArrayBlockingQueue<EmitData> emitData) {
         this.emitDataQueue = emitData;
@@ -68,12 +66,10 @@ public class AsyncEmitter implements Callable<Integer> {
             } else {
                 LOG.trace("Nothing on the async queue");
             }
-            LOG.debug("cache size: ({}) bytes and count: {}",
-                    cache.estimatedSize, cache.size);
+            LOG.debug("cache size: ({}) bytes and count: {}", cache.estimatedSize, cache.size);
             long elapsed = ChronoUnit.MILLIS.between(lastEmitted, Instant.now());
             if (elapsed > emitWithinMs) {
-                LOG.debug("{} elapsed > {}, going to emitAll",
-                        elapsed, emitWithinMs);
+                LOG.debug("{} elapsed > {}, going to emitAll", elapsed, emitWithinMs);
                 //this can block
                 cache.emitAll();
             }
@@ -97,10 +93,11 @@ public class AsyncEmitter implements Callable<Integer> {
 
         void add(EmitData data) {
             size++;
-            long sz = AbstractEmitter.estimateSizeInBytes(data.getEmitKey().getKey(), data.getMetadataList());
+            long sz = AbstractEmitter
+                    .estimateSizeInBytes(data.getEmitKey().getKey(), data.getMetadataList());
             if (estimatedSize + sz > maxBytes) {
                 LOG.debug("estimated size ({}) > maxBytes({}), going to emitAll",
-                        (estimatedSize+sz), maxBytes);
+                        (estimatedSize + sz), maxBytes);
                 emitAll();
             }
             List<EmitData> cached = map.get(data.getEmitKey().getEmitterName());
@@ -116,8 +113,8 @@ public class AsyncEmitter implements Callable<Integer> {
             int emitted = 0;
             LOG.debug("about to emit {}", size);
             for (Map.Entry<String, List<EmitData>> e : map.entrySet()) {
-                Emitter emitter = TikaResource.getConfig()
-                        .getEmitterManager().getEmitter(e.getKey());
+                Emitter emitter =
+                        TikaResource.getConfig().getEmitterManager().getEmitter(e.getKey());
                 tryToEmit(emitter, e.getValue());
                 emitted += e.getValue().size();
             }
@@ -132,7 +129,7 @@ public class AsyncEmitter implements Callable<Integer> {
 
             try {
                 emitter.emit(cachedEmitData);
-            } catch (IOException|TikaEmitterException e) {
+            } catch (IOException | TikaEmitterException e) {
                 LOG.warn("emitter class ({}): {}", emitter.getClass(),
                         ExceptionUtils.getStackTrace(e));
             }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncParser.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncParser.java
index c20fc75..7a9f4ad 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncParser.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncParser.java
@@ -16,28 +16,28 @@
  */
 package org.apache.tika.server.core.resource;
 
+import java.io.InputStream;
+import java.util.List;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.Callable;
+import java.util.concurrent.TimeUnit;
+import javax.ws.rs.core.MultivaluedHashMap;
+
 import org.apache.cxf.jaxrs.impl.UriInfoImpl;
 import org.apache.cxf.message.MessageImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.pipes.emitter.EmitData;
 import org.apache.tika.pipes.emitter.EmitKey;
 import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
 import org.apache.tika.utils.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.core.MultivaluedHashMap;
-import java.io.InputStream;
-import java.util.List;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.Callable;
-import java.util.concurrent.TimeUnit;
 
 /**
  * Worker thread that takes {@link FetchEmitTuple} off the queue, parses
  * the file and puts the {@link EmitData} on the emitDataQueue for the {@link AsyncEmitter}.
- *
  */
 public class AsyncParser implements Callable<Integer> {
 
@@ -63,8 +63,7 @@ public class AsyncParser implements Callable<Integer> {
                     boolean offered = emitDataQueue.offer(emitData, 10, TimeUnit.MINUTES);
                     if (!offered) {
                         //TODO: deal with this
-                        LOG.warn("Failed to add ({}) " +
-                                "to emit queue after 10 minutes.",
+                        LOG.warn("Failed to add ({}) " + "to emit queue after 10 minutes.",
                                 request.getFetchKey().getKey());
                     }
                 }
@@ -76,7 +75,7 @@ public class AsyncParser implements Callable<Integer> {
 
     private boolean checkForParseException(FetchEmitTuple request, EmitData emitData) {
         if (emitData == null || emitData.getMetadataList() == null ||
-            emitData.getMetadataList().size() == 0) {
+                emitData.getMetadataList().size() == 0) {
             LOG.warn("empty or null emit data ({})", request.getFetchKey().getKey());
             return false;
         }
@@ -84,8 +83,8 @@ public class AsyncParser implements Callable<Integer> {
         Metadata container = emitData.getMetadataList().get(0);
         String stack = container.get(TikaCoreProperties.CONTAINER_EXCEPTION);
         if (stack != null) {
-            LOG.warn("fetchKey ({}) container parse exception ({})",
-                    request.getFetchKey().getKey(), stack);
+            LOG.warn("fetchKey ({}) container parse exception ({})", request.getFetchKey().getKey(),
+                    stack);
             if (request.getOnParseException() == FetchEmitTuple.ON_PARSE_EXCEPTION.SKIP) {
                 shouldEmit = false;
             }
@@ -108,14 +107,11 @@ public class AsyncParser implements Callable<Integer> {
         String fetcherName = t.getFetchKey().getFetcherName();
         String fetchKey = t.getFetchKey().getKey();
         List<Metadata> metadataList = null;
-        try (InputStream stream =
-                     TikaResource.getConfig().getFetcherManager()
-                             .getFetcher(fetcherName).fetch(fetchKey, metadata)) {
-            metadataList = RecursiveMetadataResource.parseMetadata(
-                    stream,
-                    metadata,
-                    new MultivaluedHashMap<>(),
-                    new UriInfoImpl(new MessageImpl()), "text");
+        try (InputStream stream = TikaResource.getConfig().getFetcherManager()
+                .getFetcher(fetcherName).fetch(fetchKey, metadata)) {
+            metadataList = RecursiveMetadataResource
+                    .parseMetadata(stream, metadata, new MultivaluedHashMap<>(),
+                            new UriInfoImpl(new MessageImpl()), "text");
         } catch (SecurityException e) {
             throw e;
         } catch (Exception e) {
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncRequest.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncRequest.java
index 9e3566c..d61c7b7 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncRequest.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncRequest.java
@@ -16,10 +16,10 @@
  */
 package org.apache.tika.server.core.resource;
 
-import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
-
 import java.util.List;
 
+import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
+
 public class AsyncRequest {
     private final List<FetchEmitTuple> tuples;
 
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncResource.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncResource.java
index 248ebb0..47dbc50 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncResource.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/AsyncResource.java
@@ -17,29 +17,8 @@
 
 package org.apache.tika.server.core.resource;
 
-import org.apache.tika.metadata.Metadata;
-import org.apache.tika.metadata.TikaCoreProperties;
-import org.apache.tika.metadata.serialization.JsonFetchEmitTupleList;
-import org.apache.tika.pipes.emitter.EmitData;
-import org.apache.tika.pipes.emitter.EmitKey;
-import org.apache.tika.pipes.emitter.EmitterManager;
-import org.apache.tika.pipes.fetcher.FetchKey;
-import org.apache.tika.pipes.fetcher.FetcherManager;
-import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.BadRequestException;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.UriInfo;
 import java.io.IOException;
 import java.io.InputStream;
-
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.nio.charset.StandardCharsets;
@@ -51,6 +30,26 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.TimeUnit;
+import javax.ws.rs.BadRequestException;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.UriInfo;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.TikaCoreProperties;
+import org.apache.tika.metadata.serialization.JsonFetchEmitTupleList;
+import org.apache.tika.pipes.emitter.EmitData;
+import org.apache.tika.pipes.emitter.EmitKey;
+import org.apache.tika.pipes.emitter.EmitterManager;
+import org.apache.tika.pipes.fetcher.FetchKey;
+import org.apache.tika.pipes.fetcher.FetcherManager;
+import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
 
 @Path("/async")
 public class AsyncResource {
@@ -69,6 +68,7 @@ public class AsyncResource {
     public ArrayBlockingQueue<EmitData> getEmitDataQueue(int size) {
         return new ArrayBlockingQueue<>(size);
     }
+
     /**
      * The client posts a json request.  At a minimum, this must be a
      * json object that contains an emitter and a fetcherString key with
@@ -87,10 +87,8 @@ public class AsyncResource {
      */
     @POST
     @Produces("application/json")
-    public Map<String, Object> post(InputStream is,
-                                         @Context HttpHeaders httpHeaders,
-                                         @Context UriInfo info
-    ) throws Exception {
+    public Map<String, Object> post(InputStream is, @Context HttpHeaders httpHeaders,
+                                    @Context UriInfo info) throws Exception {
 
         AsyncRequest request = deserializeASyncRequest(is);
 
@@ -100,10 +98,10 @@ public class AsyncResource {
         FetcherManager fetcherManager = TikaResource.getConfig().getFetcherManager();
         EmitterManager emitterManager = TikaResource.getConfig().getEmitterManager();
         for (FetchEmitTuple t : request.getTuples()) {
-            if (! fetcherManager.getSupported().contains(t.getFetchKey().getFetcherName())) {
+            if (!fetcherManager.getSupported().contains(t.getFetchKey().getFetcherName())) {
                 return badFetcher(t.getFetchKey());
             }
-            if (! emitterManager.getSupported().contains(t.getEmitKey().getEmitterName())) {
+            if (!emitterManager.getSupported().contains(t.getEmitKey().getEmitterName())) {
                 return badEmitter(t.getEmitKey());
             }
         }
@@ -117,7 +115,7 @@ public class AsyncResource {
                 offered = queue.offer(t, 10, TimeUnit.MILLISECONDS);
                 elapsed = ChronoUnit.MILLIS.between(start, Instant.now());
             }
-            if (! offered) {
+            if (!offered) {
                 notAdded.add(t);
             } else {
                 addedCount++;
@@ -151,7 +149,7 @@ public class AsyncResource {
     }
 
     private Map<String, Object> badEmitter(EmitKey emitKey) {
-        throw new BadRequestException("can't find emitter for "+emitKey.getEmitterName());
+        throw new BadRequestException("can't find emitter for " + emitKey.getEmitterName());
     }
 
     private Map<String, Object> badFetcher(FetchKey fetchKey) {
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/DetectorResource.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/DetectorResource.java
index 586ed3e..62050d4 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/DetectorResource.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/DetectorResource.java
@@ -17,6 +17,8 @@
 
 package org.apache.tika.server.core.resource;
 
+import java.io.IOException;
+import java.io.InputStream;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
@@ -24,16 +26,15 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.UriInfo;
-import java.io.IOException;
-import java.io.InputStream;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import org.apache.tika.io.TikaInputStream;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.server.core.ServerStatus;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 @Path("/detect")
 public class DetectorResource {
@@ -43,12 +44,13 @@ public class DetectorResource {
     public DetectorResource(ServerStatus serverStatus) {
         this.serverStatus = serverStatus;
     }
+
     @PUT
     @Path("stream")
     @Consumes("*/*")
     @Produces("text/plain")
-    public String detect(final InputStream is,
-                         @Context HttpHeaders httpHeaders, @Context final UriInfo info) {
+    public String detect(final InputStream is, @Context HttpHeaders httpHeaders,
+                         @Context final UriInfo info) {
         Metadata met = new Metadata();
 
         String filename = TikaResource.detectFilename(httpHeaders.getRequestHeaders());
@@ -56,11 +58,12 @@ public class DetectorResource {
         met.add(TikaCoreProperties.RESOURCE_NAME_KEY, filename);
         long taskId = serverStatus.start(ServerStatus.TASK.DETECT, filename);
 
-        try (TikaInputStream tis = TikaInputStream.get(TikaResource.getInputStream(is, met, httpHeaders))) {
+        try (TikaInputStream tis = TikaInputStream
+                .get(TikaResource.getInputStream(is, met, httpHeaders))) {
             return TikaResource.getConfig().getDetector().detect(tis, met).toString();
         } catch (IOException e) {
-            LOG.warn("Unable to detect MIME type for file. Reason: {} ({})",
-                    e.getMessage(), filename, e);
+            LOG.warn("Unable to detect MIME type for file. Reason: {} ({})", e.getMessage(),
+                    filename, e);
             return MediaType.OCTET_STREAM.toString();
         } catch (OutOfMemoryError e) {
             LOG.error("OOM while detecting: ({})", filename, e);
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/EmitterResource.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/EmitterResource.java
index ce437d7..96c2e30 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/EmitterResource.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/EmitterResource.java
@@ -17,24 +17,14 @@
 
 package org.apache.tika.server.core.resource;
 
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonToken;
-import org.apache.tika.Tika;
-import org.apache.tika.metadata.serialization.JsonFetchEmitTuple;
-import org.apache.tika.pipes.emitter.EmitKey;
-import org.apache.tika.pipes.emitter.Emitter;
-import org.apache.tika.pipes.emitter.TikaEmitterException;
-import org.apache.tika.exception.TikaException;
-import org.apache.tika.pipes.fetcher.FetchKey;
-import org.apache.tika.pipes.fetcher.Fetcher;
-import org.apache.tika.metadata.Metadata;
-import org.apache.tika.metadata.TikaCoreProperties;
-import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
-import org.apache.tika.utils.ExceptionUtils;
-import org.apache.tika.utils.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.PUT;
@@ -45,31 +35,45 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.UriInfo;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.tika.exception.TikaException;
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.TikaCoreProperties;
+import org.apache.tika.metadata.serialization.JsonFetchEmitTuple;
+import org.apache.tika.pipes.emitter.EmitKey;
+import org.apache.tika.pipes.emitter.Emitter;
+import org.apache.tika.pipes.emitter.TikaEmitterException;
+import org.apache.tika.pipes.fetcher.Fetcher;
+import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
+import org.apache.tika.utils.ExceptionUtils;
+import org.apache.tika.utils.StringUtils;
 
 @Path("/emit")
 public class EmitterResource {
 
-    private static final String EMITTER_PARAM = "emitter";
-    private static final String FETCHER_NAME_ABBREV = "fn";
-    private static final String FETCH_KEY_ABBREV = "fk";
-    private static final String EMIT_KEY_ABBREV = "ek";
-
     /**
      * key that is safe to pass through http header.
      * The user _must_ specify this for the fsemitter if calling 'put'
      */
     public static final String EMIT_KEY_FOR_HTTP_HEADER = "emit-key";
+    private static final String EMITTER_PARAM = "emitter";
+    private static final String FETCHER_NAME_ABBREV = "fn";
+    private static final String FETCH_KEY_ABBREV = "fk";
+    private static final String EMIT_KEY_ABBREV = "ek";
     private static final Logger LOG = LoggerFactory.getLogger(EmitterResource.class);
 
+    static EmitKey calcEmitKey(FetchEmitTuple t) {
+        //use fetch key if emitter key is not specified
+        //TODO: clean this up?
+        EmitKey emitKey = t.getEmitKey();
+        if (StringUtils.isBlank(emitKey.getKey())) {
+            emitKey = new EmitKey(emitKey.getEmitterName(), t.getFetchKey().getKey());
+        }
+        return emitKey;
+    }
 
     /**
      * @param is          input stream is ignored in 'get'
@@ -89,15 +93,15 @@ public class EmitterResource {
                                         @PathParam(EMITTER_PARAM) String emitterName,
                                         @QueryParam(FETCHER_NAME_ABBREV) String fetcherName,
                                         @QueryParam(FETCH_KEY_ABBREV) String fetchKey,
-                                        @QueryParam(EMIT_KEY_ABBREV) String emitKey) throws Exception {
+                                        @QueryParam(EMIT_KEY_ABBREV) String emitKey)
+            throws Exception {
         Metadata metadata = new Metadata();
         Fetcher fetcher = TikaResource.getConfig().getFetcherManager().getFetcher(fetcherName);
         List<Metadata> metadataList;
         try (InputStream fetchedIs = fetcher.fetch(fetchKey, metadata)) {
-            metadataList =
-                    RecursiveMetadataResource.parseMetadata(fetchedIs,
-                            metadata,
-                            httpHeaders.getRequestHeaders(), info, "text");
+            metadataList = RecursiveMetadataResource
+                    .parseMetadata(fetchedIs, metadata, httpHeaders.getRequestHeaders(), info,
+                            "text");
         }
         emitKey = StringUtils.isBlank(emitKey) ? fetchKey : emitKey;
         return emit(new EmitKey(emitterName, emitKey), metadataList);
@@ -122,18 +126,15 @@ public class EmitterResource {
     @PUT
     @Produces("application/json")
     @Path("{" + EMITTER_PARAM + " : (\\w+)?}")
-    public Map<String, String> putRmeta(InputStream is,
-                                        @Context HttpHeaders httpHeaders,
+    public Map<String, String> putRmeta(InputStream is, @Context HttpHeaders httpHeaders,
                                         @Context UriInfo info,
-                                        @PathParam(EMITTER_PARAM) String emitterName
-    ) throws Exception {
+                                        @PathParam(EMITTER_PARAM) String emitterName)
+            throws Exception {
 
         Metadata metadata = new Metadata();
         String emitKey = httpHeaders.getHeaderString(EMIT_KEY_FOR_HTTP_HEADER);
-        List<Metadata> metadataList =
-                RecursiveMetadataResource.parseMetadata(is,
-                        metadata,
-                        httpHeaders.getRequestHeaders(), info, "text");
+        List<Metadata> metadataList = RecursiveMetadataResource
+                .parseMetadata(is, metadata, httpHeaders.getRequestHeaders(), info, "text");
         return emit(new EmitKey(emitterName, emitKey), metadataList);
     }
 
@@ -155,10 +156,8 @@ public class EmitterResource {
      */
     @POST
     @Produces("application/json")
-    public Map<String, String> postRmeta(InputStream is,
-                                         @Context HttpHeaders httpHeaders,
-                                         @Context UriInfo info
-    ) throws Exception {
+    public Map<String, String> postRmeta(InputStream is, @Context HttpHeaders httpHeaders,
+                                         @Context UriInfo info) throws Exception {
         FetchEmitTuple t = null;
         try (Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8)) {
             t = JsonFetchEmitTuple.fromJson(reader);
@@ -166,51 +165,37 @@ public class EmitterResource {
         Metadata metadata = new Metadata();
 
         List<Metadata> metadataList = null;
-        try (InputStream stream =
-                     TikaResource.getConfig().getFetcherManager()
-                             .getFetcher(t.getFetchKey().getFetcherName())
-                             .fetch(t.getFetchKey().getKey(), metadata)) {
+        try (InputStream stream = TikaResource.getConfig().getFetcherManager()
+                .getFetcher(t.getFetchKey().getFetcherName())
+                .fetch(t.getFetchKey().getKey(), metadata)) {
 
-            metadataList = RecursiveMetadataResource.parseMetadata(
-                    stream,
-                    metadata,
-                    httpHeaders.getRequestHeaders(), info, "text");
+            metadataList = RecursiveMetadataResource
+                    .parseMetadata(stream, metadata, httpHeaders.getRequestHeaders(), info, "text");
         } catch (Error error) {
             return returnError(t.getEmitKey().getEmitterName(), error);
         }
 
         boolean shouldEmit = checkParseException(t, metadataList);
-        if (! shouldEmit) {
+        if (!shouldEmit) {
             return skip(t, metadataList);
         }
 
         injectUserMetadata(t.getMetadata(), metadataList.get(0));
 
         for (String n : metadataList.get(0).names()) {
-            LOG.debug("post parse/pre emit metadata {}: {}",
-                    n, metadataList.get(0).get(n));
+            LOG.debug("post parse/pre emit metadata {}: {}", n, metadataList.get(0).get(n));
         }
         return emit(calcEmitKey(t), metadataList);
     }
 
-    static EmitKey calcEmitKey(FetchEmitTuple t) {
-        //use fetch key if emitter key is not specified
-        //TODO: clean this up?
-        EmitKey emitKey = t.getEmitKey();
-        if (StringUtils.isBlank(emitKey.getKey())) {
-            emitKey = new EmitKey(emitKey.getEmitterName(), t.getFetchKey().getKey());
-        }
-        return emitKey;
-    }
-
     private Map<String, String> skip(FetchEmitTuple t, List<Metadata> metadataList) {
-            Map<String, String> statusMap = new HashMap<>();
-            statusMap.put("status", "ok");
-            statusMap.put("emitter", t.getEmitKey().getEmitterName());
-            statusMap.put("emitKey", t.getEmitKey().getKey());
-            String msg = metadataList.get(0).get(TikaCoreProperties.CONTAINER_EXCEPTION);
-            statusMap.put("parse_exception", msg);
-            return statusMap;
+        Map<String, String> statusMap = new HashMap<>();
+        statusMap.put("status", "ok");
+        statusMap.put("emitter", t.getEmitKey().getEmitterName());
+        statusMap.put("emitKey", t.getEmitKey().getKey());
+        String msg = metadataList.get(0).get(TikaCoreProperties.CONTAINER_EXCEPTION);
+        statusMap.put("parse_exception", msg);
+        return statusMap;
     }
 
     private boolean checkParseException(FetchEmitTuple t, List<Metadata> metadataList) {
@@ -258,14 +243,16 @@ public class EmitterResource {
         return statusMap;
     }
 
-    private Map<String, String> emit(EmitKey emitKey, List<Metadata> metadataList) throws TikaException {
-        Emitter emitter = TikaResource.getConfig().getEmitterManager().getEmitter(emitKey.getEmitterName());
+    private Map<String, String> emit(EmitKey emitKey, List<Metadata> metadataList)
+            throws TikaException {
+        Emitter emitter =
+                TikaResource.getConfig().getEmitterManager().getEmitter(emitKey.getEmitterName());
         String status = "ok";
         String exceptionMsg = "";
         try {
             emitter.emit(emitKey.getKey(), metadataList);
         } catch (IOException | TikaEmitterException e) {
-            LOG.warn("problem emitting ("+emitKey.getKey()+")", e);
+            LOG.warn("problem emitting (" + emitKey.getKey() + ")", e);
             status = "emitter_exception";
             exceptionMsg = ExceptionUtils.getStackTrace(e);
         }
@@ -275,8 +262,7 @@ public class EmitterResource {
         if (exceptionMsg.length() > 0) {
             statusMap.put("emitter_exception", exceptionMsg);
         }
-        String parseStackTrace = metadataList.get(0).get(
-                TikaCoreProperties.CONTAINER_EXCEPTION);
+        String parseStackTrace = metadataList.get(0).get(TikaCoreProperties.CONTAINER_EXCEPTION);
         if (parseStackTrace != null) {
             statusMap.put("parse_exception", parseStackTrace);
         }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/LanguageResource.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/LanguageResource.java
index 930ad7f..6726add 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/LanguageResource.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/LanguageResource.java
@@ -21,7 +21,6 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 
 import java.io.IOException;
 import java.io.InputStream;
-
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
 import javax.ws.rs.PUT;
@@ -29,39 +28,39 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 
 import org.apache.commons.io.IOUtils;
-//TODO: don't hardcode optimaize
-import org.apache.tika.langdetect.optimaize.OptimaizeLangDetector;
-import org.apache.tika.language.detect.LanguageResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.tika.langdetect.optimaize.OptimaizeLangDetector;
+import org.apache.tika.language.detect.LanguageResult;
+
 @Path("/language")
 public class LanguageResource {
-	private static final Logger LOG = LoggerFactory.getLogger(LanguageResource.class);
+    private static final Logger LOG = LoggerFactory.getLogger(LanguageResource.class);
 
-	@PUT
-	@POST
-	@Path("/stream")
-	@Consumes("*/*")
-	@Produces("text/plain")
-	public String detect(final InputStream is) throws IOException {
-		String fileTxt = IOUtils.toString(is, UTF_8);
-		LanguageResult language = new OptimaizeLangDetector().loadModels().detect(fileTxt);
-		String detectedLang = language.getLanguage();
-		LOG.info("Detecting language for incoming resource: [{}]", detectedLang);
-		return detectedLang;
-	}
+    @PUT
+    @POST
+    @Path("/stream")
+    @Consumes("*/*")
+    @Produces("text/plain")
+    public String detect(final InputStream is) throws IOException {
+        String fileTxt = IOUtils.toString(is, UTF_8);
+        LanguageResult language = new OptimaizeLangDetector().loadModels().detect(fileTxt);
+        String detectedLang = language.getLanguage();
+        LOG.info("Detecting language for incoming resource: [{}]", detectedLang);
+        return detectedLang;
+    }
 
-	@PUT
-	@POST
-	@Path("/string")
-	@Consumes("*/*")
-	@Produces("text/plain")
-	public String detect(final String string) throws IOException {
-		LanguageResult language = new OptimaizeLangDetector().loadModels().detect(string);
-		String detectedLang = language.getLanguage();
-		LOG.info("Detecting language for incoming resource: [{}]", detectedLang);
-		return detectedLang;
-	}
+    @PUT
+    @POST
+    @Path("/string")
+    @Consumes("*/*")
+    @Produces("text/plain")
+    public String detect(final String string) throws IOException {
+        LanguageResult language = new OptimaizeLangDetector().loadModels().detect(string);
+        String detectedLang = language.getLanguage();
+        LOG.info("Detecting language for incoming resource: [{}]", detectedLang);
+        return detectedLang;
+    }
 
 }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/MetadataResource.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/MetadataResource.java
index 7a634fd..b26023f 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/MetadataResource.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/MetadataResource.java
@@ -17,6 +17,11 @@
 
 package org.apache.tika.server.core.resource;
 
+import static org.apache.tika.server.core.resource.TikaResource.fillMetadata;
+import static org.apache.tika.server.core.resource.TikaResource.fillParseContext;
+
+import java.io.IOException;
+import java.io.InputStream;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
 import javax.ws.rs.PUT;
@@ -28,20 +33,16 @@ import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
-import java.io.IOException;
-import java.io.InputStream;
 
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import org.apache.tika.extractor.DocumentSelector;
 import org.apache.tika.language.detect.LanguageHandler;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.Parser;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.apache.tika.server.core.resource.TikaResource.fillMetadata;
-import static org.apache.tika.server.core.resource.TikaResource.fillParseContext;
 
 
 @Path("/meta")
@@ -52,26 +53,28 @@ public class MetadataResource {
     @Consumes("multipart/form-data")
     @Produces({"text/csv", "application/json"})
     @Path("form")
-    public Response getMetadataFromMultipart(Attachment att, @Context UriInfo info) throws Exception {
-        return Response.ok(
-                parseMetadata(att.getObject(InputStream.class), new Metadata(),
-                        att.getHeaders(), info)).build();
+    public Response getMetadataFromMultipart(Attachment att, @Context UriInfo info)
+            throws Exception {
+        return Response.ok(parseMetadata(att.getObject(InputStream.class), new Metadata(),
+                att.getHeaders(), info)).build();
     }
 
     @PUT
     @Produces({"text/csv", "application/json"})
-    public Response getMetadata(InputStream is, @Context HttpHeaders httpHeaders, @Context UriInfo info) throws Exception {
+    public Response getMetadata(InputStream is, @Context HttpHeaders httpHeaders,
+                                @Context UriInfo info) throws Exception {
         Metadata metadata = new Metadata();
-        return Response.ok(
-                parseMetadata(TikaResource.getInputStream(is, metadata, httpHeaders), metadata, httpHeaders.getRequestHeaders(), info)).build();
+        return Response
+                .ok(parseMetadata(TikaResource.getInputStream(is, metadata, httpHeaders), metadata,
+                        httpHeaders.getRequestHeaders(), info)).build();
     }
 
     /**
      * Get a specific metadata field. If the input stream cannot be parsed, but a
      * value was found for the given metadata field, then the value of the field
      * is returned as part of a 200 OK response; otherwise a
-     * {@link javax.ws.rs.core.Response.Status#BAD_REQUEST} is generated. If the stream was successfully
-     * parsed but the specific metadata field was not found, then a
+     * {@link javax.ws.rs.core.Response.Status#BAD_REQUEST} is generated. If the stream
+     * was successfully parsed but the specific metadata field was not found, then a
      * {@link javax.ws.rs.core.Response.Status#NOT_FOUND} is returned.
      * <p/>
      * Note that this method handles multivalue fields and returns possibly more
@@ -84,7 +87,8 @@ public class MetadataResource {
      * @param httpHeaders httpheaders
      * @param info        info
      * @param field       the tika metadata field name
-     * @return one of {@link javax.ws.rs.core.Response.Status#OK}, {@link javax.ws.rs.core.Response.Status#NOT_FOUND}, or
+     * @return one of {@link javax.ws.rs.core.Response.Status#OK},
+     * {@link javax.ws.rs.core.Response.Status#NOT_FOUND}, or
      * {@link javax.ws.rs.core.Response.Status#BAD_REQUEST}
      * @throws Exception
      */
@@ -92,7 +96,8 @@ public class MetadataResource {
     @Path("{field}")
     @Produces({"text/csv", "application/json", "text/plain"})
     public Response getMetadataField(InputStream is, @Context HttpHeaders httpHeaders,
-                                     @Context UriInfo info, @PathParam("field") String field) throws Exception {
+                                     @Context UriInfo info, @PathParam("field") String field)
+            throws Exception {
 
         // use BAD request to indicate that we may not have had enough data to
         // process the request
@@ -100,8 +105,8 @@ public class MetadataResource {
         Metadata metadata = new Metadata();
         boolean success = false;
         try {
-            parseMetadata(TikaResource.getInputStream(is, metadata, httpHeaders),
-                    metadata, httpHeaders.getRequestHeaders(), info);
+            parseMetadata(TikaResource.getInputStream(is, metadata, httpHeaders), metadata,
+                    httpHeaders.getRequestHeaders(), info);
             // once we've parsed the document successfully, we should use NOT_FOUND
             // if we did not see the field
             defaultErrorResponse = Response.Status.NOT_FOUND;
@@ -111,7 +116,8 @@ public class MetadataResource {
         }
 
         if (success == false || metadata.get(field) == null) {
-            return Response.status(defaultErrorResponse).entity("Failed to get metadata field " + field).build();
+            return Response.status(defaultErrorResponse)
+                    .entity("Failed to get metadata field " + field).build();
         }
 
         // remove fields we don't care about for the response
@@ -124,7 +130,8 @@ public class MetadataResource {
     }
 
     protected Metadata parseMetadata(InputStream is, Metadata metadata,
-                                     MultivaluedMap<String, String> httpHeaders, UriInfo info) throws IOException {
+                                     MultivaluedMap<String, String> httpHeaders, UriInfo info)
+            throws IOException {
         final ParseContext context = new ParseContext();
         Parser parser = TikaResource.createParser();
         fillMetadata(parser, metadata, httpHeaders);
@@ -133,12 +140,11 @@ public class MetadataResource {
         context.set(DocumentSelector.class, metadata1 -> false);
 
         TikaResource.logRequest(LOG, "/meta", metadata);
-        TikaResource.parse(parser, LOG, info.getPath(), is,
-                new LanguageHandler() {
-                    public void endDocument() {
-                        metadata.set("language", getLanguage().getLanguage());
-                    }},
-                metadata, context);
+        TikaResource.parse(parser, LOG, info.getPath(), is, new LanguageHandler() {
+            public void endDocument() {
+                metadata.set("language", getLanguage().getLanguage());
+            }
+        }, metadata, context);
         return metadata;
     }
 }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/RecursiveMetadataResource.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/RecursiveMetadataResource.java
index f6f340c..09b333a 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/RecursiveMetadataResource.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/RecursiveMetadataResource.java
@@ -17,6 +17,11 @@
 
 package org.apache.tika.server.core.resource;
 
+import static org.apache.tika.server.core.resource.TikaResource.fillMetadata;
+import static org.apache.tika.server.core.resource.TikaResource.fillParseContext;
+
+import java.io.InputStream;
+import java.util.List;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
 import javax.ws.rs.PUT;
@@ -29,10 +34,11 @@ import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
-import java.io.InputStream;
-import java.util.List;
 
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.Parser;
@@ -41,11 +47,6 @@ import org.apache.tika.sax.BasicContentHandlerFactory;
 import org.apache.tika.sax.RecursiveParserWrapperHandler;
 import org.apache.tika.server.core.MetadataList;
 import org.apache.tika.server.core.TikaServerParseException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.apache.tika.server.core.resource.TikaResource.fillMetadata;
-import static org.apache.tika.server.core.resource.TikaResource.fillParseContext;
 
 @Path("/rmeta")
 public class RecursiveMetadataResource {
@@ -55,6 +56,50 @@ public class RecursiveMetadataResource {
             BasicContentHandlerFactory.HANDLER_TYPE.XML;
     private static final Logger LOG = LoggerFactory.getLogger(RecursiveMetadataResource.class);
 
+    public static List<Metadata> parseMetadata(InputStream is, Metadata metadata,
+                                               MultivaluedMap<String, String> httpHeaders,
+                                               UriInfo info, String handlerTypeName)
+            throws Exception {
+
+        final ParseContext context = new ParseContext();
+        Parser parser = TikaResource.createParser();
+        // TODO: parameterize choice of max chars/max embedded attachments
+        RecursiveParserWrapper wrapper = new RecursiveParserWrapper(parser);
+
+
+        fillMetadata(parser, metadata, httpHeaders);
+        fillParseContext(httpHeaders, metadata, context);
+        TikaResource.logRequest(LOG, "/rmeta", metadata);
+
+        int writeLimit = -1;
+        if (httpHeaders.containsKey("writeLimit")) {
+            writeLimit = Integer.parseInt(httpHeaders.getFirst("writeLimit"));
+        }
+
+        int maxEmbeddedResources = -1;
+        if (httpHeaders.containsKey("maxEmbeddedResources")) {
+            maxEmbeddedResources = Integer.parseInt(httpHeaders.getFirst("maxEmbeddedResources"));
+        }
+
+        BasicContentHandlerFactory.HANDLER_TYPE type =
+                BasicContentHandlerFactory.parseHandlerType(handlerTypeName, DEFAULT_HANDLER_TYPE);
+        RecursiveParserWrapperHandler handler =
+                new RecursiveParserWrapperHandler(new BasicContentHandlerFactory(type, writeLimit),
+                        maxEmbeddedResources, TikaResource.getConfig().getMetadataFilter());
+        try {
+            TikaResource.parse(wrapper, LOG, "/rmeta", is, handler, metadata, context);
+        } catch (TikaServerParseException e) {
+            //do nothing
+        } catch (SecurityException | WebApplicationException e) {
+            throw e;
+        } catch (Exception e) {
+            //we shouldn't get here?
+            e.printStackTrace();
+        }
+
+        return handler.getMetadataList();
+    }
+
     /**
      * Returns an InputStream that can be deserialized as a list of
      * {@link Metadata} objects.
@@ -73,8 +118,8 @@ public class RecursiveMetadataResource {
      * /rmeta/form/text   (store the content as text)<br/>
      * /rmeta/form/ignore (don't record any content)<br/>
      *
-     * @param att attachment
-     * @param info uri info
+     * @param att             attachment
+     * @param info            uri info
      * @param handlerTypeName which type of handler to use
      * @return InputStream that can be deserialized as a list of {@link Metadata} objects
      * @throws Exception
@@ -86,8 +131,8 @@ public class RecursiveMetadataResource {
     public Response getMetadataFromMultipart(Attachment att, @Context UriInfo info,
                                              @PathParam(HANDLER_TYPE_PARAM) String handlerTypeName)
             throws Exception {
-        return Response.ok(
-                parseMetadataToMetadataList(att.getObject(InputStream.class), new Metadata(),
+        return Response
+                .ok(parseMetadataToMetadataList(att.getObject(InputStream.class), new Metadata(),
                         att.getHeaders(), info, handlerTypeName)).build();
     }
 
@@ -109,7 +154,7 @@ public class RecursiveMetadataResource {
      * /rmeta/text   (store the content as text)<br/>
      * /rmeta/ignore (don't record any content)<br/>
      *
-     * @param info uri info
+     * @param info            uri info
      * @param handlerTypeName which type of handler to use
      * @return InputStream that can be deserialized as a list of {@link Metadata} objects
      * @throws Exception
@@ -118,66 +163,18 @@ public class RecursiveMetadataResource {
     @PUT
     @Produces("application/json")
     @Path("{" + HANDLER_TYPE_PARAM + " : (\\w+)?}")
-    public Response getMetadata(InputStream is,
-                                @Context HttpHeaders httpHeaders,
+    public Response getMetadata(InputStream is, @Context HttpHeaders httpHeaders,
                                 @Context UriInfo info,
-                                @PathParam(HANDLER_TYPE_PARAM) String handlerTypeName
-                                ) throws Exception {
+                                @PathParam(HANDLER_TYPE_PARAM) String handlerTypeName)
+            throws Exception {
         Metadata metadata = new Metadata();
-        return Response.ok(
-                parseMetadataToMetadataList(TikaResource.getInputStream(is, metadata, httpHeaders),
-						metadata,
-						httpHeaders.getRequestHeaders(), info, handlerTypeName)).build();
+        return Response.ok(parseMetadataToMetadataList(
+                TikaResource.getInputStream(is, metadata, httpHeaders), metadata,
+                httpHeaders.getRequestHeaders(), info, handlerTypeName)).build();
     }
 
-    public static List<Metadata> parseMetadata(InputStream is,
-                                               Metadata metadata,
-                                               MultivaluedMap<String, String> httpHeaders,
-                                               UriInfo info, String handlerTypeName)
-            throws Exception {
-
-        final ParseContext context = new ParseContext();
-        Parser parser = TikaResource.createParser();
-        // TODO: parameterize choice of max chars/max embedded attachments
-        RecursiveParserWrapper wrapper = new RecursiveParserWrapper(parser);
-
-
-        fillMetadata(parser, metadata, httpHeaders);
-        fillParseContext(httpHeaders, metadata, context);
-        TikaResource.logRequest(LOG, "/rmeta", metadata);
-
-        int writeLimit = -1;
-        if (httpHeaders.containsKey("writeLimit")) {
-            writeLimit = Integer.parseInt(httpHeaders.getFirst("writeLimit"));
-        }
-
-        int maxEmbeddedResources = -1;
-        if (httpHeaders.containsKey("maxEmbeddedResources")) {
-            maxEmbeddedResources = Integer.parseInt(httpHeaders.getFirst("maxEmbeddedResources"));
-        }
-
-        BasicContentHandlerFactory.HANDLER_TYPE type =
-                BasicContentHandlerFactory.parseHandlerType(handlerTypeName, DEFAULT_HANDLER_TYPE);
-        RecursiveParserWrapperHandler handler = new RecursiveParserWrapperHandler(
-                new BasicContentHandlerFactory(type, writeLimit), maxEmbeddedResources,
-                TikaResource.getConfig().getMetadataFilter());
-        try {
-            TikaResource.parse(wrapper, LOG, "/rmeta", is, handler, metadata, context);
-        } catch (TikaServerParseException e) {
-            //do nothing
-        } catch (SecurityException|WebApplicationException e) {
-		    throw e;
-        } catch (Exception e) {
-		    //we shouldn't get here?
-		    e.printStackTrace();
-        }
-
-		return handler.getMetadataList();
-	}
-
-
     private MetadataList parseMetadataToMetadataList(InputStream is, Metadata metadata,
-                                       MultivaluedMap<String, String> httpHeaders,
+                                                     MultivaluedMap<String, String> httpHeaders,
                                                      UriInfo info, String handlerTypeName)
             throws Exception {
         return new MetadataList(parseMetadata(is, metadata, httpHeaders, info, handlerTypeName));
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaDetectors.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaDetectors.java
index 5b738fb..e13bb36 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaDetectors.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaDetectors.java
@@ -16,16 +16,17 @@
  */
 package org.apache.tika.server.core.resource;
 
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+
 import org.apache.tika.detect.CompositeDetector;
 import org.apache.tika.detect.Detector;
 import org.apache.tika.server.core.HTMLHelper;
@@ -75,7 +76,7 @@ public class TikaDetectors {
 
     @GET
     @Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)
-    public String getDetectorsJSON() throws IOException  {
+    public String getDetectorsJSON() throws IOException {
         Map<String, Object> details = new HashMap<String, Object>();
         detectorAsMap(TikaResource.getConfig().getDetector(), details);
         return new ObjectMapper().writeValueAsString(details);
@@ -104,6 +105,7 @@ public class TikaDetectors {
         renderDetector(TikaResource.getConfig().getDetector(), text, 0);
         return text.toString();
     }
+
     private void renderDetector(Detector d, StringBuffer text, int indent) {
         boolean isComposite = (d instanceof CompositeDetector);
         String name = d.getClass().getName();
@@ -120,6 +122,7 @@ public class TikaDetectors {
                 renderDetector(sd, text, indent + 1);
             }
         } else {
-            text.append("\n");        }
+            text.append("\n");
+        }
     }
-}
\ No newline at end of file
+}
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaMimeTypes.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaMimeTypes.java
index c45fb25..dab53d4 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaMimeTypes.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaMimeTypes.java
@@ -16,9 +16,6 @@
  */
 package org.apache.tika.server.core.resource;
 
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -26,8 +23,12 @@ import java.util.List;
 import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.mime.MediaTypeRegistry;
 import org.apache.tika.parser.CompositeParser;
@@ -47,6 +48,14 @@ public class TikaMimeTypes {
         this.html = new HTMLHelper();
     }
 
+    private static String[] copyToStringArray(MediaType[] aliases) {
+        String[] strings = new String[aliases.length];
+        for (int i = 0; i < aliases.length; i++) {
+            strings[i] = aliases[i].toString();
+        }
+        return strings;
+    }
+
     @GET
     @Produces("text/html")
     public String getMimeTypesHTML() {
@@ -65,7 +74,8 @@ public class TikaMimeTypes {
         }
         h.append("<ul>");
         for (String section : firstType.keySet()) {
-            h.append("<li><a href=\"#").append(firstType.get(section)).append("\">").append(section).append("</a></li>\n");
+            h.append("<li><a href=\"#").append(firstType.get(section)).append("\">").append(section)
+                    .append("</a></li>\n");
         }
         h.append("</ul>");
 
@@ -78,7 +88,8 @@ public class TikaMimeTypes {
                 h.append("<div>Alias: ").append(alias).append("</div>\n");
             }
             if (type.supertype != null) {
-                h.append("<div>Super Type: <a href=\"#").append(type.supertype).append("\">").append(type.supertype).append("</a></div>\n");
+                h.append("<div>Super Type: <a href=\"#").append(type.supertype).append("\">")
+                        .append(type.supertype).append("</a></div>\n");
             }
 
             if (type.parser != null) {
@@ -92,7 +103,7 @@ public class TikaMimeTypes {
 
     @GET
     @Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)
-    public String getMimeTypesJSON() throws IOException  {
+    public String getMimeTypesJSON() throws IOException {
         Map<String, Object> details = new HashMap<String, Object>();
 
         for (MediaTypeDetails type : getMediaTypes()) {
@@ -109,16 +120,7 @@ public class TikaMimeTypes {
             details.put(type.type.toString(), typeDets);
         }
 
-        return new ObjectMapper().writerWithDefaultPrettyPrinter()
-                .writeValueAsString(details);
-    }
-
-    private static String[] copyToStringArray(MediaType[] aliases) {
-        String[] strings = new String[aliases.length];
-        for (int i = 0; i < aliases.length; i++) {
-            strings[i] = aliases[i].toString();
-        }
-        return strings;
+        return new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(details);
     }
 
     @GET
@@ -147,7 +149,8 @@ public class TikaMimeTypes {
 
     protected List<MediaTypeDetails> getMediaTypes() {
         MediaTypeRegistry registry = TikaResource.getConfig().getMediaTypeRegistry();
-        Map<MediaType, Parser> parsers = ((CompositeParser) TikaResource.getConfig().getParser()).getParsers();
+        Map<MediaType, Parser> parsers =
+                ((CompositeParser) TikaResource.getConfig().getParser()).getParsers();
         List<MediaTypeDetails> types =
                 new ArrayList<TikaMimeTypes.MediaTypeDetails>(registry.getTypes().size());
 
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaParsers.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaParsers.java
index 400230c..ea8ea1f 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaParsers.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaParsers.java
@@ -16,9 +16,6 @@
  */
 package org.apache.tika.server.core.resource;
 
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -28,8 +25,12 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.CompositeParser;
 import org.apache.tika.parser.ParseContext;
@@ -74,7 +75,8 @@ public class TikaParsers {
         return h.toString();
     }
 
-    private void parserAsHTML(ParserDetails p, boolean withMimeTypes, StringBuffer html, int level) {
+    private void parserAsHTML(ParserDetails p, boolean withMimeTypes, StringBuffer html,
+                              int level) {
         html.append("<h");
         html.append(level);
         html.append(">");
@@ -87,8 +89,9 @@ public class TikaParsers {
         html.append("</p>");
         if (p.isDecorated) {
             html.append("<p>Decorated Parser");
-            if (p.decoratedBy != null)
-                html.append( " - ").append(p.decoratedBy);
+            if (p.decoratedBy != null) {
+                html.append(" - ").append(p.decoratedBy);
+            }
             html.append("</p>");
         }
         if (p.isComposite) {
@@ -125,13 +128,12 @@ public class TikaParsers {
         return getParsersJSON(false);
     }
 
-    protected String getParsersJSON(boolean withMimeTypes) throws IOException  {
+    protected String getParsersJSON(boolean withMimeTypes) throws IOException {
         Map<String, Object> details = new HashMap<String, Object>();
-        parserAsMap(new ParserDetails(TikaResource.getConfig().getParser()), withMimeTypes, details);
+        parserAsMap(new ParserDetails(TikaResource.getConfig().getParser()), withMimeTypes,
+                details);
         ObjectMapper objectMapper = new ObjectMapper();
-        return objectMapper
-                .writerWithDefaultPrettyPrinter()
-                .writeValueAsString(details);
+        return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(details);
     }
 
     private void parserAsMap(ParserDetails p, boolean withMimeTypes, Map<String, Object> details) {
@@ -171,10 +173,13 @@ public class TikaParsers {
 
     protected String getParsersPlain(boolean withMimeTypes) {
         StringBuffer text = new StringBuffer();
-        renderParser(new ParserDetails(TikaResource.getConfig().getParser()), withMimeTypes, text, "");
+        renderParser(new ParserDetails(TikaResource.getConfig().getParser()), withMimeTypes, text,
+                "");
         return text.toString();
     }
-    private void renderParser(ParserDetails p, boolean withMimeTypes, StringBuffer text, String indent) {
+
+    private void renderParser(ParserDetails p, boolean withMimeTypes, StringBuffer text,
+                              String indent) {
         String nextIndent = indent + "  ";
 
         text.append(indent);
@@ -210,15 +215,15 @@ public class TikaParsers {
         private String shortName;
         private boolean isComposite;
         private boolean isDecorated;
-        private String  decoratedBy;
+        private String decoratedBy;
         private Set<MediaType> supportedTypes;
         private List<Parser> childParsers;
 
         private ParserDetails(Parser p) {
             if (p instanceof ParserDecorator) {
                 isDecorated = true;
-                decoratedBy = ((ParserDecorator)p).getDecorationName();
-                p = ((ParserDecorator)p).getWrappedParser();
+                decoratedBy = ((ParserDecorator) p).getDecorationName();
+                p = ((ParserDecorator) p).getWrappedParser();
             }
 
             className = p.getClass().getName();
@@ -229,8 +234,8 @@ public class TikaParsers {
                 supportedTypes = Collections.emptySet();
 
                 // Get the unique set of child parsers
-                Set<Parser> children = new HashSet<Parser>(
-                        ((CompositeParser) p).getParsers(EMPTY_PC).values());
+                Set<Parser> children =
+                        new HashSet<Parser>(((CompositeParser) p).getParsers(EMPTY_PC).values());
                 // Sort it by class name
                 childParsers = new ArrayList<Parser>(children);
                 childParsers.sort(Comparator.comparing(parser -> parser.getClass().getName()));
@@ -239,4 +244,4 @@ public class TikaParsers {
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaResource.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaResource.java
index 731d7b1..c83b5a2 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaResource.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaResource.java
@@ -17,9 +17,47 @@
 
 package org.apache.tika.server.core.resource;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.StreamingOutput;
+import javax.ws.rs.core.UriInfo;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import javax.xml.transform.sax.TransformerHandler;
+import javax.xml.transform.stream.StreamResult;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.cxf.attachment.ContentDisposition;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+
 import org.apache.tika.Tika;
 import org.apache.tika.config.TikaConfig;
 import org.apache.tika.exception.EncryptedDocumentException;
@@ -38,54 +76,15 @@ import org.apache.tika.server.core.InputStreamFactory;
 import org.apache.tika.server.core.ParseContextConfig;
 import org.apache.tika.server.core.ServerStatus;
 import org.apache.tika.server.core.TikaServerParseException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.StreamingOutput;
-import javax.ws.rs.core.UriInfo;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.sax.SAXTransformerFactory;
-import javax.xml.transform.sax.TransformerHandler;
-import javax.xml.transform.stream.StreamResult;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
 
 @Path("/tika")
 public class TikaResource {
 
-    private static Pattern ALLOWABLE_HEADER_CHARS = Pattern.compile("(?i)^[-/_+\\.A-Z0-9 ]+$");
+    public static final String GREETING =
+            "This is Tika Server (" + new Tika().toString() + "). Please PUT\n";
     private static final String META_PREFIX = "meta_";
-    public static final String GREETING = "This is Tika Server (" + new Tika().toString() + "). Please PUT\n";
-
-
     private static final Logger LOG = LoggerFactory.getLogger(TikaResource.class);
-
+    private static Pattern ALLOWABLE_HEADER_CHARS = Pattern.compile("(?i)^[-/_+\\.A-Z0-9 ]+$");
     private static TikaConfig tikaConfig;
     private static DigestingParser.Digester digester = null;
     private static InputStreamFactory inputStreamFactory = null;
@@ -103,7 +102,6 @@ public class TikaResource {
     }
 
 
-
     @SuppressWarnings("serial")
     public static Parser createParser() {
         final Parser parser = new AutoDetectParser(tikaConfig);
@@ -138,12 +136,12 @@ public class TikaResource {
     }
 
     public static void fillParseContext(MultivaluedMap<String, String> httpHeaders,
-                                        Metadata metadata,
-                                        ParseContext parseContext) {
+                                        Metadata metadata, ParseContext parseContext) {
         PARSE_CONTEXT_CONFIG.configure(httpHeaders, metadata, parseContext);
     }
 
-    public static InputStream getInputStream(InputStream is, Metadata metadata, HttpHeaders headers) {
+    public static InputStream getInputStream(InputStream is, Metadata metadata,
+                                             HttpHeaders headers) {
         try {
             return inputStreamFactory.getInputSteam(is, metadata, headers);
         } catch (IOException e) {
@@ -154,10 +152,10 @@ public class TikaResource {
     /**
      * Utility method to set a property on a class via reflection.
      *
-     * @param object      the <code>Object</code> to set the property on.
-     * @param key         the key of the HTTP Header.
-     * @param val         the value of HTTP header.
-     * @param prefix      the name of the HTTP Header prefix used to find property.
+     * @param object the <code>Object</code> to set the property on.
+     * @param key    the key of the HTTP Header.
+     * @param val    the value of HTTP header.
+     * @param prefix the name of the HTTP Header prefix used to find property.
      * @throws WebApplicationException thrown when field cannot be found.
      */
     public static void processHeaderConfig(Object object, String key, String val, String prefix) {
@@ -168,7 +166,7 @@ public class TikaResource {
                 field = object.getClass().getDeclaredField(StringUtils.uncapitalize(property));
             } catch (NoSuchFieldException e) {
                 // try to match field case-insensitive way
-                for(Field aField : object.getClass().getDeclaredFields()) {
+                for (Field aField : object.getClass().getDeclaredFields()) {
                     if (aField.getName().equalsIgnoreCase(property)) {
                         field = aField;
                         break;
@@ -225,17 +223,17 @@ public class TikaResource {
                 } else if (clazz == long.class || clazz == Long.class) {
                     m.invoke(object, Long.parseLong(val));
                 } else {
-                    throw new IllegalArgumentException("setter must be String, int, float, double or boolean...for now");
+                    throw new IllegalArgumentException(
+                            "setter must be String, int, float, double or boolean...for now");
                 }
             } else {
-                throw new NoSuchMethodException("Couldn't find: "+setter);
+                throw new NoSuchMethodException("Couldn't find: " + setter);
             }
 
         } catch (Throwable ex) {
-            throw new WebApplicationException(
-                    String.format(Locale.ROOT,
-                    "%s is an invalid %s header or has an invalid value: %s",
-                            key, prefix, val), Response.Status.BAD_REQUEST);
+            throw new WebApplicationException(String.format(Locale.ROOT,
+                    "%s is an invalid %s header or has an invalid value: %s", key, prefix, val),
+                    Response.Status.BAD_REQUEST);
         }
     }
 
@@ -244,21 +242,24 @@ public class TikaResource {
             throw new IllegalArgumentException("setter and val must not be null");
         }
         if (setter.toLowerCase(Locale.US).contains("trusted")) {
-            throw new IllegalArgumentException("Can't call a trusted method via tika-server headers");
+            throw new IllegalArgumentException(
+                    "Can't call a trusted method via tika-server headers");
         }
         Matcher m = ALLOWABLE_HEADER_CHARS.matcher(val);
-        if (! m.find()) {
-            throw new IllegalArgumentException("Header val: "+val +" contains illegal characters. " +
-                    "Must contain: TikaResource.ALLOWABLE_HEADER_CHARS");
+        if (!m.find()) {
+            throw new IllegalArgumentException(
+                    "Header val: " + val + " contains illegal characters. " +
+                            "Must contain: TikaResource.ALLOWABLE_HEADER_CHARS");
         }
     }
 
     /**
      * Tries to get method. Silently swallows NoMethodException and returns
      * <code>null</code> if not found.
+     *
      * @param object the object to get method from.
      * @param method the name of the method to get.
-     * @param clazz the parameter type of the method to get.
+     * @param clazz  the parameter type of the method to get.
      * @return the found method instance
      */
     private static Method tryToGetMethod(Object object, String method, Class clazz) {
@@ -279,14 +280,14 @@ public class TikaResource {
 
         String contentTypeHeader = httpHeaders.getFirst(HttpHeaders.CONTENT_TYPE);
         javax.ws.rs.core.MediaType mediaType =
-                (contentTypeHeader == null || "*/*".equals(contentTypeHeader))
-                        ? null
-                : javax.ws.rs.core.MediaType.valueOf(contentTypeHeader);
+                (contentTypeHeader == null || "*/*".equals(contentTypeHeader)) ? null :
+                        javax.ws.rs.core.MediaType.valueOf(contentTypeHeader);
         if (mediaType != null && "xml".equals(mediaType.getSubtype())) {
             mediaType = null;
         }
 
-        if (mediaType != null && mediaType.equals(javax.ws.rs.core.MediaType.APPLICATION_OCTET_STREAM_TYPE)) {
+        if (mediaType != null &&
+                mediaType.equals(javax.ws.rs.core.MediaType.APPLICATION_OCTET_STREAM_TYPE)) {
             mediaType = null;
         }
 
@@ -298,7 +299,7 @@ public class TikaResource {
         for (Map.Entry<String, List<String>> e : httpHeaders.entrySet()) {
             if (e.getKey().startsWith(META_PREFIX)) {
                 String tikaKey = e.getKey().substring(META_PREFIX.length());
-                for (String value: e.getValue()) {
+                for (String value : e.getValue()) {
                     metadata.add(tikaKey, value);
                 }
             }
@@ -310,22 +311,22 @@ public class TikaResource {
      * NOTE: This call to parse closes the InputStream. DO NOT surround
      * the call in an auto-close block.
      *
-     * @param parser parser to use
-     * @param logger logger to use
-     * @param path file path
-     * @param inputStream inputStream (which is closed by this call!)
-     * @param handler handler to use
-     * @param metadata metadata
+     * @param parser       parser to use
+     * @param logger       logger to use
+     * @param path         file path
+     * @param inputStream  inputStream (which is closed by this call!)
+     * @param handler      handler to use
+     * @param metadata     metadata
      * @param parseContext parse context
      * @throws IOException wrapper for all exceptions
      */
     public static void parse(Parser parser, Logger logger, String path, InputStream inputStream,
-                             ContentHandler handler, Metadata metadata, ParseContext parseContext) throws IOException {
+                             ContentHandler handler, Metadata metadata, ParseContext parseContext)
+            throws IOException {
 
         checkIsOperating();
         String fileName = metadata.get(TikaCoreProperties.RESOURCE_NAME_KEY);
-        long taskId = SERVER_STATUS.start(ServerStatus.TASK.PARSE,
-                fileName);
+        long taskId = SERVER_STATUS.start(ServerStatus.TASK.PARSE, fileName);
         try {
             parser.parse(inputStream, handler, metadata, parseContext);
         } catch (SAXException e) {
@@ -348,7 +349,7 @@ public class TikaResource {
 
     public static void checkIsOperating() {
         //check that server is not in shutdown mode
-        if (! SERVER_STATUS.isOperating()) {
+        if (!SERVER_STATUS.isOperating()) {
             throw new WebApplicationException(Response.Status.SERVICE_UNAVAILABLE);
         }
     }
@@ -358,7 +359,8 @@ public class TikaResource {
         if (metadata.get(org.apache.tika.metadata.HttpHeaders.CONTENT_TYPE) == null) {
             logger.info("{} (autodetecting type)", endpoint);
         } else {
-            logger.info("{} ({})", endpoint, metadata.get(org.apache.tika.metadata.HttpHeaders.CONTENT_TYPE));
+            logger.info("{} ({})", endpoint,
+                    metadata.get(org.apache.tika.metadata.HttpHeaders.CONTENT_TYPE));
         }
     }
 
@@ -374,7 +376,8 @@ public class TikaResource {
     @Produces("text/plain")
     @Path("form")
     public StreamingOutput getTextFromMultipart(Attachment att, @Context final UriInfo info) {
-        return produceText(att.getObject(InputStream.class), new Metadata(), att.getHeaders(), info);
+        return produceText(att.getObject(InputStream.class), new Metadata(), att.getHeaders(),
+                info);
     }
 
     //this is equivalent to text-main in tika-app
@@ -382,7 +385,8 @@ public class TikaResource {
     @Consumes("*/*")
     @Produces("text/plain")
     @Path("main")
-    public StreamingOutput getTextMain(final InputStream is, @Context HttpHeaders httpHeaders, @Context final UriInfo info) {
+    public StreamingOutput getTextMain(final InputStream is, @Context HttpHeaders httpHeaders,
+                                       @Context final UriInfo info) {
         return produceTextMain(is, httpHeaders.getRequestHeaders(), info);
     }
 
@@ -391,11 +395,14 @@ public class TikaResource {
     @Consumes("multipart/form-data")
     @Produces("text/plain")
     @Path("form/main")
-    public StreamingOutput getTextMainFromMultipart(final Attachment att, @Context final UriInfo info) {
+    public StreamingOutput getTextMainFromMultipart(final Attachment att,
+                                                    @Context final UriInfo info) {
         return produceTextMain(att.getObject(InputStream.class), att.getHeaders(), info);
     }
 
-    public StreamingOutput produceTextMain(final InputStream is, MultivaluedMap<String, String> httpHeaders, final UriInfo info) {
+    public StreamingOutput produceTextMain(final InputStream is,
+                                           MultivaluedMap<String, String> httpHeaders,
+                                           final UriInfo info) {
         final Parser parser = createParser();
         final Metadata metadata = new Metadata();
         final ParseContext context = new ParseContext();
@@ -406,7 +413,8 @@ public class TikaResource {
         logRequest(LOG, "/tika", metadata);
 
         return new StreamingOutput() {
-            public void write(OutputStream outputStream) throws IOException, WebApplicationException {
+            public void write(OutputStream outputStream)
+                    throws IOException, WebApplicationException {
                 Writer writer = new OutputStreamWriter(outputStream, UTF_8);
 
                 ContentHandler handler = new BoilerpipeContentHandler(writer);
@@ -420,12 +428,16 @@ public class TikaResource {
     @PUT
     @Consumes("*/*")
     @Produces("text/plain")
-    public StreamingOutput getText(final InputStream is, @Context HttpHeaders httpHeaders, @Context final UriInfo info) {
+    public StreamingOutput getText(final InputStream is, @Context HttpHeaders httpHeaders,
+                                   @Context final UriInfo info) {
         final Metadata metadata = new Metadata();
-        return produceText(getInputStream(is, metadata, httpHeaders), metadata, httpHeaders.getRequestHeaders(), info);
+        return produceText(getInputStream(is, metadata, httpHeaders), metadata,
+                httpHeaders.getRequestHeaders(), info);
     }
 
-    public StreamingOutput produceText(final InputStream is, final Metadata metadata, MultivaluedMap<String, String> httpHeaders, final UriInfo info) {
+    public StreamingOutput produceText(final InputStream is, final Metadata metadata,
+                                       MultivaluedMap<String, String> httpHeaders,
+                                       final UriInfo info) {
         final Parser parser = createParser();
         final ParseContext context = new ParseContext();
 
@@ -435,10 +447,12 @@ public class TikaResource {
         logRequest(LOG, "/tika", metadata);
 
         return new StreamingOutput() {
-            public void write(OutputStream outputStream) throws IOException, WebApplicationException {
+            public void write(OutputStream outputStream)
+                    throws IOException, WebApplicationException {
                 Writer writer = new OutputStreamWriter(outputStream, UTF_8);
 
-                BodyContentHandler body = new BodyContentHandler(new RichTextContentHandler(writer));
+                BodyContentHandler body =
+                        new BodyContentHandler(new RichTextContentHandler(writer));
 
                 parse(parser, LOG, info.getPath(), is, body, metadata, context);
             }
@@ -450,16 +464,18 @@ public class TikaResource {
     @Produces("text/html")
     @Path("form")
     public StreamingOutput getHTMLFromMultipart(Attachment att, @Context final UriInfo info) {
-        return produceOutput(att.getObject(InputStream.class), new Metadata(),
-                att.getHeaders(), info, "html");
+        return produceOutput(att.getObject(InputStream.class), new Metadata(), att.getHeaders(),
+                info, "html");
     }
 
     @PUT
     @Consumes("*/*")
     @Produces("text/html")
-    public StreamingOutput getHTML(final InputStream is, @Context HttpHeaders httpHeaders, @Context final UriInfo info) {
+    public StreamingOutput getHTML(final InputStream is, @Context HttpHeaders httpHeaders,
+                                   @Context final UriInfo info) {
         Metadata metadata = new Metadata();
-        return produceOutput(getInputStream(is, metadata, httpHeaders), metadata, httpHeaders.getRequestHeaders(), info, "html");
+        return produceOutput(getInputStream(is, metadata, httpHeaders), metadata,
+                httpHeaders.getRequestHeaders(), info, "html");
     }
 
     @POST
@@ -467,20 +483,22 @@ public class TikaResource {
     @Produces("text/xml")
     @Path("form")
     public StreamingOutput getXMLFromMultipart(Attachment att, @Context final UriInfo info) {
-        return produceOutput(att.getObject(InputStream.class),
-                new Metadata(), att.getHeaders(), info, "xml");
+        return produceOutput(att.getObject(InputStream.class), new Metadata(), att.getHeaders(),
+                info, "xml");
     }
 
     @PUT
     @Consumes("*/*")
     @Produces("text/xml")
-    public StreamingOutput getXML(final InputStream is, @Context HttpHeaders httpHeaders, @Context final UriInfo info) {
+    public StreamingOutput getXML(final InputStream is, @Context HttpHeaders httpHeaders,
+                                  @Context final UriInfo info) {
         Metadata metadata = new Metadata();
-        return produceOutput(getInputStream(is, metadata, httpHeaders),
-                metadata, httpHeaders.getRequestHeaders(), info, "xml");
+        return produceOutput(getInputStream(is, metadata, httpHeaders), metadata,
+                httpHeaders.getRequestHeaders(), info, "xml");
     }
 
-    private StreamingOutput produceOutput(final InputStream is, Metadata metadata, final MultivaluedMap<String, String> httpHeaders,
+    private StreamingOutput produceOutput(final InputStream is, Metadata metadata,
+                                          final MultivaluedMap<String, String> httpHeaders,
                                           final UriInfo info, final String format) {
         final Parser parser = createParser();
         final ParseContext context = new ParseContext();
@@ -498,7 +516,8 @@ public class TikaResource {
                 ContentHandler content;
 
                 try {
-                    SAXTransformerFactory factory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
+                    SAXTransformerFactory factory =
+                            (SAXTransformerFactory) SAXTransformerFactory.newInstance();
                     TransformerHandler handler = factory.newTransformerHandler();
                     handler.getTransformer().setOutputProperty(OutputKeys.METHOD, format);
                     handler.getTransformer().setOutputProperty(OutputKeys.INDENT, "yes");
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaServerStatus.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaServerStatus.java
index 5d708c3..3c463e5 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaServerStatus.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaServerStatus.java
@@ -16,13 +16,13 @@
  */
 package org.apache.tika.server.core.resource;
 
-import org.apache.tika.server.core.ServerStatus;
-
+import java.util.LinkedHashMap;
+import java.util.Map;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
-import java.util.LinkedHashMap;
-import java.util.Map;
+
+import org.apache.tika.server.core.ServerStatus;
 
 @Path("/status")
 public class TikaServerStatus {
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaWelcome.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaWelcome.java
index ad5c65a..a3f53c0 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaWelcome.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TikaWelcome.java
@@ -16,14 +16,6 @@
  */
 package org.apache.tika.server.core.resource;
 
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.HEAD;
-import javax.ws.rs.OPTIONS;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
@@ -36,8 +28,17 @@ import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.HEAD;
+import javax.ws.rs.OPTIONS;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 
 import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
+
 import org.apache.tika.Tika;
 import org.apache.tika.server.core.HTMLHelper;
 
@@ -77,8 +78,11 @@ public class TikaWelcome {
         for (Class<?> endpoint : endpoints) {
             Path p = endpoint.getAnnotation(Path.class);
             String basePath = null;
-            if (p != null)
-                basePath = p.value().endsWith("/") ? p.value().substring(0, p.value().length()-2):p.value();
+            if (p != null) {
+                basePath =
+                        p.value().endsWith("/") ? p.value().substring(0, p.value().length() - 2) :
+                                p.value();
+            }
 
             for (Method m : endpoint.getMethods()) {
                 String httpMethod = null;
@@ -105,12 +109,11 @@ public class TikaWelcome {
                         mPath = "";
                     }
                     if (methodPath != null) {
-			if(methodPath.startsWith("/")){
-			    mPath += methodPath;
-			}
-			else{
-			    mPath += "/"+ methodPath;
-			}
+                        if (methodPath.startsWith("/")) {
+                            mPath += methodPath;
+                        } else {
+                            mPath += "/" + methodPath;
+                        }
                     }
                     if (produces == null) {
                         produces = new String[0];
@@ -156,10 +159,7 @@ public class TikaWelcome {
         if (m.find()) {
             String versionNumber = m.group();
             String miredot = "http://tika.apache.org/" + versionNumber + "/miredot/index.html";
-            h.append(" and <a href=\"")
-                    .append(miredot)
-                    .append("\">")
-                    .append(miredot)
+            h.append(" and <a href=\"").append(miredot).append("\">").append(miredot)
                     .append("</a>");
         }
         h.append("</p>\n");
@@ -223,8 +223,8 @@ public class TikaWelcome {
         public final String httpMethod;
         public final List<String> produces;
 
-        protected Endpoint(Class<?> endpoint, Method method, String path,
-                           String httpMethod, String[] produces) {
+        protected Endpoint(Class<?> endpoint, Method method, String path, String httpMethod,
+                           String[] produces) {
             this.className = endpoint.getCanonicalName();
             this.methodName = method.getName();
             this.path = path;
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TranslateResource.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TranslateResource.java
index 6054aa8..416f208 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TranslateResource.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TranslateResource.java
@@ -22,7 +22,6 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
-
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
 import javax.ws.rs.PUT;
@@ -31,6 +30,9 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 
 import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import org.apache.tika.config.LoadErrorHandler;
 import org.apache.tika.config.ServiceLoader;
 import org.apache.tika.exception.TikaException;
@@ -38,85 +40,78 @@ import org.apache.tika.langdetect.optimaize.OptimaizeLangDetector;
 import org.apache.tika.language.detect.LanguageResult;
 import org.apache.tika.language.translate.Translator;
 import org.apache.tika.server.core.ServerStatus;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 @Path("/translate")
 public class TranslateResource {
-	private Translator defaultTranslator;
-
-	private ServiceLoader loader;
+    private static final Logger LOG = LoggerFactory.getLogger(TranslateResource.class);
+    private final ServerStatus serverStatus;
+    private Translator defaultTranslator;
+    private ServiceLoader loader;
 
-	private static final Logger LOG = LoggerFactory.getLogger(TranslateResource.class);
+    public TranslateResource(ServerStatus serverStatus) {
+        this.loader =
+                new ServiceLoader(ServiceLoader.class.getClassLoader(), LoadErrorHandler.WARN);
+        this.defaultTranslator = TikaResource.getConfig().getTranslator();
+        this.serverStatus = serverStatus;
+    }
 
-	private final ServerStatus serverStatus;
-	public TranslateResource(ServerStatus serverStatus) {
-		this.loader = new ServiceLoader(ServiceLoader.class.getClassLoader(),
-				LoadErrorHandler.WARN);
-		this.defaultTranslator = TikaResource.getConfig().getTranslator();
-		this.serverStatus = serverStatus;
-	}
+    @PUT
+    @POST
+    @Path("/all/{translator}/{src}/{dest}")
+    @Consumes("*/*")
+    @Produces("text/plain")
+    public String translate(final InputStream is, @PathParam("translator") String translator,
+                            @PathParam("src") String sLang, @PathParam("dest") String dLang)
+            throws TikaException, IOException {
+        return doTranslate(IOUtils.toString(is, UTF_8), translator, sLang, dLang);
 
-	@PUT
-	@POST
-	@Path("/all/{translator}/{src}/{dest}")
-	@Consumes("*/*")
-	@Produces("text/plain")
-	public String translate(final InputStream is,
-			@PathParam("translator") String translator,
-			@PathParam("src") String sLang, @PathParam("dest") String dLang)
-			throws TikaException, IOException {
-		return doTranslate(IOUtils.toString(is, UTF_8), translator, sLang, dLang);
+    }
 
-	}
+    @PUT
+    @POST
+    @Path("/all/{translator}/{dest}")
+    @Consumes("*/*")
+    @Produces("text/plain")
+    public String autoTranslate(final InputStream is, @PathParam("translator") String translator,
+                                @PathParam("dest") String dLang) throws TikaException, IOException {
+        final String content = IOUtils.toString(is, UTF_8);
+        LanguageResult language = new OptimaizeLangDetector().loadModels().detect(content);
+        if (language.isUnknown()) {
+            throw new TikaException("Unable to detect language to use for translation of text");
+        }
 
-	@PUT
-	@POST
-	@Path("/all/{translator}/{dest}")
-	@Consumes("*/*")
-	@Produces("text/plain")
-	public String autoTranslate(final InputStream is,
-			@PathParam("translator") String translator,
-			@PathParam("dest") String dLang) throws TikaException, IOException {
-		final String content = IOUtils.toString(is, UTF_8);
-		LanguageResult language = new OptimaizeLangDetector().loadModels().detect(content);
-		if (language.isUnknown()) {
-			throw new TikaException("Unable to detect language to use for translation of text");
-		}
-		
-		String sLang = language.getLanguage();
-		LOG.info("LanguageIdentifier: detected source lang: [{}]", sLang);
-		return doTranslate(content, translator, sLang, dLang);
-	}
+        String sLang = language.getLanguage();
+        LOG.info("LanguageIdentifier: detected source lang: [{}]", sLang);
+        return doTranslate(content, translator, sLang, dLang);
+    }
 
-	private String doTranslate(String content, String translator, String sLang,
-			String dLang) throws TikaException, IOException {
-		LOG.info("Using translator: [{}]: src: [{}]: dest: [{}]", translator, sLang, dLang);
-		Translator translate = byClassName(translator);
-		if (translate == null) {
-			translate = this.defaultTranslator;
-			LOG.info("Using default translator");
-		}
+    private String doTranslate(String content, String translator, String sLang, String dLang)
+            throws TikaException, IOException {
+        LOG.info("Using translator: [{}]: src: [{}]: dest: [{}]", translator, sLang, dLang);
+        Translator translate = byClassName(translator);
+        if (translate == null) {
+            translate = this.defaultTranslator;
+            LOG.info("Using default translator");
+        }
         TikaResource.checkIsOperating();
-		long taskId = serverStatus.start(ServerStatus.TASK.TRANSLATE, null);
-		try {
-			return translate.translate(content, sLang, dLang);
-		} catch (OutOfMemoryError e) {
-		    serverStatus.setStatus(ServerStatus.STATUS.ERROR);
-		    throw e;
+        long taskId = serverStatus.start(ServerStatus.TASK.TRANSLATE, null);
+        try {
+            return translate.translate(content, sLang, dLang);
+        } catch (OutOfMemoryError e) {
+            serverStatus.setStatus(ServerStatus.STATUS.ERROR);
+            throw e;
         } finally {
-			serverStatus.complete(taskId);
-		}
-	}
+            serverStatus.complete(taskId);
+        }
+    }
 
-	private Translator byClassName(String className) {
-		List<Translator> translators = loader
-				.loadStaticServiceProviders(Translator.class);
-		for (Translator t : translators) {
-			if (t.getClass().getName().equals(className)) {
-				return t;
-			}
-		}
-		return null;
-	}
+    private Translator byClassName(String className) {
+        List<Translator> translators = loader.loadStaticServiceProviders(Translator.class);
+        for (Translator t : translators) {
+            if (t.getClass().getName().equals(className)) {
+                return t;
+            }
+        }
+        return null;
+    }
 }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/UnpackerResource.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/UnpackerResource.java
index a3d733a..09194ea 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/UnpackerResource.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/UnpackerResource.java
@@ -21,14 +21,6 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.tika.server.core.resource.TikaResource.fillMetadata;
 import static org.apache.tika.server.core.resource.TikaResource.fillParseContext;
 
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -40,11 +32,25 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
 
 import au.com.bytecode.opencsv.CSVWriter;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.mutable.MutableInt;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
 import org.apache.tika.exception.TikaMemoryLimitException;
 import org.apache.tika.extractor.DefaultEmbeddedStreamTranslator;
 import org.apache.tika.extractor.EmbeddedDocumentExtractor;
@@ -58,22 +64,17 @@ import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.Parser;
 import org.apache.tika.sax.BodyContentHandler;
 import org.apache.tika.sax.RichTextContentHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
 
 @Path("/unpack")
 public class UnpackerResource {
-    private static final long MAX_ATTACHMENT_BYTES = 100*1024*1024;
-
     public static final String TEXT_FILENAME = "__TEXT__";
+    private static final long MAX_ATTACHMENT_BYTES = 100 * 1024 * 1024;
     private static final String META_FILENAME = "__METADATA__";
 
     private static final Logger LOG = LoggerFactory.getLogger(UnpackerResource.class);
 
-    public static void metadataToCsv(Metadata metadata, OutputStream outputStream) throws IOException {
+    public static void metadataToCsv(Metadata metadata, OutputStream outputStream)
+            throws IOException {
         CSVWriter writer = new CSVWriter(new OutputStreamWriter(outputStream, UTF_8));
 
         for (String name : metadata.names()) {
@@ -90,38 +91,30 @@ public class UnpackerResource {
     @Path("/{id:(/.*)?}")
     @PUT
     @Produces({"application/zip", "application/x-tar"})
-    public Map<String, byte[]> unpack(
-            InputStream is,
-            @Context HttpHeaders httpHeaders,
-            @Context UriInfo info
-    ) throws Exception {
-        return process(TikaResource.getInputStream(is, new Metadata(), httpHeaders), httpHeaders, info, false);
+    public Map<String, byte[]> unpack(InputStream is, @Context HttpHeaders httpHeaders,
+                                      @Context UriInfo info) throws Exception {
+        return process(TikaResource.getInputStream(is, new Metadata(), httpHeaders), httpHeaders,
+                info, false);
     }
 
     @Path("/all{id:(/.*)?}")
     @PUT
     @Produces({"application/zip", "application/x-tar"})
-    public Map<String, byte[]> unpackAll(
-            InputStream is,
-            @Context HttpHeaders httpHeaders,
-            @Context UriInfo info
-    ) throws Exception {
-        return process(TikaResource.getInputStream(is, new Metadata(), httpHeaders), httpHeaders, info, true);
+    public Map<String, byte[]> unpackAll(InputStream is, @Context HttpHeaders httpHeaders,
+                                         @Context UriInfo info) throws Exception {
+        return process(TikaResource.getInputStream(is, new Metadata(), httpHeaders), httpHeaders,
+                info, true);
     }
 
-    private Map<String, byte[]> process(
-            InputStream is,
-            @Context HttpHeaders httpHeaders,
-            @Context UriInfo info,
-            boolean saveAll
-    ) throws Exception {
+    private Map<String, byte[]> process(InputStream is, @Context HttpHeaders httpHeaders,
+                                        @Context UriInfo info, boolean saveAll) throws Exception {
         Metadata metadata = new Metadata();
         ParseContext pc = new ParseContext();
 
         Parser parser = TikaResource.createParser();
         if (parser instanceof DigestingParser) {
             //no need to digest for unwrapping
-            parser = ((DigestingParser)parser).getWrappedParser();
+            parser = ((DigestingParser) parser).getWrappedParser();
         }
         fillMetadata(parser, metadata, httpHeaders.getRequestHeaders());
         fillParseContext(httpHeaders.getRequestHeaders(), metadata, pc);
@@ -134,7 +127,8 @@ public class UnpackerResource {
         ByteArrayOutputStream text = new ByteArrayOutputStream();
 
         if (saveAll) {
-            ch = new BodyContentHandler(new RichTextContentHandler(new OutputStreamWriter(text, UTF_8)));
+            ch = new BodyContentHandler(
+                    new RichTextContentHandler(new OutputStreamWriter(text, UTF_8)));
         } else {
             ch = new DefaultHandler();
         }
@@ -164,7 +158,8 @@ public class UnpackerResource {
     private class MyEmbeddedDocumentExtractor implements EmbeddedDocumentExtractor {
         private final MutableInt count;
         private final Map<String, byte[]> zout;
-        private final EmbeddedStreamTranslator embeddedStreamTranslator = new DefaultEmbeddedStreamTranslator();
+        private final EmbeddedStreamTranslator embeddedStreamTranslator =
+                new DefaultEmbeddedStreamTranslator();
 
         MyEmbeddedDocumentExtractor(MutableInt count, Map<String, byte[]> zout) {
             this.count = count;
@@ -175,13 +170,14 @@ public class UnpackerResource {
             return true;
         }
 
-        public void parseEmbedded(InputStream inputStream, ContentHandler contentHandler, Metadata metadata, boolean b)
-                throws SAXException, IOException {
+        public void parseEmbedded(InputStream inputStream, ContentHandler contentHandler,
+                                  Metadata metadata, boolean b) throws SAXException, IOException {
             ByteArrayOutputStream bos = new ByteArrayOutputStream();
             BoundedInputStream bis = new BoundedInputStream(MAX_ATTACHMENT_BYTES, inputStream);
             IOUtils.copy(bis, bos);
             if (bis.hasHitBound()) {
-                throw new IOException(new TikaMemoryLimitException(MAX_ATTACHMENT_BYTES+1, MAX_ATTACHMENT_BYTES));
+                throw new IOException(new TikaMemoryLimitException(MAX_ATTACHMENT_BYTES + 1,
+                        MAX_ATTACHMENT_BYTES));
             }
             byte[] data = bos.toByteArray();
 
@@ -194,7 +190,8 @@ public class UnpackerResource {
 
             if (!name.contains(".") && contentType != null) {
                 try {
-                    String ext = TikaResource.getConfig().getMimeRepository().forName(contentType).getExtension();
+                    String ext = TikaResource.getConfig().getMimeRepository().forName(contentType)
+                            .getExtension();
 
                     if (ext != null) {
                         name += ext;
@@ -205,7 +202,8 @@ public class UnpackerResource {
             }
             try (InputStream is = new ByteArrayInputStream(data)) {
                 if (embeddedStreamTranslator.shouldTranslate(is, metadata)) {
-                    InputStream translated = embeddedStreamTranslator.translate(new ByteArrayInputStream(data), metadata);
+                    InputStream translated = embeddedStreamTranslator
+                            .translate(new ByteArrayInputStream(data), metadata);
                     ByteArrayOutputStream bos2 = new ByteArrayOutputStream();
                     IOUtils.copy(translated, bos2);
                     data = bos2.toByteArray();
@@ -237,7 +235,7 @@ public class UnpackerResource {
                 normalizedName = normalizedName.substring(prefixLength);
             }
             if (zout.containsKey(normalizedName)) {
-                return UUID.randomUUID().toString()+"-"+normalizedName;
+                return UUID.randomUUID().toString() + "-" + normalizedName;
             }
             return normalizedName;
         }
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/CSVMessageBodyWriter.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/CSVMessageBodyWriter.java
index 5e61a31..7c98ee6 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/CSVMessageBodyWriter.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/CSVMessageBodyWriter.java
@@ -17,12 +17,7 @@
 
 package org.apache.tika.server.core.writer;
 
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -31,29 +26,37 @@ import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.Arrays;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.ext.Provider;
 
 import au.com.bytecode.opencsv.CSVWriter;
-import org.apache.tika.metadata.Metadata;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
+import org.apache.tika.metadata.Metadata;
 
 @Provider
 @Produces("text/csv")
 public class CSVMessageBodyWriter implements MessageBodyWriter<Metadata> {
 
-    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations,
+                               MediaType mediaType) {
         return Metadata.class.isAssignableFrom(type);
     }
 
-    public long getSize(Metadata data, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public long getSize(Metadata data, Class<?> type, Type genericType, Annotation[] annotations,
+                        MediaType mediaType) {
         return -1;
     }
 
     @Override
     @SuppressWarnings("resource")
-    public void writeTo(Metadata metadata, Class<?> type, Type genericType, Annotation[] annotations,
-                        MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException,
-            WebApplicationException {
+    public void writeTo(Metadata metadata, Class<?> type, Type genericType,
+                        Annotation[] annotations, MediaType mediaType,
+                        MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
+            throws IOException, WebApplicationException {
 
         CSVWriter writer = new CSVWriter(new OutputStreamWriter(entityStream, UTF_8));
 
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/JSONMessageBodyWriter.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/JSONMessageBodyWriter.java
index a0438af..e975b82 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/JSONMessageBodyWriter.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/JSONMessageBodyWriter.java
@@ -17,12 +17,7 @@
 
 package org.apache.tika.server.core.writer;
 
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -30,29 +25,35 @@ import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.ext.Provider;
 
-import org.apache.tika.exception.TikaException;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.serialization.JsonMetadata;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
-
 @Provider
 @Produces(MediaType.APPLICATION_JSON)
 public class JSONMessageBodyWriter implements MessageBodyWriter<Metadata> {
 
-    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations,
+                               MediaType mediaType) {
         return Metadata.class.isAssignableFrom(type);
     }
 
-    public long getSize(Metadata data, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public long getSize(Metadata data, Class<?> type, Type genericType, Annotation[] annotations,
+                        MediaType mediaType) {
         return -1;
     }
 
     @Override
-    public void writeTo(Metadata metadata, Class<?> type, Type genericType, Annotation[] annotations,
-                        MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException,
-            WebApplicationException {
+    public void writeTo(Metadata metadata, Class<?> type, Type genericType,
+                        Annotation[] annotations, MediaType mediaType,
+                        MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
+            throws IOException, WebApplicationException {
         Writer writer = new OutputStreamWriter(entityStream, UTF_8);
         JsonMetadata.toJson(metadata, writer);
         writer.flush();
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/JSONObjWriter.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/JSONObjWriter.java
index c79ac48..30354a0 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/JSONObjWriter.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/JSONObjWriter.java
@@ -17,15 +17,8 @@
 
 package org.apache.tika.server.core.writer;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.tika.metadata.Metadata;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
@@ -33,25 +26,36 @@ import java.io.Writer;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 import java.util.Map;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.ext.Provider;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import org.apache.tika.metadata.Metadata;
 
 @Provider
 @Produces(MediaType.APPLICATION_JSON)
 public class JSONObjWriter implements MessageBodyWriter<Map<String, Object>> {
 
 
-    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations,
+                               MediaType mediaType) {
         return Map.class.isAssignableFrom(type);
     }
 
-    public long getSize(Metadata data, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public long getSize(Metadata data, Class<?> type, Type genericType, Annotation[] annotations,
+                        MediaType mediaType) {
         return -1;
     }
 
     @Override
-    public void writeTo(Map<String, Object> map, Class<?> type, Type genericType, Annotation[] annotations,
-                        MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
+    public void writeTo(Map<String, Object> map, Class<?> type, Type genericType,
+                        Annotation[] annotations, MediaType mediaType,
+                        MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
             throws IOException, WebApplicationException {
         Writer writer = new OutputStreamWriter(entityStream, UTF_8);
         ObjectMapper objectMapper = new ObjectMapper();
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/MetadataListMessageBodyWriter.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/MetadataListMessageBodyWriter.java
index 434f8b3..cf59299 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/MetadataListMessageBodyWriter.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/MetadataListMessageBodyWriter.java
@@ -17,12 +17,7 @@
 
 package org.apache.tika.server.core.writer;
 
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -30,32 +25,38 @@ import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.ext.Provider;
 
-import org.apache.tika.exception.TikaException;
 import org.apache.tika.metadata.serialization.JsonMetadataList;
 import org.apache.tika.server.core.MetadataList;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
-
 @Provider
 @Produces(MediaType.APPLICATION_JSON)
 public class MetadataListMessageBodyWriter implements MessageBodyWriter<MetadataList> {
 
-    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations,
+                               MediaType mediaType) {
         if (!MediaType.APPLICATION_JSON_TYPE.equals(mediaType)) {
             return false;
         }
         return type.isAssignableFrom(MetadataList.class);
     }
 
-    public long getSize(MetadataList data, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public long getSize(MetadataList data, Class<?> type, Type genericType,
+                        Annotation[] annotations, MediaType mediaType) {
         return -1;
     }
 
     @Override
-    public void writeTo(MetadataList list, Class<?> type, Type genericType, Annotation[] annotations,
-                        MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException,
-            WebApplicationException {
+    public void writeTo(MetadataList list, Class<?> type, Type genericType,
+                        Annotation[] annotations, MediaType mediaType,
+                        MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
+            throws IOException, WebApplicationException {
         Writer writer = new OutputStreamWriter(entityStream, UTF_8);
         JsonMetadataList.toJson(list.getMetadata(), writer);
         entityStream.flush();
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/TarWriter.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/TarWriter.java
index b53019a..dcd258c 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/TarWriter.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/TarWriter.java
@@ -17,6 +17,11 @@
 
 package org.apache.tika.server.core.writer;
 
+import java.io.IOException;
+import java.io.OutputStream;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Map;
 import javax.ws.rs.Produces;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.MediaType;
@@ -24,19 +29,14 @@ import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.MessageBodyWriter;
 import javax.ws.rs.ext.Provider;
 
-import java.io.IOException;
-import java.io.OutputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.Map;
-
 import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
 import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
 
 @Provider
 @Produces("application/x-tar")
 public class TarWriter implements MessageBodyWriter<Map<String, byte[]>> {
-    private static void tarStoreBuffer(TarArchiveOutputStream zip, String name, byte[] dataBuffer) throws IOException {
+    private static void tarStoreBuffer(TarArchiveOutputStream zip, String name, byte[] dataBuffer)
+            throws IOException {
         TarArchiveEntry entry = new TarArchiveEntry(name);
 
         entry.setSize(dataBuffer.length);
@@ -48,15 +48,20 @@ public class TarWriter implements MessageBodyWriter<Map<String, byte[]>> {
         zip.closeArchiveEntry();
     }
 
-    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations,
+                               MediaType mediaType) {
         return Map.class.isAssignableFrom(type);
     }
 
-    public long getSize(Map<String, byte[]> stringMap, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public long getSize(Map<String, byte[]> stringMap, Class<?> type, Type genericType,
+                        Annotation[] annotations, MediaType mediaType) {
         return -1;
     }
 
-    public void writeTo(Map<String, byte[]> parts, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException {
+    public void writeTo(Map<String, byte[]> parts, Class<?> type, Type genericType,
+                        Annotation[] annotations, MediaType mediaType,
+                        MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
+            throws IOException, WebApplicationException {
         TarArchiveOutputStream zip = new TarArchiveOutputStream(entityStream);
 
         for (Map.Entry<String, byte[]> entry : parts.entrySet()) {
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/TextMessageBodyWriter.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/TextMessageBodyWriter.java
index e55b7cd..c854c85 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/TextMessageBodyWriter.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/TextMessageBodyWriter.java
@@ -17,12 +17,7 @@
 
 package org.apache.tika.server.core.writer;
 
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -30,11 +25,15 @@ import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.ext.Provider;
 
 import org.apache.tika.metadata.Metadata;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
-
 /**
  * Returns simple text string for a particular metadata value.
  * This assumes that the metadata object only has one key;
@@ -46,19 +45,22 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 @Produces(MediaType.TEXT_PLAIN)
 public class TextMessageBodyWriter implements MessageBodyWriter<Metadata> {
 
-    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations,
+                               MediaType mediaType) {
         return mediaType.equals(MediaType.TEXT_PLAIN_TYPE) && Metadata.class.isAssignableFrom(type);
     }
 
-    public long getSize(Metadata data, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public long getSize(Metadata data, Class<?> type, Type genericType, Annotation[] annotations,
+                        MediaType mediaType) {
         return -1;
     }
 
     @Override
     @SuppressWarnings("resource")
-    public void writeTo(Metadata metadata, Class<?> type, Type genericType, Annotation[] annotations,
-                        MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException,
-            WebApplicationException {
+    public void writeTo(Metadata metadata, Class<?> type, Type genericType,
+                        Annotation[] annotations, MediaType mediaType,
+                        MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
+            throws IOException, WebApplicationException {
 
         if (metadata.names().length != 1) {
             throw new WebApplicationException("Metadata object must only have one entry!");
diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/ZipWriter.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/ZipWriter.java
index 2c2d7f4..267565b 100644
--- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/ZipWriter.java
+++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/writer/ZipWriter.java
@@ -17,13 +17,6 @@
 
 package org.apache.tika.server.core.writer;
 
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
-
 import java.io.IOException;
 import java.io.OutputStream;
 import java.lang.annotation.Annotation;
@@ -34,6 +27,12 @@ import java.util.zip.CRC32;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipException;
 import java.util.zip.ZipOutputStream;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.ext.Provider;
 
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
@@ -41,7 +40,8 @@ import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
 @Provider
 @Produces("application/zip")
 public class ZipWriter implements MessageBodyWriter<Map<String, byte[]>> {
-    private static void zipStoreBuffer(ZipArchiveOutputStream zip, String name, byte[] dataBuffer) throws IOException {
+    private static void zipStoreBuffer(ZipArchiveOutputStream zip, String name, byte[] dataBuffer)
+            throws IOException {
         ZipEntry zipEntry = new ZipEntry(name != null ? name : UUID.randomUUID().toString());
         zipEntry.setMethod(ZipOutputStream.STORED);
 
@@ -64,15 +64,20 @@ public class ZipWriter implements MessageBodyWriter<Map<String, byte[]>> {
         zip.closeArchiveEntry();
     }
 
-    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations,
+                               MediaType mediaType) {
         return Map.class.isAssignableFrom(type);
     }
 
-    public long getSize(Map<String, byte[]> stringMap, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+    public long getSize(Map<String, byte[]> stringMap, Class<?> type, Type genericType,
+                        Annotation[] annotations, MediaType mediaType) {
         return -1;
     }
 
-    public void writeTo(Map<String, byte[]> parts, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException {
+    public void writeTo(Map<String, byte[]> parts, Class<?> type, Type genericType,
+                        Annotation[] annotations, MediaType mediaType,
+                        MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
+            throws IOException, WebApplicationException {
         ZipArchiveOutputStream zip = new ZipArchiveOutputStream(entityStream);
 
         zip.setMethod(ZipArchiveOutputStream.STORED);
diff --git a/tika-server/tika-server-core/src/main/resources/tikaserver-template.html b/tika-server/tika-server-core/src/main/resources/tikaserver-template.html
index bb776f4..bf737ab 100644
--- a/tika-server/tika-server-core/src/main/resources/tikaserver-template.html
+++ b/tika-server/tika-server-core/src/main/resources/tikaserver-template.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
@@ -19,14 +19,14 @@
   under the License.
 -->
 <html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
+<head>
     <title>[[TITLE]]</title>
     <!-- TODO Some nice CSS -->
-  </head>
-  <body>
-    <h1>[[TITLE]]</h1>
-    <div id="content">
-      [[BODY]]
-    </div>
-  </body>
+</head>
+<body>
+<h1>[[TITLE]]</h1>
+<div id="content">
+    [[BODY]]
+</div>
+</body>
 </html>
diff --git a/tika-server/tika-server-core/src/main/resources/tikaserver-version.properties b/tika-server/tika-server-core/src/main/resources/tikaserver-version.properties
index e69de29..bcba37a 100644
--- a/tika-server/tika-server-core/src/main/resources/tikaserver-version.properties
+++ b/tika-server/tika-server-core/src/main/resources/tikaserver-version.properties
@@ -0,0 +1,15 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
index 97adb22..a2c34c4 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
@@ -47,18 +47,17 @@ import org.apache.cxf.jaxrs.JAXRSBindingFactory;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.transport.common.gzip.GZIPInInterceptor;
 import org.apache.cxf.transport.common.gzip.GZIPOutInterceptor;
+import org.junit.After;
+import org.junit.Before;
+
 import org.apache.tika.config.TikaConfig;
 import org.apache.tika.parser.digestutils.CommonsDigester;
 import org.apache.tika.server.core.resource.TikaResource;
 import org.apache.tika.server.core.resource.UnpackerResource;
-import org.junit.After;
-import org.junit.Before;
 
 public abstract class CXFTestBase {
-    private final static int DIGESTER_READ_LIMIT = 20*1024*1024;
-
-    protected static final String endPoint =
-            "http://localhost:" + TikaServerConfig.DEFAULT_PORT;
+    protected static final String endPoint = "http://localhost:" + TikaServerConfig.DEFAULT_PORT;
+    private final static int DIGESTER_READ_LIMIT = 20 * 1024 * 1024;
     protected Server server;
     private TikaConfig tika;
 
@@ -67,7 +66,8 @@ public abstract class CXFTestBase {
     }
 
     public static void assertNotFound(String needle, String haystack) {
-        assertFalse(needle + " unexpectedly found in:\n" + haystack, haystack.contains(needle));
+        assertFalse(needle + " unexpectedly found in:\n"
+                + haystack, haystack.contains(needle));
     }
 
     protected static InputStream copy(InputStream in, int remaining) throws IOException {
@@ -84,36 +84,40 @@ public abstract class CXFTestBase {
         return new ByteArrayInputStream(out.toByteArray());
     }
 
+    protected static String getStringFromInputStream(InputStream in) throws Exception {
+        return IOUtils.toString(in, UTF_8);
+    }
+
+    public static InputStream gzip(InputStream is) throws IOException {
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        OutputStream gz = new GzipCompressorOutputStream(bos);
+        IOUtils.copy(is, gz);
+        gz.flush();
+        gz.close();
+        return new ByteArrayInputStream(bos.toByteArray());
+    }
+
     @Before
     public void setUp() throws Exception {
 
         this.tika = new TikaConfig(getTikaConfigInputStream());
-        TikaResource.init(tika,
-                new CommonsDigester(DIGESTER_READ_LIMIT, "md5,sha1:32"),
-                getInputStreamFactory(tika), new ServerStatus("", 0,true));
+        TikaResource.init(tika, new CommonsDigester(DIGESTER_READ_LIMIT, "md5,sha1:32"),
+                getInputStreamFactory(tika), new ServerStatus("", 0, true));
         JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
         //set compression interceptors
-        sf.setOutInterceptors(
-                Collections.singletonList(new GZIPOutInterceptor())
-        );
-        sf.setInInterceptors(
-                Collections.singletonList(new GZIPInInterceptor()));
+        sf.setOutInterceptors(Collections.singletonList(new GZIPOutInterceptor()));
+        sf.setInInterceptors(Collections.singletonList(new GZIPInInterceptor()));
 
         setUpResources(sf);
         setUpProviders(sf);
         sf.setAddress(endPoint + "/");
 
-        BindingFactoryManager manager = sf.getBus().getExtension(
-                BindingFactoryManager.class
-        );
+        BindingFactoryManager manager = sf.getBus().getExtension(BindingFactoryManager.class);
 
         JAXRSBindingFactory factory = new JAXRSBindingFactory();
         factory.setBus(sf.getBus());
 
-        manager.registerBindingFactory(
-                JAXRSBindingFactory.JAXRS_BINDING_ID,
-                factory
-        );
+        manager.registerBindingFactory(JAXRSBindingFactory.JAXRS_BINDING_ID, factory);
         server = sf.create();
     }
 
@@ -122,19 +126,17 @@ public abstract class CXFTestBase {
     }
 
     protected InputStream getTikaConfigInputStream() {
-        return new ByteArrayInputStream(
-                new String("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+
-                        "<properties>\n" +
+        return new ByteArrayInputStream(new String(
+                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<properties>\n" +
                         "    <parsers>\n" +
-                        "        <parser class=\"org.apache.tika.parser.DefaultParser\"/>\n"+
-                        "    </parsers>\n"+
-                        "</properties>").getBytes(UTF_8)
-        );
+                        "        <parser class=\"org.apache.tika.parser.DefaultParser\"/>\n" +
+                        "    </parsers>\n" + "</properties>").getBytes(UTF_8));
     }
 
     /**
      * Have the test do {@link JAXRSServerFactoryBean#setResourceClasses(Class...)}
-     * and {@link JAXRSServerFactoryBean#setResourceProvider(Class, org.apache.cxf.jaxrs.lifecycle.ResourceProvider)}
+     * and {@link JAXRSServerFactoryBean#setResourceProvider(Class,
+     * org.apache.cxf.jaxrs.lifecycle.ResourceProvider)}
      */
     protected abstract void setUpResources(JAXRSServerFactoryBean sf);
 
@@ -149,10 +151,6 @@ public abstract class CXFTestBase {
         server.destroy();
     }
 
-    protected static String getStringFromInputStream(InputStream in) throws Exception {
-        return IOUtils.toString(in, UTF_8);
-    }
-
     protected Map<String, String> readZipArchive(InputStream inputStream) throws IOException {
         Map<String, String> data = new HashMap<String, String>();
         Path tempFile = writeTemporaryArchiveFile(inputStream, "zip");
@@ -181,7 +179,8 @@ public abstract class CXFTestBase {
         return bos.toString(UTF_8.name());
     }
 
-    protected Map<String, String> readArchiveFromStream(ArchiveInputStream zip) throws IOException {
+    protected Map<String, String> readArchiveFromStream(ArchiveInputStream zip)
+            throws IOException {
         Map<String, String> data = new HashMap<String, String>();
         while (true) {
             ArchiveEntry entry = zip.getNextEntry();
@@ -197,19 +196,12 @@ public abstract class CXFTestBase {
         return data;
     }
 
-    private Path writeTemporaryArchiveFile(InputStream inputStream, String archiveType) throws IOException {
-        Path tmp = Files.createTempFile("apache-tika-server-test-tmp-", "."+archiveType);
+    private Path writeTemporaryArchiveFile(InputStream inputStream, String archiveType)
+            throws IOException {
+        Path tmp = Files.createTempFile("apache-tika-server-test-tmp-",
+                "." + archiveType);
         Files.copy(inputStream, tmp, StandardCopyOption.REPLACE_EXISTING);
         return tmp;
     }
 
-    public static InputStream gzip(InputStream is) throws IOException {
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        OutputStream gz = new GzipCompressorOutputStream(bos);
-        IOUtils.copy(is, gz);
-        gz.flush();
-        gz.close();
-        return new ByteArrayInputStream(bos.toByteArray());
-    }
-
 }
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/IntegrationTestBase.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/IntegrationTestBase.java
index 36bd53b..d1c5165 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/IntegrationTestBase.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/IntegrationTestBase.java
@@ -16,30 +16,29 @@
  */
 package org.apache.tika.server.core;
 
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.jaxrs.client.WebClient;
-import org.apache.tika.TikaTest;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.core.Response;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
-import java.security.Permission;
 import java.time.Duration;
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.TimeoutException;
+import javax.ws.rs.core.Response;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.tika.TikaTest;
 
 public class IntegrationTestBase extends TikaTest {
 
@@ -54,19 +53,14 @@ public class IntegrationTestBase extends TikaTest {
     static final String STATUS_PATH = "/status";
 
     static final long MAX_WAIT_MS = 60000;
-    private static final Logger LOG = LoggerFactory.getLogger(IntegrationTestBase.class);
-
     //running into conflicts on 9998 with the CXFTestBase tests
     //TODO: figure out why?!
     static final String INTEGRATION_TEST_PORT = "9999";
-
-    protected static final String endPoint =
-            "http://localhost:" + INTEGRATION_TEST_PORT;
-
-    private SecurityManager existingSecurityManager = null;
+    protected static final String endPoint = "http://localhost:" + INTEGRATION_TEST_PORT;
+    private static final Logger LOG = LoggerFactory.getLogger(IntegrationTestBase.class);
     static Path LOG_FILE;
     static Path STREAMS_DIR;
-
+    private SecurityManager existingSecurityManager = null;
 
     @BeforeClass
     public static void staticSetup() throws Exception {
@@ -77,6 +71,12 @@ public class IntegrationTestBase extends TikaTest {
         STREAMS_DIR = Files.createTempDirectory("tika-server-integration");
     }
 
+    @AfterClass
+    public static void staticTearDown() throws Exception {
+        Files.delete(LOG_FILE);
+        FileUtils.deleteDirectory(STREAMS_DIR.toFile());
+    }
+
     @Before
     public void setUp() throws Exception {
         existingSecurityManager = System.getSecurityManager();
@@ -97,39 +97,21 @@ public class IntegrationTestBase extends TikaTest {
         });*/
     }
 
-    @AfterClass
-    public static void staticTearDown() throws Exception {
-        Files.delete(LOG_FILE);
-        FileUtils.deleteDirectory(STREAMS_DIR.toFile());
-    }
-
     @After
     public void tearDown() throws Exception {
         System.setSecurityManager(existingSecurityManager);
     }
 
-    static class MyExitException extends RuntimeException {
-        private final int status;
-        MyExitException(int status) {
-            this.status = status;
-        }
-
-        public int getStatus() {
-            return status;
-        }
-    }
-
     public Process startProcess(String[] extraArgs) throws IOException {
-        String[] base = new String[] {
-                "java", "-cp", System.getProperty("java.class.path"),
-                "org.apache.tika.server.core.TikaServerCli",
-        };
+        String[] base = new String[]{"java", "-cp", System.getProperty("java.class.path"),
+                "org.apache.tika.server.core.TikaServerCli",};
         List<String> args = new ArrayList<>(Arrays.asList(base));
         args.addAll(Arrays.asList(extraArgs));
         ProcessBuilder pb = new ProcessBuilder(args);
         pb.inheritIO();
 //        pb.redirectInput(Files.createTempFile(STREAMS_DIR, "tika-stream-out", ".log").toFile());
-  //      pb.redirectError(Files.createTempFile(STREAMS_DIR, "tika-stream-err", ".log").toFile());
+        //      pb.redirectError(Files.createTempFile(STREAMS_DIR,
+        //      "tika-stream-err", ".log").toFile());
         return pb.start();
     }
 
@@ -142,11 +124,12 @@ public class IntegrationTestBase extends TikaTest {
                 Response response = client.get();
                 if (response.getStatus() == 200) {
                     elapsed = Duration.between(started, Instant.now()).toMillis();
-                    LOG.info("client observes server successfully started after " +
-                            elapsed + " ms");
+                    LOG.info(
+                            "client observes server successfully started after " + elapsed + " ms");
                     return;
                 }
-                LOG.debug("tika test client failed to connect to server with status: {}", response.getStatus());
+                LOG.debug("tika test client failed to connect to server with status: {}",
+                        response.getStatus());
 
             } catch (javax.ws.rs.ProcessingException e) {
                 LOG.debug("tika test client failed to connect to server", e);
@@ -155,8 +138,19 @@ public class IntegrationTestBase extends TikaTest {
             Thread.sleep(1000);
             elapsed = Duration.between(started, Instant.now()).toMillis();
         }
-        throw new TimeoutException("couldn't connect to server after " +
-                elapsed + " ms");
+        throw new TimeoutException("couldn't connect to server after " + elapsed + " ms");
+    }
+
+    static class MyExitException extends RuntimeException {
+        private final int status;
+
+        MyExitException(int status) {
+            this.status = status;
+        }
+
+        public int getStatus() {
+            return status;
+        }
     }
 
 }
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/LanguageResourceTest.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/LanguageResourceTest.java
index 25ecce9..c54d6ab 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/LanguageResourceTest.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/LanguageResourceTest.java
@@ -20,91 +20,84 @@ package org.apache.tika.server.core;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-import javax.ws.rs.core.Response;
-
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
+import javax.ws.rs.core.Response;
 
-import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.junit.Test;
+
 import org.apache.tika.server.core.resource.LanguageResource;
 import org.apache.tika.server.core.writer.TarWriter;
 import org.apache.tika.server.core.writer.ZipWriter;
-import org.junit.Test;
 
 public class LanguageResourceTest extends CXFTestBase {
 
-	private static final String LANG_PATH = "/language";
-	private static final String LANG_STREAM_PATH = LANG_PATH + "/stream";
-	private static final String LANG_STRING_PATH = LANG_PATH + "/string";
-	private static final String ENGLISH_STRING = "This is English!";
-	private static final String FRENCH_STRING = "c’est comme ci comme ça";
-
-	@Override
-	protected void setUpResources(JAXRSServerFactoryBean sf) {
-		sf.setResourceClasses(LanguageResource.class);
-		sf.setResourceProvider(LanguageResource.class,
-				new SingletonResourceProvider(new LanguageResource()));
-
-	}
-
-	@Override
-	protected void setUpProviders(JAXRSServerFactoryBean sf) {
-		List<Object> providers = new ArrayList<Object>();
-		providers.add(new TarWriter());
-		providers.add(new ZipWriter());
-		providers.add(new TikaServerParseExceptionMapper(false));
-		sf.setProviders(providers);
-
-	}
-
-	@Test
-	public void testDetectEnglishString() throws Exception {
-		String url = endPoint + LANG_STRING_PATH;
-		Response response = WebClient.create(url).type("text/plain")
-				.accept("text/plain").put(ENGLISH_STRING);
-		assertNotNull(response);
-		String readLang = getStringFromInputStream((InputStream) response
-				.getEntity());
-		assertEquals("en", readLang);
-	}
-
-	@Test
-	public void testDetectFrenchString() throws Exception {
-		String url = endPoint + LANG_STRING_PATH;
-		Response response = WebClient.create(url).type("text/plain")
-				.accept("text/plain").put(FRENCH_STRING);
-		assertNotNull(response);
-		String readLang = getStringFromInputStream((InputStream) response
-				.getEntity());
-		assertEquals("fr", readLang);
-	}
-
-	@Test
-	public void testDetectEnglishFile() throws Exception {
-		String url = endPoint + LANG_STREAM_PATH;
-		Response response = WebClient.create(url).type("text/plain")
-				.accept("text/plain")
-				.put(getClass().getResourceAsStream("/test-documents/english.txt"));
-		assertNotNull(response);
-		String readLang = getStringFromInputStream((InputStream) response
-				.getEntity());
-		assertEquals("en", readLang);
-	}
-
-	@Test
-	public void testDetectFrenchFile() throws Exception {
-		String url = endPoint + LANG_STREAM_PATH;
-		Response response = WebClient.create(url).type("text/plain")
-				.accept("text/plain")
-				.put(getClass().getResourceAsStream("/test-documents/french.txt"));
-		assertNotNull(response);
-		String readLang = getStringFromInputStream((InputStream) response
-				.getEntity());
-		assertEquals("fr", readLang);
-	}
+    private static final String LANG_PATH = "/language";
+    private static final String LANG_STREAM_PATH = LANG_PATH + "/stream";
+    private static final String LANG_STRING_PATH = LANG_PATH + "/string";
+    private static final String ENGLISH_STRING = "This is English!";
+    private static final String FRENCH_STRING = "c’est comme ci comme ça";
+
+    @Override
+    protected void setUpResources(JAXRSServerFactoryBean sf) {
+        sf.setResourceClasses(LanguageResource.class);
+        sf.setResourceProvider(LanguageResource.class,
+                new SingletonResourceProvider(new LanguageResource()));
+
+    }
+
+    @Override
+    protected void setUpProviders(JAXRSServerFactoryBean sf) {
+        List<Object> providers = new ArrayList<Object>();
+        providers.add(new TarWriter());
+        providers.add(new ZipWriter());
+        providers.add(new TikaServerParseExceptionMapper(false));
+        sf.setProviders(providers);
+
+    }
+
+    @Test
+    public void testDetectEnglishString() throws Exception {
+        String url = endPoint + LANG_STRING_PATH;
+        Response response =
+                WebClient.create(url).type("text/plain").accept("text/plain").put(ENGLISH_STRING);
+        assertNotNull(response);
+        String readLang = getStringFromInputStream((InputStream) response.getEntity());
+        assertEquals("en", readLang);
+    }
+
+    @Test
+    public void testDetectFrenchString() throws Exception {
+        String url = endPoint + LANG_STRING_PATH;
+        Response response =
+                WebClient.create(url).type("text/plain").accept("text/plain").put(FRENCH_STRING);
+        assertNotNull(response);
+        String readLang = getStringFromInputStream((InputStream) response.getEntity());
+        assertEquals("fr", readLang);
+    }
+
+    @Test
+    public void testDetectEnglishFile() throws Exception {
+        String url = endPoint + LANG_STREAM_PATH;
+        Response response = WebClient.create(url).type("text/plain").accept("text/plain")
+                .put(getClass().getResourceAsStream("/test-documents/english.txt"));
+        assertNotNull(response);
+        String readLang = getStringFromInputStream((InputStream) response.getEntity());
+        assertEquals("en", readLang);
+    }
+
+    @Test
+    public void testDetectFrenchFile() throws Exception {
+        String url = endPoint + LANG_STREAM_PATH;
+        Response response = WebClient.create(url).type("text/plain").accept("text/plain")
+                .put(getClass().getResourceAsStream("/test-documents/french.txt"));
+        assertNotNull(response);
+        String readLang = getStringFromInputStream((InputStream) response.getEntity());
+        assertEquals("fr", readLang);
+    }
 
 }
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/NullWebClientLogger.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/NullWebClientLogger.java
index 9a7a9e8..316396e 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/NullWebClientLogger.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/NullWebClientLogger.java
@@ -16,12 +16,11 @@
  */
 package org.apache.tika.server.core;
 
-import org.apache.cxf.common.logging.AbstractDelegatingLogger;
-import org.apache.tika.server.core.TikaServerIntegrationTest;
-
 import java.util.logging.Level;
 import java.util.logging.LogRecord;
 
+import org.apache.cxf.common.logging.AbstractDelegatingLogger;
+
 /**
  * null logger to swallow client messages
  * in {@link TikaServerIntegrationTest}
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/ServerStatusTest.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/ServerStatusTest.java
index 66deafe..0134b6d 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/ServerStatusTest.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/ServerStatusTest.java
@@ -16,9 +16,8 @@
  */
 package org.apache.tika.server.core;
 
-import org.apache.tika.server.core.ServerStatus;
-import org.apache.tika.server.core.TaskStatus;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 import java.util.Map;
 import java.util.Random;
@@ -28,8 +27,7 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import org.junit.Test;
 
 public class ServerStatusTest {
 
@@ -45,7 +43,8 @@ public class ServerStatusTest {
         int numThreads = 10;
         int filesToProcess = 20;
         ExecutorService service = Executors.newFixedThreadPool(numThreads);
-        ExecutorCompletionService<Integer> completionService = new ExecutorCompletionService<>(service);
+        ExecutorCompletionService<Integer> completionService =
+                new ExecutorCompletionService<>(service);
         ServerStatus serverStatus = new ServerStatus("", 0);
         for (int i = 0; i < numThreads; i++) {
             completionService.submit(new MockTask(serverStatus, filesToProcess));
@@ -60,16 +59,17 @@ public class ServerStatusTest {
                 totalProcessed += completed;
             }
         }
-        assertEquals(numThreads*filesToProcess, totalProcessed);
+        assertEquals(numThreads * filesToProcess, totalProcessed);
         assertEquals(0, serverStatus.getTasks().size());
         assertEquals(totalProcessed, serverStatus.getFilesProcessed());
 
     }
 
     private class MockTask implements Callable<Integer> {
-        Random r = new Random();
         private final ServerStatus serverStatus;
         private final int filesToProcess;
+        Random r = new Random();
+
         public MockTask(ServerStatus serverStatus, int filesToProcess) {
             this.serverStatus = serverStatus;
             this.filesToProcess = filesToProcess;
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/StackTraceOffTest.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/StackTraceOffTest.java
index 9dadd63..e706f58 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/StackTraceOffTest.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/StackTraceOffTest.java
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -19,17 +19,19 @@ package org.apache.tika.server.core;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.junit.Assert;
+import org.junit.Test;
+
 import org.apache.tika.server.core.resource.DetectorResource;
 import org.apache.tika.server.core.resource.MetadataResource;
 import org.apache.tika.server.core.resource.RecursiveMetadataResource;
@@ -39,9 +41,6 @@ import org.apache.tika.server.core.writer.CSVMessageBodyWriter;
 import org.apache.tika.server.core.writer.JSONMessageBodyWriter;
 import org.apache.tika.server.core.writer.MetadataListMessageBodyWriter;
 import org.apache.tika.server.core.writer.TextMessageBodyWriter;
-//import org.apache.tika.server.core.writer.XMPMessageBodyWriter;
-import org.junit.Assert;
-import org.junit.Test;
 
 
 /**
@@ -52,15 +51,11 @@ public class StackTraceOffTest extends CXFTestBase {
 
     private static final String TEST_HELLO_WORLD = "test-documents/mock/hello_world.xml";
     private static final String TEST_NULL = "test-documents/mock/null_pointer.xml";
-    private static final String TEST_PASSWORD_PROTECTED = "test-documents/mock/encrypted_document_exception.xml";
+    private static final String TEST_PASSWORD_PROTECTED =
+            "test-documents/mock/encrypted_document_exception.xml";
 
 
-    private static final String[] PATHS = new String[]{
-            "/tika",
-            "/rmeta",
-            "/unpack",
-            "/meta",
-    };
+    private static final String[] PATHS = new String[]{"/tika", "/rmeta", "/unpack", "/meta",};
     private static final int UNPROCESSEABLE = 422;
 
     @Override
@@ -68,7 +63,8 @@ public class StackTraceOffTest extends CXFTestBase {
         List<ResourceProvider> rCoreProviders = new ArrayList<ResourceProvider>();
         rCoreProviders.add(new SingletonResourceProvider(new MetadataResource()));
         rCoreProviders.add(new SingletonResourceProvider(new RecursiveMetadataResource()));
-        rCoreProviders.add(new SingletonResourceProvider(new DetectorResource(new ServerStatus("", 0))));
+        rCoreProviders
+                .add(new SingletonResourceProvider(new DetectorResource(new ServerStatus("", 0))));
         rCoreProviders.add(new SingletonResourceProvider(new TikaResource()));
         rCoreProviders.add(new SingletonResourceProvider(new UnpackerResource()));
         sf.setResourceProviders(rCoreProviders);
@@ -91,16 +87,13 @@ public class StackTraceOffTest extends CXFTestBase {
             if ("/rmeta".equals(path)) {
                 continue;
             }
-            Response response = WebClient
-                    .create(endPoint + path)
-                    .accept("*/*")
+            Response response = WebClient.create(endPoint + path).accept("*/*")
                     .header("Content-Disposition",
                             "attachment; filename=" + TEST_PASSWORD_PROTECTED)
                     .put(ClassLoader.getSystemResourceAsStream(TEST_PASSWORD_PROTECTED));
             assertNotNull("null response: " + path, response);
             assertEquals("unprocessable: " + path, UNPROCESSEABLE, response.getStatus());
-            String msg = getStringFromInputStream((InputStream) response
-                    .getEntity());
+            String msg = getStringFromInputStream((InputStream) response.getEntity());
             assertEquals("should be empty: " + path, "", msg);
         }
     }
@@ -111,14 +104,11 @@ public class StackTraceOffTest extends CXFTestBase {
             if ("/rmeta".equals(path)) {
                 continue;
             }
-            Response response = WebClient
-                    .create(endPoint + path)
-                    .accept("*/*")
+            Response response = WebClient.create(endPoint + path).accept("*/*")
                     .put(ClassLoader.getSystemResourceAsStream(TEST_NULL));
             assertNotNull("null response: " + path, response);
             assertEquals("unprocessable: " + path, UNPROCESSEABLE, response.getStatus());
-            String msg = getStringFromInputStream((InputStream) response
-                    .getEntity());
+            String msg = getStringFromInputStream((InputStream) response.getEntity());
             assertEquals("should be empty: " + path, "", msg);
         }
     }
@@ -130,9 +120,7 @@ public class StackTraceOffTest extends CXFTestBase {
         //no stack traces for 415
         for (String path : PATHS) {
 
-            Response response = WebClient
-                    .create(endPoint + path)
-                    .accept("*:*")
+            Response response = WebClient.create(endPoint + path).accept("*:*")
                     .put(getClass().getResourceAsStream("/test-documents/testDigilite.fdf"));
             if (path.equals("/unpack")) {
                 //"NO CONTENT"
@@ -152,9 +140,9 @@ public class StackTraceOffTest extends CXFTestBase {
     public void testMeta() throws Exception {
         InputStream stream = ClassLoader.getSystemResourceAsStream(TEST_HELLO_WORLD);
 
-        Response response = WebClient.create(endPoint + "/meta" + "/Author")
-                .type("application/mock+xml")
-                .accept(MediaType.TEXT_PLAIN).put(copy(stream, 100));
+        Response response =
+                WebClient.create(endPoint + "/meta" + "/Author").type("application/mock+xml")
+                        .accept(MediaType.TEXT_PLAIN).put(copy(stream, 100));
         Assert.assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus());
         String msg = getStringFromInputStream((InputStream) response.getEntity());
         assertEquals("Failed to get metadata field Author", msg);
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/StackTraceTest.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/StackTraceTest.java
index 0df6a78..eb52854 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/StackTraceTest.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/StackTraceTest.java
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -20,19 +20,19 @@ package org.apache.tika.server.core;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
-import org.apache.tika.server.core.CXFTestBase;
-import org.apache.tika.server.core.TikaServerParseExceptionMapper;
+import org.junit.Assert;
+import org.junit.Test;
+
 import org.apache.tika.server.core.resource.DetectorResource;
 import org.apache.tika.server.core.resource.MetadataResource;
 import org.apache.tika.server.core.resource.RecursiveMetadataResource;
@@ -42,21 +42,15 @@ import org.apache.tika.server.core.writer.CSVMessageBodyWriter;
 import org.apache.tika.server.core.writer.JSONMessageBodyWriter;
 import org.apache.tika.server.core.writer.MetadataListMessageBodyWriter;
 import org.apache.tika.server.core.writer.TextMessageBodyWriter;
-import org.junit.Assert;
-import org.junit.Test;
 
 public class StackTraceTest extends CXFTestBase {
 
     private static final String TEST_HELLO_WORLD = "test-documents/mock/hello_world.xml";
     private static final String TEST_NULL = "test-documents/mock/null_pointer.xml";
-    private static final String TEST_PASSWORD_PROTECTED = "test-documents/mock/encrypted_document_exception.xml";
-
-    private static final String[] PATHS = new String[]{
-            "/tika",
-            "/rmeta",
-            "/unpack",
-            "/meta",
-    };
+    private static final String TEST_PASSWORD_PROTECTED =
+            "test-documents/mock/encrypted_document_exception.xml";
+
+    private static final String[] PATHS = new String[]{"/tika", "/rmeta", "/unpack", "/meta",};
     private static final int UNPROCESSEABLE = 422;
 
     @Override
@@ -64,7 +58,8 @@ public class StackTraceTest extends CXFTestBase {
         List<ResourceProvider> rCoreProviders = new ArrayList<ResourceProvider>();
         rCoreProviders.add(new SingletonResourceProvider(new MetadataResource()));
         rCoreProviders.add(new SingletonResourceProvider(new RecursiveMetadataResource()));
-        rCoreProviders.add(new SingletonResourceProvider(new DetectorResource(new ServerStatus("", 0))));
+        rCoreProviders
+                .add(new SingletonResourceProvider(new DetectorResource(new ServerStatus("", 0))));
         rCoreProviders.add(new SingletonResourceProvider(new TikaResource()));
         rCoreProviders.add(new SingletonResourceProvider(new UnpackerResource()));
         sf.setResourceProviders(rCoreProviders);
@@ -88,18 +83,14 @@ public class StackTraceTest extends CXFTestBase {
             if ("/rmeta".equals(path)) {
                 continue;
             }
-            Response response = WebClient
-                    .create(endPoint + path)
-                    .accept("*/*")
+            Response response = WebClient.create(endPoint + path).accept("*/*")
                     .header("Content-Disposition",
                             "attachment; filename=" + TEST_PASSWORD_PROTECTED)
                     .put(ClassLoader.getSystemResourceAsStream(TEST_PASSWORD_PROTECTED));
             assertNotNull("null response: " + path, response);
             assertEquals("unprocessable: " + path, UNPROCESSEABLE, response.getStatus());
-            String msg = getStringFromInputStream((InputStream) response
-                    .getEntity());
-            assertContains("org.apache.tika.exception.EncryptedDocumentException",
-                    msg);
+            String msg = getStringFromInputStream((InputStream) response.getEntity());
+            assertContains("org.apache.tika.exception.EncryptedDocumentException", msg);
         }
     }
 
@@ -109,16 +100,12 @@ public class StackTraceTest extends CXFTestBase {
             if ("/rmeta".equals(path)) {
                 continue;
             }
-            Response response = WebClient
-                    .create(endPoint + path)
-                    .accept("*/*")
+            Response response = WebClient.create(endPoint + path).accept("*/*")
                     .put(ClassLoader.getSystemResourceAsStream(TEST_NULL));
             assertNotNull("null response: " + path, response);
             assertEquals("unprocessable: " + path, UNPROCESSEABLE, response.getStatus());
-            String msg = getStringFromInputStream((InputStream) response
-                    .getEntity());
-            assertContains("Caused by: java.lang.NullPointerException: null pointer message",
-                    msg);
+            String msg = getStringFromInputStream((InputStream) response.getEntity());
+            assertContains("Caused by: java.lang.NullPointerException: null pointer message", msg);
         }
     }
 
@@ -129,9 +116,7 @@ public class StackTraceTest extends CXFTestBase {
         //no stack traces for 415
         for (String path : PATHS) {
 
-            Response response = WebClient
-                    .create(endPoint + path)
-                    .accept("*:*")
+            Response response = WebClient.create(endPoint + path).accept("*:*")
                     .put(ClassLoader.getSystemResourceAsStream("test-documents/testDigilite.fdf"));
             if (path.equals("/unpack")) {
                 //"NO CONTENT"
@@ -152,8 +137,9 @@ public class StackTraceTest extends CXFTestBase {
     public void testMeta() throws Exception {
         InputStream stream = ClassLoader.getSystemResourceAsStream(TEST_HELLO_WORLD);
 
-        Response response = WebClient.create(endPoint + "/meta" + "/Author").type("application/mock+xml")
-                .accept(MediaType.TEXT_PLAIN).put(copy(stream, 100));
+        Response response =
+                WebClient.create(endPoint + "/meta" + "/Author").type("application/mock+xml")
+                        .accept(MediaType.TEXT_PLAIN).put(copy(stream, 100));
         Assert.assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus());
         String msg = getStringFromInputStream((InputStream) response.getEntity());
         assertEquals("Failed to get metadata field Author", msg);
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaEmitterTest.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaEmitterTest.java
index 3c92674..3560b7d 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaEmitterTest.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaEmitterTest.java
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -16,6 +16,23 @@
  */
 package org.apache.tika.server.core;
 
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import javax.ws.rs.core.Response;
+
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.io.FileUtils;
@@ -23,6 +40,11 @@ import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
 import org.apache.tika.config.TikaConfig;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.TikaCoreProperties;
@@ -33,27 +55,6 @@ import org.apache.tika.pipes.fetcher.FetchKey;
 import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
 import org.apache.tika.server.core.resource.EmitterResource;
 import org.apache.tika.server.core.writer.JSONObjWriter;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import javax.ws.rs.core.Response;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringWriter;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 
 /**
  * This offers basic integration tests with fetchers and emitters.
@@ -70,11 +71,8 @@ public class TikaEmitterTest extends CXFTestBase {
     private static String HELLO_WORLD = "hello_world.xml";
     private static String HELLO_WORLD_JSON = "hello_world.xml.json";
 
-    private static String[] VALUE_ARRAY = new String[]{
-            "my-value-1",
-            "my-value-2",
-            "my-value-3"
-    };
+    private static String[] VALUE_ARRAY = new String[]{"my-value-1", "my-value-2", "my-value-3"};
+
     @BeforeClass
     public static void setUpBeforeClass() throws Exception {
         TMP_DIR = Files.createTempDirectory("tika-emitter-test-");
@@ -84,32 +82,23 @@ public class TikaEmitterTest extends CXFTestBase {
         Files.createDirectories(inputDir);
         Files.createDirectories(TMP_OUTPUT_DIR);
 
-        for (String mockFile : new String[]{
-                "hello_world.xml", "null_pointer.xml"}) {
-            Files.copy(TikaEmitterTest.class.getResourceAsStream(
-                    "/test-documents/mock/"+mockFile),
+        for (String mockFile : new String[]{"hello_world.xml", "null_pointer.xml"}) {
+            Files.copy(
+                    TikaEmitterTest.class.getResourceAsStream("/test-documents/mock/" + mockFile),
                     inputDir.resolve(mockFile));
         }
 
-        TIKA_CONFIG_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
-                "<properties>"+
-                    "<fetchers>"+
-                        "<fetcher class=\"org.apache.tika.pipes.fetcher.FileSystemFetcher\">"+
-                            "<params>"+
-                                "<param name=\"name\" type=\"string\">fsf</param>"+
-                                "<param name=\"basePath\" type=\"string\">"+inputDir.toAbsolutePath()+"</param>"+
-                            "</params>"+
-                        "</fetcher>"+
-                    "</fetchers>"+
-                    "<emitters>"+
-                        "<emitter class=\"org.apache.tika.pipes.emitter.fs.FileSystemEmitter\">"+
-                            "<params>"+
-                                "<param name=\"name\" type=\"string\">fse</param>"+
-                                "<param name=\"basePath\" type=\"string\">"+ TMP_OUTPUT_DIR.toAbsolutePath()+"</param>"+
-                            "</params>"+
-                        "</emitter>"+
-                    "</emitters>"+
-                "</properties>";
+        TIKA_CONFIG_XML =
+                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<properties>" + "<fetchers>" +
+                        "<fetcher class=\"org.apache.tika.pipes.fetcher.FileSystemFetcher\">" +
+                        "<params>" + "<param name=\"name\" type=\"string\">fsf</param>" +
+                        "<param name=\"basePath\" type=\"string\">" + inputDir.toAbsolutePath() +
+                        "</param>" + "</params>" + "</fetcher>" + "</fetchers>" + "<emitters>" +
+                        "<emitter class=\"org.apache.tika.pipes.emitter.fs.FileSystemEmitter\">" +
+                        "<params>" + "<param name=\"name\" type=\"string\">fse</param>" +
+                        "<param name=\"basePath\" type=\"string\">" +
+                        TMP_OUTPUT_DIR.toAbsolutePath() + "</param>" + "</params>" + "</emitter>" +
+                        "</emitters>" + "</properties>";
     }
 
     @AfterClass
@@ -154,10 +143,8 @@ public class TikaEmitterTest extends CXFTestBase {
     public void testGet() throws Exception {
 
         String q = "?fn=fsf&fk=hello_world.xml";
-        String getUrl = endPoint+EMITTER_PATH_AND_FS+q;
-        Response response = WebClient
-                .create(getUrl)
-                .accept("application/json").get();
+        String getUrl = endPoint + EMITTER_PATH_AND_FS + q;
+        Response response = WebClient.create(getUrl).accept("application/json").get();
         assertEquals(200, response.getStatus());
         List<Metadata> metadataList = null;
         try (Reader reader = Files.newBufferedReader(TMP_OUTPUT_FILE)) {
@@ -165,8 +152,7 @@ public class TikaEmitterTest extends CXFTestBase {
         }
         assertEquals(1, metadataList.size());
         Metadata metadata = metadataList.get(0);
-        assertEquals("hello world",
-                metadata.get(TikaCoreProperties.TIKA_CONTENT).trim());
+        assertEquals("hello world", metadata.get(TikaCoreProperties.TIKA_CONTENT).trim());
         assertEquals("Nikolai Lobachevsky", metadata.get("author"));
         assertEquals("你好,世界", metadata.get("title"));
         assertEquals("application/mock+xml", metadata.get(Metadata.CONTENT_TYPE));
@@ -181,18 +167,15 @@ public class TikaEmitterTest extends CXFTestBase {
             userMetadata.add("my-key-multi", VALUE_ARRAY[i]);
         }
 
-        FetchEmitTuple t = new FetchEmitTuple(
-                new FetchKey("fsf", "hello_world.xml"),
-                new EmitKey("fse", ""),
-                userMetadata);
+        FetchEmitTuple t =
+                new FetchEmitTuple(new FetchKey("fsf", "hello_world.xml"), new EmitKey("fse", ""),
+                        userMetadata);
         StringWriter writer = new StringWriter();
         JsonFetchEmitTuple.toJson(t, writer);
 
-        String getUrl = endPoint+EMITTER_PATH;
-        Response response = WebClient
-                .create(getUrl)
-                .accept("application/json")
-                .post(writer.toString());
+        String getUrl = endPoint + EMITTER_PATH;
+        Response response =
+                WebClient.create(getUrl).accept("application/json").post(writer.toString());
         assertEquals(200, response.getStatus());
 
         List<Metadata> metadataList = null;
@@ -201,8 +184,7 @@ public class TikaEmitterTest extends CXFTestBase {
         }
         assertEquals(1, metadataList.size());
         Metadata metadata = metadataList.get(0);
-        assertEquals("hello world",
-                metadata.get(TikaCoreProperties.TIKA_CONTENT).trim());
+        assertEquals("hello world", metadata.get(TikaCoreProperties.TIKA_CONTENT).trim());
         assertEquals("Nikolai Lobachevsky", metadata.get("author"));
         assertEquals("你好,世界", metadata.get("title"));
         assertEquals("application/mock+xml", metadata.get(Metadata.CONTENT_TYPE));
@@ -213,17 +195,12 @@ public class TikaEmitterTest extends CXFTestBase {
     @Test
     public void testPut() throws Exception {
 
-        String getUrl = endPoint+EMITTER_PATH_AND_FS;
+        String getUrl = endPoint + EMITTER_PATH_AND_FS;
         String metaPathKey = EmitterResource.EMIT_KEY_FOR_HTTP_HEADER;
 
-        Response response = WebClient
-                .create(getUrl)
-                .accept("application/json")
+        Response response = WebClient.create(getUrl).accept("application/json")
                 .header(metaPathKey, "hello_world.xml")
-                .put(
-                        ClassLoader
-                                .getSystemResourceAsStream("test-documents/mock/hello_world.xml")
-                );
+                .put(ClassLoader.getSystemResourceAsStream("test-documents/mock/hello_world.xml"));
         assertEquals(200, response.getStatus());
         List<Metadata> metadataList = null;
         try (Reader reader = Files.newBufferedReader(TMP_OUTPUT_FILE)) {
@@ -231,8 +208,7 @@ public class TikaEmitterTest extends CXFTestBase {
         }
         assertEquals(1, metadataList.size());
         Metadata metadata = metadataList.get(0);
-        assertEquals("hello world",
-                metadata.get(TikaCoreProperties.TIKA_CONTENT).trim());
+        assertEquals("hello world", metadata.get(TikaCoreProperties.TIKA_CONTENT).trim());
         assertEquals("Nikolai Lobachevsky", metadata.get("author"));
         assertEquals("你好,世界", metadata.get("title"));
         assertEquals("application/mock+xml", metadata.get(Metadata.CONTENT_TYPE));
@@ -246,31 +222,30 @@ public class TikaEmitterTest extends CXFTestBase {
             userMetadata.add("my-key-multi", VALUE_ARRAY[i]);
         }
 
-        FetchEmitTuple t = new FetchEmitTuple(
-                new FetchKey("fsf", "null_pointer.xml"),
-                new EmitKey("fse", ""),
-                userMetadata);
+        FetchEmitTuple t =
+                new FetchEmitTuple(new FetchKey("fsf", "null_pointer.xml"), new EmitKey("fse", ""),
+                        userMetadata);
         StringWriter writer = new StringWriter();
         JsonFetchEmitTuple.toJson(t, writer);
 
-        String getUrl = endPoint+EMITTER_PATH;
-        Response response = WebClient
-                .create(getUrl)
-                .accept("application/json")
-                .post(writer.toString());
+        String getUrl = endPoint + EMITTER_PATH;
+        Response response =
+                WebClient.create(getUrl).accept("application/json").post(writer.toString());
         assertEquals(200, response.getStatus());
 
         JsonNode jsonResponse;
-        try (Reader reader = new InputStreamReader(
-                (InputStream)response.getEntity(), StandardCharsets.UTF_8)) {
+        try (Reader reader = new InputStreamReader((InputStream) response.getEntity(),
+                StandardCharsets.UTF_8)) {
             jsonResponse = new ObjectMapper().readTree(reader);
-        };
+        }
+        ;
         String parseException = jsonResponse.get("parse_exception").asText();
         assertNotNull(parseException);
         assertContains("NullPointerException", parseException);
 
         List<Metadata> metadataList = null;
-        try (Reader reader = Files.newBufferedReader(TMP_OUTPUT_DIR.resolve("null_pointer.xml.json"))) {
+        try (Reader reader = Files
+                .newBufferedReader(TMP_OUTPUT_DIR.resolve("null_pointer.xml.json"))) {
             metadataList = JsonMetadataList.fromJson(reader);
         }
         assertEquals(1, metadataList.size());
@@ -278,7 +253,8 @@ public class TikaEmitterTest extends CXFTestBase {
         assertEquals("application/mock+xml", metadata.get(Metadata.CONTENT_TYPE));
         assertEquals("my-value", metadata.get("my-key"));
         assertArrayEquals(VALUE_ARRAY, metadata.getValues("my-key-multi"));
-        assertContains("NullPointerException", metadata.get(TikaCoreProperties.CONTAINER_EXCEPTION));
+        assertContains("NullPointerException",
+                metadata.get(TikaCoreProperties.CONTAINER_EXCEPTION));
     }
 
     //can't test system_exit here because server is in same process
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaMimeTypesTest.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaMimeTypesTest.java
index 2f76124..409845a 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaMimeTypesTest.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaMimeTypesTest.java
@@ -17,22 +17,16 @@
 
 package org.apache.tika.server.core;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import javax.ws.rs.core.Response;
-
 import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
+import javax.ws.rs.core.Response;
 
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
-import org.apache.tika.server.core.CXFTestBase;
-import org.apache.tika.server.core.resource.TikaMimeTypes;
 import org.junit.Test;
 
+import org.apache.tika.server.core.resource.TikaMimeTypes;
+
 public class TikaMimeTypesTest extends CXFTestBase {
 
 
@@ -41,10 +35,8 @@ public class TikaMimeTypesTest extends CXFTestBase {
     @Override
     protected void setUpResources(JAXRSServerFactoryBean sf) {
         sf.setResourceClasses(TikaMimeTypes.class);
-        sf.setResourceProvider(
-                TikaMimeTypes.class,
-                new SingletonResourceProvider(new TikaMimeTypes())
-        );
+        sf.setResourceProvider(TikaMimeTypes.class,
+                new SingletonResourceProvider(new TikaMimeTypes()));
     }
 
     @Override
@@ -53,11 +45,9 @@ public class TikaMimeTypesTest extends CXFTestBase {
 
     @Test
     public void testGetPlainText() throws Exception {
-        Response response = WebClient
-                .create(endPoint + MIMETYPES_PATH)
-                .type("text/plain")
-                .accept("text/plain")
-                .get();
+        Response response =
+                WebClient.create(endPoint + MIMETYPES_PATH).type("text/plain").accept("text/plain")
+                        .get();
 
         String text = getStringFromInputStream((InputStream) response.getEntity());
         assertContains("text/plain", text);
@@ -71,11 +61,9 @@ public class TikaMimeTypesTest extends CXFTestBase {
 
     @Test
     public void testGetHTML() throws Exception {
-        Response response = WebClient
-                .create(endPoint + MIMETYPES_PATH)
-                .type("text/html")
-                .accept("text/html")
-                .get();
+        Response response =
+                WebClient.create(endPoint + MIMETYPES_PATH).type("text/html").accept("text/html")
+                        .get();
 
         String text = getStringFromInputStream((InputStream) response.getEntity());
         assertContains("text/plain", text);
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaResourceTest.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaResourceTest.java
index 18b859a..f3dced5 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaResourceTest.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaResourceTest.java
@@ -17,22 +17,23 @@
 
 package org.apache.tika.server.core;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import javax.ws.rs.core.MultivaluedHashMap;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
+
 import org.apache.cxf.attachment.AttachmentUtil;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
-import org.apache.tika.server.core.resource.TikaResource;
 import org.junit.Test;
 
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import org.apache.tika.server.core.resource.TikaResource;
 
 public class TikaResourceTest extends CXFTestBase {
     public static final String TEST_HELLO_WORLD = "test-documents/mock/hello_world.xml";
@@ -59,8 +60,9 @@ public class TikaResourceTest extends CXFTestBase {
 
     @Test
     public void testHelloWorld() throws Exception {
-        Response response = WebClient.create(endPoint + TIKA_PATH)
-                .type("text/plain").accept("text/plain").get();
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH).type("text/plain").accept("text/plain")
+                        .get();
         assertEquals(TikaResource.GREETING,
                 getStringFromInputStream((InputStream) response.getEntity()));
     }
@@ -69,19 +71,14 @@ public class TikaResourceTest extends CXFTestBase {
     public void testHeaders() throws Exception {
         MultivaluedMap<String, String> map = new MultivaluedHashMap<>();
         map.addAll("meta_mymeta", "first", "second", "third");
-        Response response = WebClient
-                .create(endPoint + TIKA_PATH)
-                .headers(map)
-                .accept("text/xml")
-                .put(ClassLoader
-                        .getSystemResourceAsStream(TEST_HELLO_WORLD));
+        Response response = WebClient.create(endPoint + TIKA_PATH).headers(map).accept("text/xml")
+                .put(ClassLoader.getSystemResourceAsStream(TEST_HELLO_WORLD));
         String xml = getStringFromInputStream((InputStream) response.getEntity());
         //can't figure out why these values are comma-delimited, rather
         //than a true list...is this really the expected behavior?
         //this at least tests that the pass-through, basically works...
         //except for multi-values... :D
-        assertContains("<meta name=\"mymeta\" content=\"first,second,third\"/>",
-                xml);
+        assertContains("<meta name=\"mymeta\" content=\"first,second,third\"/>", xml);
     }
 
     @Test
@@ -95,32 +92,25 @@ public class TikaResourceTest extends CXFTestBase {
 
         Response response = null;
         try {
-            response = WebClient
-                    .create(endPoint + TIKA_PATH)
-                    .accept("text/plain")
-                    .put(ClassLoader
-                            .getSystemResourceAsStream(TEST_OOM));
+            response = WebClient.create(endPoint + TIKA_PATH).accept("text/plain")
+                    .put(ClassLoader.getSystemResourceAsStream(TEST_OOM));
         } catch (Exception e) {
             //oom may or may not cause an exception depending
             //on the timing
         }
 
-        response = WebClient
-                .create(endPoint + TIKA_PATH)
-                .accept("text/plain")
-                .put(ClassLoader
-                        .getSystemResourceAsStream(TEST_HELLO_WORLD));
+        response = WebClient.create(endPoint + TIKA_PATH).accept("text/plain")
+                .put(ClassLoader.getSystemResourceAsStream(TEST_HELLO_WORLD));
         String responseMsg = getStringFromInputStream((InputStream) response.getEntity());
 
         assertContains("hello world", responseMsg);
     }
+
     @Test
     public void testApplicationWadl() throws Exception {
-        Response response = WebClient
-                .create(endPoint + TIKA_PATH + "?_wadl")
-                .accept("text/plain").get();
-        String resp = getStringFromInputStream((InputStream) response
-                .getEntity());
+        Response response =
+                WebClient.create(endPoint + TIKA_PATH + "?_wadl").accept("text/plain").get();
+        String resp = getStringFromInputStream((InputStream) response.getEntity());
         assertTrue(resp.startsWith("<application"));
     }
 }
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerAsyncIntegrationTest.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerAsyncIntegrationTest.java
index fc30eab..7178e2a 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerAsyncIntegrationTest.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerAsyncIntegrationTest.java
@@ -17,15 +17,23 @@
 package org.apache.tika.server.core;
 
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertFalse;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import javax.ws.rs.core.Response;
+
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.io.FileUtils;
 import org.apache.cxf.jaxrs.client.WebClient;
-import org.apache.tika.metadata.Metadata;
-import org.apache.tika.metadata.serialization.JsonFetchEmitTupleList;
-import org.apache.tika.pipes.emitter.EmitKey;
-import org.apache.tika.pipes.fetcher.FetchKey;
-import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -34,43 +42,28 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.ProcessingException;
-import javax.ws.rs.core.Response;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.time.Duration;
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.TimeoutException;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertFalse;
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.serialization.JsonFetchEmitTupleList;
+import org.apache.tika.pipes.emitter.EmitKey;
+import org.apache.tika.pipes.fetcher.FetchKey;
+import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
 
 @Ignore("useful for development...need to turn it into a real unit test")
 public class TikaServerAsyncIntegrationTest extends IntegrationTestBase {
 
     private static final Logger LOG = LoggerFactory.getLogger(TikaServerAsyncIntegrationTest.class);
-
-    private static FetchEmitTuple.ON_PARSE_EXCEPTION ON_PARSE_EXCEPTION
-            = FetchEmitTuple.ON_PARSE_EXCEPTION.EMIT;
+    private static final int NUM_FILES = 1000;
+    private static final String EMITTER_NAME = "fse";
+    private static final String FETCHER_NAME = "fsf";
+    private static FetchEmitTuple.ON_PARSE_EXCEPTION ON_PARSE_EXCEPTION =
+            FetchEmitTuple.ON_PARSE_EXCEPTION.EMIT;
     private static Path TMP_DIR;
     private static Path TMP_OUTPUT_DIR;
     private static String TIKA_CONFIG_XML;
     private static Path TIKA_CONFIG;
-
-    private static final int NUM_FILES = 1000;
-    private static final String EMITTER_NAME = "fse";
-    private static final String FETCHER_NAME = "fsf";
-
     private static List<String> FILE_LIST = new ArrayList<>();
-    private static String[] FILES = new String[] {
-            "hello_world.xml", "null_pointer.xml"
-           // "heavy_hang_30000.xml", "real_oom.xml", "system_exit.xml"
+    private static String[] FILES = new String[]{"hello_world.xml", "null_pointer.xml"
+            // "heavy_hang_30000.xml", "real_oom.xml", "system_exit.xml"
     };
 
     @BeforeClass
@@ -83,38 +76,32 @@ public class TikaServerAsyncIntegrationTest extends IntegrationTestBase {
 
         for (int i = 0; i < NUM_FILES; i++) {
             for (String mockFile : FILES) {
-                String targetName = i+"-"+mockFile;
+                String targetName = i + "-" + mockFile;
                 Path target = inputDir.resolve(targetName);
                 FILE_LIST.add(targetName);
-                Files.copy(TikaEmitterTest.class.getResourceAsStream(
-                        "/test-documents/mock/" + mockFile),
-                        target);
+                Files.copy(TikaEmitterTest.class
+                        .getResourceAsStream("/test-documents/mock/" + mockFile), target);
 
             }
         }
         TIKA_CONFIG = TMP_DIR.resolve("tika-config.xml");
 
-        TIKA_CONFIG_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
-                "<properties>"+
-                "<fetchers>"+
-                "<fetcher class=\"org.apache.tika.pipes.fetcher.FileSystemFetcher\">"+
-                "<params>"+
-                "<param name=\"name\" type=\"string\">"+FETCHER_NAME+"</param>"+
-                "<param name=\"basePath\" type=\"string\">"+inputDir.toAbsolutePath()+"</param>"+
-                "</params>"+
-                "</fetcher>"+
-                "</fetchers>"+
-                "<emitters>"+
-                "<emitter class=\"org.apache.tika.pipes.emitter.fs.FileSystemEmitter\">"+
-                "<params>"+
-                "<param name=\"name\" type=\"string\">"+EMITTER_NAME+"</param>"+
-
-                "<param name=\"basePath\" type=\"string\">"+ TMP_OUTPUT_DIR.toAbsolutePath()+"</param>"+
-                "</params>"+
-                "</emitter>"+
-                "</emitters>"+
-                "<server><enableUnsecureFeatures>true</enableUnsecureFeatures></server>"+
-                "</properties>";
+        TIKA_CONFIG_XML =
+                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<properties>" + "<fetchers>" +
+                        "<fetcher class=\"org.apache.tika.pipes.fetcher.FileSystemFetcher\">" +
+                        "<params>" + "<param name=\"name\" type=\"string\">" + FETCHER_NAME +
+                        "</param>" + "<param name=\"basePath\" type=\"string\">" +
+                        inputDir.toAbsolutePath() + "</param>" + "</params>" + "</fetcher>" +
+                        "</fetchers>" + "<emitters>" +
+                        "<emitter class=\"org.apache.tika.pipes.emitter.fs.FileSystemEmitter\">" +
+                        "<params>" + "<param name=\"name\" type=\"string\">" + EMITTER_NAME +
+                        "</param>" +
+
+                        "<param name=\"basePath\" type=\"string\">" +
+                        TMP_OUTPUT_DIR.toAbsolutePath() + "</param>" + "</params>" + "</emitter>" +
+                        "</emitters>" +
+                        "<server><enableUnsecureFeatures>true</enableUnsecureFeatures></server>" +
+                        "</properties>";
 
         FileUtils.write(TIKA_CONFIG.toFile(), TIKA_CONFIG_XML, UTF_8);
     }
@@ -143,11 +130,8 @@ public class TikaServerAsyncIntegrationTest extends IntegrationTestBase {
         Thread serverThread = new Thread() {
             @Override
             public void run() {
-                TikaServerCli.main(
-                        new String[]{
-                                "-p", INTEGRATION_TEST_PORT,
-                                "-config", TIKA_CONFIG.toAbsolutePath().toString()
-                        });
+                TikaServerCli.main(new String[]{"-p", INTEGRATION_TEST_PORT, "-config",
+                        TIKA_CONFIG.toAbsolutePath().toString()});
             }
         };
         serverThread.start();
@@ -155,7 +139,7 @@ public class TikaServerAsyncIntegrationTest extends IntegrationTestBase {
         try {
             JsonNode response = sendAsync(FILE_LIST);
             int expected = (ON_PARSE_EXCEPTION == FetchEmitTuple.ON_PARSE_EXCEPTION.EMIT) ?
-                    FILE_LIST.size() : FILE_LIST.size()/2;
+                    FILE_LIST.size() : FILE_LIST.size() / 2;
             int targets = 0;
             while (targets < FILE_LIST.size()) {
                 targets = countTargets();
@@ -178,19 +162,14 @@ public class TikaServerAsyncIntegrationTest extends IntegrationTestBase {
         }
         String json = JsonFetchEmitTupleList.toJson(tuples);
 
-        Response response = WebClient
-                .create(endPoint + "/async")
-                .accept("application/json")
-                .post(json);
+        Response response =
+                WebClient.create(endPoint + "/async").accept("application/json").post(json);
         Reader reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
         return new ObjectMapper().readTree(reader);
     }
 
     private FetchEmitTuple getFetchEmitTuple(String fileName) throws IOException {
-        return new FetchEmitTuple(
-                new FetchKey(FETCHER_NAME, fileName),
-                new EmitKey(EMITTER_NAME, ""),
-                new Metadata(), ON_PARSE_EXCEPTION
-        );
+        return new FetchEmitTuple(new FetchKey(FETCHER_NAME, fileName),
+                new EmitKey(EMITTER_NAME, ""), new Metadata(), ON_PARSE_EXCEPTION);
     }
 }
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerConfigTest.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerConfigTest.java
index 9504c60..2cb2a2c 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerConfigTest.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerConfigTest.java
@@ -1,23 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.tika.server.core;
 
-import org.apache.tika.config.TikaConfigTest;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
-import java.io.IOException;
 import java.util.HashSet;
 import java.util.Set;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+
+import org.apache.tika.config.TikaConfigTest;
 
 public class TikaServerConfigTest {
 
     @Test
     public void testBasic() throws Exception {
         Set<String> settings = new HashSet<>();
-        TikaServerConfig config = TikaServerConfig.load(
-                TikaConfigTest.class.getResourceAsStream(
-                        "/configs/tika-config-server.xml"), settings);
+        TikaServerConfig config = TikaServerConfig
+                .load(TikaConfigTest.class.getResourceAsStream("/configs/tika-config-server.xml"),
+                        settings);
         assertEquals(-1, config.getMaxRestarts());
         assertEquals(54321, config.getTaskTimeoutMillis());
         assertEquals(true, config.isEnableUnsecureFeatures());
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerEmitterIntegrationTest.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerEmitterIntegrationTest.java
index 913465d..fda802f 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerEmitterIntegrationTest.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerEmitterIntegrationTest.java
@@ -17,16 +17,25 @@
 package org.apache.tika.server.core;
 
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import javax.ws.rs.ProcessingException;
+import javax.ws.rs.core.Response;
+
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.io.FileUtils;
 import org.apache.cxf.jaxrs.client.WebClient;
-import org.apache.tika.metadata.Metadata;
-import org.apache.tika.metadata.serialization.JsonFetchEmitTuple;
-import org.apache.tika.pipes.emitter.EmitKey;
-import org.apache.tika.pipes.fetcher.FetchKey;
-import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
-import org.apache.tika.utils.ProcessUtils;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -35,41 +44,26 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.ProcessingException;
-import javax.ws.rs.core.Response;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.time.Duration;
-import java.time.Instant;
-import java.util.concurrent.TimeoutException;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.serialization.JsonFetchEmitTuple;
+import org.apache.tika.pipes.emitter.EmitKey;
+import org.apache.tika.pipes.fetcher.FetchKey;
+import org.apache.tika.pipes.fetchiterator.FetchEmitTuple;
+import org.apache.tika.utils.ProcessUtils;
 
 public class TikaServerEmitterIntegrationTest extends IntegrationTestBase {
 
-    private static final Logger LOG = LoggerFactory.getLogger(TikaServerEmitterIntegrationTest.class);
-
+    private static final Logger LOG =
+            LoggerFactory.getLogger(TikaServerEmitterIntegrationTest.class);
+    private static final String EMITTER_NAME = "fse";
+    private static final String FETCHER_NAME = "fsf";
     private static Path TMP_DIR;
     private static Path TMP_OUTPUT_DIR;
     private static Path TIKA_CONFIG;
     private static Path TIKA_CONFIG_TIMEOUT;
-
-    private static final String EMITTER_NAME = "fse";
-    private static final String FETCHER_NAME = "fsf";
-
-    private static String[] FILES = new String[]{
-            "hello_world.xml",
-            "heavy_hang_30000.xml", "fake_oom.xml", "system_exit.xml",
-            "null_pointer.xml"
-    };
+    private static String[] FILES =
+            new String[]{"hello_world.xml", "heavy_hang_30000.xml", "fake_oom.xml",
+                    "system_exit.xml", "null_pointer.xml"};
 
     @BeforeClass
     public static void setUpBeforeClass() throws Exception {
@@ -80,49 +74,34 @@ public class TikaServerEmitterIntegrationTest extends IntegrationTestBase {
         Files.createDirectories(TMP_OUTPUT_DIR);
 
         for (String mockFile : FILES) {
-            Files.copy(TikaEmitterTest.class.getResourceAsStream(
-                    "/test-documents/mock/" + mockFile),
+            Files.copy(
+                    TikaEmitterTest.class.getResourceAsStream("/test-documents/mock/" + mockFile),
                     inputDir.resolve(mockFile));
         }
         TIKA_CONFIG = TMP_DIR.resolve("tika-config.xml");
         TIKA_CONFIG_TIMEOUT = TMP_DIR.resolve("tika-config-timeout.xml");
 
-        String xml1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
-                "<properties>" +
-                "<fetchers>" +
-                "<fetcher class=\"org.apache.tika.pipes.fetcher.FileSystemFetcher\">" +
-                "<params>" +
+        String xml1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<properties>" + "<fetchers>" +
+                "<fetcher class=\"org.apache.tika.pipes.fetcher.FileSystemFetcher\">" + "<params>" +
                 "<param name=\"name\" type=\"string\">" + FETCHER_NAME + "</param>" +
-                "<param name=\"basePath\" type=\"string\">" + inputDir.toAbsolutePath() + "</param>" +
-                "</params>" +
-                "</fetcher>" +
-                "</fetchers>" +
-                "<emitters>" +
+                "<param name=\"basePath\" type=\"string\">" + inputDir.toAbsolutePath() +
+                "</param>" + "</params>" + "</fetcher>" + "</fetchers>" + "<emitters>" +
                 "<emitter class=\"org.apache.tika.pipes.emitter.fs.FileSystemEmitter\">" +
-                "<params>" +
-                "<param name=\"name\" type=\"string\">" + EMITTER_NAME + "</param>" +
-
-                "<param name=\"basePath\" type=\"string\">" + TMP_OUTPUT_DIR.toAbsolutePath() + "</param>" +
-                "</params>" +
-                "</emitter>" +
-                "</emitters>" +
-                "<server>" +
-                "<enableUnsecureFeatures>true</enableUnsecureFeatures>" +
-                "<port>9999</port>"+
-                "<endpoints>"+
-                "<endpoint>emit</endpoint>"+
-                "<endpoint>status</endpoint>"+
+                "<params>" + "<param name=\"name\" type=\"string\">" + EMITTER_NAME + "</param>" +
+
+                "<param name=\"basePath\" type=\"string\">" + TMP_OUTPUT_DIR.toAbsolutePath() +
+                "</param>" + "</params>" + "</emitter>" + "</emitters>" + "<server>" +
+                "<enableUnsecureFeatures>true</enableUnsecureFeatures>" + "<port>9999</port>" +
+                "<endpoints>" + "<endpoint>emit</endpoint>" + "<endpoint>status</endpoint>" +
                 "</endpoints>";
-        String xml2 = "</server>"+
-                "</properties>";
+        String xml2 = "</server>" + "</properties>";
 
-        String tikaConfigXML = xml1+xml2;
+        String tikaConfigXML = xml1 + xml2;
 
         FileUtils.write(TIKA_CONFIG.toFile(), tikaConfigXML, UTF_8);
 
-        String tikaConfigTimeoutXML = xml1+
-                "<taskPulseMillis>100</taskPulseMillis>"+
-                "<taskTimeoutMillis>10000</taskTimeoutMillis>"+xml2;
+        String tikaConfigTimeoutXML = xml1 + "<taskPulseMillis>100</taskPulseMillis>" +
+                "<taskTimeoutMillis>10000</taskTimeoutMillis>" + xml2;
         FileUtils.write(TIKA_CONFIG_TIMEOUT.toFile(), tikaConfigTimeoutXML, UTF_8);
 
     }
@@ -154,7 +133,7 @@ public class TikaServerEmitterIntegrationTest extends IntegrationTestBase {
     public void testBasic() throws Exception {
         Process p = null;
         try {
-            p = startProcess( new String[]{  "-config",
+            p = startProcess(new String[]{"-config",
                     ProcessUtils.escapeCommandLine(TIKA_CONFIG.toAbsolutePath().toString())});
             JsonNode node = testOne("hello_world.xml", true);
             assertEquals("ok", node.get("status").asText());
@@ -172,12 +151,11 @@ public class TikaServerEmitterIntegrationTest extends IntegrationTestBase {
 
         Process p = null;
         try {
-            p = startProcess( new String[]{  "-config",
+            p = startProcess(new String[]{"-config",
                     ProcessUtils.escapeCommandLine(TIKA_CONFIG.toAbsolutePath().toString())});
             JsonNode node = testOne("null_pointer.xml", true);
             assertEquals("ok", node.get("status").asText());
-            assertContains("java.lang.NullPointerException",
-                    node.get("parse_exception").asText());
+            assertContains("java.lang.NullPointerException", node.get("parse_exception").asText());
         } catch (Exception e) {
             fail("shouldn't have an exception" + e.getMessage());
         } finally {
@@ -192,13 +170,12 @@ public class TikaServerEmitterIntegrationTest extends IntegrationTestBase {
 
         Process p = null;
         try {
-            p = startProcess( new String[]{  "-config",
+            p = startProcess(new String[]{"-config",
                     ProcessUtils.escapeCommandLine(TIKA_CONFIG.toAbsolutePath().toString())});
-            JsonNode node = testOne("null_pointer.xml", false,
-                    FetchEmitTuple.ON_PARSE_EXCEPTION.SKIP);
+            JsonNode node =
+                    testOne("null_pointer.xml", false, FetchEmitTuple.ON_PARSE_EXCEPTION.SKIP);
             assertEquals("ok", node.get("status").asText());
-            assertContains("java.lang.NullPointerException",
-                    node.get("parse_exception").asText());
+            assertContains("java.lang.NullPointerException", node.get("parse_exception").asText());
         } catch (Exception e) {
             fail("shouldn't have an exception" + e.getMessage());
         } finally {
@@ -212,7 +189,7 @@ public class TikaServerEmitterIntegrationTest extends IntegrationTestBase {
     public void testSystemExit() throws Exception {
         Process p = null;
         try {
-            p = startProcess( new String[]{  "-config",
+            p = startProcess(new String[]{"-config",
                     ProcessUtils.escapeCommandLine(TIKA_CONFIG.toAbsolutePath().toString())});
             testOne("system_exit.xml", false);
         } finally {
@@ -227,7 +204,7 @@ public class TikaServerEmitterIntegrationTest extends IntegrationTestBase {
 
         Process p = null;
         try {
-            p = startProcess( new String[]{  "-config",
+            p = startProcess(new String[]{"-config",
                     ProcessUtils.escapeCommandLine(TIKA_CONFIG.toAbsolutePath().toString())});
             JsonNode response = testOne("fake_oom.xml", false);
             assertContains("oom message", response.get("parse_error").asText());
@@ -246,8 +223,8 @@ public class TikaServerEmitterIntegrationTest extends IntegrationTestBase {
     public void testTimeout() throws Exception {
         Process p = null;
         try {
-            p = startProcess( new String[]{  "-config",
-                    ProcessUtils.escapeCommandLine(TIKA_CONFIG_TIMEOUT.toAbsolutePath().toString())});
+            p = startProcess(new String[]{"-config", ProcessUtils.escapeCommandLine(
+                    TIKA_CONFIG_TIMEOUT.toAbsolutePath().toString())});
             JsonNode response = testOne("heavy_hang_30000.xml", false);
         } finally {
             if (p != null) {
@@ -261,12 +238,11 @@ public class TikaServerEmitterIntegrationTest extends IntegrationTestBase {
         return testOne(fileName, shouldFileExist, FetchEmitTuple.ON_PARSE_EXCEPTION.EMIT);
     }
 
-    private JsonNode testOne(String fileName, boolean shouldFileExist, FetchEmitTuple.ON_PARSE_EXCEPTION onParseException) throws Exception {
+    private JsonNode testOne(String fileName, boolean shouldFileExist,
+                             FetchEmitTuple.ON_PARSE_EXCEPTION onParseException) throws Exception {
 
         awaitServerStartup();
-        Response response = WebClient
-                .create(endPoint + "/emit")
-                .accept("application/json")
+        Response response = WebClient.create(endPoint + "/emit").accept("application/json")
                 .post(getJsonString(fileName, onParseException));
         if (response.getStatus() == 200) {
             Path targFile = TMP_OUTPUT_DIR.resolve(fileName + ".json");
@@ -281,12 +257,11 @@ public class TikaServerEmitterIntegrationTest extends IntegrationTestBase {
         return null;
     }
 
-    private String getJsonString(String fileName, FetchEmitTuple.ON_PARSE_EXCEPTION onParseException) throws IOException {
-        FetchEmitTuple t = new FetchEmitTuple(
-                new FetchKey(FETCHER_NAME, fileName),
-                new EmitKey(EMITTER_NAME, ""),
-                new Metadata(), onParseException
-        );
+    private String getJsonString(String fileName,
+                                 FetchEmitTuple.ON_PARSE_EXCEPTION onParseException)
+            throws IOException {
+        FetchEmitTuple t = new FetchEmitTuple(new FetchKey(FETCHER_NAME, fileName),
+                new EmitKey(EMITTER_NAME, ""), new Metadata(), onParseException);
         return JsonFetchEmitTuple.toJson(t);
     }
 }
diff --git a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerIntegrationTest.java b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerIntegrationTest.java
index 514de76..f86c44b 100644
--- a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerIntegrationTest.java
+++ b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaServerIntegrationTest.java
@@ -16,44 +16,34 @@
  */
 package org.apache.tika.server.core;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.cxf.jaxrs.client.WebClient;
-import org.apache.tika.TikaTest;
-import org.apache.tika.metadata.Metadata;
-import org.apache.tika.metadata.serialization.JsonMetadataList;
-import org.apache.tika.utils.ProcessUtils;
-import org.junit.After;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
 
-import javax.ws.rs.ProcessingException;
-import javax.ws.rs.core.Response;
-import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
-import java.net.ConnectException;
 import java.net.URISyntaxException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
-import java.security.Permission;
-import java.time.Duration;
-import java.time.Instant;
 import java.util.List;
 import java.util.Random;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicInteger;
+import javax.ws.rs.ProcessingException;
+import javax.ws.rs.core.Response;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.junit.After;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.serialization.JsonMetadataList;
+import org.apache.tika.utils.ProcessUtils;
 
 public class TikaServerIntegrationTest extends IntegrationTestBase {
 
@@ -70,8 +60,7 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
 
         Process p = null;
         try {
-            p = startProcess(new String[]{"-config",
-                    getConfig("tika-config-server-basic.xml")});
+            p = startProcess(new String[]{"-config", getConfig("tika-config-server-basic.xml")});
             testBaseline();
         } finally {
             if (p != null) {
@@ -85,18 +74,14 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
 
         Process p = null;
         try {
-            p = startProcess(new String[]{"-config",
-                    getConfig("tika-config-server-basic.xml")});
+            p = startProcess(new String[]{"-config", getConfig("tika-config-server-basic.xml")});
 
             awaitServerStartup();
 
             Response response = null;
             try {
-                response = WebClient
-                        .create(endPoint + META_PATH)
-                        .accept("application/json")
-                        .put(ClassLoader
-                                .getSystemResourceAsStream(TEST_OOM));
+                response = WebClient.create(endPoint + META_PATH).accept("application/json")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_OOM));
             } catch (Exception e) {
                 //oom may or may not cause an exception depending
                 //on the timing
@@ -116,17 +101,14 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
 
         Process p = null;
         try {
-            p = startProcess(new String[]{"-config",
-                    getConfig("tika-config-server-basic.xml")});
+            p = startProcess(new String[]{"-config", getConfig(
+                    "tika-config-server-basic.xml")});
             awaitServerStartup();
             String serverId = getServerId();
             Response response = null;
             try {
-                response = WebClient
-                        .create(endPoint + META_PATH)
-                        .accept("application/json")
-                        .put(ClassLoader
-                                .getSystemResourceAsStream(TEST_OOM));
+                response = WebClient.create(endPoint + META_PATH).accept("application/json")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_OOM));
             } catch (Exception e) {
                 //oom may or may not cause an exception depending
                 //on the timing
@@ -148,17 +130,14 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
         String serverId = "qwertyuiop";
         Process p = null;
         try {
-            p = startProcess(new String[]{"-config",
-                    getConfig("tika-config-server-basic.xml"),
-                    "-id", serverId});
+            p = startProcess(
+                    new String[]{"-config", getConfig("tika-config-server-basic.xml"), "-id",
+                            serverId});
             awaitServerStartup();
             Response response = null;
             try {
-                response = WebClient
-                        .create(endPoint + META_PATH)
-                        .accept("application/json")
-                        .put(ClassLoader
-                                .getSystemResourceAsStream(TEST_OOM));
+                response = WebClient.create(endPoint + META_PATH).accept("application/json")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_OOM));
             } catch (Exception e) {
                 //oom may or may not cause an exception depending
                 //on the timing
@@ -175,10 +154,8 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
     }
 
     private String getServerId() throws Exception {
-        Response response = WebClient
-                .create(endPoint + STATUS_PATH)
-                .accept("application/json")
-                .get();
+        Response response =
+                WebClient.create(endPoint + STATUS_PATH).accept("application/json").get();
         String jsonString =
                 CXFTestBase.getStringFromInputStream((InputStream) response.getEntity());
         JsonNode root = new ObjectMapper().readTree(jsonString);
@@ -186,10 +163,8 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
     }
 
     private int getNumRestarts() throws Exception {
-        Response response = WebClient
-                .create(endPoint + STATUS_PATH)
-                .accept("application/json")
-                .get();
+        Response response =
+                WebClient.create(endPoint + STATUS_PATH).accept("application/json").get();
         String jsonString =
                 CXFTestBase.getStringFromInputStream((InputStream) response.getEntity());
         JsonNode root = new ObjectMapper().readTree(jsonString);
@@ -201,17 +176,13 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
 
         Process p = null;
         try {
-            p = startProcess(new String[]{"-config",
-                    getConfig("tika-config-server-basic.xml")});
+            p = startProcess(new String[]{"-config", getConfig("tika-config-server-basic.xml")});
 
             awaitServerStartup();
             Response response = null;
             try {
-                response = WebClient
-                        .create(endPoint + META_PATH)
-                        .accept("application/json")
-                        .put(ClassLoader
-                                .getSystemResourceAsStream(TEST_SYSTEM_EXIT));
+                response = WebClient.create(endPoint + META_PATH).accept("application/json")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_SYSTEM_EXIT));
             } catch (Exception e) {
                 //sys exit causes catchable problems for the client
             }
@@ -231,16 +202,13 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
     public void testTimeoutOk() throws Exception {
         Process p = null;
         try {
-            p = startProcess(new String[]{"-config",
-                    getConfig("tika-config-server-timeout-10000.xml")});
+            p = startProcess(
+                    new String[]{"-config", getConfig("tika-config-server-timeout-10000.xml")});
             awaitServerStartup();
             Response response = null;
             try {
-                response = WebClient
-                        .create(endPoint + META_PATH)
-                        .accept("application/json")
-                        .put(ClassLoader
-                                .getSystemResourceAsStream(TEST_HEAVY_HANG_SHORT));
+                response = WebClient.create(endPoint + META_PATH).accept("application/json")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_HEAVY_HANG_SHORT));
             } catch (Exception e) {
                 //potential exception depending on timing
             }
@@ -257,16 +225,13 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
 
         Process p = null;
         try {
-            p = startProcess(new String[]{"-config",
-                    getConfig("tika-config-server-timeout-10000.xml")});
+            p = startProcess(
+                    new String[]{"-config", getConfig("tika-config-server-timeout-10000.xml")});
             awaitServerStartup();
             Response response = null;
             try {
-                response = WebClient
-                        .create(endPoint + META_PATH)
-                        .accept("application/json")
-                        .put(ClassLoader
-                                .getSystemResourceAsStream(TEST_HEAVY_HANG));
+                response = WebClient.create(endPoint + META_PATH).accept("application/json")
+                        .put(ClassLoader.getSystemResourceAsStream(TEST_HEAVY_HANG));
             } catch (Exception e) {
                 //catchable exception when server shuts down.
             }
@@ -283,12 +248,11 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
 
         Process p = null;
         try {
-            p = startProcess(new String[]{"-config",
-                    getConfig("tika-config-server-badjvmargs.xml"),
-            });
+            p = startProcess(
+                    new String[]{"-config", getConfig("tika-config-server-badjvmargs.xml"),});
 
             boolean finished = p.waitFor(10000, TimeUnit.MILLISECONDS);
-            if (! finished) {
+            if (!finished) {
                 fail("should have completed by now");
             }
             assertEquals(255, p.exitValue());
@@ -312,15 +276,12 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
     public void testStdErrOutBasic() throws Exception {
         Process p = null;
         try {
-            p = startProcess(new String[]{"-config",
-                    getConfig("tika-config-server-timeout-10000.xml")});
+            p = startProcess(
+                    new String[]{"-config", getConfig("tika-config-server-timeout-10000.xml")});
             awaitServerStartup();
 
-            Response response = WebClient
-                    .create(endPoint + META_PATH)
-                    .accept("application/json")
-                    .put(ClassLoader
-                            .getSystemResourceAsStream(TEST_STDOUT_STDERR));
+            Response response = WebClient.create(endPoint + META_PATH).accept("application/json")
+                    .put(ClassLoader.getSystemResourceAsStream(TEST_STDOUT_STDERR));
             Reader reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
             List<Metadata> metadataList = JsonMetadataList.fromJson(reader);
             assertEquals(1, metadataList.size());
@@ -334,19 +295,17 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
     }
 
     @Test
-    @Ignore("This works, but prints too much junk to the console.  Figure out how to gobble/redirect.")
+    @Ignore("This works, but prints too much junk to the console.  " +
+            "Figure out how to gobble/redirect.")
     public void testStaticStdErrOutBasic() throws Exception {
         Process p = null;
         try {
-            p = startProcess(new String[]{"-config",
-                    getConfig("tika-config-server-timeout-10000.xml")});
+            p = startProcess(
+                    new String[]{"-config", getConfig("tika-config-server-timeout-10000.xml")});
             awaitServerStartup();
 
-            Response response = WebClient
-                    .create(endPoint + META_PATH)
-                    .accept("application/json")
-                    .put(ClassLoader
-                            .getSystemResourceAsStream(TEST_STATIC_STDOUT_STDERR));
+            Response response = WebClient.create(endPoint + META_PATH).accept("application/json")
+                    .put(ClassLoader.getSystemResourceAsStream(TEST_STATIC_STDOUT_STDERR));
             Reader reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
             List<Metadata> metadataList = JsonMetadataList.fromJson(reader);
             assertEquals(1, metadataList.size());
@@ -368,24 +327,18 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
         Thread serverThread = new Thread() {
             @Override
             public void run() {
-                TikaServerCli.main(
-                        new String[]{
-                                "-p", INTEGRATION_TEST_PORT,
-                                "-taskTimeoutMillis", "10000", "-taskPulseMillis", "500",
-                                "-pingPulseMillis", "100", "-maxRestarts", "0",
-                                "-JDlog4j.configuration=file:" + LOG_FILE.toAbsolutePath(),
-                                "-tmpFilePrefix", "tika-server-stderrlogging"
-                        });
+                TikaServerCli.main(new String[]{"-p", INTEGRATION_TEST_PORT, "-taskTimeoutMillis",
+                        "10000", "-taskPulseMillis", "500", "-pingPulseMillis", "100",
+                        "-maxRestarts", "0",
+                        "-JDlog4j.configuration=file:" + LOG_FILE.toAbsolutePath(),
+                        "-tmpFilePrefix", "tika-server-stderrlogging"});
             }
         };
         serverThread.start();
         awaitServerStartup();
 
-        Response response = WebClient
-                .create(endPoint + META_PATH)
-                .accept("application/json")
-                .put(ClassLoader
-                        .getSystemResourceAsStream(TEST_STDOUT_STDERR));
+        Response response = WebClient.create(endPoint + META_PATH).accept("application/json")
+                .put(ClassLoader.getSystemResourceAsStream(TEST_STDOUT_STDERR));
         Reader reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
         List<Metadata> metadataList = JsonMetadataList.fromJson(reader);
         assertEquals(1, metadataList.size());
@@ -408,8 +361,8 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
 
         Process p = null;
         try {
-            p = startProcess(new String[]{"-config",
-                    getConfig("tika-config-server-timeout-10000.xml")});
+            p = startProcess(
+                    new String[]{"-config", getConfig("tika-config-server-timeout-10000.xml")});
             awaitServerStartup();
 
 
@@ -419,19 +372,16 @@ public class TikaServerIntegrationTest extends IntegrationTestBase {
                 Response response = null;
                 String file = TEST_HELLO_WORLD;
                 try {
-                if (r.nextFloat() < 0.01) {
... 629 lines suppressed ...