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 ...