Author: tilman
Date: Wed Sep  3 18:25:05 2025
New Revision: 1928214

Log:
PDFBOX-6059: avoid ClassCastException

Modified:
   
pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentNameDictionary.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageTree.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDObjectStream.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/filespecification/PDEmbeddedFile.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunction.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType0.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType3.java

Modified: 
pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
==============================================================================
--- 
pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
      Wed Sep  3 18:10:59 2025        (r1928213)
+++ 
pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
      Wed Sep  3 18:25:05 2025        (r1928214)
@@ -1085,7 +1085,7 @@ public class PDFDebugger extends JFrame
         {
             if (stream.containsKey(COSName.RESOURCES))
             {
-                resourcesDic = (COSDictionary) 
stream.getDictionaryObject(COSName.RESOURCES);
+                resourcesDic = stream.getCOSDictionary(COSName.RESOURCES);
             }
             isContentStream = true;
         }

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java
   Wed Sep  3 18:10:59 2025        (r1928213)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java
   Wed Sep  3 18:25:05 2025        (r1928214)
@@ -165,7 +165,7 @@ public class PDDocumentCatalog implement
     public PDPageTree getPages()
     {
         // todo: cache me?
-        return new 
PDPageTree((COSDictionary)root.getDictionaryObject(COSName.PAGES), document);
+        return new PDPageTree(root.getCOSDictionary(COSName.PAGES), document);
     }
 
     /**
@@ -217,7 +217,7 @@ public class PDDocumentCatalog implement
      */
     public List<PDThread> getThreads()
     {
-        COSArray array = (COSArray)root.getDictionaryObject(COSName.THREADS);
+        COSArray array = root.getCOSArray(COSName.THREADS);
         if (array == null)
         {
             array = new COSArray();
@@ -304,7 +304,7 @@ public class PDDocumentCatalog implement
      */
     public PDDocumentCatalogAdditionalActions getActions()
     {
-        COSDictionary addAction = (COSDictionary) 
root.getDictionaryObject(COSName.AA);
+        COSDictionary addAction = root.getCOSDictionary(COSName.AA);
         if (addAction == null)
         {
             addAction = new COSDictionary();
@@ -328,7 +328,7 @@ public class PDDocumentCatalog implement
      */
     public PDDocumentNameDictionary getNames()
     {
-        COSDictionary names = (COSDictionary) 
root.getDictionaryObject(COSName.NAMES);
+        COSDictionary names = root.getCOSDictionary(COSName.NAMES);
         return names == null ? null : new PDDocumentNameDictionary(this, 
names);
     }
 
@@ -338,7 +338,7 @@ public class PDDocumentCatalog implement
     public PDDocumentNameDestinationDictionary getDests()
     {
         PDDocumentNameDestinationDictionary nameDic = null;
-        COSDictionary dests = (COSDictionary) 
root.getDictionaryObject(COSName.DESTS);
+        COSDictionary dests = root.getCOSDictionary(COSName.DESTS);
         if (dests != null)
         {
             nameDic = new PDDocumentNameDestinationDictionary(dests);
@@ -396,7 +396,7 @@ public class PDDocumentCatalog implement
      */
     public PDMarkInfo getMarkInfo()
     {
-        COSDictionary dic = 
(COSDictionary)root.getDictionaryObject(COSName.MARK_INFO);
+        COSDictionary dic = root.getCOSDictionary(COSName.MARK_INFO);
         return dic == null ? null : new PDMarkInfo(dic);
     }
 
@@ -418,7 +418,7 @@ public class PDDocumentCatalog implement
     public List<PDOutputIntent> getOutputIntents()
     {
         List<PDOutputIntent> retval = new ArrayList<PDOutputIntent>();
-        COSArray array = 
(COSArray)root.getDictionaryObject(COSName.OUTPUT_INTENTS);
+        COSArray array = root.getCOSArray(COSName.OUTPUT_INTENTS);
         if (array != null)
         {
             for (COSBase cosBase : array)
@@ -442,7 +442,7 @@ public class PDDocumentCatalog implement
      */
     public void addOutputIntent(PDOutputIntent outputIntent)
     {
-        COSArray array = 
(COSArray)root.getDictionaryObject(COSName.OUTPUT_INTENTS);
+        COSArray array = root.getCOSArray(COSName.OUTPUT_INTENTS);
         if (array == null)
         {
             array = new COSArray();
@@ -541,7 +541,7 @@ public class PDDocumentCatalog implement
      */
     public PDURIDictionary getURI()
     {
-        COSDictionary uri = 
(COSDictionary)root.getDictionaryObject(COSName.URI);
+        COSDictionary uri = root.getCOSDictionary(COSName.URI);
         return uri == null ? null : new PDURIDictionary(uri);
     }
 
@@ -624,7 +624,7 @@ public class PDDocumentCatalog implement
      */
     public PDPageLabels getPageLabels() throws IOException
     {
-        COSDictionary dict = (COSDictionary) 
root.getDictionaryObject(COSName.PAGE_LABELS);
+        COSDictionary dict = root.getCOSDictionary(COSName.PAGE_LABELS);
         return dict == null ? null : new PDPageLabels(document, dict);
     }
 
@@ -645,7 +645,7 @@ public class PDDocumentCatalog implement
      */
     public PDOptionalContentProperties getOCProperties()
     {
-        COSDictionary dict = 
(COSDictionary)root.getDictionaryObject(COSName.OCPROPERTIES);
+        COSDictionary dict = root.getCOSDictionary(COSName.OCPROPERTIES);
         return dict == null ? null : new PDOptionalContentProperties(dict);
     }
 

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentNameDictionary.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentNameDictionary.java
    Wed Sep  3 18:10:59 2025        (r1928213)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentNameDictionary.java
    Wed Sep  3 18:25:05 2025        (r1928214)
@@ -84,13 +84,13 @@ public class PDDocumentNameDictionary im
     {
         PDDestinationNameTreeNode dests = null;
 
-        COSDictionary dic = (COSDictionary)nameDictionary.getDictionaryObject( 
COSName.DESTS );
+        COSDictionary dic = nameDictionary.getCOSDictionary(COSName.DESTS );
 
         //The document catalog also contains the Dests entry sometimes
         //so check there as well.
         if( dic == null )
         {
-            dic = (COSDictionary)catalog.getCOSObject().getDictionaryObject( 
COSName.DESTS );
+            dic = catalog.getCOSObject().getCOSDictionary( COSName.DESTS );
         }
 
         if( dic != null )
@@ -127,7 +127,7 @@ public class PDDocumentNameDictionary im
     {
         PDEmbeddedFilesNameTreeNode retval = null;
 
-        COSDictionary dic = (COSDictionary)nameDictionary.getDictionaryObject( 
COSName.EMBEDDED_FILES );
+        COSDictionary dic = 
nameDictionary.getCOSDictionary(COSName.EMBEDDED_FILES);
 
         if( dic != null )
         {
@@ -158,7 +158,7 @@ public class PDDocumentNameDictionary im
     {
         PDJavascriptNameTreeNode retval = null;
 
-        COSDictionary dic = (COSDictionary) 
nameDictionary.getDictionaryObject(COSName.JAVA_SCRIPT);
+        COSDictionary dic = 
nameDictionary.getCOSDictionary(COSName.JAVA_SCRIPT);
 
         if( dic != null )
         {

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java  
    Wed Sep  3 18:10:59 2025        (r1928213)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java  
    Wed Sep  3 18:25:05 2025        (r1928214)
@@ -532,7 +532,7 @@ public class PDPage implements COSObject
      */
     public List<PDThreadBead> getThreadBeads()
     {
-        COSArray beads = (COSArray) page.getDictionaryObject(COSName.B);
+        COSArray beads = page.getCOSArray(COSName.B);
         if (beads == null)
         {
             beads = new COSArray();

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageTree.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageTree.java
  Wed Sep  3 18:10:59 2025        (r1928213)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageTree.java
  Wed Sep  3 18:25:05 2025        (r1928214)
@@ -520,7 +520,7 @@ public class PDPageTree implements COSOb
         // todo: re-balance tree? (or at least group new pages into tree nodes 
of e.g. 20)
 
         // add to parent's kids
-        COSArray kids = (COSArray)root.getDictionaryObject(COSName.KIDS);
+        COSArray kids = root.getCOSArray(COSName.KIDS);
         kids.add(node);
 
         // update ancestor counts
@@ -546,8 +546,8 @@ public class PDPageTree implements COSOb
     public void insertBefore(PDPage newPage, PDPage nextPage)
     {
         COSDictionary nextPageDict = nextPage.getCOSObject();
-        COSDictionary parentDict = (COSDictionary) 
nextPageDict.getDictionaryObject(COSName.PARENT);
-        COSArray kids = (COSArray) 
parentDict.getDictionaryObject(COSName.KIDS);
+        COSDictionary parentDict = 
nextPageDict.getCOSDictionary(COSName.PARENT);
+        COSArray kids = parentDict.getCOSArray(COSName.KIDS);
         boolean found = false;
         for (int i = 0; i < kids.size(); ++i)
         {
@@ -578,8 +578,8 @@ public class PDPageTree implements COSOb
     public void insertAfter(PDPage newPage, PDPage prevPage)
     {
         COSDictionary prevPageDict = prevPage.getCOSObject();
-        COSDictionary parentDict = (COSDictionary) 
prevPageDict.getDictionaryObject(COSName.PARENT);
-        COSArray kids = (COSArray) 
parentDict.getDictionaryObject(COSName.KIDS);
+        COSDictionary parentDict = 
prevPageDict.getCOSDictionary(COSName.PARENT);
+        COSArray kids = parentDict.getCOSArray(COSName.KIDS);
         boolean found = false;
         for (int i = 0; i < kids.size(); ++i)
         {
@@ -605,7 +605,7 @@ public class PDPageTree implements COSOb
         {
             int cnt = parentDict.getInt(COSName.COUNT);
             parentDict.setInt(COSName.COUNT, cnt + 1);
-            parentDict = (COSDictionary) 
parentDict.getDictionaryObject(COSName.PARENT);
+            parentDict = parentDict.getCOSDictionary(COSName.PARENT);
         }
         while (parentDict != null);
     }

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDObjectStream.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDObjectStream.java
       Wed Sep  3 18:10:59 2025        (r1928213)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDObjectStream.java
       Wed Sep  3 18:25:05 2025        (r1928214)
@@ -115,7 +115,7 @@ public class PDObjectStream extends PDSt
     public PDObjectStream getExtends()
     {
         PDObjectStream retval = null;
-        COSStream stream = (COSStream)getCOSObject().getDictionaryObject( 
COSName.EXTENDS );
+        COSStream stream = getCOSObject().getCOSStream(COSName.EXTENDS);
         if( stream != null )
         {
             retval = new PDObjectStream( stream );

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/filespecification/PDEmbeddedFile.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/filespecification/PDEmbeddedFile.java
     Wed Sep  3 18:10:59 2025        (r1928213)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/filespecification/PDEmbeddedFile.java
     Wed Sep  3 18:25:05 2025        (r1928214)
@@ -182,7 +182,7 @@ public class PDEmbeddedFile extends PDSt
     public String getMacSubtype()
     {
         String retval = null;
-        COSDictionary params = 
(COSDictionary)getCOSObject().getDictionaryObject( COSName.PARAMS );
+        COSDictionary params = getCOSObject().getCOSDictionary(COSName.PARAMS);
         if( params != null )
         {
             retval = params.getEmbeddedString( "Mac", "Subtype" );
@@ -197,7 +197,7 @@ public class PDEmbeddedFile extends PDSt
      */
     public void setMacSubtype( String macSubtype )
     {
-        COSDictionary params = 
(COSDictionary)getCOSObject().getDictionaryObject( COSName.PARAMS );
+        COSDictionary params = getCOSObject().getCOSDictionary(COSName.PARAMS);
         if( params == null && macSubtype != null )
         {
             params = new COSDictionary();
@@ -217,7 +217,7 @@ public class PDEmbeddedFile extends PDSt
     public String getMacCreator()
     {
         String retval = null;
-        COSDictionary params = 
(COSDictionary)getCOSObject().getDictionaryObject( COSName.PARAMS );
+        COSDictionary params = getCOSObject().getCOSDictionary(COSName.PARAMS);
         if( params != null )
         {
             retval = params.getEmbeddedString( "Mac", "Creator" );
@@ -232,7 +232,7 @@ public class PDEmbeddedFile extends PDSt
      */
     public void setMacCreator( String macCreator )
     {
-        COSDictionary params = 
(COSDictionary)getCOSObject().getDictionaryObject( COSName.PARAMS );
+        COSDictionary params = getCOSObject().getCOSDictionary(COSName.PARAMS);
         if( params == null && macCreator != null )
         {
             params = new COSDictionary();
@@ -252,7 +252,7 @@ public class PDEmbeddedFile extends PDSt
     public String getMacResFork()
     {
         String retval = null;
-        COSDictionary params = 
(COSDictionary)getCOSObject().getDictionaryObject( COSName.PARAMS );
+        COSDictionary params = getCOSObject().getCOSDictionary(COSName.PARAMS);
         if( params != null )
         {
             retval = params.getEmbeddedString( "Mac", "ResFork" );
@@ -267,7 +267,7 @@ public class PDEmbeddedFile extends PDSt
      */
     public void setMacResFork( String macResFork )
     {
-        COSDictionary params = 
(COSDictionary)getCOSObject().getDictionaryObject( COSName.PARAMS );
+        COSDictionary params = getCOSObject().getCOSDictionary(COSName.PARAMS);
         if( params == null && macResFork != null )
         {
             params = new COSDictionary();

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunction.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunction.java
  Wed Sep  3 18:10:59 2025        (r1928213)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunction.java
  Wed Sep  3 18:25:05 2025        (r1928214)
@@ -282,7 +282,7 @@ public abstract class PDFunction impleme
     {
         if (range == null) 
         {
-            range = (COSArray) 
getCOSObject().getDictionaryObject(COSName.RANGE);
+            range = getCOSObject().getCOSArray(COSName.RANGE);
         }
         return range;
     }
@@ -296,7 +296,7 @@ public abstract class PDFunction impleme
     {
         if (domain == null)
         {
-            domain = (COSArray) 
getCOSObject().getDictionaryObject(COSName.DOMAIN);
+            domain = getCOSObject().getCOSArray(COSName.DOMAIN);
         }
         return domain;
     }

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType0.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType0.java
     Wed Sep  3 18:10:59 2025        (r1928213)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType0.java
     Wed Sep  3 18:25:05 2025        (r1928214)
@@ -96,7 +96,7 @@ public class PDFunctionType0 extends PDF
     {
         if (size == null)
         {
-            size = (COSArray) getCOSObject().getDictionaryObject(COSName.SIZE);
+            size = getCOSObject().getCOSArray(COSName.SIZE);
         }
         return size;
     }
@@ -145,7 +145,7 @@ public class PDFunctionType0 extends PDF
     {
         if (encode == null)
         {
-            encode = (COSArray) 
getCOSObject().getDictionaryObject(COSName.ENCODE);
+            encode = getCOSObject().getCOSArray(COSName.ENCODE);
             // the default value is [0 (size[0]-1) 0 (size[1]-1) ...]
             if (encode == null)
             {
@@ -171,7 +171,7 @@ public class PDFunctionType0 extends PDF
     {
         if (decode == null)
         {
-            decode = (COSArray) 
getCOSObject().getDictionaryObject(COSName.DECODE);
+            decode = getCOSObject().getCOSArray(COSName.DECODE);
             // if decode is null, the default values are the range values
             if (decode == null)
             {

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType3.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType3.java
     Wed Sep  3 18:10:59 2025        (r1928213)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType3.java
     Wed Sep  3 18:25:05 2025        (r1928214)
@@ -134,7 +134,7 @@ public class PDFunctionType3 extends PDF
     {
         if (functions == null)
         {
-            functions = (COSArray)(getCOSObject().getDictionaryObject( 
COSName.FUNCTIONS ));
+            functions = getCOSObject().getCOSArray(COSName.FUNCTIONS);
         }
         return functions;
     }
@@ -148,7 +148,7 @@ public class PDFunctionType3 extends PDF
     {
         if (bounds == null) 
         {
-            bounds = (COSArray)(getCOSObject().getDictionaryObject( 
COSName.BOUNDS ));
+            bounds = getCOSObject().getCOSArray(COSName.BOUNDS);
         }
         return bounds;
     }
@@ -162,7 +162,7 @@ public class PDFunctionType3 extends PDF
     {
         if (encode == null)
         {
-            encode = (COSArray)(getCOSObject().getDictionaryObject( 
COSName.ENCODE ));
+            encode = getCOSObject().getCOSArray(COSName.ENCODE);
         }
         return encode;
     }

Reply via email to