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);
         }
     }