Author: nick
Date: Thu Feb 16 11:20:11 2012
New Revision: 1244933

URL: http://svn.apache.org/viewvc?rev=1244933&view=rev
Log:
TIKA-850 Update OfficeParser to support the new style password fetching via 
PasswordProvider

Modified:
    tika/trunk/CHANGES.txt
    
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java

Modified: tika/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/tika/trunk/CHANGES.txt?rev=1244933&r1=1244932&r2=1244933&view=diff
==============================================================================
--- tika/trunk/CHANGES.txt (original)
+++ tika/trunk/CHANGES.txt Thu Feb 16 11:20:11 2012
@@ -58,6 +58,11 @@ Release 1.1 - Current Development
    limited audio and video metadata, along with the iTunes media metadata
    (such as Artist and Title) (TIKA-852)
 
+ * Document Passwords: A new ParseContext object, PasswordProvider,
+   has been added. This provides a way to supply the password for 
+   a document during processing. Currently, only password protected
+   PDFs and Microsoft OOXML Files are supported. (TIKA-850)
+
 Release 1.0 - 11/4/2011
 ---------------------------------
 

Modified: 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java?rev=1244933&r1=1244932&r2=1244933&view=diff
==============================================================================
--- 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
 (original)
+++ 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java
 Thu Feb 16 11:20:11 2012
@@ -42,6 +42,7 @@ import org.apache.tika.metadata.Metadata
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.AbstractParser;
 import org.apache.tika.parser.ParseContext;
+import org.apache.tika.parser.PasswordProvider;
 import org.apache.tika.parser.microsoft.ooxml.OOXMLParser;
 import org.apache.tika.sax.BodyContentHandler;
 import org.apache.tika.sax.EmbeddedContentHandler;
@@ -212,8 +213,17 @@ public class OfficeParser extends Abstra
            Decryptor d = Decryptor.getInstance(info);
 
            try {
-              // TODO Allow the user to specify the password via the 
ParseContext
-              if (!d.verifyPassword(Decryptor.DEFAULT_PASSWORD)) {
+              // By default, use the default Office Password
+              String password = Decryptor.DEFAULT_PASSWORD;
+              
+              // If they supplyed a Password Provider, ask that for the 
password
+              PasswordProvider passwordProvider = 
context.get(PasswordProvider.class);
+              if (passwordProvider != null) {
+                 password = passwordProvider.getPassword(metadata);
+              }
+              
+              // Check if we've the right password or not
+              if (!d.verifyPassword(password)) {
                  throw new EncryptedDocumentException();
               }
 


Reply via email to