Author: tilman
Date: Thu Sep  4 11:41:13 2025
New Revision: 1928227

Log:
PDFBOX-6059: avoid ClassCastException

Modified:
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDLayoutAttributeObject.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalGray.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/PDOptionalContentProperties.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDBorderStyleDictionary.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSeedValue.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineItem.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDFieldFactory.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDNonTerminalField.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDSignatureField.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDLayoutAttributeObject.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDLayoutAttributeObject.java
       Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDLayoutAttributeObject.java
       Thu Sep  4 11:41:13 2025        (r1928227)
@@ -19,6 +19,7 @@ package org.apache.pdfbox.pdmodel.docume
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.common.PDRectangle;
 import org.apache.pdfbox.pdmodel.graphics.color.PDGamma;
 
@@ -840,10 +841,10 @@ public class PDLayoutAttributeObject ext
      */
     public PDRectangle getBBox()
     {
-        COSBase base = this.getCOSObject().getDictionaryObject(BBOX);
-        if (base instanceof COSArray)
+        COSArray array = this.getCOSObject().getCOSArray(COSName.BBOX);
+        if (array != null)
         {
-            return new PDRectangle((COSArray) base);
+            return new PDRectangle(array);
         }
         return null;
     }

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalGray.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalGray.java
    Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalGray.java
    Thu Sep  4 11:41:13 2025        (r1928227)
@@ -21,7 +21,6 @@ import java.util.Map;
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSFloat;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.cos.COSNumber;
 
 /**
  * A CalGray colour space is a special case of a single-component CIE-based
@@ -113,13 +112,7 @@ public final class PDCalGray extends PDC
      */
     public float getGamma()
     {
-        float retval = 1.0f;
-        COSNumber gamma = (COSNumber) 
dictionary.getDictionaryObject(COSName.GAMMA);
-        if (gamma != null)
-        {
-            retval = gamma.floatValue();
-        }
-        return retval;
+        return dictionary.getFloat(COSName.GAMMA, 1.0f);
     }
 
     /**

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/PDOptionalContentProperties.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/PDOptionalContentProperties.java
        Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/PDOptionalContentProperties.java
        Thu Sep  4 11:41:13 2025        (r1928227)
@@ -177,7 +177,7 @@ public class PDOptionalContentProperties
         ocgs.add(ocg.getCOSObject());
 
         //By default, add new group to the "Order" entry so it appears in the 
user interface
-        COSArray order = (COSArray)getD().getDictionaryObject(COSName.ORDER);
+        COSArray order = getD().getCOSArray(COSName.ORDER);
         if (order == null)
         {
             order = new COSArray();

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDBorderStyleDictionary.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDBorderStyleDictionary.java
      Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDBorderStyleDictionary.java
      Thu Sep  4 11:41:13 2025        (r1928227)
@@ -169,7 +169,7 @@ public class PDBorderStyleDictionary imp
      */
     public PDLineDashPattern getDashStyle()
     {
-        COSArray d = (COSArray) getCOSObject().getDictionaryObject(COSName.D);
+        COSArray d = getCOSObject().getCOSArray(COSName.D);
         if (d == null)
         {
             d = new COSArray();

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSeedValue.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSeedValue.java
    Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSeedValue.java
    Thu Sep  4 11:41:13 2025        (r1928227)
@@ -272,7 +272,7 @@ public class PDSeedValue implements COSO
     public List<String> getSubFilter()
     {
         List<String> retval = null;
-        COSArray fields = 
(COSArray)dictionary.getDictionaryObject(COSName.SUB_FILTER);
+        COSArray fields = dictionary.getCOSArray(COSName.SUB_FILTER);
 
         if (fields != null)
         {
@@ -312,7 +312,7 @@ public class PDSeedValue implements COSO
     public List<String> getDigestMethod()
     {
         List<String> retval = null;
-        COSArray fields = 
(COSArray)dictionary.getDictionaryObject(COSName.DIGEST_METHOD);
+        COSArray fields = dictionary.getCOSArray(COSName.DIGEST_METHOD);
 
         if (fields != null)
         {
@@ -401,7 +401,7 @@ public class PDSeedValue implements COSO
     public List<String> getReasons()
     {
         List<String> retval = null;
-        COSArray fields = 
(COSArray)dictionary.getDictionaryObject(COSName.REASONS);
+        COSArray fields = dictionary.getCOSArray(COSName.REASONS);
 
         if (fields != null)
         {
@@ -562,7 +562,7 @@ public class PDSeedValue implements COSO
     public List<String> getLegalAttestation()
     {
         List<String> retval = null;
-        COSArray fields = 
(COSArray)dictionary.getDictionaryObject(COSName.LEGAL_ATTESTATION);
+        COSArray fields = dictionary.getCOSArray(COSName.LEGAL_ATTESTATION);
 
         if (fields != null)
         {

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineItem.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineItem.java
        Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineItem.java
        Thu Sep  4 11:41:13 2025        (r1928227)
@@ -301,7 +301,7 @@ public final class PDOutlineItem extends
     public PDStructureElement getStructureElement()
     {
         PDStructureElement se = null;
-        COSDictionary dic = (COSDictionary) 
getCOSObject().getDictionaryObject(COSName.SE);
+        COSDictionary dic = getCOSObject().getCOSDictionary(COSName.SE);
         if( dic != null )
         {
             se = new PDStructureElement( dic );
@@ -327,7 +327,7 @@ public final class PDOutlineItem extends
      */
     public PDColor getTextColor()
     {
-        COSArray csValues = (COSArray) 
getCOSObject().getDictionaryObject(COSName.C);
+        COSArray csValues = getCOSObject().getCOSArray(COSName.C);
         if( csValues == null )
         {
             csValues = new COSArray();

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
 Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
 Thu Sep  4 11:41:13 2025        (r1928227)
@@ -36,7 +36,6 @@ import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDPageContentStream;
@@ -615,13 +614,7 @@ public final class PDAcroForm implements
      */
     public int getQ()
     {
-        int retval = 0;
-        COSNumber number = 
(COSNumber)dictionary.getDictionaryObject(COSName.Q);
-        if (number != null)
-        {
-            retval = number.intValue();
-        }
-        return retval;
+        return dictionary.getInt(COSName.Q, 0);
     }
 
     /**
@@ -875,12 +868,12 @@ public final class PDAcroForm implements
             if (field.getParent() == null)
             {
                 // if the field has no parent, assume it is at root level 
list, remove it from there
-                array = (COSArray) 
dictionary.getDictionaryObject(COSName.FIELDS);
+                array = dictionary.getCOSArray(COSName.FIELDS);
             }
             else
             {
                 // if the field has a parent, then remove from the list there
-                array = (COSArray) 
field.getParent().getCOSObject().getDictionaryObject(COSName.KIDS);
+                array = 
field.getParent().getCOSObject().getCOSArray(COSName.KIDS);
             }
             array.removeObject(field.getCOSObject());
         }

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java
    Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java
    Thu Sep  4 11:41:13 2025        (r1928227)
@@ -224,7 +224,7 @@ public abstract class PDField implements
      */
     public PDFormFieldAdditionalActions getActions()
     {
-        COSDictionary aa = (COSDictionary) 
dictionary.getDictionaryObject(COSName.AA);
+        COSDictionary aa = dictionary.getCOSDictionary(COSName.AA);
         if (aa != null)
         {
             return new PDFormFieldAdditionalActions(aa);
@@ -336,7 +336,7 @@ public abstract class PDField implements
     PDField findKid(String[] name, int nameIndex)
     {
         PDField retval = null;
-        COSArray kids = (COSArray) 
dictionary.getDictionaryObject(COSName.KIDS);
+        COSArray kids = dictionary.getCOSArray(COSName.KIDS);
         if (kids != null)
         {
             for (int i = 0; retval == null && i < kids.size(); i++)

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDFieldFactory.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDFieldFactory.java
     Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDFieldFactory.java
     Thu Sep  4 11:41:13 2025        (r1928227)
@@ -55,7 +55,7 @@ public final class PDFieldFactory
         // a field name (other than annotations)
         if (field.containsKey(COSName.KIDS))
         {
-            COSArray kids = (COSArray) field.getDictionaryObject(COSName.KIDS);
+            COSArray kids = field.getCOSArray(COSName.KIDS);
             if (kids != null && kids.size() > 0)
             {
                 for (int i = 0; i < kids.size(); i++)

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDNonTerminalField.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDNonTerminalField.java
 Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDNonTerminalField.java
 Thu Sep  4 11:41:13 2025        (r1928227)
@@ -25,7 +25,6 @@ import org.apache.commons.logging.LogFac
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSInteger;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.common.COSArrayList;
 import org.apache.pdfbox.pdmodel.fdf.FDFField;
@@ -70,14 +69,8 @@ public class PDNonTerminalField extends
     @Override
     public int getFieldFlags()
     {
-        int retval = 0;
-        COSInteger ff = (COSInteger) 
getCOSObject().getDictionaryObject(COSName.FF);
-        if (ff != null)
-        {
-            retval = ff.intValue();
-        }
         // There is no need to look up the parent hierarchy within a non 
terminal field
-        return retval;
+        return getCOSObject().getInt(COSName.FF, 0);
     }
 
     @Override

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDSignatureField.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDSignatureField.java
   Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDSignatureField.java
   Thu Sep  4 11:41:13 2025        (r1928227)
@@ -196,7 +196,7 @@ public class PDSignatureField extends PD
      */
     public PDSeedValue getSeedValue()
     {
-        COSDictionary dict = (COSDictionary) 
getCOSObject().getDictionaryObject(COSName.SV);
+        COSDictionary dict = getCOSObject().getCOSDictionary(COSName.SV);
         PDSeedValue sv = null;
         if (dict != null)
         {

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java
    Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTerminalField.java
    Thu Sep  4 11:41:13 2025        (r1928227)
@@ -164,7 +164,7 @@ public abstract class PDTerminalField ex
     public List<PDAnnotationWidget> getWidgets()
     {
         List<PDAnnotationWidget> widgets = new ArrayList<PDAnnotationWidget>();
-        COSArray kids = 
(COSArray)getCOSObject().getDictionaryObject(COSName.KIDS);
+        COSArray kids = getCOSObject().getCOSArray(COSName.KIDS);
         if (kids == null)
         {
             // the field itself is a widget

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java
     Thu Sep  4 08:30:15 2025        (r1928226)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java
     Thu Sep  4 11:41:13 2025        (r1928227)
@@ -153,8 +153,7 @@ public abstract class PDVariableText ext
      */
     public String getDefaultStyleString()
     {
-        COSString defaultStyleString = (COSString) 
getCOSObject().getDictionaryObject(COSName.DS);
-        return defaultStyleString.getString();
+        return getCOSObject().getString(COSName.DS);
     }
 
     /**

Reply via email to