Modified: tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java (original) +++ tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java Sun Jun 28 01:57:30 2015 @@ -27,32 +27,23 @@ 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 org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.cxf.jaxrs.ext.multipart.Attachment; -import org.apache.tika.config.TikaConfig; import org.apache.tika.language.ProfilingHandler; import org.apache.tika.metadata.Metadata; -import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.parser.ParseContext; +import org.apache.tika.parser.Parser; import org.apache.tika.parser.RecursiveParserWrapper; import org.apache.tika.sax.BasicContentHandlerFactory; import org.apache.tika.server.MetadataList; -import org.xml.sax.helpers.DefaultHandler; @Path("/rmeta") public class RecursiveMetadataResource { private static final Log logger = LogFactory.getLog(RecursiveMetadataResource.class); - private TikaConfig tikaConfig; - - public RecursiveMetadataResource(TikaConfig tikaConfig) { - this.tikaConfig = tikaConfig; - } - @POST @Consumes("multipart/form-data") @Produces({"text/csv", "application/json"}) @@ -65,6 +56,7 @@ public class RecursiveMetadataResource { @PUT @Produces("application/json") public Response getMetadata(InputStream is, @Context HttpHeaders httpHeaders, @Context UriInfo info) throws Exception { + is = TikaUtils.getInputSteam(is, httpHeaders); return Response.ok( parseMetadata(is, httpHeaders.getRequestHeaders(), info)).build(); } @@ -74,7 +66,7 @@ public class RecursiveMetadataResource { throws Exception { final Metadata metadata = new Metadata(); final ParseContext context = new ParseContext(); - AutoDetectParser parser = TikaResource.createParser(tikaConfig); + Parser parser = TikaResource.createParser(); // TODO: parameterize choice of handler and max chars? BasicContentHandlerFactory.HANDLER_TYPE type = BasicContentHandlerFactory.HANDLER_TYPE.TEXT; RecursiveParserWrapper wrapper = new RecursiveParserWrapper(parser,
Modified: tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaDetectors.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaDetectors.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaDetectors.java (original) +++ tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaDetectors.java Sun Jun 28 01:57:30 2015 @@ -19,13 +19,11 @@ package org.apache.tika.server.resource; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.tika.config.TikaConfig; import org.apache.tika.detect.CompositeDetector; import org.apache.tika.detect.Detector; import org.apache.tika.server.HTMLHelper; @@ -37,11 +35,9 @@ import org.eclipse.jetty.util.ajax.JSON; */ @Path("/detectors") public class TikaDetectors { - private TikaConfig tika; private HTMLHelper html; - public TikaDetectors(TikaConfig tika) { - this.tika = tika; + public TikaDetectors() { this.html = new HTMLHelper(); } @@ -50,7 +46,7 @@ public class TikaDetectors { public String getDectorsHTML() { StringBuffer h = new StringBuffer(); html.generateHeader(h, "Detectors available to Apache Tika"); - detectorAsHTML(tika.getDetector(), h, 2); + detectorAsHTML(TikaResource.getConfig().getDetector(), h, 2); html.generateFooter(h); return h.toString(); } @@ -79,7 +75,7 @@ public class TikaDetectors { @Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON) public String getDetectorsJSON() { Map<String, Object> details = new HashMap<String, Object>(); - detectorAsMap(tika.getDetector(), details); + detectorAsMap(TikaResource.getConfig().getDetector(), details); return JSON.toString(details); } @@ -103,10 +99,9 @@ public class TikaDetectors { @Produces("text/plain") public String getDetectorsPlain() { StringBuffer text = new StringBuffer(); - renderDetector(tika.getDetector(), text, 0); + 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(); Modified: tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaMimeTypes.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaMimeTypes.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaMimeTypes.java (original) +++ tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaMimeTypes.java Sun Jun 28 01:57:30 2015 @@ -19,7 +19,6 @@ package org.apache.tika.server.resource; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -27,7 +26,6 @@ import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; -import org.apache.tika.config.TikaConfig; import org.apache.tika.mime.MediaType; import org.apache.tika.mime.MediaTypeRegistry; import org.apache.tika.parser.CompositeParser; @@ -41,11 +39,9 @@ import org.eclipse.jetty.util.ajax.JSON; */ @Path("/mime-types") public class TikaMimeTypes { - private TikaConfig tika; private HTMLHelper html; - public TikaMimeTypes(TikaConfig tika) { - this.tika = tika; + public TikaMimeTypes() { this.html = new HTMLHelper(); } @@ -139,8 +135,8 @@ public class TikaMimeTypes { } protected List<MediaTypeDetails> getMediaTypes() { - MediaTypeRegistry registry = tika.getMediaTypeRegistry(); - Map<MediaType, Parser> parsers = ((CompositeParser) tika.getParser()).getParsers(); + MediaTypeRegistry registry = TikaResource.getConfig().getMediaTypeRegistry(); + Map<MediaType, Parser> parsers = ((CompositeParser) TikaResource.getConfig().getParser()).getParsers(); List<MediaTypeDetails> types = new ArrayList<TikaMimeTypes.MediaTypeDetails>(registry.getTypes().size()); Modified: tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaParsers.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaParsers.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaParsers.java (original) +++ tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaParsers.java Sun Jun 28 01:57:30 2015 @@ -19,7 +19,6 @@ package org.apache.tika.server.resource; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; - import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -29,7 +28,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.tika.config.TikaConfig; import org.apache.tika.mime.MediaType; import org.apache.tika.parser.CompositeParser; import org.apache.tika.parser.ParseContext; @@ -46,11 +44,9 @@ import org.eclipse.jetty.util.ajax.JSON; @Path("/parsers") public class TikaParsers { private static final ParseContext EMPTY_PC = new ParseContext(); - private TikaConfig tika; private HTMLHelper html; - public TikaParsers(TikaConfig tika) { - this.tika = tika; + public TikaParsers() { this.html = new HTMLHelper(); } @@ -68,7 +64,7 @@ public class TikaParsers { } protected String getParsersHTML(boolean withMimeTypes) { - ParserDetails p = new ParserDetails(tika.getParser()); + ParserDetails p = new ParserDetails(TikaResource.getConfig().getParser()); StringBuffer h = new StringBuffer(); html.generateHeader(h, "Parsers available to Apache Tika"); @@ -130,7 +126,7 @@ public class TikaParsers { protected String getParsersJSON(boolean withMimeTypes) { Map<String, Object> details = new HashMap<String, Object>(); - parserAsMap(new ParserDetails(tika.getParser()), withMimeTypes, details); + parserAsMap(new ParserDetails(TikaResource.getConfig().getParser()), withMimeTypes, details); return JSON.toString(details); } @@ -171,10 +167,9 @@ public class TikaParsers { protected String getParsersPlain(boolean withMimeTypes) { StringBuffer text = new StringBuffer(); - renderParser(new ParserDetails(tika.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) { String nextIndent = indent + " "; Modified: tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java (original) +++ tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java Sun Jun 28 01:57:30 2015 @@ -62,8 +62,10 @@ import org.apache.tika.metadata.Metadata import org.apache.tika.metadata.TikaMetadataKeys; import org.apache.tika.mime.MediaType; import org.apache.tika.parser.AutoDetectParser; +import org.apache.tika.parser.DigestingParser; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.Parser; +import org.apache.tika.parser.ParserDecorator; import org.apache.tika.parser.PasswordProvider; import org.apache.tika.parser.html.HtmlParser; import org.apache.tika.parser.ocr.TesseractOCRConfig; @@ -84,10 +86,12 @@ public class TikaResource { private static final Log logger = LogFactory.getLog(TikaResource.class); - private TikaConfig tikaConfig; + private static TikaConfig tikaConfig; + private static DigestingParser.Digester digester = null; - public TikaResource(TikaConfig tikaConfig) { - this.tikaConfig = tikaConfig; + public static void init(TikaConfig config, DigestingParser.Digester digestr) { + tikaConfig = config; + digester = digestr; } static { @@ -95,14 +99,14 @@ public class TikaResource { } @SuppressWarnings("serial") - public static AutoDetectParser createParser(TikaConfig tikaConfig) { - final AutoDetectParser parser = new AutoDetectParser(tikaConfig); + public static Parser createParser() { + final Parser parser = new AutoDetectParser(tikaConfig); - Map<MediaType, Parser> parsers = parser.getParsers(); + Map<MediaType, Parser> parsers = ((AutoDetectParser)parser).getParsers(); parsers.put(MediaType.APPLICATION_XML, new HtmlParser()); - parser.setParsers(parsers); + ((AutoDetectParser)parser).setParsers(parsers); - parser.setFallback(new Parser() { + ((AutoDetectParser)parser).setFallback(new Parser() { public Set<MediaType> getSupportedTypes(ParseContext parseContext) { return parser.getSupportedTypes(parseContext); } @@ -111,10 +115,16 @@ public class TikaResource { throw new WebApplicationException(Response.Status.UNSUPPORTED_MEDIA_TYPE); } }); - + if (digester != null) { + return new DigestingParser(parser, digester); + } return parser; } + public static TikaConfig getConfig() { + return tikaConfig; + } + public static String detectFilename(MultivaluedMap<String, String> httpHeaders) { String disposition = httpHeaders.getFirst("Content-Disposition"); @@ -192,7 +202,7 @@ public class TikaResource { } @SuppressWarnings("serial") - public static void fillMetadata(AutoDetectParser parser, Metadata metadata, ParseContext context, MultivaluedMap<String, String> httpHeaders) { + public static void fillMetadata(Parser parser, Metadata metadata, ParseContext context, MultivaluedMap<String, String> httpHeaders) { String fileName = detectFilename(httpHeaders); if (fileName != null) { metadata.set(TikaMetadataKeys.RESOURCE_NAME_KEY, fileName); @@ -212,9 +222,9 @@ public class TikaResource { if (mediaType != null) { metadata.add(org.apache.tika.metadata.HttpHeaders.CONTENT_TYPE, mediaType.toString()); - final Detector detector = parser.getDetector(); + final Detector detector = getDetector(parser); - parser.setDetector(new Detector() { + setDetector(parser, new Detector() { public MediaType detect(InputStream inputStream, Metadata metadata) throws IOException { String ct = metadata.get(org.apache.tika.metadata.HttpHeaders.CONTENT_TYPE); @@ -238,8 +248,35 @@ public class TikaResource { } } + public static void setDetector(Parser p, Detector detector) { + AutoDetectParser adp = getAutoDetectParser(p); + adp.setDetector(detector); + } + + public static Detector getDetector(Parser p) { + AutoDetectParser adp = getAutoDetectParser(p); + return adp.getDetector(); + } + + private static AutoDetectParser getAutoDetectParser(Parser p) { + //bit stinky + if (p instanceof AutoDetectParser) { + return (AutoDetectParser)p; + } else if (p instanceof ParserDecorator) { + Parser wrapped = ((ParserDecorator)p).getWrappedParser(); + if (wrapped instanceof AutoDetectParser) { + return (AutoDetectParser)wrapped; + } + throw new RuntimeException("Couldn't find AutoDetectParser within: "+wrapped.getClass()); + + } + throw new RuntimeException("Couldn't find AutoDetectParser within: "+p.getClass()); + + } + public static void parse(Parser parser, Log logger, String path, InputStream inputStream, ContentHandler handler, Metadata metadata, ParseContext parseContext) throws IOException { + inputStream = TikaInputStream.get(inputStream); try { parser.parse(inputStream, handler, metadata, parseContext); } catch (SAXException e) { @@ -258,6 +295,8 @@ public class TikaResource { path ), e); throw new TikaServerParseException(e); + } finally { + inputStream.close(); } } @@ -300,7 +339,7 @@ public class TikaResource { } public StreamingOutput produceText(final InputStream is, MultivaluedMap<String, String> httpHeaders, final UriInfo info) { - final AutoDetectParser parser = createParser(tikaConfig); + final Parser parser = createParser(); final Metadata metadata = new Metadata(); final ParseContext context = new ParseContext(); @@ -315,12 +354,10 @@ public class TikaResource { BodyContentHandler body = new BodyContentHandler(new RichTextContentHandler(writer)); - TikaInputStream tis = TikaInputStream.get(is); - try { - parse(parser, logger, info.getPath(), tis, body, metadata, context); + parse(parser, logger, info.getPath(), is, body, metadata, context); } finally { - tis.close(); + is.close(); } } }; @@ -358,7 +395,7 @@ public class TikaResource { private StreamingOutput produceOutput(final InputStream is, final MultivaluedMap<String, String> httpHeaders, final UriInfo info, final String format) { - final AutoDetectParser parser = createParser(tikaConfig); + final Parser parser = createParser(); final Metadata metadata = new Metadata(); final ParseContext context = new ParseContext(); @@ -386,13 +423,7 @@ public class TikaResource { throw new WebApplicationException(e); } - TikaInputStream tis = TikaInputStream.get(is); - - try { - parse(parser, logger, info.getPath(), tis, content, metadata, context); - } finally { - tis.close(); - } + parse(parser, logger, info.getPath(), is, content, metadata, context); } }; } Modified: tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaUtils.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaUtils.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaUtils.java (original) +++ tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaUtils.java Sun Jun 28 01:57:30 2015 @@ -17,15 +17,15 @@ package org.apache.tika.server.resource; -import org.apache.tika.io.TikaInputStream; -import org.apache.tika.metadata.Metadata; - import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; import java.io.IOException; import java.io.InputStream; import java.net.URL; +import org.apache.tika.io.TikaInputStream; +import org.apache.tika.metadata.Metadata; + public class TikaUtils { public static InputStream getInputSteam(InputStream is, @Context HttpHeaders httpHeaders) throws IOException { @@ -34,6 +34,6 @@ public class TikaUtils { Metadata metadata = new Metadata(); return TikaInputStream.get(new URL(fileUrl), metadata); } - return is; + return TikaInputStream.get(is); } } Modified: tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaVersion.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaVersion.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaVersion.java (original) +++ tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaVersion.java Sun Jun 28 01:57:30 2015 @@ -21,14 +21,13 @@ import javax.ws.rs.Path; import javax.ws.rs.Produces; import org.apache.tika.Tika; -import org.apache.tika.config.TikaConfig; @Path("/version") public class TikaVersion { private Tika tika; - public TikaVersion(TikaConfig tika) { - this.tika = new Tika(tika); + public TikaVersion() { + this.tika = new Tika(TikaResource.getConfig()); } @GET Modified: tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaWelcome.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaWelcome.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaWelcome.java (original) +++ tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TikaWelcome.java Sun Jun 28 01:57:30 2015 @@ -24,7 +24,6 @@ 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; @@ -40,7 +39,6 @@ import java.util.regex.Pattern; import org.apache.cxf.jaxrs.lifecycle.ResourceProvider; import org.apache.tika.Tika; -import org.apache.tika.config.TikaConfig; import org.apache.tika.server.HTMLHelper; /** @@ -66,8 +64,8 @@ public class TikaWelcome { private HTMLHelper html; private List<Class<?>> endpoints = new LinkedList<Class<?>>(); - public TikaWelcome(TikaConfig tika, List<ResourceProvider> rCoreProviders) { - this.tika = new Tika(tika); + public TikaWelcome(List<ResourceProvider> rCoreProviders) { + this.tika = new Tika(TikaResource.getConfig()); this.html = new HTMLHelper(); for (ResourceProvider rp : rCoreProviders) { this.endpoints.add(rp.getResourceClass()); Modified: tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TranslateResource.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TranslateResource.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TranslateResource.java (original) +++ tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/TranslateResource.java Sun Jun 28 01:57:30 2015 @@ -17,23 +17,21 @@ package org.apache.tika.server.resource; -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; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.tika.config.LoadErrorHandler; import org.apache.tika.config.ServiceLoader; -import org.apache.tika.config.TikaConfig; import org.apache.tika.exception.TikaException; import org.apache.tika.language.LanguageIdentifier; import org.apache.tika.language.LanguageProfile; @@ -49,13 +47,10 @@ public class TranslateResource { private static final Log logger = LogFactory.getLog(TranslateResource.class .getName()); - private TikaConfig config; - - public TranslateResource(TikaConfig config) { - this.config = config; + public TranslateResource() { this.loader = new ServiceLoader(ServiceLoader.class.getClassLoader(), LoadErrorHandler.WARN); - this.defaultTranslator = this.config.getTranslator(); + this.defaultTranslator = TikaResource.getConfig().getTranslator(); } @PUT Modified: tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/UnpackerResource.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/UnpackerResource.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/UnpackerResource.java (original) +++ tika/trunk/tika-server/src/main/java/org/apache/tika/server/resource/UnpackerResource.java Sun Jun 28 01:57:30 2015 @@ -25,7 +25,6 @@ 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; @@ -49,14 +48,14 @@ import org.apache.poi.poifs.filesystem.O import org.apache.poi.poifs.filesystem.Ole10NativeException; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.IOUtils; -import org.apache.tika.config.TikaConfig; import org.apache.tika.extractor.EmbeddedDocumentExtractor; import org.apache.tika.io.TikaInputStream; import org.apache.tika.metadata.Metadata; import org.apache.tika.metadata.TikaMetadataKeys; import org.apache.tika.mime.MimeTypeException; -import org.apache.tika.parser.AutoDetectParser; +import org.apache.tika.parser.DigestingParser; import org.apache.tika.parser.ParseContext; +import org.apache.tika.parser.Parser; import org.apache.tika.parser.microsoft.OfficeParser; import org.apache.tika.sax.BodyContentHandler; import org.apache.tika.server.RichTextContentHandler; @@ -70,12 +69,6 @@ public class UnpackerResource { private static final Log logger = LogFactory.getLog(UnpackerResource.class); private static final String META_FILENAME = "__METADATA__"; - private TikaConfig tikaConfig; - - public UnpackerResource(TikaConfig tikaConfig) { - this.tikaConfig = tikaConfig; - } - public static void metadataToCsv(Metadata metadata, OutputStream outputStream) throws IOException { CSVWriter writer = new CSVWriter(new OutputStreamWriter(outputStream, org.apache.tika.io.IOUtils.UTF_8)); @@ -121,7 +114,11 @@ public class UnpackerResource { Metadata metadata = new Metadata(); ParseContext pc = new ParseContext(); - AutoDetectParser parser = TikaResource.createParser(tikaConfig); + Parser parser = TikaResource.createParser(); + if (parser instanceof DigestingParser) { + //no need to digest for unwrapping + parser = ((DigestingParser)parser).getWrappedParser(); + } TikaResource.fillMetadata(parser, metadata, pc, httpHeaders.getRequestHeaders()); TikaResource.logRequest(logger, info, metadata); @@ -139,6 +136,7 @@ public class UnpackerResource { MutableInt count = new MutableInt(); pc.set(EmbeddedDocumentExtractor.class, new MyEmbeddedDocumentExtractor(count, files)); + is = TikaUtils.getInputSteam(is, httpHeaders); TikaResource.parse(parser, logger, info.getPath(), is, ch, metadata, pc); if (count.intValue() == 0 && !saveAll) { @@ -184,7 +182,7 @@ public class UnpackerResource { if (!name.contains(".") && contentType != null) { try { - String ext = tikaConfig.getMimeRepository().forName(contentType).getExtension(); + String ext = TikaResource.getConfig().getMimeRepository().forName(contentType).getExtension(); if (ext != null) { name += ext; Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/CXFTestBase.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/CXFTestBase.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/CXFTestBase.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/CXFTestBase.java Sun Jun 28 01:57:30 2015 @@ -41,15 +41,19 @@ import org.apache.cxf.jaxrs.JAXRSBinding import org.apache.cxf.jaxrs.JAXRSServerFactoryBean; import org.apache.tika.config.TikaConfig; import org.apache.tika.io.IOUtils; +import org.apache.tika.parser.utils.CommonsDigester; +import org.apache.tika.server.resource.TikaResource; import org.apache.tika.server.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:" + TikaServerCli.DEFAULT_PORT; protected Server server; - protected TikaConfig tika; + private TikaConfig tika; public static void assertContains(String needle, String haystack) { assertTrue(needle + " not found in:\n" + haystack, haystack.contains(needle)); @@ -76,7 +80,7 @@ public abstract class CXFTestBase { @Before public void setUp() { this.tika = TikaConfig.getDefaultConfig(); - + TikaResource.init(tika, new CommonsDigester(DIGESTER_READ_LIMIT, CommonsDigester.DigestAlgorithm.MD5)); JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); setUpResources(sf); setUpProviders(sf); Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/DetectorResourceTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/DetectorResourceTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/DetectorResourceTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/DetectorResourceTest.java Sun Jun 28 01:57:30 2015 @@ -45,7 +45,7 @@ public class DetectorResourceTest extend protected void setUpResources(JAXRSServerFactoryBean sf) { sf.setResourceClasses(DetectorResource.class); sf.setResourceProvider(DetectorResource.class, - new SingletonResourceProvider(new DetectorResource(tika))); + new SingletonResourceProvider(new DetectorResource())); } Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/LanguageResourceTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/LanguageResourceTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/LanguageResourceTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/LanguageResourceTest.java Sun Jun 28 01:57:30 2015 @@ -46,7 +46,7 @@ public class LanguageResourceTest extend protected void setUpResources(JAXRSServerFactoryBean sf) { sf.setResourceClasses(LanguageResource.class); sf.setResourceProvider(LanguageResource.class, - new SingletonResourceProvider(new LanguageResource(tika))); + new SingletonResourceProvider(new LanguageResource())); } Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/MetadataResourceTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/MetadataResourceTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/MetadataResourceTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/MetadataResourceTest.java Sun Jun 28 01:57:30 2015 @@ -53,7 +53,7 @@ public class MetadataResourceTest extend protected void setUpResources(JAXRSServerFactoryBean sf) { sf.setResourceClasses(MetadataResource.class); sf.setResourceProvider(MetadataResource.class, - new SingletonResourceProvider(new MetadataResource(tika))); + new SingletonResourceProvider(new MetadataResource())); } @Override @@ -89,6 +89,8 @@ public class MetadataResourceTest extend assertNotNull(metadata.get("Author")); assertEquals("Maxim Valyanskiy", metadata.get("Author")); + assertEquals("X-TIKA:digest:MD5", "f8be45c34e8919eedba48cc8d207fbf0", + metadata.get("X-TIKA:digest:MD5")); } @Test Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java Sun Jun 28 01:57:30 2015 @@ -46,7 +46,7 @@ public class RecursiveMetadataResourceTe protected void setUpResources(JAXRSServerFactoryBean sf) { sf.setResourceClasses(RecursiveMetadataResource.class); sf.setResourceProvider(RecursiveMetadataResource.class, - new SingletonResourceProvider(new RecursiveMetadataResource(tika))); + new SingletonResourceProvider(new RecursiveMetadataResource())); } @Override @@ -70,6 +70,8 @@ public class RecursiveMetadataResourceTe assertEquals(12, metadataList.size()); assertEquals("Microsoft Office Word", metadataList.get(0).get("Application-Name")); assertContains("plundered our seas", metadataList.get(6).get("X-TIKA:content")); + + assertEquals("a38e6c7b38541af87148dee9634cb811", metadataList.get(10).get("X-TIKA:digest:MD5")); } @Test Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/StackTraceOffTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/StackTraceOffTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/StackTraceOffTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/StackTraceOffTest.java Sun Jun 28 01:57:30 2015 @@ -63,11 +63,11 @@ public class StackTraceOffTest extends C @Override protected void setUpResources(JAXRSServerFactoryBean sf) { List<ResourceProvider> rCoreProviders = new ArrayList<ResourceProvider>(); - rCoreProviders.add(new SingletonResourceProvider(new MetadataResource(tika))); - rCoreProviders.add(new SingletonResourceProvider(new RecursiveMetadataResource(tika))); - rCoreProviders.add(new SingletonResourceProvider(new DetectorResource(tika))); - rCoreProviders.add(new SingletonResourceProvider(new TikaResource(tika))); - rCoreProviders.add(new SingletonResourceProvider(new UnpackerResource(tika))); + rCoreProviders.add(new SingletonResourceProvider(new MetadataResource())); + rCoreProviders.add(new SingletonResourceProvider(new RecursiveMetadataResource())); + rCoreProviders.add(new SingletonResourceProvider(new DetectorResource())); + rCoreProviders.add(new SingletonResourceProvider(new TikaResource())); + rCoreProviders.add(new SingletonResourceProvider(new UnpackerResource())); sf.setResourceProviders(rCoreProviders); } Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/StackTraceTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/StackTraceTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/StackTraceTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/StackTraceTest.java Sun Jun 28 01:57:30 2015 @@ -57,11 +57,11 @@ public class StackTraceTest extends CXFT @Override protected void setUpResources(JAXRSServerFactoryBean sf) { List<ResourceProvider> rCoreProviders = new ArrayList<ResourceProvider>(); - rCoreProviders.add(new SingletonResourceProvider(new MetadataResource(tika))); - rCoreProviders.add(new SingletonResourceProvider(new RecursiveMetadataResource(tika))); - rCoreProviders.add(new SingletonResourceProvider(new DetectorResource(tika))); - rCoreProviders.add(new SingletonResourceProvider(new TikaResource(tika))); - rCoreProviders.add(new SingletonResourceProvider(new UnpackerResource(tika))); + rCoreProviders.add(new SingletonResourceProvider(new MetadataResource())); + rCoreProviders.add(new SingletonResourceProvider(new RecursiveMetadataResource())); + rCoreProviders.add(new SingletonResourceProvider(new DetectorResource())); + rCoreProviders.add(new SingletonResourceProvider(new TikaResource())); + rCoreProviders.add(new SingletonResourceProvider(new UnpackerResource())); sf.setResourceProviders(rCoreProviders); } Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaDetectorsTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaDetectorsTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaDetectorsTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaDetectorsTest.java Sun Jun 28 01:57:30 2015 @@ -44,7 +44,7 @@ public class TikaDetectorsTest extends C sf.setResourceClasses(TikaDetectors.class); sf.setResourceProvider( TikaDetectors.class, - new SingletonResourceProvider(new TikaDetectors(tika)) + new SingletonResourceProvider(new TikaDetectors()) ); } Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaMimeTypesTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaMimeTypesTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaMimeTypesTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaMimeTypesTest.java Sun Jun 28 01:57:30 2015 @@ -40,7 +40,7 @@ public class TikaMimeTypesTest extends C sf.setResourceClasses(TikaMimeTypes.class); sf.setResourceProvider( TikaMimeTypes.class, - new SingletonResourceProvider(new TikaMimeTypes(tika)) + new SingletonResourceProvider(new TikaMimeTypes()) ); } Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaParsersTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaParsersTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaParsersTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaParsersTest.java Sun Jun 28 01:57:30 2015 @@ -45,7 +45,7 @@ public class TikaParsersTest extends CXF sf.setResourceClasses(TikaParsers.class); sf.setResourceProvider( TikaParsers.class, - new SingletonResourceProvider(new TikaParsers(tika)) + new SingletonResourceProvider(new TikaParsers()) ); } Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaResourceTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaResourceTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaResourceTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaResourceTest.java Sun Jun 28 01:57:30 2015 @@ -46,7 +46,7 @@ public class TikaResourceTest extends CX protected void setUpResources(JAXRSServerFactoryBean sf) { sf.setResourceClasses(TikaResource.class); sf.setResourceProvider(TikaResource.class, - new SingletonResourceProvider(new TikaResource(tika))); + new SingletonResourceProvider(new TikaResource())); } @Override @@ -104,6 +104,8 @@ public class TikaResourceTest extends CX String responseMsg = getStringFromInputStream((InputStream) response .getEntity()); assertTrue(responseMsg.contains("test")); + assertContains("<meta name=\"X-TIKA:digest:MD5\" content=\"f8be45c34e8919eedba48cc8d207fbf0\"/>", + responseMsg); } @Test @@ -149,6 +151,9 @@ public class TikaResourceTest extends CX String responseMsg = getStringFromInputStream((InputStream) response .getEntity()); assertTrue(responseMsg.contains("test")); + assertContains("<meta name=\"X-TIKA:digest:MD5\" content=\"f8be45c34e8919eedba48cc8d207fbf0\"/>", + responseMsg); + } @Test @@ -168,6 +173,9 @@ public class TikaResourceTest extends CX responseMsg = getStringFromInputStream((InputStream) response .getEntity()); assertTrue(responseMsg.contains("Course of human events")); + assertContains("<meta name=\"X-TIKA:digest:MD5\" content=\"59f626e09a8c16ab6dbc2800c685f772\"/>", + responseMsg); + } } Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaVersionTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaVersionTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaVersionTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaVersionTest.java Sun Jun 28 01:57:30 2015 @@ -38,7 +38,7 @@ public class TikaVersionTest extends CXF sf.setResourceClasses(TikaVersion.class); sf.setResourceProvider( TikaVersion.class, - new SingletonResourceProvider(new TikaVersion(tika)) + new SingletonResourceProvider(new TikaVersion()) ); } Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaWelcomeTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaWelcomeTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaWelcomeTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/TikaWelcomeTest.java Sun Jun 28 01:57:30 2015 @@ -44,11 +44,11 @@ public class TikaWelcomeTest extends CXF protected void setUpResources(JAXRSServerFactoryBean sf) { List<ResourceProvider> rpsCore = new ArrayList<ResourceProvider>(); - rpsCore.add(new SingletonResourceProvider(new TikaVersion(tika))); - rpsCore.add(new SingletonResourceProvider(new DetectorResource(tika))); - rpsCore.add(new SingletonResourceProvider(new MetadataResource(tika))); + rpsCore.add(new SingletonResourceProvider(new TikaVersion())); + rpsCore.add(new SingletonResourceProvider(new DetectorResource())); + rpsCore.add(new SingletonResourceProvider(new MetadataResource())); List<ResourceProvider> all = new ArrayList<ResourceProvider>(rpsCore); - all.add(new SingletonResourceProvider(new TikaWelcome(tika, rpsCore))); + all.add(new SingletonResourceProvider(new TikaWelcome(rpsCore))); sf.setResourceProviders(all); } Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/TranslateResourceTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/TranslateResourceTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/TranslateResourceTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/TranslateResourceTest.java Sun Jun 28 01:57:30 2015 @@ -47,7 +47,7 @@ public class TranslateResourceTest exten protected void setUpResources(JAXRSServerFactoryBean sf) { sf.setResourceClasses(TranslateResource.class); sf.setResourceProvider(TranslateResource.class, - new SingletonResourceProvider(new TranslateResource(tika))); + new SingletonResourceProvider(new TranslateResource())); } Modified: tika/trunk/tika-server/src/test/java/org/apache/tika/server/UnpackerResourceTest.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-server/src/test/java/org/apache/tika/server/UnpackerResourceTest.java?rev=1687981&r1=1687980&r2=1687981&view=diff ============================================================================== --- tika/trunk/tika-server/src/test/java/org/apache/tika/server/UnpackerResourceTest.java (original) +++ tika/trunk/tika-server/src/test/java/org/apache/tika/server/UnpackerResourceTest.java Sun Jun 28 01:57:30 2015 @@ -71,7 +71,7 @@ public class UnpackerResourceTest extend protected void setUpResources(JAXRSServerFactoryBean sf) { sf.setResourceClasses(UnpackerResource.class); sf.setResourceProvider(UnpackerResource.class, - new SingletonResourceProvider(new UnpackerResource(tika))); + new SingletonResourceProvider(new UnpackerResource())); } @Override
