Author: tilman
Date: Fri Apr 3 20:07:20 2026
New Revision: 1932829
Log:
PDFBOX-6186: avoid NPE + test
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDPage.java
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java
Fri Apr 3 19:54:33 2026 (r1932828)
+++
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java
Fri Apr 3 20:07:20 2026 (r1932829)
@@ -238,6 +238,11 @@ public class PDDocumentCatalog implement
*/
public void setThreads(List<PDThread> threads)
{
+ if (threads == null)
+ {
+ root.removeItem(COSName.THREADS);
+ return;
+ }
COSArray threadsArray = new COSArray(threads);
threadsArray.setDirect(false);
root.setItem(COSName.THREADS, threadsArray);
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
Fri Apr 3 19:54:33 2026 (r1932828)
+++
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
Fri Apr 3 20:07:20 2026 (r1932829)
@@ -685,6 +685,11 @@ public class PDPage implements COSObject
*/
public void setThreadBeads(List<PDThreadBead> beads)
{
+ if (beads == null)
+ {
+ page.removeItem(COSName.B);
+ return;
+ }
page.setItem(COSName.B, new COSArray(beads));
}
Modified:
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java
Fri Apr 3 19:54:33 2026 (r1932828)
+++
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java
Fri Apr 3 20:07:20 2026 (r1932829)
@@ -18,6 +18,7 @@ package org.apache.pdfbox.pdmodel;
import java.io.IOException;
import java.io.InputStream;
+import java.util.ArrayList;
import java.util.List;
import org.apache.pdfbox.Loader;
@@ -164,4 +165,19 @@ class TestPDDocumentCatalog
assertNull(doc.getDocumentCatalog().getOpenAction());
}
}
+
+ @Test
+ void testNullThreads() throws IOException
+ {
+ // PDFBOX-6186
+ try (PDDocument doc = new PDDocument())
+ {
+ PDDocumentCatalog documentCatalog = doc.getDocumentCatalog();
+ assertEquals(0, documentCatalog.getThreads().size());
+ documentCatalog.setThreads(new ArrayList<>());
+ assertEquals(0, documentCatalog.getThreads().size());
+ documentCatalog.setThreads(null);
+ assertEquals(0, documentCatalog.getThreads().size());
+ }
+ }
}
Modified:
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDPage.java
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDPage.java
Fri Apr 3 19:54:33 2026 (r1932828)
+++
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDPage.java
Fri Apr 3 20:07:20 2026 (r1932829)
@@ -18,23 +18,22 @@ package org.apache.pdfbox.pdmodel;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.util.ArrayList;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDTextField;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
-/**
- * Test case introduced with PDFBOX-6097
- *
- */
class TestPDPage
{
@Test
void testAddingPageAfterCreatingAnnotation() throws IOException
{
+ // PDFBOX-6097
try (PDDocument document = new PDDocument())
{
PDPage page = new PDPage(PDRectangle.A4);
@@ -58,5 +57,19 @@ class TestPDPage
document.close();
}
}
-
-}
+
+ @Test
+ void testNullThreadBeads() throws IOException
+ {
+ // PDFBOX-6186
+ try (PDDocument document = new PDDocument())
+ {
+ PDPage page = new PDPage();
+ assertEquals(0, page.getThreadBeads().size());
+ page.setThreadBeads(new ArrayList<>());
+ assertEquals(0, page.getThreadBeads().size());
+ page.setThreadBeads(null);
+ assertEquals(0, page.getThreadBeads().size());
+ }
+ }
+}
\ No newline at end of file