You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2014/12/02 08:44:23 UTC

svn commit: r1642808 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java

Author: tilman
Date: Tue Dec  2 07:44:23 2014
New Revision: 1642808

URL: http://svn.apache.org/r1642808
Log:
PDFBOX-2533: DRY refactoring of decryption code that is used in PreflightParser and in NonSequentialParser

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java?rev=1642808&r1=1642807&r2=1642808&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java Tue Dec  2 07:44:23 2014
@@ -1546,26 +1546,7 @@ public class NonSequentialPDFParser exte
                 }
                 else if (securityHandler != null)
                 {
-                    // decrypt
-                    if (pb instanceof COSString)
-                    {
-                        decryptString((COSString) pb, objNr, objGenNr);
-                    }
-                    else if (pb instanceof COSDictionary)
-                    {
-                        decryptDictionary((COSDictionary) pb, objNr, objGenNr);
-                    }
-                    else if (pb instanceof COSArray)
-                    {
-                        final COSArray array = (COSArray) pb;
-                        for (int aIdx = 0, len = array.size(); aIdx < len; aIdx++)
-                        {
-                            if (array.get(aIdx) instanceof COSString)
-                            {
-                                decryptString((COSString) array.get(aIdx), objNr, objGenNr);
-                            }
-                        }
-                    }
+                    decrypt(pb, objNr, objGenNr);
                 }
 
                 pdfObject.setObject(pb);
@@ -1669,6 +1650,38 @@ public class NonSequentialPDFParser exte
     {
         securityHandler.decryptString(str, objNr, objGenNr);
     }
+    
+    /**
+     * Decrypts given object.
+     * 
+     * @param pb the object to be decrypted
+     * @param objNr the object number
+     * @param objGenNr the object generation number
+     * @throws IOException ff something went wrong
+     */
+    protected final void decrypt(COSBase pb, int objNr, int objGenNr) throws IOException
+    {
+        if (pb instanceof COSString)
+        {
+            decryptString((COSString) pb, objNr, objGenNr);
+        }
+        else if (pb instanceof COSDictionary)
+        {
+            decryptDictionary((COSDictionary) pb, objNr, objGenNr);
+        }
+        else if (pb instanceof COSArray)
+        {
+            final COSArray array = (COSArray) pb;
+            for (int aIdx = 0, len = array.size(); aIdx < len; aIdx++)
+            {
+                if (array.get(aIdx) instanceof COSString)
+                {
+                    decryptString((COSString) array.get(aIdx), objNr, objGenNr);
+                }
+            }
+        }
+    }
+    
 
     // ------------------------------------------------------------------------
     private boolean inGetLength = false;