You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ni...@apache.org on 2015/01/16 01:35:41 UTC
svn commit: r1652320 - in /tika/trunk:
tika-core/src/main/java/org/apache/tika/extractor/ParsingEmbeddedDocumentExtractor.java
tika-parsers/src/main/java/org/apache/tika/parser/mail/MailContentHandler.java
Author: nick
Date: Fri Jan 16 00:35:41 2015
New Revision: 1652320
URL: http://svn.apache.org/r1652320
Log:
TIKA-1222 Move further towards EmbeddedDocumentExtractor, but keeping backwards compatibility
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/extractor/ParsingEmbeddedDocumentExtractor.java
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mail/MailContentHandler.java
Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/extractor/ParsingEmbeddedDocumentExtractor.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/extractor/ParsingEmbeddedDocumentExtractor.java?rev=1652320&r1=1652319&r2=1652320&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/extractor/ParsingEmbeddedDocumentExtractor.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/extractor/ParsingEmbeddedDocumentExtractor.java Fri Jan 16 00:35:41 2015
@@ -21,6 +21,7 @@ import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
+import org.apache.tika.exception.EncryptedDocumentException;
import org.apache.tika.exception.TikaException;
import org.apache.tika.io.CloseShieldInputStream;
import org.apache.tika.io.TemporaryResources;
@@ -103,6 +104,9 @@ public class ParsingEmbeddedDocumentExtr
newStream,
new EmbeddedContentHandler(new BodyContentHandler(handler)),
metadata, context);
+ } catch (EncryptedDocumentException ede) {
+ // TODO: can we log a warning that we lack the password?
+ // For now, just skip the content
} catch (TikaException e) {
// TODO: can we log a warning somehow?
// Could not parse the entry, just skip the content
Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mail/MailContentHandler.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mail/MailContentHandler.java?rev=1652320&r1=1652319&r2=1652320&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mail/MailContentHandler.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/mail/MailContentHandler.java Fri Jan 16 00:35:41 2015
@@ -36,16 +36,13 @@ import org.apache.james.mime4j.parser.Co
import org.apache.james.mime4j.stream.BodyDescriptor;
import org.apache.james.mime4j.stream.Field;
import org.apache.tika.config.TikaConfig;
-import org.apache.tika.exception.EncryptedDocumentException;
-import org.apache.tika.exception.TikaException;
import org.apache.tika.extractor.EmbeddedDocumentExtractor;
+import org.apache.tika.extractor.ParsingEmbeddedDocumentExtractor;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.metadata.TikaCoreProperties;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
-import org.apache.tika.sax.BodyContentHandler;
-import org.apache.tika.sax.EmbeddedContentHandler;
import org.apache.tika.sax.XHTMLContentHandler;
import org.xml.sax.SAXException;
@@ -81,10 +78,10 @@ class MailContentHandler implements Cont
// If there's no EmbeddedDocumentExtractor, then try using a normal parser
// This will ensure that the contents are made available to the user, so
// the see the text, but without fine-grained control/extraction
- Parser parser = null;
+ // (This also maintains backward compatibility with older versions!)
if (ex == null) {
// If the user gave a parser, use that, if not the default
- parser = context.get(AutoDetectParser.class);
+ Parser parser = context.get(AutoDetectParser.class);
if (parser == null) {
parser = context.get(Parser.class);
}
@@ -97,6 +94,9 @@ class MailContentHandler implements Cont
}
parser = tikaConfig.getParser();
}
+ ParseContext ctx = new ParseContext();
+ ctx.set(Parser.class, parser);
+ ex = new ParsingEmbeddedDocumentExtractor(ctx);
}
// use a different metadata object
@@ -108,19 +108,11 @@ class MailContentHandler implements Cont
submd.set(Metadata.CONTENT_ENCODING, body.getCharset());
try {
- BodyContentHandler bch = new BodyContentHandler(handler);
- if (ex != null) {
- if (ex.shouldParseEmbedded(submd))
- ex.parseEmbedded(is, bch, submd, false);
- } else {
- parser.parse(is, new EmbeddedContentHandler(bch), submd, context);
+ if (ex.shouldParseEmbedded(submd)) {
+ ex.parseEmbedded(is, handler, submd, false);
}
- } catch (EncryptedDocumentException ede) {
- // Skip this encrypted attachment and continue
} catch (SAXException e) {
throw new MimeException(e);
- } catch (TikaException e) {
- throw new MimeException(e);
}
}