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