Author: lehmi
Date: Tue Sep 20 17:47:44 2011
New Revision: 1173275

URL: http://svn.apache.org/viewvc?rev=1173275&view=rev
Log:
PDFBOX-1088: added a patch to avoid a ClassCastException and a new test case as 
proposed by Maruan Sahyoun

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
    
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java?rev=1173275&r1=1173274&r2=1173275&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java 
Tue Sep 20 17:47:44 2011
@@ -154,12 +154,13 @@ public class PDDocument implements Pagea
     
     private void processListOfPageReferences(List<Object> pageNodes)
     {
-        for(int i=0; i < pageNodes.size(); ++i) 
+        int numberOfNodes = pageNodes.size();
+        for(int i=0; i < numberOfNodes; ++i) 
         {
             Object pageOrArray = pageNodes.get(i);
             if(pageOrArray instanceof PDPage)
             {
-                List pageArray = 
((((PDPage)pageOrArray).getParent()).getKids());
+                COSArray pageArray = 
((COSArrayList)(((PDPage)pageOrArray).getParent()).getKids()).toList();
                 parseCatalogObject((COSObject)pageArray.get(i));
             }
             else if(pageOrArray instanceof PDPageNode)

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java?rev=1173275&r1=1173274&r2=1173275&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java
 Tue Sep 20 17:47:44 2011
@@ -86,4 +86,22 @@ public class TestPDDocumentCatalog exten
                 doc.close();
         }
     }
+
+    /**
+     * Test case for
+     * <a href="https://issues.apache.org/jira/browse/PDFBOX-1088";
+     *   >PDFBOX-1088</a> - Class PDDocument Method getPageMap returns a 
ClassCastException
+     */
+    public void testPageMap() throws Exception {
+        PDDocument doc = null;
+        try {
+            doc = 
PDDocument.load(TestPDDocumentCatalog.class.getResource("test.unc.pdf"));
+            assertEquals(4, doc.getPageMap().size());
+            int pageNum = doc.getPageMap().get("14,0");
+            assertEquals(1, pageNum);
+        } finally {
+            if(doc != null)
+                doc.close();
+        }
+    }
 }


Reply via email to