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